- Announcing ncurses 5.0
-
+ Announcing ncurses 5.1
+
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 is encouraging 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 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/pub/gnu/ncurses. It is also
- available at [2]ftp://ftp.clark.net/pub/dickey/ncurses.
-
+ distribution site [1]ftp://ftp.gnu.org/pub/gnu/ncurses.
+ It is also available at [2]ftp://dickey.his.com/ncurses.
+
Release Notes
-
- We decided to release ncurses as a new whole number release (5.0)
- because it incorporates several interface changes, including some that
- would invalidate existing shared libraries. These are the highlights
- from the change-log since ncurses 4.2 release.
-
+
+ This release is designed to be upward compatible from ncurses 5.0;
+ very few applications will require recompilation, depending on the
+ platform. These are the highlights from the change-log since ncurses
+ 5.0 release.
+
Interface changes:
- * The principal source of changes to the interface comes from the
- release of X/Open Curses in 1997. Earlier versions of ncurses (4.0
- and before) were based on a draft version of the specification.
- The release version adds parameters to some functions to support
- the evolving internationalization of curses. These summarize the
- impact:
- + modified several prototypes to correspond with 1997 version
- of X/Open Curses (affects ABI since developers have used
- attr_get).
- + 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.
- + 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.
- + 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.
- + reviewed/corrected macros in curses.h as per XSI document.
- + add set_a_attributes and set_pglen_inch to terminfo
- structure, as per XSI and Solaris 2.5.
- * The newest version of the X/Open Curses is implemented on Solaris
- and other vendor's systems. It adds new features to the terminfo
- descriptions:
- + implement tparm %l format.
- + implement tparm printf-style width and precision for %s, %d,
- %x, %o as per XSI.
- * We made additional changes to reduce impact by future interface
- changes:
- + rename key_names[] array to _nc_key_names since it is not
- part of the curses interface.
- + move macro winch to a function, to hide details of struct
- ldat
- * modify configure script to embed ABI in shared libraries for HP-UX
- 10.x (detailed request by Tim Mooney).
- * 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).
-
+ * made the extended terminal capabilities
+ (configure --enable-tcap-names) a standard feature (though the
+ configure script can disable it, it is built by default).
+ * removed the trace() function and related trace support from the
+ production library. This is the only interface change that may
+ cause problems with existing applications linked to shared
+ libraries, since not all platforms use the minor version number.
+ * explicitly initialized 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 some platforms.
+ * modified curses.h.in, undef'ing some symbols to avoid conflict
+ with C++ STL.
+
New features:
- * enable sigwinch handler by default.
- * turn on hashmap scrolling code by default
- * improved support for termcap applications
- + modify tput to accept termcap names as an alternative to
- terminfo names.
- + provide support for termcap PC variable by copying it from
- terminfo data and using it as the padding character in tputs.
- + 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.
- + change name-comparisons in lib_termcap to compare no more
- than 2 characters.
- + add configure option --enable-tcap-names, which essentially
- allows users to define new capabilities as in termcap.
- * add mouse support to ncurses menus.
- * add mouse and dll support for OS/2 EMX
- * modify terminfo parsing to accept octal and hexadecimal constants
- * 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.
- * 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 -f option to infocmp and tic, which formats the terminfo
- if/then/else/endif so that they are readable (with newlines and
- tabs).
- * modify tic to compile into %'char' form in preference to
- %{number}, since that is a little more efficient.
-
+ * added a new extension, assume_default_colors() to provide better
+ control over the use of default colors. This is the principal
+ visible difference between ncurses 5.1 and preceding versions. The
+ new extension allows an application to specify what colors pair 0
+ uses.
+ NOTE: Pair 0 defaults to white on black unless you have invoked
+ use_default_colors() or set it via assume_default_colors(). An
+ application that calls start_colors() without setting the
+ background color will consistently have a black background no
+ matter what color your terminal's background actually is.
+ * made several fixes to the terminfo-to-termcap conversion, and have
+ been using the generated termcaps without further hand-tuning.
+ This builds on the extension use_extended_names() by adding
+ "obsolete" termcap strings to terminfo.src
+ + modified tic so that if extended names (i.e.,
+ configure --enable-tcap-names) are active, then tic -x will
+ also write "obsolete" capabilities that are present in the
+ terminfo source.
+ + added 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.
+ + add -a option to tic and infocmp, which retains commented-out
+ capabilities during source translation/comparison, e.g.,
+ captoinfo and infotocap.
+ * implemented limited support for UTF-8, useful with XFree86 xterm:
+ + 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.
+ + 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.
+ + modified view.c to make a rudimentary viewer of UTF-8 text.
+ * modify raw() and noraw() to clear/restore IEXTEN flag which
+ affects stty lnext on systems such as FreeBSD
+ * reordered tests during mouse initialization to allow for gpm to
+ run in xterm, or for xterm to be used under OS/2 EMX. Also dropped
+ test for $DISPLAY in favor of the terminfo capability kmous=\E[M
+ or if $TERM environment variable contains "xterm".
+ * added configure option --with-manpage-symlinks, which provides for
+ fully indexing manpage entries by making symbolic links for the
+ aliases.
+ * changed unctrl() to render C1 characters (128-159) as ~@, ~A, etc.
+ * add experimental configure option --enable-colorfgbg to check for
+ $COLORTERM variable as set by rxvt/aterm/Eterm.
+ * made the infocmp -F option less verbose.
+ * dropped support for gnat 3.10 (gnat 3.12 is current).
+
Major bug fixes:
- * 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.
- * 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.
- * 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.
- * modify setupterm so that cancelled strings are treated the same as
- absent strings, cancelled and absent booleans false (does not
- affect tic, infocmp).
- * 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.
- * 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.
- * 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.
-
+ * modified infocmp -e, -E options to ensure that generated
+ fallback.c type for Booleans agrees with term.h
+ * documented a special case of incompatiblity between ncurses 4.2
+ and 5.0, added a section for this in INSTALL.
+ * corrected 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.
+ * made '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 could mislead ncurses into producing too few padding
+ characters.
+ * modified 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.
+ * modified echo() behavior of getch() to match Solaris curses for
+ carriage return and backspace (reported by Neil Zanella).
+ * corrected offsets used for subwindows in wresize()
+ * modified 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
+ * corrected logic in lib_twait.c as used by lib_mouse.c for GPM
+ mouse support when poll() is used rather than select().
+ * made several fixes for buffer overflows, unchecked recursion,
+ improvements in performance, etc. See the NEWS file for details.
+
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
* 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
* 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 [3]Curses Development Kit
- [4]ftp://ftp.clark.net/pub/dickey/cdk.
-
+ Curses Development Kit
+ [3]http://www.vexus.ca/CDK.html
+ [4]http://dickey.his.com/cdk.
+
ded
- directory-editor [5]ftp://ftp.clark.net/pub/dickey/ded.
-
+ directory-editor
+ [5]http://dickey.his.com/ded.
+
dialog
the underlying application used in Slackware's setup, and the
basis for similar applications on GNU/Linux.
-
+ [6]http://dickey.his.com/dialog.
+
lynx
the character-screen WWW browser
-
+ [7]http://lynx.isc.org/release.
+
Midnight Commander 4.1
file manager
-
+ [8]www.gnome.org/mc/.
+
mutt
mail utility
-
+ [9]http://www.mutt.org.
+
ncftp
file-transfer utility
-
+ [10]http://www.ncftp.com.
+
nvi
New vi versions 1.50 are able to use ncurses versions 1.9.7 and
later.
-
+ [11]http://www.bostic.com/vi/.
+
tin
newsreader, supporting color, MIME
- [6]ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff.
-
+ [12]http://www.tin.org.
+
taper
tape archive utility
-
+ [13]http://members.iinet.net.au/~yusuf/taper/.
+
vh-1.6
Volks-Hypertext browser for the Jargon File
-
+ [14]http://www.bg.debian.org/Packages/unstable/text/vh.html.
+
as well as some that use ncurses for the terminfo support alone:
-
+
minicom
terminal emulator
-
+ [15]http://www.pp.clinet.fi/~walker/minicom.html.
+
vile
- vi-like-emacs [7]ftp://ftp.clark.net/pub/dickey/vile.
-
+ vi-like-emacs
+ [16]http://dickey.his.com/vile.
+
The ncurses distribution includes a selection of test programs
(including a few games).
-
+
Who's Who and What's What
- The original developers of ncurses are [8]Zeyd Ben-Halim and [9]Eric
- S. Raymond. Ongoing work is being done by [10]Thomas Dickey and
- [11]Jürgen Pfeifer. [12]Thomas Dickey acts as the maintainer for the
+ The original developers of ncurses are [17]Zeyd Ben-Halim and [18]Eric
+ S. Raymond. Ongoing work is being done by [19]Thomas Dickey and
+ [20]Jürgen Pfeifer. [21]Thomas Dickey acts as the maintainer for the
Free Software Foundation, which holds the copyright on ncurses.
- Contact the current maintainers at [13]bug-ncurses@gnu.org.
-
+ Contact the current maintainers at [22]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 [14]ftp://ftp.clark.net/pub/dickey/ncurses.
-
+ available at [23]ftp://dickey.his.com/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 includes and uses a version of the terminfo-format
terminal description file maintained by Eric Raymond.
- [15]http://earthspace.net/~esr/terminfo.
-
+ [24]http://earthspace.net/~esr/terminfo.
+
You can find lots of information on terminal-related topics not
- covered in the terminfo file at [16]Richard Shuford's archive.
+ covered in the terminfo file at [25]Richard Shuford's archive.
References
1. ftp://ftp.gnu.org/pub/gnu/ncurses
- 2. ftp://ftp.clark.net/pub/dickey/ncurses
+ 2. ftp://dickey.his.com/ncurses
3. http://www.vexus.ca/CDK.html
- 4. ftp://ftp.clark.net/pub/dickey/cdk
- 5. ftp://ftp.clark.net/pub/dickey/ded
- 6. ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff
- 7. ftp://ftp.clark.net/pub/dickey/vile
- 8. mailto:zmbenhal@netcom.com
- 9. http://www.ccil.org/~esr/home.html
- 10. mailto:dickey@clark.net
- 11. mailto:juergen.pfeifer@gmx.net
- 12. mailto:dickey@clark.net
- 13. mailto:bug-ncurses@gnu.org
- 14. ftp://ftp.clark.net/pub/dickey/ncurses
- 15. http://earthspace.net/~esr/terminfo
- 16. http://www.cs.utk.edu/~shuford/terminal_index.html
+ 4. http://dickey.his.com/cdk/cdk.html
+ 5. http://dickey.his.com/ded/ded.html
+ 6. http://dickey.his.com/dialog/dialog.html
+ 7. http://lynx.isc.org/release/
+ 8. file://localhost/usr/build/ncurses/ncurses-5.1-20000704/doc/html/www.gnome.org/mc/
+ 9. http://www.mutt.org/
+ 10. http://www.ncftp.com/
+ 11. http://www.bostic.com/vi/
+ 12. http://www.tin.org/
+ 13. http://members.iinet.net.au/~yusuf/taper/
+ 14. http://www.bg.debian.org/Packages/unstable/text/vh.html
+ 15. http://www.pp.clinet.fi/~walker/minicom.html
+ 16. http://dickey.his.com/vile/vile.html
+ 17. mailto:zmbenhal@netcom.com
+ 18. http://www.ccil.org/~esr/home.html
+ 19. mailto:dickey@herndon4.his.com
+ 20. mailto:juergen.pfeifer@gmx.net
+ 21. mailto:dickey@herndon4.his.com
+ 22. mailto:bug-ncurses@gnu.org
+ 23. ftp://dickey.his.com/ncurses
+ 24. http://earthspace.net/~esr/terminfo
+ 25. http://www.cs.utk.edu/~shuford/terminal_index.html
# Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
#
# Version Control
-# $Revision: 1.12 $
+# $Revision: 1.13 $
#
SHELL = /bin/sh
THIS = Makefile
@SET_MAKE@
all \
+libs \
sources \
install \
install.libs \
# Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
#
# Version Control
-# $Revision: 1.27 $
+# $Revision: 1.30 $
#
.SUFFIXES:
RANLIB = @RANLIB@
-LIB_CURSES = -L../../lib -lncurses
+LIB_CURSES = -L../../lib -lncurses@LIB_SUFFIX@
M4 = m4
M4FLAGS =
GENERATE = ./gen '@DFT_ARG_SUFFIX@'
DEL_ADAMODE = sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d'
+GNATHTML = `type -p gnathtml || type -p gnathtml.pl`
+GNATHP = www.gnat.com
+MAIL = juergen.pfeifer@gmx.net
+HOMEP = home.t-online.de/home/Juergen.Pfeifer
+
################################################################################
ALIB = @cf_ada_package@
ABASE = $(ALIB)-curses
$(srcdir)/$(ABASE)-panels-user_data.ads.m4
-all: $(GEN_TARGETS)
+all \
+libs : $(GEN_TARGETS)
@
sources:
-rm -f $(GEN_FILES5)
clean :: mostlyclean
- -rm -f $(GEN_TARGETS)
+ -rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp
distclean :: clean
rm -f Makefile
realclean :: distclean
+HTML_DIR = ../../doc/html/ada
+
+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 '<!DOCTYPE HTML' > $@
+ @echo 'PUBLIC "-//IETF//DTD HTML 3.0//EN">' >> $@
+ @echo '<HTML>' >> $@
+ @echo '<HEAD>' >> $@
+ @echo '<TITLE>Correspondence between ncurses C and Ada functions</TITLE>' >>$@
+ @echo '</HEAD>' >> $@
+ @echo '<BODY>' >> $@
+ @echo '<H1>Correspondence between ncurses C and Ada functions</H1>' >>$@
+ @echo '<H2>Sorted by C function name</H2>' >>$@
+ @echo '<TABLE ALIGN=CENTER BORDER>' >>$@
+ @echo '<TR ALIGN=LEFT>' >>$@
+ @echo '<TH>C name</TH><TH>Ada name</TH><TH>man page</TH></TR>' >>$@
+ @sort < instab.tmp >> $@
+ @echo '</TABLE></BODY></HTML>' >>$@
+ @rm -f instab.tmp
+
+adahtml:
+ @rm -rf $(HTML_DIR)/
+ @mkdir -p $(HTML_DIR)
+ cp -p ../src/*.ad[sb] . && chmod +w *.ad[sb]
+ ln -sf ../src/*.ali .
+ for f in $(GEN_SRC); do \
+ g=`basename $$f .ads.m4` ;\
+ $(M4) $(M4FLAGS) -DM4MACRO=html.m4 $$f | $(DEL_ADAMODE) > $$g.ads ;\
+ 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%<A HREF="http://$(GNATHP)">GNAT</A>%g' |\
+ sed -e 's%<A HREF%<A HREF%g' |\
+ sed -e 's%">%">%g' |\
+ sed -e 's/3X/3x/g' |\
+ sed -e 's/$$\([A-Za-z0-9_]*:.*\)\$$/@\1@/' |\
+ sed -e 's%Juergen Pfeifer%<A HREF="http://$(HOMEP)">J\ürgen Pfeifer</A>%g' |\
+ sed -e 's%$(MAIL)%<A HREF="mailto:$(MAIL)">\<$(MAIL)\></A>%g' |\
+ sed -e 's%</A>%</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 "\%<A HREF=funcs/ .htm>\[ \]</A>%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
+ @
+
###############################################################################
# The remainder of this file is automatically generated during configuration
###############################################################################
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
/*
Version Control
- $Revision: 1.29 $
+ $Revision: 1.31 $
--------------------------------------------------------------------------*/
/*
This program generates various record structures and constants from the
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 specified.
+ */
static const name_attribute_pair nap[] = {
-#ifdef A_STANDOUT
+#if A_STANDOUT
{"Stand_Out", A_STANDOUT},
#endif
-#ifdef A_UNDERLINE
+#if A_UNDERLINE
{"Under_Line", A_UNDERLINE},
#endif
-#ifdef A_REVERSE
+#if A_REVERSE
{"Reverse_Video", A_REVERSE},
#endif
-#ifdef A_BLINK
+#if A_BLINK
{"Blink", A_BLINK},
#endif
-#ifdef A_DIM
+#if A_DIM
{"Dim_Character", A_DIM},
#endif
-#ifdef A_BOLD
+#if A_BOLD
{"Bold_Character", A_BOLD},
#endif
-#ifdef A_ALTCHARSET
+#if A_ALTCHARSET
{"Alternate_Character_Set", A_ALTCHARSET},
#endif
-#ifdef A_INVIS
+#if A_INVIS
{"Invisible_Character", A_INVIS},
#endif
-#ifdef A_PROTECT
+#if A_PROTECT
{"Protected_Character", A_PROTECT},
#endif
-#ifdef A_HORIZONTAL
+#if A_HORIZONTAL
{"Horizontal", A_HORIZONTAL},
#endif
-#ifdef A_LEFT
+#if A_LEFT
{"Left", A_LEFT},
#endif
-#ifdef A_LOW
+#if A_LOW
{"Low", A_LOW},
#endif
-#ifdef A_RIGHT
+#if A_RIGHT
{"Right", A_RIGHT},
#endif
-#ifdef A_TOP
+#if A_TOP
{"Top", A_TOP},
#endif
-#ifdef A_VERTICAL
+#if A_VERTICAL
{"Vertical", A_VERTICAL},
#endif
{(char *)0, 0}
*/
static void gen_linkopts (void)
{
- printf(" pragma Linker_Options (\"-lAdaCurses%s\");\n", model);
printf(" pragma Linker_Options (\"-lncurses%s\");\n", model);
}
--- /dev/null
+define(`ANCHORIDX',`0')dnl
+define(`MANPAGE',`define(`MANPG',$1)dnl
+|=====================================================================
+ -- | Man page <A HREF="../man/MANPG.html">MANPG</A>
+ -- |=====================================================================')dnl
+define(`ANCHOR',`define(`ANCHORIDX',incr(ANCHORIDX))dnl
+`#'1A NAME="AFU`_'ANCHORIDX"`#'2dnl
+define(`CFUNAME',`$1')define(`AFUNAME',`$2')dnl
+|')
+define(`AKA',``AKA': <A HREF="../man/MANPG.html">CFUNAME</A>')dnl
+define(`ALIAS',``AKA': $1')dnl
--- /dev/null
+define(`ANCHORIDX',`0')dnl
+define(`MANPAGE',`define(`MANPG',$1)')dnl
+divert(-1)dnl
+define(`ANCHOR',`divert(0)define(`ANCHORIDX',incr(ANCHORIDX))dnl
+<TR><TD>$1</TD><TD><A HREF="HTMLNAME`#'AFU`_'ANCHORIDX">$2</A></TD><TD><A HREF="../man/MANPG.html">MANPG</A></TD></TR>
+divert(-1)')
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
-- Version Control:
--- $Revision: 1.14 $
+-- $Revision: 1.15 $
-- Binding Version 01.00
------------------------------------------------------------------------------
with System;
-- AKA
pragma Inline (Delete);
- private
+private
type Panel is new System.Storage_Elements.Integer_Address;
Null_Panel : constant Panel := 0;
------------------------------------------------------------------------------
-- Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
-- Version Control:
--- $Revision: 1.26 $
+-- $Revision: 1.28 $
-- Binding Version 01.00
------------------------------------------------------------------------------
include(`Base_Defs')
-- the other for the background
include(`Character_Attribute_Set_Rep')
- -- (n)curses uses all but the lowes 16 Bits for Attributes.
+ -- (n)curses uses all but the lowest 16 Bits for Attributes.
Normal_Video : constant Character_Attribute_Set := (others => False);
pragma Import (C, ACS_Map, "acs_map");
--
--
- -- Constants for several symbols from the Alternate Character Set
+ -- Constants for several characters from the Alternate Character Set
-- You must use this constants as indices into the ACS_Map array
-- to get the corresponding attributed character at runtime.
--
procedure Add_With_Immediate_Echo
(Win : in Window := Standard_Window;
Ch : in Character);
- -- Add a character and do an immediate resfresh of the screen.
+ -- Add a character and do an immediate refresh of the screen.
pragma Inline (Add_With_Immediate_Echo);
-- MANPAGE(`curs_window.3x')
pragma Inline (Function_Key);
function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code;
- -- Return the key code for a given functionkey number.
+ -- Return the key code for a given function-key number.
pragma Inline (Function_Key_Code);
-- MANPAGE(`curs_attr.3x')
-- ANCHOR(`wtimeout()',`Set_Timeout_Mode')
procedure Set_Timeout_Mode (Win : in Window := Standard_Window;
Mode : in Timeout_Mode;
- Amount : in Natural); -- in Miliseconds
+ Amount : in Natural); -- in Milliseconds
-- AKA
-- Instead of overloading the semantic of the sign of amount, we
-- introduce the Timeout_Mode parameter. This should improve
-- MANPAGE(`curs_color.3x')
- -- ANCHOR(`start_clolor()',`Start_Color')
+ -- ANCHOR(`start_color()',`Start_Color')
procedure Start_Color;
-- AKA
pragma Import (C, Start_Color, "start_color");
pragma Inline (Nap_Milli_Seconds);
-- |=====================================================================
- -- | Some usefull helpers.
+ -- | Some useful helpers.
-- |=====================================================================
type Transform_Direction is (From_Screen, To_Screen);
procedure Transform_Coordinates
Column : in out Column_Position;
Dir : in Transform_Direction := From_Screen);
-- This procedure transforms screen coordinates into coordinates relative
- -- to the window and vice versa, depending on the Dir parmeter.
+ -- to the window and vice versa, depending on the Dir parameter.
-- Screen coordinates are the position informations on 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.
+++ /dev/null
-<HEAD><TITLE></TITLE></HEAD>
-<BODY>
-<H2 ALIGN=CENTER>Files</H2>
-<A HREF=files/T.htm>[T]</A>
-</BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>T</TITLE></HEAD>
-<BODY>
-<H2>Files - T</H2>
-<A HREF=../files.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-alpha__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-alpha.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-alphanumeric__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-alphanumeric.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-enumeration-ada.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-enumeration.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-intfield__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-intfield.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-ipv4_address.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-numeric__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-numeric.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-regexp__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-regexp.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-user-choice.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm TARGET=main>terminal_interface-curses-forms-field_types-user.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_types__ads.htm TARGET=main>terminal_interface-curses-forms-field_types.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-field_user_data__ads.htm TARGET=main>terminal_interface-curses-forms-field_user_data.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms-form_user_data__ads.htm TARGET=main>terminal_interface-curses-forms-form_user_data.ads</A>
-<LI><A HREF=../terminal_interface-curses-forms__ads.htm TARGET=main>terminal_interface-curses-forms.ads</A>
-<LI><A HREF=../terminal_interface-curses-menus-item_user_data__ads.htm TARGET=main>terminal_interface-curses-menus-item_user_data.ads</A>
-<LI><A HREF=../terminal_interface-curses-menus-menu_user_data__ads.htm TARGET=main>terminal_interface-curses-menus-menu_user_data.ads</A>
-<LI><A HREF=../terminal_interface-curses-menus__ads.htm TARGET=main>terminal_interface-curses-menus.ads</A>
-<LI><A HREF=../terminal_interface-curses-mouse__ads.htm TARGET=main>terminal_interface-curses-mouse.ads</A>
-<LI><A HREF=../terminal_interface-curses-panels-user_data__ads.htm TARGET=main>terminal_interface-curses-panels-user_data.ads</A>
-<LI><A HREF=../terminal_interface-curses-panels__ads.htm TARGET=main>terminal_interface-curses-panels.ads</A>
-<LI><A HREF=../terminal_interface-curses-text_io-complex_io__ads.htm TARGET=main>terminal_interface-curses-text_io-complex_io.ads</A>
-<LI><A HREF=../terminal_interface-curses-text_io-decimal_io__ads.htm TARGET=main>terminal_interface-curses-text_io-decimal_io.ads</A>
-<LI><A HREF=../terminal_interface-curses-text_io-enumeration_io__ads.htm TARGET=main>terminal_interface-curses-text_io-enumeration_io.ads</A>
-<LI><A HREF=../terminal_interface-curses-text_io-fixed_io__ads.htm TARGET=main>terminal_interface-curses-text_io-fixed_io.ads</A>
-<LI><A HREF=../terminal_interface-curses-text_io-float_io__ads.htm TARGET=main>terminal_interface-curses-text_io-float_io.ads</A>
-<LI><A HREF=../terminal_interface-curses-text_io-integer_io__ads.htm TARGET=main>terminal_interface-curses-text_io-integer_io.ads</A>
-<LI><A HREF=../terminal_interface-curses-text_io-modular_io__ads.htm TARGET=main>terminal_interface-curses-text_io-modular_io.ads</A>
-<LI><A HREF=../terminal_interface-curses-text_io__ads.htm TARGET=main>terminal_interface-curses-text_io.ads</A>
-<LI><A HREF=../terminal_interface-curses__ads.htm TARGET=main>terminal_interface-curses.ads</A>
-<LI><A HREF=../terminal_interface__ads.htm TARGET=main>terminal_interface.ads</A>
-</UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HEAD><TITLE></TITLE></HEAD>
-<BODY>
-<H2 ALIGN=CENTER>Functions/Procedures</H2>
-<A HREF=funcs/A.htm>[A]</A>
-<A HREF=funcs/C.htm>[C]</A>
-<A HREF=funcs/E.htm>[E]</A>
-<A HREF=funcs/F.htm>[F]</A>
-<A HREF=funcs/G.htm>[G]</A>
-<A HREF=funcs/I.htm>[I]</A>
-<A HREF=funcs/L.htm>[L]</A>
-<A HREF=funcs/M.htm>[M]</A>
-<A HREF=funcs/N.htm>[N]</A>
-<A HREF=funcs/P.htm>[P]</A>
-<A HREF=funcs/R.htm>[R]</A>
-<A HREF=funcs/S.htm>[S]</A>
-<A HREF=funcs/T.htm>[T]</A>
-<A HREF=funcs/U.htm>[U]</A>
-<A HREF=funcs/V.htm>[V]</A>
-</BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>A</TITLE></HEAD>
-<BODY>
-<H2>Functions - A</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-alpha__ads.htm#41_53 TARGET=main>Alpha</A><LI><A HREF=../terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#41_53 TARGET=main>AlphaNumeric</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>C</TITLE></HEAD>
-<BODY>
-<H2>Functions - C</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#63_13 TARGET=main>Character_Check</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#43_58 TARGET=main>Choice</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#98_13 TARGET=main>Col - terminal_interface-curses-text_io.ads:98</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#99_13 TARGET=main>Col - terminal_interface-curses-text_io.ads:99</A><LI><A HREF=../terminal_interface-curses-text_io-complex_io__ads.htm#44_17 TARGET=main>Complex_Types</A><LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_13 TARGET=main>Create - terminal_interface-curses-forms-field_types-enumeration-ada.ads:48</A><LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_13 TARGET=main>Create - terminal_interface-curses-forms-field_types-enumeration.ads:64</A><LI><A HREF=../terminal_interface-curses-forms-field_types__ads.htm#149_13 TARGET=main>C_Builtin_Router</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#80_13 TARGET=main>C_Generic_Choice</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#81_13 TARGET=main>C_Generic_Type</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>E</TITLE></HEAD>
-<BODY>
-<H2>Functions - E</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53 TARGET=main>Enumeration</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>F</TITLE></HEAD>
-<BODY>
-<H2>Functions - F</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#56_13 TARGET=main>Field_Check</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#65_14 TARGET=main>Flush - terminal_interface-curses-text_io.ads:65</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#66_14 TARGET=main>Flush - terminal_interface-curses-text_io.ads:66</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>G</TITLE></HEAD>
-<BODY>
-<H2>Functions - G</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#90_13 TARGET=main>Generic_Char_Check</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#83_13 TARGET=main>Generic_Field_Check</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_13 TARGET=main>Generic_Next</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_13 TARGET=main>Generic_Prev</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#62_13 TARGET=main>Get_Window</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>I</TITLE></HEAD>
-<BODY>
-<H2>Functions - I</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-intfield__ads.htm#41_53 TARGET=main>IntField</A><LI><A HREF=../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#41_53 TARGET=main>IPV4_Address</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>L</TITLE></HEAD>
-<BODY>
-<H2>Functions - L</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-text_io__ads.htm#101_13 TARGET=main>Line - terminal_interface-curses-text_io.ads:101</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#102_13 TARGET=main>Line - terminal_interface-curses-text_io.ads:102</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#77_13 TARGET=main>Line_Length - terminal_interface-curses-text_io.ads:77</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#78_13 TARGET=main>Line_Length - terminal_interface-curses-text_io.ads:78</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>M</TITLE></HEAD>
-<BODY>
-<H2>Functions - M</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#73_13 TARGET=main>Make_Enumeration_Type</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>N</TITLE></HEAD>
-<BODY>
-<H2>Functions - N</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-text_io__ads.htm#86_14 TARGET=main>New_Line - terminal_interface-curses-text_io.ads:86</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#87_14 TARGET=main>New_Line - terminal_interface-curses-text_io.ads:87</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#89_14 TARGET=main>New_Page - terminal_interface-curses-text_io.ads:89</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#90_14 TARGET=main>New_Page - terminal_interface-curses-text_io.ads:90</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#60_13 TARGET=main>Next</A><LI><A HREF=../terminal_interface-curses-forms-field_types-numeric__ads.htm#41_53 TARGET=main>Numeric</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>P</TITLE></HEAD>
-<BODY>
-<H2>Functions - P</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-text_io__ads.htm#80_13 TARGET=main>Page_Length - terminal_interface-curses-text_io.ads:80</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#81_13 TARGET=main>Page_Length - terminal_interface-curses-text_io.ads:81</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user-choice__ads.htm#67_13 TARGET=main>Previous</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#108_14 TARGET=main>Put - terminal_interface-curses-text_io.ads:108</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#109_14 TARGET=main>Put - terminal_interface-curses-text_io.ads:109</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#115_14 TARGET=main>Put - terminal_interface-curses-text_io.ads:115</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#116_14 TARGET=main>Put - terminal_interface-curses-text_io.ads:116</A><LI><A HREF=../terminal_interface-curses-text_io-complex_io__ads.htm#54_14 TARGET=main>Put - terminal_interface-curses-text_io-complex_io.ads:54</A><LI><A HREF=../terminal_interface-curses-text_io-complex_io__ads.htm#61_14 TARGET=main>Put - terminal_interface-curses-text_io-complex_io.ads:61</A><LI><A HREF=../terminal_interface-curses-text_io-decimal_io__ads.htm#50_14 TARGET=main>Put - terminal_interface-curses-text_io-decimal_io.ads:50</A><LI><A HREF=../terminal_interface-curses-text_io-decimal_io__ads.htm#57_14 TARGET=main>Put - terminal_interface-curses-text_io-decimal_io.ads:57</A><LI><A HREF=../terminal_interface-curses-text_io-enumeration_io__ads.htm#49_14 TARGET=main>Put - terminal_interface-curses-text_io-enumeration_io.ads:49</A><LI><A HREF=../terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14 TARGET=main>Put - terminal_interface-curses-text_io-enumeration_io.ads:55</A><LI><A HREF=../terminal_interface-curses-text_io-fixed_io__ads.htm#50_14 TARGET=main>Put - terminal_interface-curses-text_io-fixed_io.ads:50</A><LI><A HREF=../terminal_interface-curses-text_io-fixed_io__ads.htm#57_14 TARGET=main>Put - terminal_interface-curses-text_io-fixed_io.ads:57</A><LI><A HREF=../terminal_interface-curses-text_io-float_io__ads.htm#50_14 TARGET=main>Put - terminal_interface-curses-text_io-float_io.ads:50</A><LI><A HREF=../terminal_interface-curses-text_io-float_io__ads.htm#57_14 TARGET=main>Put - terminal_interface-curses-text_io-float_io.ads:57</A><LI><A HREF=../terminal_interface-curses-text_io-integer_io__ads.htm#49_14 TARGET=main>Put - terminal_interface-curses-text_io-integer_io.ads:49</A><LI><A HREF=../terminal_interface-curses-text_io-integer_io__ads.htm#55_14 TARGET=main>Put - terminal_interface-curses-text_io-integer_io.ads:55</A><LI><A HREF=../terminal_interface-curses-text_io-modular_io__ads.htm#49_14 TARGET=main>Put - terminal_interface-curses-text_io-modular_io.ads:49</A><LI><A HREF=../terminal_interface-curses-text_io-modular_io__ads.htm#55_14 TARGET=main>Put - terminal_interface-curses-text_io-modular_io.ads:55</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#118_14 TARGET=main>Put_Line - terminal_interface-curses-text_io.ads:118</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#122_14 TARGET=main>Put_Line - terminal_interface-curses-text_io.ads:122</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>R</TITLE></HEAD>
-<BODY>
-<H2>Functions - R</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-regexp__ads.htm#41_53 TARGET=main>RegExp</A><LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_14 TARGET=main>Release</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>S</TITLE></HEAD>
-<BODY>
-<H2>Functions - S</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-text_io__ads.htm#92_14 TARGET=main>Set_Col - terminal_interface-curses-text_io.ads:92</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#93_14 TARGET=main>Set_Col - terminal_interface-curses-text_io.ads:93</A><LI><A HREF=../terminal_interface-curses-forms-field_types-alpha__ads.htm#49_14 TARGET=main>Set_Field_Type - terminal_interface-curses-forms-field_types-alpha.ads:49</A><LI><A HREF=../terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_14 TARGET=main>Set_Field_Type - terminal_interface-curses-forms-field_types-alphanumeric.ads:50</A><LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_14 TARGET=main>Set_Field_Type - terminal_interface-curses-forms-field_types-enumeration.ads:84</A><LI><A HREF=../terminal_interface-curses-forms-field_types-intfield__ads.htm#51_14 TARGET=main>Set_Field_Type - terminal_interface-curses-forms-field_types-intfield.ads:51</A><LI><A HREF=../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_14 TARGET=main>Set_Field_Type - terminal_interface-curses-forms-field_types-ipv4_address.ads:47</A><LI><A HREF=../terminal_interface-curses-forms-field_types-numeric__ads.htm#51_14 TARGET=main>Set_Field_Type - terminal_interface-curses-forms-field_types-numeric.ads:51</A><LI><A HREF=../terminal_interface-curses-forms-field_types-regexp__ads.htm#51_14 TARGET=main>Set_Field_Type - terminal_interface-curses-forms-field_types-regexp.ads:51</A><LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#70_14 TARGET=main>Set_Field_Type - terminal_interface-curses-forms-field_types-user.ads:70</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#95_14 TARGET=main>Set_Line - terminal_interface-curses-text_io.ads:95</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#96_14 TARGET=main>Set_Line - terminal_interface-curses-text_io.ads:96</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#59_14 TARGET=main>Set_Window</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>T</TITLE></HEAD>
-<BODY>
-<H2>Functions - T</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface__ads.htm#41_9 TARGET=main>Terminal_Interface</A><LI><A HREF=../terminal_interface-curses-text_io__ads.htm#44_35 TARGET=main>Text_IO</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>U</TITLE></HEAD>
-<BODY>
-<H2>Functions - U</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-user__ads.htm#43_53 TARGET=main>User</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML><HEAD><TITLE>V</TITLE></HEAD>
-<BODY>
-<H2>Functions - V</H2>
-<A HREF=../funcs.htm TARGET=_self>[index]</A>
-<UL COMPACT TYPE=DISC>
-<LI><A HREF=../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#53_13 TARGET=main>Value</A></UL></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML>
-<HEAD><TITLE>Source Browser</TITLE></HEAD>
-<FRAMESET COLS='250,*'>
-<NOFRAME>
-<H2 ALIGN=CENTER>Files</H2>
-<A HREF=files/T.htm>[T]</A>
-</UL>
-<HR>
-<H2 ALIGN=CENTER>Functions/Procedures</H2>
-<A HREF=funcs/A.htm>[A]</A>
-<A HREF=funcs/C.htm>[C]</A>
-<A HREF=funcs/E.htm>[E]</A>
-<A HREF=funcs/F.htm>[F]</A>
-<A HREF=funcs/G.htm>[G]</A>
-<A HREF=funcs/I.htm>[I]</A>
-<A HREF=funcs/L.htm>[L]</A>
-<A HREF=funcs/M.htm>[M]</A>
-<A HREF=funcs/N.htm>[N]</A>
-<A HREF=funcs/P.htm>[P]</A>
-<A HREF=funcs/R.htm>[R]</A>
-<A HREF=funcs/S.htm>[S]</A>
-<A HREF=funcs/T.htm>[T]</A>
-<A HREF=funcs/U.htm>[U]</A>
-<A HREF=funcs/V.htm>[V]</A>
-</UL>
-</NOFRAME>
-<FRAMESET ROWS='50%,50%'>
-<FRAME NAME=files SRC=files.htm>
-<FRAME NAME=funcs SRC=funcs.htm>
-</FRAMESET>
-<FRAME NAME=main SRC=main.htm>
-</FRAMESET>
-</HTML>
+++ /dev/null
-<HEAD><TITLE></TITLE></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>
-</UL>
-<HR><H2 ALIGN=CENTER>Functions/Procedures</H2>
-<A HREF=funcs/A.htm>[A]</A>
-<A HREF=funcs/C.htm>[C]</A>
-<A HREF=funcs/E.htm>[E]</A>
-<A HREF=funcs/F.htm>[F]</A>
-<A HREF=funcs/G.htm>[G]</A>
-<A HREF=funcs/I.htm>[I]</A>
-<A HREF=funcs/L.htm>[L]</A>
-<A HREF=funcs/M.htm>[M]</A>
-<A HREF=funcs/N.htm>[N]</A>
-<A HREF=funcs/P.htm>[P]</A>
-<A HREF=funcs/R.htm>[R]</A>
-<A HREF=funcs/S.htm>[S]</A>
-<A HREF=funcs/T.htm>[T]</A>
-<A HREF=funcs/U.htm>[U]</A>
-<A HREF=funcs/V.htm>[V]</A>
-</UL>
-</BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HEAD><TITLE>terminal_interface-curses-forms-field_types.ads</TITLE></HEAD>
-<BODY>
-<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types.ads </H1></DIV><HR>
-<PRE>
-
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
-<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
-<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
-<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
-<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
-<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
-<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
-<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
-<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
-<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
-<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
-<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
-<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
-<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
-<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
-<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
-<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
-<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.11 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<b>with</b> Interfaces.C;
-
-<b>package</b> Terminal_Interface.Curses.Forms.Field_Types <b>is</b>
- <b>pragma</b> Preelaborate <A HREF="i-c__ads.htm>0_20">(</A>Terminal_Interface.Curses.Forms.Field_Types);
- <b>use</b> <b>type</b><FONT COLOR=red><A NAME="46_12"> </A></FONT>Interfaces.C.int;
- <b>subtype</b> C_Int <b>is</b> Interfaces.C.int;
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_fieldtype.3x.html">form_fieldtype.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <b>type</b> Field_Type <b>is</b> <b>abstract</b> <b>tagged</b> <b>null</b> <b>record</b>;
- <FONT COLOR=green><EM>-- Abstract base type for all field types. A concrete field type</EM></FONT>
- <FONT COLOR=green><EM>-- is an extension that adds some data elements describing formats or</EM></FONT>
- <FONT COLOR=green><EM>-- boundary values for the type and validation routines.</EM></FONT>
- <FONT COLOR=green><EM>-- For the builtin low-level fieldtypes, the validation routines are</EM></FONT>
- <FONT COLOR=green><EM>-- already defined by the low-level C library.</EM></FONT>
- <FONT COLOR=green><EM>-- The builtin types like Alpha or AlphaNumeric etc. are defined in</EM></FONT>
- <FONT COLOR=green><EM>-- child packages of this package. You may use one of them as example</EM></FONT>
- <FONT COLOR=green><EM>-- how to create you own child packages for low-level field types that</EM></FONT>
- <FONT COLOR=green><EM>-- you may have already written in C.</EM></FONT>
-
- <b>type</b> Field_Type_Access <b>is</b> <b>access</b> <b>all</b> Field_Type'Class;
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
- <b>procedure</b> Set_Field_Type (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field</A>;
- Fld_Type : <b>in</b> Field_Type) <b>is</b> <b>abstract</b>;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_fieldtype.3x.html">set_field_type()</A></EM></FONT>
- <FONT COLOR=green><EM>-- But: we hide the vararg mechanism of the C interface. You always</EM></FONT>
- <FONT COLOR=green><EM>-- have to pass a single Field_Type parameter.</EM></FONT>
-
- <FONT COLOR=green><EM>-- ---------------------------------------------------------------------</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_validation.3x.html">form_field_validation.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
- <b>function</b> Get_Type (Fld : <b>in</b> Field) <b>return</b> Field_Type_Access;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_validation.3x.html">field_type()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: field_arg()</EM></FONT>
- <FONT COLOR=green><EM>-- In Ada95 we can combine these. If you try to retrieve the field type</EM></FONT>
- <FONT COLOR=green><EM>-- that is not defined as extension of the abstract tagged type above,</EM></FONT>
- <FONT COLOR=green><EM>-- you will raise a Form_Exception.</EM></FONT>
- <FONT COLOR=green><EM>-- This is not inlined</EM></FONT>
-
- <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- | Private Part.</EM></FONT>
- <FONT COLOR=green><EM>-- | Most of this is used by the implementations of the child packages.</EM></FONT>
- <FONT COLOR=green><EM>-- |</EM></FONT>
-<b>private</b>
- <b>type</b> Makearg_Function <b>is</b> <b>access</b>
- <b>function</b> (Args : System.Address) <b>return</b> System.Address;
- <b>pragma</b> Convention (C, Makearg_Function);
-
- <b>type</b> Copyarg_Function <b>is</b> <b>access</b>
- <b>function</b> (Usr : System.Address) <b>return</b> System.Address;
- <b>pragma</b> Convention (C, Copyarg_Function);
-
- <b>type</b> Freearg_Function <b>is</b> <b>access</b>
- <b>procedure</b> (Usr : System.Address);
- <b>pragma</b> Convention (C, Freearg_Function);
-
- <b>type</b> Field_Check_Function<FONT COLOR=red><A NAME="105_29"> </A></FONT><b>is</b> <b>access</b>
- <b>function</b> (Fld : Field; Usr : System.Address) <b>return</b> C_Int;
- <b>pragma</b> Convention (C, Field_Check_Function);
-
- <b>type</b> Char_Check_Function<FONT COLOR=red><A NAME="109_28"> </A></FONT><b>is</b> <b>access</b>
- <b>function</b> (Ch : C_Int<A HREF="terminal_interface-curses-forms-field_types__ads.htm<08_9">;</A> Usr : System.Address) <b>return</b> C_Int;
- <b>pragma</b> Convention (C, Char_Check_Function);
-
- <b>type</b> Choice_Function <b>is</b> <b>access</b>
- <b>function</b> (Fld : Field; Usr : System.Address) <b>return</b> C_Int;
- <b>pragma</b> Convention (C, Choice_Function);
-
- <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- | This must be in sync with the FIELDTYPE structure in form.h</EM></FONT>
- <FONT COLOR=green><EM>-- |</EM></FONT>
- <b>type</b> Low_Level_Field_Type <b>is</b>
- <b>record</b>
- Status : <A HREF="interfac__ads.htm>3_9">Interfaces</A>.<A HREF="i-c__ads.htm>0_20">C</A>.<A HREF="i-c__ads.htm#37_9">short</A>;
- <FONT COLOR=red><A NAME="123_10">Ref_Count</A></FONT> : <A HREF="system__ads.htm>3_9">Interfaces</A>.C.long;
- Left, Right : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#92_9">System</A>.Address;
- Makearg : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#96_9">Makearg_Function</A>;
- Copyarg : <A HREF="terminal_interface-curses-forms-field_types__ads.htm<00_9">Copyarg_Function</A>;
- Freearg : <A HREF="terminal_interface-curses-forms-field_types__ads.htm<04_9">Freearg_Function</A>;
- Fcheck : <A HREF="terminal_interface-curses-forms-field_types__ads.htm<08_9">Field_Check_Function</A>;
- Ccheck : <A HREF="terminal_interface-curses-forms-field_types__ads.htm<12_9">Char_Check_Function</A>;
- Next, Prev : Choice_Function;
- <b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, Low_Level_Field_Type);
- <b>type</b> C_Field_Type <b>is</b> <b>access</b> <b>all</b> Low_Level_Field_Type;
-
- Null_Field_Type : <b>constant</b> C_Field_Type := <b>null</b>;
-
- <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- | This four low-level fieldtypes are the ones associated with</EM></FONT>
- <FONT COLOR=green><EM>-- | fieldtypes handled by this binding. Any other low-level fieldtype</EM></FONT>
- <FONT COLOR=green><EM>-- | will result in a Form_Exception is function Get_Type.</EM></FONT>
- <FONT COLOR=green><EM>-- |</EM></FONT>
- M_Generic_Type : C_Field_Type := <b>null</b>;
- M_Generic_Choice : C_Field_Type := <b>null</b>;
- M_Builtin_Router : C_Field_Type := <b>null</b>;
- M_Choice_Router : C_Field_Type := <b>null</b>;
-
- <FONT COLOR=green><EM>-- Two wrapper functions to access those low-level fieldtypes defined</EM></FONT>
- <FONT COLOR=green><EM>-- in this package.</EM></FONT>
- <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm>64_13">C_Builtin_Router</A><FONT COLOR=red><A NAME="149_13"></A></FONT> <b>return</b> C_Field_Type;
- <b>function</b> C_Choice_Router <b>return</b> C_Field_Type;
-
- <b>procedure</b> Wrap_Builtin (Fld : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field</A>;
- Typ : Field_Type'Class<A HREF="terminal_interface-curses-forms-field_types__ads.htm<48_13">;</A>
- Cft : C_Field_Type := C_Builtin_Router);
- <FONT COLOR=green><EM>-- This procedure has to be called by the Set_Field_Type implementation</EM></FONT>
- <FONT COLOR=green><EM>-- for builtin low-level fieldtypes to replace it by an Ada95</EM></FONT>
- <FONT COLOR=green><EM>-- conformant Field_Type object.</EM></FONT>
- <FONT COLOR=green><EM>-- The parameter Cft must be C_Builtin_Router for regular low-level</EM></FONT>
- <FONT COLOR=green><EM>-- fieldtypes (like TYP_ALPHA or TYP_ALNUM) and C_Choice_Router for</EM></FONT>
- <FONT COLOR=green><EM>-- low-level fieldtypes witch choice functions (like TYP_ENUM).</EM></FONT>
- <FONT COLOR=green><EM>-- Any other value will raise a Form_Exception.</EM></FONT>
-
- <b>function</b> Make_Arg (Args : System.Address) <b>return</b> System.Address;
- <b>pragma</b> Convention (C, Make_Arg);
- <FONT COLOR=green><EM>-- This is the Makearg_Function for the internal low-level types</EM></FONT>
- <FONT COLOR=green><EM>-- introduced by this binding.</EM></FONT>
-
- <b>function</b> Copy_Arg (Usr<A HREF="terminal_interface-curses-forms-field_types__ads.htm<67_13"> </A>: System.Address) <b>return</b> System.Address;
- <b>pragma</b> Convention (C, Copy_Arg);
- <FONT COLOR=green><EM>-- This is the Copyarg_Function for the internal low-level types</EM></FONT>
- <FONT COLOR=green><EM>-- introduced by this binding.</EM></FONT>
-
- <b>procedure</b> Free_Arg (Usr : System.Address);
- <b>pragma</b> Convention (C, Free_Arg);
- <FONT COLOR=green><EM>-- This is the Freearg_Function for the internal low-level types</EM></FONT>
- <FONT COLOR=green><EM>-- introduced by this binding.</EM></FONT>
-
- <b>function</b> Field_Check_Router (<FONT COLOR=red><A NAME="178_33">Fld</A></FONT> : <A HREF="system__ads.htm>3_9">Field</A>;
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm<77_13"> </A> Usr : System.Address) <b>return</b> C_Int;
- <b>pragma</b> Convention (C, Field_Check_Router);
- <FONT COLOR=green><EM>-- This is the Field_Check_Function for the internal low-level types</EM></FONT>
- <FONT COLOR=green><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
- <FONT COLOR=green><EM>-- type. It routes the call to the corresponding low-level validation</EM></FONT>
- <FONT COLOR=green><EM>-- function.</EM></FONT>
-
- <b>function</b> Char_Check_Router (<FONT COLOR=red><A NAME="186_32">Ch</A></FONT> : C_Int;
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm<85_13"> </A> Usr : System.Address) <b>return</b> C_Int;
- <b>pragma</b> Convention (C, Char_Check_Router);
- <FONT COLOR=green><EM>-- This is the Char_Check_Function for the internal low-level types</EM></FONT>
- <FONT COLOR=green><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
- <FONT COLOR=green><EM>-- type. It routes the call to the corresponding low-level validation</EM></FONT>
- <FONT COLOR=green><EM>-- function.</EM></FONT>
-
- <b>function</b> Next_Router (<FONT COLOR=red><A NAME="194_26">Fld</A></FONT> : <A HREF="system__ads.htm>3_9">Field</A>;
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm<93_13">Usr</A> : System.Address) <b>return</b> C_Int;
- <b>pragma</b> Convention (C, Next_Router);
- <FONT COLOR=green><EM>-- This is the Choice_Function for the internal low-level types</EM></FONT>
- <FONT COLOR=green><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
- <FONT COLOR=green><EM>-- type. It routes the call to the corresponding low-level next_choice</EM></FONT>
- <FONT COLOR=green><EM>-- function.</EM></FONT>
-
- <b>function</b> Prev_Router (<FONT COLOR=red><A NAME="202_26">Fld</A></FONT> : <A HREF="system__ads.htm>3_9">Field</A>;
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm>01_13">Usr</A> : System.Address) <b>return</b> C_Int;
- <b>pragma</b> Convention (C, Prev_Router);
- <FONT COLOR=green><EM>-- This is the Choice_Function for the internal low-level types</EM></FONT>
- <FONT COLOR=green><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
- <FONT COLOR=green><EM>-- type. It routes the call to the corresponding low-level prev_choice</EM></FONT>
- <FONT COLOR=green><EM>-- function.</EM></FONT>
-
- <FONT COLOR=green><EM>-- This is the Argument structure maintained by all low-level field types</EM></FONT>
- <FONT COLOR=green><EM>-- introduced by this binding.</EM></FONT>
- <b>type</b> Argument <b>is</b> <b>record</b>
- <FONT COLOR=red><A NAME="213_7">Typ</A></FONT> : <A HREF="system__ads.htm>3_9">Field_Type_Access</A>; <FONT COLOR=green><EM>-- the Field_Type creating this record</EM></FONT>
- Usr : System.Address; <FONT COLOR=green><EM>-- original arg for builtin low-level types</EM></FONT>
- Cft : C_Field_Type; <FONT COLOR=green><EM>-- the original low-level type</EM></FONT>
- <b>end</b> <b>record</b>;
- <b>type</b> Argument_Access <b>is</b> <b>access</b> <b>all</b> Argument;
-
- <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- |</EM></FONT>
- <FONT COLOR=green><EM>-- | Some Imports of libform routines to deal with low-level fieldtypes.</EM></FONT>
- <FONT COLOR=green><EM>-- |</EM></FONT>
- <b>function</b> New_Fieldtype (Fcheck : <A HREF="terminal_interface-curses-forms-field_types__ads.htm<08_9">Field_Check_Function</A>;
- Ccheck : Char_Check_Function)
- <b>return</b> C_Field_Type;
- <b>pragma</b> Import (C, New_Fieldtype, "new_fieldtype");
-
- <b>function</b> Set_Fieldtype_Arg (Cft : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#92_9">C_Field_Type</A>;
- Mak : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#96_9">Makearg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm<67_13">Make_Arg</A>'<b>Access</b>;
- Cop : <A HREF="terminal_interface-curses-forms-field_types__ads.htm<00_9">Copyarg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm<72_14">Copy_Arg</A>'<b>Access</b>;
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12"> </A> Fre : Freearg_Function := Free_Arg'<b>Access</b>)
- <b>return</b> C_Int;
- <b>pragma</b> Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
-
- <b>function</b> Set_Fieldtype_Choice (Cft : C_Field_Type;
- <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12"> </A> Next, Prev : Choice_Function)
- <b>return</b> C_Int;
- <b>pragma</b> Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
-
-<b>end</b> Terminal_Interface.Curses.Forms.Field_Types;
-</PRE></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HEAD><TITLE>terminal_interface-curses-forms.ads</TITLE></HEAD>
-<BODY>
-<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms.ads </H1></DIV><HR>
-<PRE>
-
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Form --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
-<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
-<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
-<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
-<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
-<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
-<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
-<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
-<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
-<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
-<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
-<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
-<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
-<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
-<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
-<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
-<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
-<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.20 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- form binding.</EM></FONT>
-<FONT COLOR=green><EM>-- This module is generated. Please don't change it manually!</EM></FONT>
-<FONT COLOR=green><EM>-- Run the generator instead.</EM></FONT>
-<FONT COLOR=green><EM>-- |</EM></FONT>
-<b>with</b> <A HREF="ada__ads.htm<8_9">System</A>;
-<b>with</b> <A HREF="interfac__ads.htm>3_9">Ada</A>.Characters.Latin_1;
-<b>with</b> Interfaces.C;
-
-<b>package</b> Terminal_Interface.Curses.Forms <b>is</b>
- <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Forms);
- <b>pragma</b> Linker_Options ("-lform");
- <b>pragma</b> Linker_Options ("-lAdaCurses");
- <b>pragma</b> Linker_Options ("-lncurses");
-
- Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
-
- <b>type</b> <FONT COLOR=red><A NAME="58_9">Field</A></FONT> <b>is</b> <b>private</b>;
- <b>type</b> Form <b>is</b> <b>private</b>;
-
- <FONT COLOR=red><A NAME="61_4">Null_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#58_9">Field</A>;
- Null_Form : <b>constant</b> Form;
-
- <b>type</b> Field_Justification <b>is</b> (None,
- Left,
- Center,
- Right);
-
- <b>pragma</b> Warnings (Off);
- <b>type</b> Field_Option_Set <b>is</b>
- <b>record</b>
- Visible : Boolean;
- Active : Boolean;
- Public : Boolean;
- Edit : Boolean;
- Wrap : Boolean;
- Blank : Boolean;
- Auto_Skip : Boolean;
- Null_Ok : Boolean;
- Pass_Ok : Boolean;
- Static : Boolean;
- <b>end</b> <b>record</b><A HREF="terminal_interface-curses-forms__ads.htm#69_9">;</A>
- <b>pragma</b> Pack (Field_Option_Set);
- <b>pragma</b> Convention (C, Field_Option_Set);
-
- <b>for</b> Field_Option_Set <b>use</b>
- <b>record</b>
- Visible <b>at</b> 0 <b>range</b> 0 .. 0;
- Active <b>at</b> 0 <b>range</b> 1 .. 1;
- Public <b>at</b> 0 <b>range</b> 2 .. 2;
- Edit <b>at</b> 0 <b>range</b> 3 .. 3;
- Wrap <b>at</b> 0 <b>range</b> 4 .. 4;
- Blank <b>at</b> 0 <b>range</b> 5 .. 5;
- Auto_Skip <b>at</b> 0 <b>range</b> 6 .. 6;
- Null_Ok <b>at</b> 0 <b>range</b> 7 .. 7;
- Pass_Ok <b>at</b> 0 <b>range</b> 8 .. 8;
- Static <b>at</b> 0 <b>range</b> 9 .. 9;
- <b>end</b> <b>record</b>;
- <b>for</b> Field_Option_Set'Size <b>use</b> 32;
- <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
- <FONT COLOR=green><EM>-- different on your system.Dnl</EM></FONT>
-
- <b>pragma</b> Warnings (On);
-
- <b>function</b> Default_Field_Options <b>return</b> Field_Option_Set;
- <FONT COLOR=green><EM>-- The initial defaults for the field options.</EM></FONT>
- <b>pragma</b> Inline (Default_Field_Options);
-
- <b>pragma</b> Warnings (Off);
- <b>type</b> Form_Option_Set <b>is</b>
- <b>record</b>
- NL_Overload : Boolean;
- BS_Overload : Boolean;
- <b>end</b> <b>record</b><A HREF="terminal_interface-curses-forms__ads.htm<09_9">;</A>
- <b>pragma</b> Pack (Form_Option_Set);
- <b>pragma</b> Convention (C, Form_Option_Set);
-
- <b>for</b> Form_Option_Set <b>use</b>
- <b>record</b>
- NL_Overload <b>at</b> 0 <b>range</b> 0 .. 0;
- BS_Overload <b>at</b> 0 <b>range</b> 1 .. 1;
- <b>end</b> <b>record</b>;
- <b>for</b> Form_Option_Set'Size <b>use</b> 32;
- <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
- <FONT COLOR=green><EM>-- different on your system.Dnl</EM></FONT>
-
- <b>pragma</b> Warnings (On);
-
- <b>function</b> Default_Form_Options <b>return</b> Form_Option_Set;
- <FONT COLOR=green><EM>-- The initial defaults for the form options.</EM></FONT>
- <b>pragma</b> Inline (Default_Form_Options);
-
- <b>type</b> Buffer_Number <b>is</b> <b>new</b> Natural;
-
- <b>type</b> Field_Array <b>is</b> <b>array</b> (Positive <b>range</b> <>) <b>of</b> <b>aliased</b> Field;
- <b>pragma</b> Convention (C, Field_Array);
-
- <b>type</b> Field_Array_Access <b>is</b> <b>access</b> Field_Array;
-
- <b>procedure</b> Free (FA : <b>in</b> <b>out</b> Field_Array_Access;
- Free_Fields : <b>in</b> Boolean := False);
- <FONT COLOR=green><EM>-- Release the memory for an allocated field array</EM></FONT>
- <FONT COLOR=green><EM>-- If Free_Fields is True, call Delete() for all the fields in</EM></FONT>
- <FONT COLOR=green><EM>-- the array.</EM></FONT>
-
- <b>subtype</b> Form_Request_Code <b>is</b> Key_Code <b>range</b> (Key_Max + 1) .. (Key_Max + 57);
-
- <FONT COLOR=green><EM>-- The prefix F_ stands for "Form Request"</EM></FONT>
- F_Next_Page : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 1;
- F_Previous_Page : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 2;
- F_First_Page : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 3;
- F_Last_Page : <b>constant</b> Form_Request_Code := Key_Max + 4;
-
- F_Next_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 5;
- F_Previous_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 6;
- F_First_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 7;
- F_Last_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 8;
- F_Sorted_Next_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 9;
- F_Sorted_Previous_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 10;
- F_Sorted_First_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 11;
- F_Sorted_Last_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 12;
- F_Left_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 13;
- F_Right_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 14;
- F_Up_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 15;
- F_Down_Field : <b>constant</b> Form_Request_Code := Key_Max + 16;
-
- F_Next_Char : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 17;
- F_Previous_Char : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 18;
- F_Next_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 19;
- F_Previous_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 20;
- F_Next_Word : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 21;
- F_Previous_Word : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 22;
- F_Begin_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 23;
- F_End_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 24;
- F_Begin_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 25;
- F_End_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 26;
- F_Left_Char : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 27;
- F_Right_Char : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 28;
- F_Up_Char : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 29;
- F_Down_Char : <b>constant</b> Form_Request_Code := Key_Max + 30;
-
- F_New_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 31;
- F_Insert_Char : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 32;
- F_Insert_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 33;
- F_Delete_Char : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 34;
- F_Delete_Previous : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 35;
- F_Delete_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 36;
- F_Delete_Word : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 37;
- F_Clear_EOL : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 38;
- F_Clear_EOF : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 39;
- F_Clear_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 40;
- F_Overlay_Mode : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 41;
- F_Insert_Mode : <b>constant</b> Form_Request_Code := Key_Max + 42;
-
- <FONT COLOR=green><EM>-- Vertical Scrolling</EM></FONT>
- F_ScrollForward_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 43;
- F_ScrollBackward_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 44;
- F_ScrollForward_Page : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 45;
- F_ScrollBackward_Page : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 46;
- F_ScrollForward_HalfPage : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 47;
- F_ScrollBackward_HalfPage : <b>constant</b> Form_Request_Code := Key_Max + 48;
-
- <FONT COLOR=green><EM>-- Horizontal Scrolling</EM></FONT>
- F_HScrollForward_Char : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 49;
- F_HScrollBackward_Char : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 50;
- F_HScrollForward_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 51;
- F_HScrollBackward_Line : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 52;
- F_HScrollForward_HalfLine : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 53;
- F_HScrollBackward_HalfLine : <b>constant</b> Form_Request_Code := Key_Max + 54;
-
- F_Validate_Field : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 55;
- F_Next_Choice : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> := Key_Max + 56;
- F_Previous_Choice : <b>constant</b> Form_Request_Code := Key_Max + 57;
-
- <FONT COLOR=green><EM>-- For those who like the old 'C' style request names</EM></FONT>
- REQ_NEXT_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Page;
- REQ_PREV_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Page;
- REQ_FIRST_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_First_Page;
- REQ_LAST_PAGE : Form_Request_Code <b>renames</b> F_Last_Page;
-
- REQ_NEXT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Field;
- REQ_PREV_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Field;
- REQ_FIRST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_First_Field;
- REQ_LAST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Last_Field;
- REQ_SNEXT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Sorted_Next_Field;
- REQ_SPREV_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Sorted_Previous_Field;
- REQ_SFIRST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Sorted_First_Field;
- REQ_SLAST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Sorted_Last_Field;
- REQ_LEFT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Left_Field;
- REQ_RIGHT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Right_Field;
- REQ_UP_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Up_Field;
- REQ_DOWN_FIELD : Form_Request_Code <b>renames</b> F_Down_Field;
-
- REQ_NEXT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Char;
- REQ_PREV_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Char;
- REQ_NEXT_LINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Line;
- REQ_PREV_LINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Line;
- REQ_NEXT_WORD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Word;
- REQ_PREV_WORD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Previous_Word;
- REQ_BEG_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Begin_Field;
- REQ_END_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_End_Field;
- REQ_BEG_LINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Begin_Line;
- REQ_END_LINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_End_Line;
- REQ_LEFT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Left_Char;
- REQ_RIGHT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Right_Char;
- REQ_UP_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Up_Char;
- REQ_DOWN_CHAR : Form_Request_Code <b>renames</b> F_Down_Char;
-
- REQ_NEW_LINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_New_Line;
- REQ_INS_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Insert_Char;
- REQ_INS_LINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Insert_Line;
- REQ_DEL_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Delete_Char;
- REQ_DEL_PREV : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Delete_Previous;
- REQ_DEL_LINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Delete_Line;
- REQ_DEL_WORD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Delete_Word;
- REQ_CLR_EOL : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Clear_EOL;
- REQ_CLR_EOF : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Clear_EOF;
- REQ_CLR_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Clear_Field;
- REQ_OVL_MODE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Overlay_Mode;
- REQ_INS_MODE : Form_Request_Code <b>renames</b> F_Insert_Mode;
-
- REQ_SCR_FLINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollForward_Line;
- REQ_SCR_BLINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollBackward_Line;
- REQ_SCR_FPAGE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollForward_Page;
- REQ_SCR_BPAGE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollBackward_Page;
- REQ_SCR_FHPAGE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_ScrollForward_HalfPage;
- REQ_SCR_BHPAGE : Form_Request_Code <b>renames</b> F_ScrollBackward_HalfPage;
-
- REQ_SCR_FCHAR : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollForward_Char;
- REQ_SCR_BCHAR : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollBackward_Char;
- REQ_SCR_HFLINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollForward_Line;
- REQ_SCR_HBLINE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollBackward_Line;
- REQ_SCR_HFHALF : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_HScrollForward_HalfLine;
- REQ_SCR_HBHALF : Form_Request_Code <b>renames</b> F_HScrollBackward_HalfLine;
-
- REQ_VALIDATION : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Validate_Field;
- REQ_NEXT_CHOICE : <A HREF="terminal_interface-curses-forms__ads.htm<45_12">Form_Request_Code</A> <b>renames</b> F_Next_Choice;
- REQ_PREV_CHOICE : Form_Request_Code <b>renames</b> F_Previous_Choice;
-
-
- <b>procedure</b> Request_Name (Key : <b>in</b> Form_Request_Code;
- Name : <b>out</b> String);
-
- <b>function</b> Request_Name (Key : Form_Request_Code) <b>return</b> String;
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
- <b>pragma</b> Inline (Request_Name);
-
- <FONT COLOR=green><EM>------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Exceptions --</EM></FONT>
- <FONT COLOR=green><EM>------------------</EM></FONT>
- Form_Exception : <b>exception</b>;
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
- <b>function</b> Create (Height : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Width : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
- Top : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Left : Column_Position;
- Off_Screen : <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Natural</A> := 0;
- More_Buffers : Buffer_Number := Buffer_Number'First)
- <b>return</b> Field;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></FONT>
- <FONT COLOR=green><EM>-- An overloaded Create is defined later. Pragma Inline appears there.</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
- <b>function</b> New_Field (Height : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Width : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
- Top : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Left : Column_Position;
- Off_Screen : <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Natural</A> := 0;
- More_Buffers : Buffer_Number := Buffer_Number'First)
- <b>return</b> Field <b>renames</b> Create;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></FONT>
- <b>pragma</b> Inline (New_Field);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
- <b>procedure</b> Delete (Fld : <b>in</b> <b>out</b> Field);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">free_field()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Reset Fld to Null_Field</EM></FONT>
- <FONT COLOR=green><EM>-- An overloaded Delete is defined later. Pragma Inline appears there.</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_4">|</EM></FONT>
- <b>function</b> Duplicate (Fld : <A HREF="terminal_interface-curses__ads.htm#60_9">Field</A>;
- Top : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Left : Column_Position) <b>return</b> Field;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">dup_field()</A></EM></FONT>
- <b>pragma</b> Inline (Duplicate);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_5">|</EM></FONT>
- <b>function</b> Link (Fld : <A HREF="terminal_interface-curses__ads.htm#60_9">Field</A>;
- Top : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Left : Column_Position) <b>return</b> Field;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">link_field()</A></EM></FONT>
- <b>pragma</b> Inline (Link);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_just.3x.html">form_field_just.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_6">|</EM></FONT>
- <b>procedure</b> Set_Justification (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#63_9">Field</A>;
- Just : <b>in</b> Field_Justification := None);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_just.3x.html">set_field_just()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Justification);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_7">|</EM></FONT>
- <b>function</b> Get_Justification (Fld : Field) <b>return</b> Field_Justification;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_just.3x.html">field_just()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Justification);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_8">|</EM></FONT>
- <b>procedure</b> Set_Buffer
- (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Field</A>;
- Buffer : <b>in</b> Buffer_Number := Buffer_Number'First;
- Str : <b>in</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_buffer()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Not inlined</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_9">|</EM></FONT>
- <b>procedure</b> Get_Buffer
- (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Field</A>;
- Buffer : <b>in</b> Buffer_Number := Buffer_Number'First;
- Str : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></FONT>
-
- <b>function</b> Get_Buffer
- (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Field</A>;
- Buffer : <b>in</b> Buffer_Number := Buffer_Number'First) <b>return</b> String;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same but as function</EM></FONT>
- <b>pragma</b> Inline (Get_Buffer);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_10">|</EM></FONT>
- <b>procedure</b> Set_Status (Fld : <b>in</b> Field;
- Status : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_status()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Status);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_11">|</EM></FONT>
- <b>function</b> Changed (Fld : Field) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_status()</A></EM></FONT>
- <b>pragma</b> Inline (Changed);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_12">|</EM></FONT>
- <b>procedure</b> Set_Maximum_Size (Fld : <b>in</b> Field;
- Max : <b>in</b> Natural := 0);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_max()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Maximum_Size);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_13">|</EM></FONT>
- <b>procedure</b> Set_Options (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#69_9">Field</A>;
- Options : <b>in</b> Field_Option_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">set_field_opts()</A></EM></FONT>
- <FONT COLOR=green><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_14">|</EM></FONT>
- <b>procedure</b> Switch_Options (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#69_9">Field</A>;
- Options : <b>in</b> Field_Option_Set;
- On : Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts_on()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: field_opts_off()</EM></FONT>
- <FONT COLOR=green><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_15">|</EM></FONT>
- <b>procedure</b> Get_Options (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#69_9">Field</A>;
- Options : <b>out</b> Field_Option_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_16">|</EM></FONT>
- <b>function</b> Get_Options (Fld : Field := Null_Field)
- <b>return</b> Field_Option_Set;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></FONT>
- <FONT COLOR=green><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_17">|</EM></FONT>
- <b>procedure</b> Set_Foreground
- (Fld : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
- Color : <b>in</b> Color_Pair := Color_Pair'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_fore()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Foreground);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_18">|</EM></FONT>
- <b>procedure</b> Foreground (Fld : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
- Fore : <b>out</b> Character_Attribute_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_19">|</EM></FONT>
- <b>procedure</b> Foreground (Fld : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
- Fore : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
- Color : <b>out</b> Color_Pair);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></FONT>
- <b>pragma</b> Inline (Foreground);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_20">|</EM></FONT>
- <b>procedure</b> Set_Background
- (Fld : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
- Back : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
- Color : <b>in</b> Color_Pair := Color_Pair'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_back()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Background);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_21">|</EM></FONT>
- <b>procedure</b> Background (Fld : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
- Back : <b>out</b> Character_Attribute_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_22">|</EM></FONT>
- <b>procedure</b> Background (Fld : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Field</A>;
- Back : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
- Color : <b>out</b> Color_Pair);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></FONT>
- <b>pragma</b> Inline (Background);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_23">|</EM></FONT>
- <b>procedure</b> Set_Pad_Character (Fld : <b>in</b> Field;
- Pad : <b>in</b> Character := Space);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_pad()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Pad_Character);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_24">|</EM></FONT>
- <b>procedure</b> Pad_Character (Fld : <b>in</b> Field;
- Pad : <b>out</b> Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_pad()</A></EM></FONT>
- <b>pragma</b> Inline (Pad_Character);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_info.3x.html">form_field_info.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_25">|</EM></FONT>
- <b>procedure</b> Info (Fld : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#63_12">Field</A>;
- Lines : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Columns : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
- First_Row : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- First_Column : <b>out</b> Column_Position;
- Off_Screen : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm<32_9">Natural</A>;
- Additional_Buffers : <b>out</b> Buffer_Number);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_info.3x.html">field_info()</A></EM></FONT>
- <b>pragma</b> Inline (Info);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_26">|</EM></FONT>
- <b>procedure</b> Dynamic_Info (Fld : <b>in</b> Field;
- Lines : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Columns : <b>out</b> Column_Count;
- Max : <b>out</b> Natural);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_info.3x.html">dynamic_field_info()</A></EM></FONT>
- <b>pragma</b> Inline (Dynamic_Info);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_win.3x.html">form_win.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_27">|</EM></FONT>
- <b>procedure</b> Set_Window (<FONT COLOR=red><A NAME="510_26">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Form</A>;
- Win : <b>in</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">set_form_win()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_28">|</EM></FONT>
- <b>function</b> Get_Window (Frm : Form) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">form_win()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_29">|</EM></FONT>
- <b>procedure</b> Set_Sub_Window (<FONT COLOR=red><A NAME="521_30">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Form</A>;
- Win : <b>in</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">set_form_sub()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Sub_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_30">|</EM></FONT>
- <b>function</b> Get_Sub_Window (Frm : Form) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">form_sub()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Sub_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_31">|</EM></FONT>
- <b>procedure</b> Scale (Frm : <b>in</b> Form;
- Lines : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Columns : <b>out</b> Column_Count);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">scale_form()</A></EM></FONT>
- <b>pragma</b> Inline (Scale);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_hook.3x.html">form_hook.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <b>type</b> Form_Hook_Function <b>is</b> <b>access</b> <b>procedure</b> (Frm : <b>in</b> Form);
- <b>pragma</b> Convention (C, Form_Hook_Function);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_32">|</EM></FONT>
- <b>procedure</b> Set_Field_Init_Hook (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#541_9">Form</A>;
- Proc : <b>in</b> Form_Hook_Function);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_field_init()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Field_Init_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_33">|</EM></FONT>
- <b>procedure</b> Set_Field_Term_Hook (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#541_9">Form</A>;
- Proc : <b>in</b> Form_Hook_Function);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_field_term()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Field_Term_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_34">|</EM></FONT>
- <b>procedure</b> Set_Form_Init_Hook (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#541_9">Form</A>;
- Proc : <b>in</b> Form_Hook_Function);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_form_init()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Form_Init_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_35">|</EM></FONT>
- <b>procedure</b> Set_Form_Term_Hook (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#541_9">Form</A>;
- Proc : <b>in</b> Form_Hook_Function);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_form_term()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Form_Term_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_36">|</EM></FONT>
- <b>function</b> Get_Field_Init_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">field_init()</A></EM></FONT>
- <b>pragma</b> Import (C, Get_Field_Init_Hook, "field_init");
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_37">|</EM></FONT>
- <b>function</b> Get_Field_Term_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">field_term()</A></EM></FONT>
- <b>pragma</b> Import (C, Get_Field_Term_Hook, "field_term");
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_38">|</EM></FONT>
- <b>function</b> Get_Form_Init_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">form_init()</A></EM></FONT>
- <b>pragma</b> Import (C, Get_Form_Init_Hook, "form_init");
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_39">|</EM></FONT>
- <b>function</b> Get_Form_Term_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">form_term()</A></EM></FONT>
- <b>pragma</b> Import (C, Get_Form_Term_Hook, "form_term");
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field.3x.html">form_field.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_40">|</EM></FONT>
- <b>procedure</b> Redefine (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<37_9">Form</A>;
- Flds : <b>in</b> Field_Array_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></FONT>
- <b>pragma</b> Inline (Redefine);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_41">|</EM></FONT>
- <b>procedure</b> Set_Fields (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<37_9">Form</A>;
- Flds : <b>in</b> Field_Array_Access) <b>renames</b> Redefine;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Fields);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_42">|</EM></FONT>
- <b>function</b> Fields (Frm : Form;
- Index : Positive) <b>return</b> Field;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">form_fields()</A></EM></FONT>
- <b>pragma</b> Inline (Fields);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_43">|</EM></FONT>
- <b>function</b> Field_Count (Frm : Form) <b>return</b> Natural;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">field_count()</A></EM></FONT>
- <b>pragma</b> Inline (Field_Count);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_44">|</EM></FONT>
- <b>procedure</b> Move (Fld : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Field</A>;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">move_field()</A></EM></FONT>
- <b>pragma</b> Inline (Move);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_new.3x.html">form_new.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_45">|</EM></FONT>
- <b>function</b> Create (Fields : Field_Array_Access) <b>return</b> Form;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></FONT>
- <b>pragma</b> Inline (Create);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_46">|</EM></FONT>
- <b>function</b> New_Form (Fields : Field_Array_Access) <b>return</b> Form
- <b>renames</b> Create;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></FONT>
- <b>pragma</b> Inline (New_Form);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_47">|</EM></FONT>
- <b>procedure</b> Delete (Frm : <b>in</b> <b>out</b> Form);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new.3x.html">free_form()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Reset Frm to Null_Form</EM></FONT>
- <b>pragma</b> Inline (Delete);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_opts.3x.html">form_opts.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_48">|</EM></FONT>
- <b>procedure</b> Set_Options (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<09_9">Form</A>;
- Options : <b>in</b> Form_Option_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_opts.3x.html">set_form_opts()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Options);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_49">|</EM></FONT>
- <b>procedure</b> Switch_Options (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<09_9">Form</A>;
- Options : <b>in</b> Form_Option_Set;
- On : Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts_on()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: form_opts_off()</EM></FONT>
- <b>pragma</b> Inline (Switch_Options);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_50">|</EM></FONT>
- <b>procedure</b> Get_Options (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm<09_9">Form</A>;
- Options : <b>out</b> Form_Option_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_51">|</EM></FONT>
- <b>function</b> Get_Options (Frm : Form := Null_Form) <b>return</b> Form_Option_Set;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Options);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_post.3x.html">form_post.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_52">|</EM></FONT>
- <b>procedure</b> Post (Frm : <b>in</b> Form;
- Post : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_post.3x.html">post_form()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: unpost_form()</EM></FONT>
- <b>pragma</b> Inline (Post);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_cursor.3x.html">form_cursor.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_53">|</EM></FONT>
- <b>procedure</b> Position_Cursor (Frm : Form);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_cursor.3x.html">pos_form_cursor()</A></EM></FONT>
- <b>pragma</b> Inline (Position_Cursor);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_data.3x.html">form_data.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_54">|</EM></FONT>
- <b>function</b> Data_Ahead (Frm : Form) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_data.3x.html">data_ahead()</A></EM></FONT>
- <b>pragma</b> Inline (Data_Ahead);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_55">|</EM></FONT>
- <b>function</b> Data_Behind (Frm : Form) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_data.3x.html">data_behind()</A></EM></FONT>
- <b>pragma</b> Inline (Data_Behind);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_driver.3x.html">form_driver.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <b>type</b> Driver_Result <b>is</b> (<FONT COLOR=red><A NAME="710_27">Form_Ok</A></FONT>,
- <FONT COLOR=red><A NAME="711_27">Request_Denied</A></FONT>,
- <FONT COLOR=red><A NAME="712_27">Unknown_Request</A></FONT>,
- Invalid_Field);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_56">|</EM></FONT>
- <b>function</b> Driver (Frm : <A HREF="terminal_interface-curses__ads.htm#68_9">Form</A>;
- Key : Key_Code) <b>return</b> Driver_Result;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_driver.3x.html">form_driver()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Driver not inlined</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_page.3x.html">form_page.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <b>type</b> Page_Number <b>is</b> <b>new</b> Natural;
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_57">|</EM></FONT>
- <b>procedure</b> Set_Current (<FONT COLOR=red><A NAME="728_27">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
- Fld : <b>in</b> Field);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">set_current_field()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Current);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_58">|</EM></FONT>
- <b>function</b> Current (Frm : <b>in</b> Form) <b>return</b> Field;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">current_field()</A></EM></FONT>
- <b>pragma</b> Inline (Current);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_59">|</EM></FONT>
- <b>procedure</b> Set_Page (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#724_9">Form</A>;
- Page : <b>in</b> Page_Number := Page_Number'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">set_form_page()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Page);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_60">|</EM></FONT>
- <b>function</b> Page (Frm : Form) <b>return</b> Page_Number;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">form_page()</A></EM></FONT>
- <b>pragma</b> Inline (Page);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_61">|</EM></FONT>
- <b>function</b> Get_Index (Fld : Field) <b>return</b> Positive;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">field_index()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Please note that in this binding we start the numbering of fields</EM></FONT>
- <FONT COLOR=green><EM>-- with 1. So this is number is one more than you get from the low</EM></FONT>
- <FONT COLOR=green><EM>-- level call.</EM></FONT>
- <b>pragma</b> Inline (Get_Index);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_new_page.3x.html">form_new_page.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_62">|</EM></FONT>
- <b>procedure</b> Set_New_Page (Fld : <b>in</b> Field;
- New_Page : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new_page.3x.html">set_new_page()</A></EM></FONT>
- <b>pragma</b> Inline (Set_New_Page);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_63">|</EM></FONT>
- <b>function</b> Is_New_Page (Fld : Field) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new_page.3x.html">new_page()</A></EM></FONT>
- <b>pragma</b> Inline (Is_New_Page);
-
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<b>private</b>
- <b>type</b> <A HREF="terminal_interface-curses-forms__ads.htm#58_9">Field</A> <b>is</b> <b>new</b> <A HREF="system__ads.htm>3_9">System</A>.<A HREF="s-stoele__ads.htm>2_16">Storage_Elements</A>.<A HREF="s-stoele__ads.htm#70_9">Integer_Address</A>;
- <b>type</b> Form <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
-
- <A HREF="terminal_interface-curses-forms__ads.htm#61_4">Null_Field</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#58_9">Field</A> := 0;
- Null_Form : <b>constant</b> Form := 0;
-
-<b>end</b> Terminal_Interface.Curses.Forms;
-</PRE></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HEAD><TITLE>terminal_interface-curses-menus.ads</TITLE></HEAD>
-<BODY>
-<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus.ads </H1></DIV><HR>
-<PRE>
-
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Menu --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
-<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
-<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
-<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
-<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
-<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
-<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
-<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
-<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
-<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
-<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
-<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
-<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
-<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
-<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
-<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
-<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
-<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.19 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- menu binding.</EM></FONT>
-<FONT COLOR=green><EM>-- This module is generated. Please don't change it manually!</EM></FONT>
-<FONT COLOR=green><EM>-- Run the generator instead.</EM></FONT>
-<FONT COLOR=green><EM>-- |</EM></FONT>
-<b>with</b> <A HREF="interfac__ads.htm>3_9">System</A>;
-<b>with</b> <A HREF="ada__ads.htm<8_9">Interfaces</A>.C;
-<b>with</b> Ada.Characters.Latin_1;
-
-<b>package</b> Terminal_Interface.Curses.Menus <b>is</b>
- <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Menus);
- <b>pragma</b> Linker_Options ("-lmenu");
- <b>pragma</b> Linker_Options ("-lAdaCurses");
- <b>pragma</b> Linker_Options ("-lncurses");
-
- Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
-
- <b>type</b> <FONT COLOR=red><A NAME="58_9">Item</A></FONT> <b>is</b> <b>private</b>;
- <b>type</b> Menu <b>is</b> <b>private</b>;
-
- <FONT COLOR=green><EM>---------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Interface constants --</EM></FONT>
- <FONT COLOR=green><EM>---------------------------</EM></FONT>
- <FONT COLOR=red><A NAME="64_4">Null_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#58_9">Item</A>;
- Null_Menu : <b>constant</b> Menu;
-
- <b>subtype</b> Menu_Request_Code <b>is</b> Key_Code
- <b>range</b> (Key_Max + 1) .. (Key_Max + 17);
-
- <FONT COLOR=green><EM>-- The prefix M_ stands for "Menu Request"</EM></FONT>
- M_Left_Item : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 1;
- M_Right_Item : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 2;
- M_Up_Item : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 3;
- M_Down_Item : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 4;
- M_ScrollUp_Line : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 5;
- M_ScrollDown_Line : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 6;
- M_ScrollDown_Page : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 7;
- M_ScrollUp_Page : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 8;
- M_First_Item : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 9;
- M_Last_Item : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 10;
- M_Next_Item : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 11;
- M_Previous_Item : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 12;
- M_Toggle_Item : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 13;
- M_Clear_Pattern : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 14;
- M_Back_Pattern : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 15;
- M_Next_Match : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> := Key_Max + 16;
- M_Previous_Match : <b>constant</b> Menu_Request_Code := Key_Max + 17;
-
- <FONT COLOR=green><EM>-- For those who like the old 'C' names for the request codes</EM></FONT>
- REQ_LEFT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Left_Item;
- REQ_RIGHT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Right_Item;
- REQ_UP_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Up_Item;
- REQ_DOWN_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Down_Item;
- REQ_SCR_ULINE : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_ScrollUp_Line;
- REQ_SCR_DLINE : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_ScrollDown_Line;
- REQ_SCR_DPAGE : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_ScrollDown_Page;
- REQ_SCR_UPAGE : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_ScrollUp_Page;
- REQ_FIRST_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_First_Item;
- REQ_LAST_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Last_Item;
- REQ_NEXT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Next_Item;
- REQ_PREV_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Previous_Item;
- REQ_TOGGLE_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Toggle_Item;
- REQ_CLEAR_PATTERN : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Clear_Pattern;
- REQ_BACK_PATTERN : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Back_Pattern;
- REQ_NEXT_MATCH : <A HREF="terminal_interface-curses-menus__ads.htm#66_12">Menu_Request_Code</A> <b>renames</b> M_Next_Match;
- REQ_PREV_MATCH : Menu_Request_Code <b>renames</b> M_Previous_Match;
-
- <b>procedure</b> Request_Name (Key : <b>in</b> Menu_Request_Code;
- Name : <b>out</b> String);
-
- <b>function</b> Request_Name (Key : Menu_Request_Code) <b>return</b> String;
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
-
- <FONT COLOR=green><EM>------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Exceptions --</EM></FONT>
- <FONT COLOR=green><EM>------------------</EM></FONT>
-
- Menu_Exception : <b>exception</b>;
- <FONT COLOR=green><EM>--</EM></FONT>
- <FONT COLOR=green><EM>-- Menu options</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- <b>pragma</b> Warnings (Off);
- <b>type</b> Menu_Option_Set <b>is</b>
- <b>record</b>
- One_Valued : Boolean;
- Show_Descriptions : Boolean;
- Row_Major_Order : Boolean;
- Ignore_Case : Boolean;
- Show_Matches : Boolean;
- Non_Cyclic : Boolean;
- <b>end</b> <b>record</b><A HREF="terminal_interface-curses-menus__ads.htm<22_9">;</A>
- <b>pragma</b> Pack (Menu_Option_Set);
- <b>pragma</b> Convention (C, Menu_Option_Set);
-
- <b>for</b> Menu_Option_Set <b>use</b>
- <b>record</b>
- One_Valued <b>at</b> 0 <b>range</b> 0 .. 0;
- Show_Descriptions <b>at</b> 0 <b>range</b> 1 .. 1;
- Row_Major_Order <b>at</b> 0 <b>range</b> 2 .. 2;
- Ignore_Case <b>at</b> 0 <b>range</b> 3 .. 3;
- Show_Matches <b>at</b> 0 <b>range</b> 4 .. 4;
- Non_Cyclic <b>at</b> 0 <b>range</b> 5 .. 5;
- <b>end</b> <b>record</b>;
- <b>for</b> Menu_Option_Set'Size <b>use</b> 32;
- <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
- <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
- <b>pragma</b> Warnings (On);
-
- <b>function</b> Default_Menu_Options <b>return</b> Menu_Option_Set;
- <FONT COLOR=green><EM>-- Initial default options for a menu.</EM></FONT>
- <b>pragma</b> Inline (Default_Menu_Options);
- <FONT COLOR=green><EM>--</EM></FONT>
- <FONT COLOR=green><EM>-- Item options</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- <b>pragma</b> Warnings (Off);
- <b>type</b> Item_Option_Set <b>is</b>
- <b>record</b>
- Selectable : Boolean;
- <b>end</b> <b>record</b><A HREF="terminal_interface-curses-menus__ads.htm<55_9">;</A>
- <b>pragma</b> Pack (Item_Option_Set);
- <b>pragma</b> Convention (C, Item_Option_Set);
-
- <b>for</b> Item_Option_Set <b>use</b>
- <b>record</b>
- Selectable <b>at</b> 0 <b>range</b> 0 .. 0;
- <b>end</b> <b>record</b>;
- <b>for</b> Item_Option_Set'Size <b>use</b> 32;
- <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
- <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
- <b>pragma</b> Warnings (On);
-
- <b>function</b> Default_Item_Options <b>return</b> Item_Option_Set;
- <FONT COLOR=green><EM>-- Initial default options for an item.</EM></FONT>
- <b>pragma</b> Inline (Default_Item_Options);
-
- <FONT COLOR=green><EM>--</EM></FONT>
- <FONT COLOR=green><EM>-- Item Array</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- <b>type</b> Item_Array <b>is</b> <b>array</b> (Positive <b>range</b> <>) <b>of</b> <b>aliased</b> Item;
- <b>pragma</b> Convention (C, Item_Array);
-
- <b>type</b> Item_Array_Access <b>is</b> <b>access</b> Item_Array;
-
- <b>procedure</b> Free (IA : <b>in</b> <b>out</b> Item_Array_Access;
- Free_Items : Boolean := False);
- <FONT COLOR=green><EM>-- Release the memory for an allocated item array</EM></FONT>
- <FONT COLOR=green><EM>-- If Free_Items is True, call Delete() for all the items in</EM></FONT>
- <FONT COLOR=green><EM>-- the array.</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
- <b>function</b> Create (Name : String;
- Description : String := "") <b>return</b> Item;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Not inlined.</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
- <b>function</b> New_Item (Name : String;
- <A HREF="terminal_interface-curses-menus__ads.htm<94_13"> </A> Description : String := "") <b>return</b> Item
- <b>renames</b> Create;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
- <b>procedure</b> Delete (Itm : <b>in</b> <b>out</b> Item);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">free_item()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Resets Itm to Null_Item</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_value.3x.html">mitem_value.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_4">|</EM></FONT>
- <b>procedure</b> Set_Value (Itm : <b>in</b> Item;
- Value : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_value.3x.html">set_item_value()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Value);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_5">|</EM></FONT>
- <b>function</b> Value (Itm : Item) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_value.3x.html">item_value()</A></EM></FONT>
- <b>pragma</b> Inline (Value);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_visible.3x.html">mitem_visible.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_6">|</EM></FONT>
- <b>function</b> Visible (Itm : Item) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_visible.3x.html">item_visible()</A></EM></FONT>
- <b>pragma</b> Inline (Visible);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_7">|</EM></FONT>
- <b>procedure</b> Set_Options (Itm : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<55_9">Item</A>;
- Options : <b>in</b> Item_Option_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">set_item_opts()</A></EM></FONT>
- <FONT COLOR=green><EM>-- An overloaded Set_Options is defined later. Pragma Inline appears there</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_8">|</EM></FONT>
- <b>procedure</b> Switch_Options (Itm : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<55_9">Item</A>;
- Options : <b>in</b> Item_Option_Set;
- On : Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts_on()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: item_opts_off()</EM></FONT>
- <FONT COLOR=green><EM>-- An overloaded Switch_Options is defined later.</EM></FONT>
- <FONT COLOR=green><EM>-- Pragma Inline appears there</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_9">|</EM></FONT>
- <b>procedure</b> Get_Options (Itm : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<55_9">Item</A>;
- Options : <b>out</b> Item_Option_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_10">|</EM></FONT>
- <b>function</b> Get_Options (Itm : Item := Null_Item) <b>return</b> Item_Option_Set;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></FONT>
- <FONT COLOR=green><EM>-- An overloaded Get_Options is defined later. Pragma Inline appears there</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_name.3x.html">mitem_name.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_11">|</EM></FONT>
- <b>procedure</b> Name (Itm : <b>in</b> Item;
- Name : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></FONT>
- <b>function</b> Name (Itm : Item) <b>return</b> String;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Implemented as function</EM></FONT>
- <b>pragma</b> Inline (Name);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_12">|</EM></FONT>
- <b>procedure</b> Description (Itm : <b>in</b> Item;
- Description : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></FONT>
-
- <b>function</b> Description (Itm : Item) <b>return</b> String;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></FONT>
- <FONT COLOR=green><EM>-- Implemented as function</EM></FONT>
- <b>pragma</b> Inline (Description);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_13">|</EM></FONT>
- <b>procedure</b> Set_Current (<FONT COLOR=red><A NAME="292_27">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
- Itm : <b>in</b> Item);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">set_current_item()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Current);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_14">|</EM></FONT>
- <b>function</b> Current (Men : Menu) <b>return</b> Item;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">current_item()</A></EM></FONT>
- <b>pragma</b> Inline (Current);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_15">|</EM></FONT>
- <b>procedure</b> Set_Top_Row (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Menu</A>;
- Line : <b>in</b> Line_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">set_top_row()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Top_Row);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_16">|</EM></FONT>
- <b>function</b> Top_Row (Men : Menu) <b>return</b> Line_Position;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">top_row()</A></EM></FONT>
- <b>pragma</b> Inline (Top_Row);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_17">|</EM></FONT>
- <b>function</b> Get_Index (Itm : Item) <b>return</b> Positive;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">item_index()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Please note that in this binding we start the numbering of items</EM></FONT>
- <FONT COLOR=green><EM>-- with 1. So this is number is one more than you get from the low</EM></FONT>
- <FONT COLOR=green><EM>-- level call.</EM></FONT>
- <b>pragma</b> Inline (Get_Index);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_post.3x.html">menu_post.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_18">|</EM></FONT>
- <b>procedure</b> Post (Men : <b>in</b> Menu;
- Post : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_post.3x.html">post_menu()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: unpost_menu()</EM></FONT>
- <b>pragma</b> Inline (Post);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_19">|</EM></FONT>
- <b>procedure</b> Set_Options (Men : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<22_9">Menu</A>;
- Options : <b>in</b> Menu_Option_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">set_menu_opts()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Options);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_20">|</EM></FONT>
- <b>procedure</b> Switch_Options (Men : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<22_9">Menu</A>;
- Options : <b>in</b> Menu_Option_Set;
- On : Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts_on()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: menu_opts_off()</EM></FONT>
- <b>pragma</b> Inline (Switch_Options);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_21">|</EM></FONT>
- <b>procedure</b> Get_Options (Men : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<22_9">Menu</A>;
- Options : <b>out</b> Menu_Option_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_22">|</EM></FONT>
- <b>function</b> Get_Options (Men : Menu := Null_Menu) <b>return</b> Menu_Option_Set;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Options);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_win.3x.html">menu_win.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_23">|</EM></FONT>
- <b>procedure</b> Set_Window (<FONT COLOR=red><A NAME="365_26">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Menu</A>;
- Win : <b>in</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">set_menu_win()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_24">|</EM></FONT>
- <b>function</b> Get_Window (Men : Menu) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">menu_win()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_25">|</EM></FONT>
- <b>procedure</b> Set_Sub_Window (<FONT COLOR=red><A NAME="376_30">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Menu</A>;
- Win : <b>in</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">set_menu_sub()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Sub_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_26">|</EM></FONT>
- <b>function</b> Get_Sub_Window (Men : Menu) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">menu_sub()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Sub_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_27">|</EM></FONT>
- <b>procedure</b> Scale (Men : <b>in</b> Menu;
- Lines : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Columns : <b>out</b> Column_Count);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">scale_menu()</A></EM></FONT>
- <b>pragma</b> Inline (Scale);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_cursor.3x.html">menu_cursor.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_28">|</EM></FONT>
- <b>procedure</b> Position_Cursor (Men : Menu);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_cursor.3x.html">pos_menu_cursor()</A></EM></FONT>
- <b>pragma</b> Inline (Position_Cursor);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_mark.3x.html">menu_mark.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_29">|</EM></FONT>
- <b>procedure</b> Set_Mark (Men : <b>in</b> Menu;
- Mark : <b>in</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">set_menu_mark()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Mark);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_30">|</EM></FONT>
- <b>procedure</b> Mark (Men : <b>in</b> Menu;
- Mark : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></FONT>
-
- <b>function</b> Mark (Men : Menu) <b>return</b> String;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Implemented as function</EM></FONT>
- <b>pragma</b> Inline (Mark);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_31">|</EM></FONT>
- <b>procedure</b> Set_Foreground
- (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
- Color : <b>in</b> Color_Pair := Color_Pair'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_fore()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Foreground);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_32">|</EM></FONT>
- <b>procedure</b> Foreground (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
- Fore : <b>out</b> Character_Attribute_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_fore()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_33">|</EM></FONT>
- <b>procedure</b> Foreground (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
- Fore : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
- Color : <b>out</b> Color_Pair);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_fore()</A></EM></FONT>
- <b>pragma</b> Inline (Foreground);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_34">|</EM></FONT>
- <b>procedure</b> Set_Background
- (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
- Back : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
- Color : <b>in</b> Color_Pair := Color_Pair'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_back()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Background);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_35">|</EM></FONT>
- <b>procedure</b> Background (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
- Back : <b>out</b> Character_Attribute_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_back()</A></EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_36">|</EM></FONT>
-
- <b>procedure</b> Background (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
- Back : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
- Color : <b>out</b> Color_Pair);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_back()</A></EM></FONT>
- <b>pragma</b> Inline (Background);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_37">|</EM></FONT>
- <b>procedure</b> Set_Grey
- (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
- Grey : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
- Color : <b>in</b> Color_Pair := Color_Pair'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_grey()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Grey);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_38">|</EM></FONT>
- <b>procedure</b> Grey (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
- Grey : <b>out</b> Character_Attribute_Set);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_grey()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_39">|</EM></FONT>
- <b>procedure</b> Grey
- (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Menu</A>;
- Grey : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
- Color : <b>out</b> Color_Pair);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_grey()</A></EM></FONT>
- <b>pragma</b> Inline (Grey);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_40">|</EM></FONT>
- <b>procedure</b> Set_Pad_Character (Men : <b>in</b> Menu;
- Pad : <b>in</b> Character := Space);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_pad()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Pad_Character);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_41">|</EM></FONT>
- <b>procedure</b> Pad_Character (Men : <b>in</b> Menu;
- Pad : <b>out</b> Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_pad()</A></EM></FONT>
- <b>pragma</b> Inline (Pad_Character);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_spacing.3x.html">menu_spacing.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_42">|</EM></FONT>
- <b>procedure</b> Set_Spacing (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Menu</A>;
- Descr : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> := 0;
- Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A> := 0;
- Col : <b>in</b> Column_Position := 0);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_spacing.3x.html">set_menu_spacing()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Spacing);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_43">|</EM></FONT>
- <b>procedure</b> Spacing (Men : <b>in</b> Menu;
- Descr : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
- Row : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Col : <b>out</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_spacing.3x.html">menu_spacing()</A></EM></FONT>
- <b>pragma</b> Inline (Spacing);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_pattern.3x.html">menu_pattern.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_44">|</EM></FONT>
- <b>function</b> Set_Pattern (Men : Menu;
- Text : String) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_pattern.3x.html">set_menu_pattern()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Return TRUE if the pattern matches, FALSE otherwise</EM></FONT>
- <b>pragma</b> Inline (Set_Pattern);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_45">|</EM></FONT>
- <b>procedure</b> Pattern (Men : <b>in</b> Menu;
- Text : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_pattern.3x.html">menu_pattern()</A></EM></FONT>
- <b>pragma</b> Inline (Pattern);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_format.3x.html">menu_format.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_46">|</EM></FONT>
- <b>procedure</b> Set_Format (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#63_12">Menu</A>;
- Lines : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Columns : <b>in</b> Column_Count);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_format.3x.html">set_menu_format()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Format);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_47">|</EM></FONT>
- <b>procedure</b> Format (Men : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#63_12">Menu</A>;
- Lines : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Columns : <b>out</b> Column_Count);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_format.3x.html">menu_format()</A></EM></FONT>
- <b>pragma</b> Inline (Format);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <b>type</b> Menu_Hook_Function <b>is</b> <b>access</b> <b>procedure</b> (Men : <b>in</b> Menu);
- <b>pragma</b> Convention (C, Menu_Hook_Function);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_48">|</EM></FONT>
- <b>procedure</b> Set_Item_Init_Hook (Men : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#557_9">Menu</A>;
- Proc : <b>in</b> Menu_Hook_Function);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_item_init()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Item_Init_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_49">|</EM></FONT>
- <b>procedure</b> Set_Item_Term_Hook (Men : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#557_9">Menu</A>;
- Proc : <b>in</b> Menu_Hook_Function);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_item_term()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Item_Term_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_50">|</EM></FONT>
- <b>procedure</b> Set_Menu_Init_Hook (Men : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#557_9">Menu</A>;
- Proc : <b>in</b> Menu_Hook_Function);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_menu_init()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Menu_Init_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_51">|</EM></FONT>
- <b>procedure</b> Set_Menu_Term_Hook (Men : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#557_9">Menu</A>;
- Proc : <b>in</b> Menu_Hook_Function);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_menu_term()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Menu_Term_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_52">|</EM></FONT>
- <b>function</b> Get_Item_Init_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">item_init()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Item_Init_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_53">|</EM></FONT>
- <b>function</b> Get_Item_Term_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">item_term()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Item_Term_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_54">|</EM></FONT>
- <b>function</b> Get_Menu_Init_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">menu_init()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Menu_Init_Hook);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_55">|</EM></FONT>
- <b>function</b> Get_Menu_Term_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">menu_term()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Menu_Term_Hook);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_items.3x.html">menu_items.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_56">|</EM></FONT>
- <b>procedure</b> Redefine (Men : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<81_9">Menu</A>;
- Items : <b>in</b> Item_Array_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_items.3x.html">set_menu_items()</A></EM></FONT>
- <b>pragma</b> Inline (Redefine);
-
- <b>procedure</b> Set_Items (Men : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm<81_9">Menu</A>;
- <A HREF="terminal_interface-curses-menus__ads.htm#614_14"> </A> Items : <b>in</b> Item_Array_Access) <b>renames</b> Redefine;
- <b>pragma</b> Inline (Set_Items);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_57">|</EM></FONT>
- <b>function</b> Items (Men : Menu;
- Index : Positive) <b>return</b> Item;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_items.3x.html">menu_items()</A></EM></FONT>
- <b>pragma</b> Inline (Items);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_58">|</EM></FONT>
- <b>function</b> Item_Count (Men : Menu) <b>return</b> Natural;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_items.3x.html">item_count()</A></EM></FONT>
- <b>pragma</b> Inline (Item_Count);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_new.3x.html">menu_new.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_59">|</EM></FONT>
- <b>function</b> Create (Items : Item_Array_Access) <b>return</b> Menu;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_new.3x.html">new_menu()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Not inlined</EM></FONT>
-
- <b>function</b> New_Menu (Items : Item_Array_Access) <b>return</b> Menu <b>renames</b> Create;
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_60">|</EM></FONT>
- <b>procedure</b> Delete (Men : <b>in</b> <b>out</b> Menu);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_new.3x.html">free_menu()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Reset Men to Null_Menu</EM></FONT>
- <FONT COLOR=green><EM>-- Not inlined</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_new.3x.html">menu_new.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <b>type</b> Driver_Result <b>is</b> (<FONT COLOR=red><A NAME="651_27">Menu_Ok</A></FONT>,
- <FONT COLOR=red><A NAME="652_27">Request_Denied</A></FONT>,
- <FONT COLOR=red><A NAME="653_27">Unknown_Request</A></FONT>,
- No_Match);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_61">|</EM></FONT>
- <b>function</b> Driver (Men : <A HREF="terminal_interface-curses__ads.htm#68_9">Menu</A>;
- Key : Key_Code) <b>return</b> Driver_Result;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_new.3x.html">menu_driver()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Driver is not inlined</EM></FONT>
-
-<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
-<b>private</b>
- <b>type</b> <A HREF="terminal_interface-curses-menus__ads.htm#58_9">Item</A> <b>is</b> <b>new</b> <A HREF="system__ads.htm>3_9">System</A>.<A HREF="s-stoele__ads.htm>2_16">Storage_Elements</A>.<A HREF="s-stoele__ads.htm#70_9">Integer_Address</A>;
- <b>type</b> Menu <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
-
- <A HREF="terminal_interface-curses-menus__ads.htm#64_4">Null_Item</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#58_9">Item</A> := 0;
- Null_Menu : <b>constant</b> Menu := 0;
-
-<b>end</b> Terminal_Interface.Curses.Menus;
-</PRE></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HEAD><TITLE>terminal_interface-curses.ads</TITLE></HEAD>
-<BODY>
-<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses.ads </H1></DIV><HR>
-<PRE>
-
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Terminal_Interface.Curses --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
-<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
-<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
-<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
-<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
-<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
-<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
-<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
-<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
-<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
-<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
-<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
-<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
-<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
-<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
-<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
-<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
-<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
-<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.24 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- curses binding.</EM></FONT>
-<FONT COLOR=green><EM>-- This module is generated. Please don't change it manually!</EM></FONT>
-<FONT COLOR=green><EM>-- Run the generator instead.</EM></FONT>
-<FONT COLOR=green><EM>-- |</EM></FONT>
-<b>with</b> <A HREF="interfac__ads.htm>3_9">System</A>.Storage_Elements;
-<b>with</b> Interfaces.C; <FONT COLOR=green><EM>-- We need this for some assertions.</EM></FONT>
-
-<b>package</b> Terminal_Interface.Curses <b>is</b>
- <b>pragma</b> Preelaborate (Terminal_Interface.Curses);
- <b>pragma</b> Linker_Options ("-lAdaCurses");
- <b>pragma</b> Linker_Options ("-lncurses");
-
- <FONT COLOR=red><A NAME="54_4">NC_Major_Version</A></FONT> : <b>constant</b> := 5;<FONT COLOR=green><EM>-- Major version of the library</EM></FONT>
- NC_Minor_Version : <b>constant</b> := 0;<FONT COLOR=green><EM>-- Minor version of the library</EM></FONT>
- NC_Version : <b>constant</b> String := "5.0"; <FONT COLOR=green><EM>-- Version of library</EM></FONT>
-
- <b>type</b> Window <b>is</b> <b>private</b>;
- Null_Window : <b>constant</b> Window;
-
- <b>type</b> <FONT COLOR=red><A NAME="61_9">Line_Position</A></FONT> <b>is</b> <b>new</b> Natural;<FONT COLOR=green><EM>-- line coordinate</EM></FONT>
- <b>type</b> Column_Position <b>is</b> <b>new</b> Natural;<FONT COLOR=green><EM>-- column coordinate</EM></FONT>
-
- <b>subtype</b> Line_Count <b>is</b> Line_Position <b>range</b> 1 .. Line_Position'Last;
- <FONT COLOR=green><EM>-- Type to count lines. We do not allow null windows, so must be positive</EM></FONT>
- <b>subtype</b> Column_Count <b>is</b> Column_Position <b>range</b> 1 .. Column_Position'Last;
- <FONT COLOR=green><EM>-- Type to count columns. We do not allow null windows, so must be positive</EM></FONT>
-
- <b>type</b> Key_Code <b>is</b> <b>new</b> Natural;
- <FONT COLOR=green><EM>-- That is anything including real characters, special keys and logical</EM></FONT>
- <FONT COLOR=green><EM>-- request codes.</EM></FONT>
-
- <b>subtype</b> Real_Key_Code <b>is</b> Key_Code <b>range</b> 0 .. 8#777#;
- <FONT COLOR=green><EM>-- This are the codes that potentially represent a real keystroke.</EM></FONT>
- <FONT COLOR=green><EM>-- Not all codes may be possible on a specific terminal. To check the</EM></FONT>
- <FONT COLOR=green><EM>-- availability of a special key, the Has_Key function is provided.</EM></FONT>
-
- <b>subtype</b> Special_Key_Code <b>is</b> Real_Key_Code
- <b>range</b> 8#400# .. Real_Key_Code'Last;
- <FONT COLOR=green><EM>-- Type for a function- or special key number</EM></FONT>
-
- <b>subtype</b> Normal_Key_Code <b>is</b> Real_Key_Code <b>range</b>
- Character'Pos (Character'First) .. Character'Pos (Character'Last);
- <FONT COLOR=green><EM>-- This are the codes for regular (incl. non-graphical) characters.</EM></FONT>
-
- <FONT COLOR=green><EM>-- Constants for function- and special keys</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- Key_None : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#400#;
- Key_Code_Yes : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#400#;
- Key_Min : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#401#;
- Key_Break : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#401#;
- Key_Cursor_Down : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#402#;
- Key_Cursor_Up : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#403#;
- Key_Cursor_Left : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#404#;
- Key_Cursor_Right : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#405#;
- Key_Home : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#406#;
- Key_Backspace : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#407#;
- Key_F0 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#410#;
- Key_F1 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#411#;
- Key_F2 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#412#;
- Key_F3 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#413#;
- Key_F4 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#414#;
- Key_F5 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#415#;
- Key_F6 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#416#;
- Key_F7 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#417#;
- Key_F8 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#420#;
- Key_F9 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#421#;
- Key_F10 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#422#;
- Key_F11 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#423#;
- Key_F12 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#424#;
- Key_F13 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#425#;
- Key_F14 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#426#;
- Key_F15 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#427#;
- Key_F16 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#430#;
- Key_F17 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#431#;
- Key_F18 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#432#;
- Key_F19 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#433#;
- Key_F20 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#434#;
- Key_F21 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#435#;
- Key_F22 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#436#;
- Key_F23 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#437#;
- Key_F24 : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#440#;
- Key_Delete_Line : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#510#;
- Key_Insert_Line : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#511#;
- Key_Delete_Char : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#512#;
- Key_Insert_Char : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#513#;
- Key_Exit_Insert_Mode : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#514#;
- Key_Clear_Screen : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#515#;
- Key_Clear_End_Of_Screen : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#516#;
- Key_Clear_End_Of_Line : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#517#;
- Key_Scroll_1_Forward : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#520#;
- Key_Scroll_1_Backward : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#521#;
- Key_Next_Page : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#522#;
- Key_Previous_Page : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#523#;
- Key_Set_Tab : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#524#;
- Key_Clear_Tab : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#525#;
- Key_Clear_All_Tabs : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#526#;
- Key_Enter_Or_Send : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#527#;
- Key_Soft_Reset : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#530#;
- Key_Reset : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#531#;
- Key_Print : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#532#;
- Key_Bottom : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#533#;
- Key_Upper_Left_Of_Keypad : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#534#;
- Key_Upper_Right_Of_Keypad : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#535#;
- Key_Center_Of_Keypad : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#536#;
- Key_Lower_Left_Of_Keypad : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#537#;
- Key_Lower_Right_Of_Keypad : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#540#;
- Key_Back_Tab : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#541#;
- Key_Beginning : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#542#;
- Key_Cancel : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#543#;
- Key_Close : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#544#;
- Key_Command : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#545#;
- Key_Copy : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#546#;
- Key_Create : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#547#;
- Key_End : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#550#;
- Key_Exit : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#551#;
- Key_Find : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#552#;
- Key_Help : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#553#;
- Key_Mark : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#554#;
- Key_Message : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#555#;
- Key_Move : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#556#;
- Key_Next : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#557#;
- Key_Open : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#560#;
- Key_Options : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#561#;
- Key_Previous : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#562#;
- Key_Redo : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#563#;
- Key_Reference : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#564#;
- Key_Refresh : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#565#;
- Key_Replace : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#566#;
- Key_Restart : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#567#;
- Key_Resume : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#570#;
- Key_Save : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#571#;
- Key_Shift_Begin : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#572#;
- Key_Shift_Cancel : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#573#;
- Key_Shift_Command : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#574#;
- Key_Shift_Copy : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#575#;
- Key_Shift_Create : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#576#;
- Key_Shift_Delete_Char : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#577#;
- Key_Shift_Delete_Line : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#600#;
- Key_Select : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#601#;
- Key_Shift_End : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#602#;
- Key_Shift_Clear_End_Of_Line : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#603#;
- Key_Shift_Exit : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#604#;
- Key_Shift_Find : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#605#;
- Key_Shift_Help : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#606#;
- Key_Shift_Home : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#607#;
- Key_Shift_Insert_Char : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#610#;
- Key_Shift_Cursor_Left : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#611#;
- Key_Shift_Message : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#612#;
- Key_Shift_Move : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#613#;
- Key_Shift_Next_Page : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#614#;
- Key_Shift_Options : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#615#;
- Key_Shift_Previous_Page : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#616#;
- Key_Shift_Print : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#617#;
- Key_Shift_Redo : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#620#;
- Key_Shift_Replace : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#621#;
- Key_Shift_Cursor_Right : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#622#;
- Key_Shift_Resume : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#623#;
- Key_Shift_Save : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#624#;
- Key_Shift_Suspend : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#625#;
- Key_Shift_Undo : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#626#;
- Key_Suspend : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#627#;
- Key_Undo : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#630#;
- Key_Mouse : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> := 8#631#;
- Key_Resize : <b>constant</b> Special_Key_Code := 8#632#;
-
- Key_Max : <b>constant</b> Special_Key_Code
- := Special_Key_Code'Last;
-
- <b>subtype</b> User_Key_Code <b>is</b> Key_Code
- <b>range</b> (Key_Max + 129) .. Key_Code'Last;
- <FONT COLOR=green><EM>-- This is reserved for user defined key codes. The range between Key_Max</EM></FONT>
- <FONT COLOR=green><EM>-- and the first user code is reserved for subsystems like menu and forms.</EM></FONT>
-
- <FONT COLOR=green><EM>-- For those who like to use the original key names we produce them were</EM></FONT>
- <FONT COLOR=green><EM>-- they differ from the original. Please note that they may differ in</EM></FONT>
- <FONT COLOR=green><EM>-- lower/upper case.</EM></FONT>
- KEY_DOWN : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Cursor_Down;
- KEY_UP : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Cursor_Up;
- KEY_LEFT : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Cursor_Left;
- KEY_RIGHT : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Cursor_Right;
- KEY_DL : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Delete_Line;
- KEY_IL : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Insert_Line;
- KEY_DC : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Delete_Char;
- KEY_IC : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Insert_Char;
- KEY_EIC : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Exit_Insert_Mode;
- KEY_CLEAR : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_Screen;
- KEY_EOS : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_End_Of_Screen;
- KEY_EOL : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_End_Of_Line;
- KEY_SF : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Scroll_1_Forward;
- KEY_SR : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Scroll_1_Backward;
- KEY_NPAGE : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Next_Page;
- KEY_PPAGE : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Previous_Page;
- KEY_STAB : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Set_Tab;
- KEY_CTAB : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_Tab;
- KEY_CATAB : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Clear_All_Tabs;
- KEY_ENTER : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Enter_Or_Send;
- KEY_SRESET : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Soft_Reset;
- KEY_LL : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Bottom;
- KEY_A1 : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Upper_Left_Of_Keypad;
- KEY_A3 : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Upper_Right_Of_Keypad;
- KEY_B2 : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Center_Of_Keypad;
- KEY_C1 : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Lower_Left_Of_Keypad;
- KEY_C3 : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Lower_Right_Of_Keypad;
- KEY_BTAB : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Back_Tab;
- KEY_BEG : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Beginning;
- KEY_SBEG : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Begin;
- KEY_SCANCEL : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Cancel;
- KEY_SCOMMAND : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Command;
- KEY_SCOPY : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Copy;
- KEY_SCREATE : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Create;
- KEY_SDC : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Delete_Char;
- KEY_SDL : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Delete_Line;
- KEY_SEND : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_End;
- KEY_SEOL : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Clear_End_Of_Line;
- KEY_SEXIT : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Exit;
- KEY_SFIND : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Find;
- KEY_SHELP : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Help;
- KEY_SHOME : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Home;
- KEY_SIC : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Insert_Char;
- KEY_SLEFT : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Cursor_Left;
- KEY_SMESSAGE : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Message;
- KEY_SMOVE : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Move;
- KEY_SNEXT : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Next_Page;
- KEY_SOPTIONS : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Options;
- KEY_SPREVIOUS : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Previous_Page;
- KEY_SPRINT : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Print;
- KEY_SREDO : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Redo;
- KEY_SREPLACE : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Replace;
- KEY_SRIGHT : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Cursor_Right;
- KEY_SRSUME : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Resume;
- KEY_SSAVE : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Save;
- KEY_SSUSPEND : <A HREF="terminal_interface-curses__ads.htm#77_12">Special_Key_Code</A> <b>renames</b> Key_Shift_Suspend;
- KEY_SUNDO : Special_Key_Code <b>renames</b> Key_Shift_Undo;
-
-<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-
- <b>type</b><A HREF="terminal_interface-curses__ads.htm>77_9"> </A>Color_Number <b>is</b> <b>range</b><A HREF="interfac__ads.htm>3_9"> </A>0 .. Integer<A HREF="i-c__ads.htm#36_9"> </A>(Interfaces.C.short'Last);
- <b>for</b> Color_Number'Size <b>use</b> Interfaces.C.short'Size;
- <FONT COLOR=green><EM>-- (n)curses uses a short for the color index</EM></FONT>
- <FONT COLOR=green><EM>-- The model is, that a Color_Number is an index into an array of</EM></FONT>
- <FONT COLOR=green><EM>-- (potentially) definable colors. Some of those indices are</EM></FONT>
- <FONT COLOR=green><EM>-- predefined (see below), although they may not really exist.</EM></FONT>
-
- Black : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 0;
- Red : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 1;
- Green : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 2;
- Yellow : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 3;
- Blue : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 4;
- Magenta : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 5;
- Cyan : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A> := 6;
- White : <b>constant</b> Color_Number := 7;
-
- <b>type</b><A HREF="terminal_interface-curses__ads.htm>93_9"> </A>RGB_Value <b>is</b> <b>range</b><A HREF="interfac__ads.htm>3_9"> </A>0 .. Integer<A HREF="i-c__ads.htm#36_9"> </A>(Interfaces.C.short'Last);
- <b>for</b> RGB_Value'Size <b>use</b> Interfaces.C.short'Size;
- <FONT COLOR=green><EM>-- Some system may allow to redefine a color by setting RGB values.</EM></FONT>
-
- <b>type</b><A HREF="terminal_interface-curses__ads.htm>97_9"> </A>Color_Pair <b>is</b> <b>range</b> 0 .. 255;
- <b>for</b> Color_Pair'Size <b>use</b> 8;
- <b>subtype</b> Redefinable_Color_Pair <b>is</b> Color_Pair <b>range</b> 1 .. 255;
- <FONT COLOR=green><EM>-- (n)curses reserves 1 Byte for the color-pair number. Color Pair 0</EM></FONT>
- <FONT COLOR=green><EM>-- is fixed (Black & White). A color pair is simply a combination of</EM></FONT>
- <FONT COLOR=green><EM>-- two colors described by Color_Numbers, one for the foreground and</EM></FONT>
- <FONT COLOR=green><EM>-- the other for the background</EM></FONT>
-
- <b>type</b> Character_Attribute_Set <b>is</b>
- <b>record</b>
- 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;
- <b>end</b> <b>record</b><A HREF="terminal_interface-curses__ads.htm#305_9">;</A>
- <b>pragma</b> Pack (Character_Attribute_Set);
- <b>pragma</b> Convention (C, Character_Attribute_Set);
-
- <b>for</b> Character_Attribute_Set <b>use</b>
- <b>record</b>
- Stand_Out <b>at</b> 0 <b>range</b> 0 .. 0;
- Under_Line <b>at</b> 0 <b>range</b> 1 .. 1;
- Reverse_Video <b>at</b> 0 <b>range</b> 2 .. 2;
- Blink <b>at</b> 0 <b>range</b> 3 .. 3;
- Dim_Character <b>at</b> 0 <b>range</b> 4 .. 4;
- Bold_Character <b>at</b> 0 <b>range</b> 5 .. 5;
- Alternate_Character_Set <b>at</b> 0 <b>range</b> 6 .. 6;
- Invisible_Character <b>at</b> 0 <b>range</b> 7 .. 7;
- Protected_Character <b>at</b> 0 <b>range</b> 8 .. 8;
- Horizontal <b>at</b> 0 <b>range</b> 9 .. 9;
- Left <b>at</b> 0 <b>range</b> 10 .. 10;
- Low <b>at</b> 0 <b>range</b> 11 .. 11;
- Right <b>at</b> 0 <b>range</b> 12 .. 12;
- Top <b>at</b> 0 <b>range</b> 13 .. 13;
- Vertical <b>at</b> 0 <b>range</b> 14 .. 14;
- <b>end</b> <b>record</b>;
- <b>for</b> Character_Attribute_Set'Size <b>use</b> 16;
- <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
- <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
- <FONT COLOR=green><EM>-- (n)curses uses all but the lowes 16 Bits for Attributes.</EM></FONT>
-
- Normal_Video : <b>constant</b> Character_Attribute_Set := (<b>others</b> => False);
-
- <b>type</b> Attributed_Character <b>is</b>
- <b>record</b>
- Attr : <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A>;
- Color : Color_Pair;
- Ch : Character;
- <b>end</b> <b>record</b>;
- <b>pragma</b> Convention (C, Attributed_Character);
- <FONT COLOR=green><EM>-- This is the counterpart for the chtype in C.</EM></FONT>
-
- <b>for</b> Attributed_Character <b>use</b>
- <b>record</b>
- Ch <b>at</b> 0 <b>range</b> 0 .. 7;
- Color <b>at</b> 0 <b>range</b> 8 .. 15;
- Attr <b>at</b> 0 <b>range</b> 16 .. 31;
- <b>end</b> <b>record</b>;
- <b>for</b> Attributed_Character'Size <b>use</b> 32;
- <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
- <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
-
- Default_Character : <b>constant</b> Attributed_Character
- := (Ch => <A HREF="terminal_interface-curses__ads.htm>97_9">Character</A>'First,
- Color => Color_Pair'First,
- Attr => (<b>others</b> => False)); <FONT COLOR=green><EM>-- preelaboratable Normal_Video</EM></FONT>
-
- <b>type</b> Attributed_String <b>is</b> <b>array</b> (Positive <b>range</b> <>) <b>of</b> Attributed_Character;
- <b>pragma</b> Pack (Attributed_String);
- <FONT COLOR=green><EM>-- In this binding we allow strings of attributed characters.</EM></FONT>
-
- <FONT COLOR=green><EM>------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Exceptions --</EM></FONT>
- <FONT COLOR=green><EM>------------------</EM></FONT>
- <FONT COLOR=red><A NAME="383_4">Curses_Exception</A></FONT> : <b>exception</b>;
- Wrong_Curses_Version : <b>exception</b>;
-
- <FONT COLOR=green><EM>-- Those exceptions are raised by the ETI (Extended Terminal Interface)</EM></FONT>
- <FONT COLOR=green><EM>-- subpackets for Menu and Forms handling.</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- <FONT COLOR=red><A NAME="389_4">Eti_System_Error</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="390_4">Eti_Bad_Argument</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="391_4">Eti_Posted</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="392_4">Eti_Connected</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="393_4">Eti_Bad_State</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="394_4">Eti_No_Room</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="395_4">Eti_Not_Posted</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="396_4">Eti_Unknown_Command</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="397_4">Eti_No_Match</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="398_4">Eti_Not_Selectable</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="399_4">Eti_Not_Connected</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="400_4">Eti_Request_Denied</A></FONT> : <b>exception</b>;
- <FONT COLOR=red><A NAME="401_4">Eti_Invalid_Field</A></FONT> : <b>exception</b>;
- Eti_Current : <b>exception</b>;
-
- <FONT COLOR=green><EM>--------------------------------------------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- External C variables</EM></FONT>
- <FONT COLOR=green><EM>-- Conceptually even in C this are kind of constants, but they are</EM></FONT>
- <FONT COLOR=green><EM>-- initialized and sometimes changed by the library routines at runtime</EM></FONT>
- <FONT COLOR=green><EM>-- depending on the type of terminal. I believe the best way to model</EM></FONT>
- <FONT COLOR=green><EM>-- this is to use functions.</EM></FONT>
- <FONT COLOR=green><EM>--------------------------------------------------------------------------</EM></FONT>
-
- <b>function</b> Lines <A HREF="terminal_interface-curses__ads.htm#411_13"> </A> <b>return</b> Line_Count;
- <b>pragma</b> Inline (Lines);
-
- <b>function</b> Columns <b>return</b> Column_Count;
- <b>pragma</b> Inline (Columns);
-
- <b>function</b> Tab_Size <b>return</b> Natural;
- <b>pragma</b> Inline (Tab_Size);
-
- <b>function</b> Number_Of_Colors <b>return</b> Natural;
- <b>pragma</b> Inline (Number_Of_Colors);
-
- <b>function</b> Number_Of_Color_Pairs <b>return</b> Natural;
- <b>pragma</b> Inline (Number_Of_Color_Pairs);
-
- ACS_Map : <b>array</b> (Character'Val (0) .. Character'Val (127)) <b>of</b>
- Attributed_Character;
- <b>pragma</b> Import (C, ACS_Map, "acs_map");
- <FONT COLOR=green><EM>--</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- <FONT COLOR=green><EM>-- Constants for several symbols from the Alternate Character Set</EM></FONT>
- <FONT COLOR=green><EM>-- You must use this constants as indices into the ACS_Map array</EM></FONT>
- <FONT COLOR=green><EM>-- to get the corresponding attributed character at runtime.</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- ACS_Upper_Left_Corner : <b>constant</b> Character := 'l';
- ACS_Lower_Left_Corner : <b>constant</b> Character := 'm';
- ACS_Upper_Right_Corner : <b>constant</b> Character := 'k';
- ACS_Lower_Right_Corner : <b>constant</b> Character := 'j';
- ACS_Left_Tee : <b>constant</b> Character := 't';
- ACS_Right_Tee : <b>constant</b> Character := 'u';
- ACS_Bottom_Tee : <b>constant</b> Character := 'v';
- ACS_Top_Tee : <b>constant</b> Character := 'w';
- ACS_Horizontal_Line : <b>constant</b> Character := 'q';
- ACS_Vertical_Line : <b>constant</b> Character := 'x';
- ACS_Plus_Symbol : <b>constant</b> Character := 'n';
- ACS_Scan_Line_1 : <b>constant</b> Character := 'o';
- ACS_Scan_Line_9 : <b>constant</b> Character := 's';
- ACS_Diamond : <b>constant</b> Character := Character'Val (96);
- ACS_Checker_Board : <b>constant</b> Character := 'a';
- ACS_Degree : <b>constant</b> Character := 'f';
- ACS_Plus_Minus : <b>constant</b> Character := 'g';
- ACS_Bullet : <b>constant</b> Character := '~';
- ACS_Left_Arrow : <b>constant</b> Character := ',';
- ACS_Right_Arrow : <b>constant</b> Character := '+';
- ACS_Down_Arrow : <b>constant</b> Character := '.';
- ACS_Up_Arrow : <b>constant</b> Character := '-';
- ACS_Board_Of_Squares : <b>constant</b> Character := 'h';
- ACS_Lantern : <b>constant</b> Character := 'i';
- ACS_Solid_Block : <b>constant</b> Character := '0';
- ACS_Scan_Line_3 : <b>constant</b> Character := 'p';
- ACS_Scan_Line_7 : <b>constant</b> Character := 'r';
- ACS_Less_Or_Equal : <b>constant</b> Character := 'y';
- ACS_Greater_Or_Equal : <b>constant</b> Character := 'z';
- ACS_PI : <b>constant</b> Character := '{';
- ACS_Not_Equal : <b>constant</b> Character := '|';
- ACS_Sterling : <b>constant</b> Character := '}';
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Not implemented: newterm, set_term, delscreen</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
- <b>function</b> Standard_Window <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">stdscr</A></EM></FONT>
- <b>pragma</b> Inline (Standard_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
- <b>procedure</b> Init_Screen;
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
- <b>procedure</b> Init_Windows <b>renames</b> Init_Screen;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">initscr()</A></EM></FONT>
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#482_14">Init_Screen</A>);
- <b>pragma</b> Inline (Init_Windows);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_4">|</EM></FONT>
- <b>procedure</b> End_Windows;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">endwin()</A></EM></FONT>
- <b>procedure</b> End_Screen <b>renames</b> End_Windows;
- <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#490_14">End_Windows</A>);
- <b>pragma</b> Inline (End_Screen);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_5">|</EM></FONT>
- <b>function</b> Is_End_Window <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">isendwin()</A></EM></FONT>
- <b>pragma</b> Inline (Is_End_Window);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_move.3x.html">curs_move.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_6">|</EM></FONT>
- <b>procedure</b> Move_Cursor (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_move.3x.html">wmove()</A></EM></FONT>
- <b>pragma</b> Inline (Move_Cursor);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_7">|</EM></FONT>
- <b>procedure</b> Add (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
- Ch : <b>in</b> Attributed_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">waddch()</A></EM></FONT>
-
- <b>procedure</b> Add (Win : <b>in</b> Window := Standard_Window;
- Ch : <b>in</b> Character);
- <FONT COLOR=green><EM>-- Add a single character at the current logical cursor position to</EM></FONT>
- <FONT COLOR=green><EM>-- the window. Use the current windows attributes.</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_8">|</EM></FONT>
- <b>procedure</b> Add
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Column_Position</A>;
- Ch : <b>in</b> Attributed_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">mvwaddch()</A></EM></FONT>
-
- <b>procedure</b> Add
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position;
- Ch : <b>in</b> Character);
- <FONT COLOR=green><EM>-- Move to the position and add a single character into the window</EM></FONT>
- <FONT COLOR=green><EM>-- There are more Add routines, so the Inline pragma follows later</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_9">|</EM></FONT>
- <b>procedure</b> Add_With_Immediate_Echo
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
- Ch : <b>in</b> Attributed_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">wechochar()</A></EM></FONT>
-
- <b>procedure</b> Add_With_Immediate_Echo
- (Win : <b>in</b> Window := Standard_Window;
- Ch : <b>in</b> Character);
- <FONT COLOR=green><EM>-- Add a character and do an immediate resfresh of the screen.</EM></FONT>
- <b>pragma</b> Inline (Add_With_Immediate_Echo);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_window.3x.html">curs_window.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_10">|</EM></FONT>
- <b>function</b> Create
- (Number_Of_Lines : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Number_Of_Columns : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
- First_Line_Position : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- First_Column_Position : Column_Position) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">newwin()</A></EM></FONT>
- <b>pragma</b> Inline (Create);
-
- <b>function</b> New_Window
- (Number_Of_Lines : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Number_Of_Columns : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
- First_Line_Position : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- First_Column_Position : Column_Position) <b>return</b> Window
- <b>renames</b> Create;
- <b>pragma</b> Inline (New_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_11">|</EM></FONT>
- <b>procedure</b> Delete (Win : <b>in</b> <b>out</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">delwin()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Reset Win to Null_Window</EM></FONT>
- <b>pragma</b> Inline (Delete);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_12">|</EM></FONT>
- <b>function</b> Sub_Window
- (Win : <A HREF="terminal_interface-curses__ads.htm#63_12">Window</A> := Standard_Window;
- Number_Of_Lines : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Number_Of_Columns : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
- First_Line_Position : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- First_Column_Position : Column_Position) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">subwin()</A></EM></FONT>
- <b>pragma</b> Inline (Sub_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_13">|</EM></FONT>
- <b>function</b> Derived_Window
- (Win : <A HREF="terminal_interface-curses__ads.htm#63_12">Window</A> := Standard_Window;
- Number_Of_Lines : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Number_Of_Columns : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
- First_Line_Position : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- First_Column_Position : Column_Position) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">derwin()</A></EM></FONT>
- <b>pragma</b> Inline (Derived_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_14">|</EM></FONT>
- <b>function</b> Duplicate (Win : Window) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">dupwin()</A></EM></FONT>
- <b>pragma</b> Inline (Duplicate);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_15">|</EM></FONT>
- <b>procedure</b> Move_Window (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">mvwin()</A></EM></FONT>
- <b>pragma</b> Inline (Move_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_16">|</EM></FONT>
- <b>procedure</b> Move_Derived_Window (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">mvderwin()</A></EM></FONT>
- <b>pragma</b> Inline (Move_Derived_Window);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_17">|</EM></FONT>
- <b>procedure</b> Synchronize_Upwards (Win : <b>in</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">wsyncup()</A></EM></FONT>
- <b>pragma</b> Import (C, Synchronize_Upwards, "wsyncup");
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_18">|</EM></FONT>
- <b>procedure</b> Synchronize_Downwards (Win : <b>in</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">wsyncdown()</A></EM></FONT>
- <b>pragma</b> Import (C, Synchronize_Downwards, "wsyncdown");
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_19">|</EM></FONT>
- <b>procedure</b> Set_Synch_Mode (Win : <b>in</b> Window := Standard_Window;
- Mode : <b>in</b> Boolean := False);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">syncok()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Synch_Mode);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_addstr.3x.html">curs_addstr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_20">|</EM></FONT>
- <b>procedure</b> Add (Win : <b>in</b> Window := Standard_Window;
- Str : <b>in</b> String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addstr.3x.html">waddnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: waddstr()</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_21">|</EM></FONT>
- <b>procedure</b> Add (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position;
- Str : <b>in</b> String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addstr.3x.html">mvwaddnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: mvwaddstr()</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_22">|</EM></FONT>
- <b>procedure</b> Add (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#375_9">Window</A> := Standard_Window;
- Str : <b>in</b> Attributed_String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addchstr.3x.html">waddchnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: waddchstr()</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_23">|</EM></FONT>
- <b>procedure</b> Add (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#375_9">Column_Position</A>;
- Str : <b>in</b> Attributed_String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addchstr.3x.html">mvwaddchnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: mvwaddchstr()</EM></FONT>
- <b>pragma</b> Inline (Add);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_border.3x.html">curs_border.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_24">|</EM></FONT>
- <b>procedure</b> Border
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
- Left_Side_Symbol : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
- Right_Side_Symbol : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
- Top_Side_Symbol : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
- Bottom_Side_Symbol : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
- Upper_Left_Corner_Symbol : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
- Upper_Right_Corner_Symbol : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
- Lower_Left_Corner_Symbol : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
- Lower_Right_Corner_Symbol : <b>in</b> Attributed_Character := Default_Character
- );
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_border.3x.html">wborder()</A></EM></FONT>
- <b>pragma</b> Inline (Border);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_25">|</EM></FONT>
- <b>procedure</b> Box
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
- Vertical_Symbol : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Attributed_Character</A> := Default_Character;
- Horizontal_Symbol : <b>in</b> Attributed_Character := Default_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_border.3x.html">box()</A></EM></FONT>
- <b>pragma</b> Inline (Box);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_26">|</EM></FONT>
- <b>procedure</b> Horizontal_Line
- (Win : <b>in</b> Window := Standard_Window;
- Line_Size : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Natural</A>;
- Line_Symbol : <b>in</b> Attributed_Character := Default_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_border.3x.html">whline()</A></EM></FONT>
- <b>pragma</b> Inline (Horizontal_Line);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_27">|</EM></FONT>
- <b>procedure</b> Vertical_Line
- (Win : <b>in</b> Window := Standard_Window;
- Line_Size : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Natural</A>;
- Line_Symbol : <b>in</b> Attributed_Character := Default_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_border.3x.html">wvline()</A></EM></FONT>
- <b>pragma</b> Inline (Vertical_Line);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_getch.3x.html">curs_getch.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_28">|</EM></FONT>
- <b>function</b> Get_Keystroke (Win : Window := Standard_Window)
- <b>return</b> Real_Key_Code;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">wgetch()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Get a character from the keyboard and echo it - if enabled - to the</EM></FONT>
- <FONT COLOR=green><EM>-- window.</EM></FONT>
- <FONT COLOR=green><EM>-- If for any reason (i.e. a timeout) we couldn't get a character the</EM></FONT>
- <FONT COLOR=green><EM>-- returned keycode is Key_None.</EM></FONT>
- <b>pragma</b> Inline (Get_Keystroke);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_29">|</EM></FONT>
- <b>procedure</b> Undo_Keystroke (Key : <b>in</b> Real_Key_Code);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">ungetch()</A></EM></FONT>
- <b>pragma</b> Inline (Undo_Keystroke);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_30">|</EM></FONT>
- <b>function</b> Has_Key (Key : Special_Key_Code) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">has_key()</A></EM></FONT>
- <b>pragma</b> Inline (Has_Key);
-
- <FONT COLOR=green><EM>-- |</EM></FONT>
- <FONT COLOR=green><EM>-- | Some helper functions</EM></FONT>
- <FONT COLOR=green><EM>-- |</EM></FONT>
- <b>function</b> Is_Function_Key (Key : Special_Key_Code) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- Return True if the Key is a function key (i.e. one of F0 .. F63)</EM></FONT>
- <b>pragma</b> Inline (Is_Function_Key);
-
- <b>subtype</b> Function_Key_Number <b>is</b> Integer <b>range</b> 0 .. 63;
- <FONT COLOR=green><EM>-- (n)curses allows for 64 function keys.</EM></FONT>
-
- <b>function</b> Function_Key (Key : Real_Key_Code) <b>return</b> Function_Key_Number;
- <FONT COLOR=green><EM>-- Return the number of the function key. If the code is not a</EM></FONT>
- <FONT COLOR=green><EM>-- function key, a CONSTRAINT_ERROR will be raised.</EM></FONT>
- <b>pragma</b> Inline (Function_Key);
-
- <b>function</b> Function_Key_Code (Key : Function_Key_Number) <b>return</b> Real_Key_Code;
- <FONT COLOR=green><EM>-- Return the key code for a given functionkey number.</EM></FONT>
- <b>pragma</b> Inline (Function_Key_Code);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_31">|</EM></FONT>
- <b>procedure</b> Switch_Character_Attribute
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Window</A> := Standard_Window;
- Attr : <b>in</b> Character_Attribute_Set := Normal_Video;
- On : <b>in</b> Boolean := True);<FONT COLOR=green><EM>-- if False we switch Off.</EM></FONT>
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattron()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: wattroff()</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_32">|</EM></FONT>
- <b>procedure</b> Set_Character_Attributes
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Window</A> := Standard_Window;
- Attr : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
- Color : <b>in</b> Color_Pair := Color_Pair'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattrset()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Character_Attributes);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_33">|</EM></FONT>
- <b>function</b> Get_Character_Attribute
- (Win : <b>in</b> Window := Standard_Window) <b>return</b> Character_Attribute_Set;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_34">|</EM></FONT>
- <b>function</b> Get_Character_Attribute
- (Win : <b>in</b> Window := Standard_Window) <b>return</b> Color_Pair;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Character_Attribute);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_35">|</EM></FONT>
- <b>procedure</b> Set_Color (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Window</A> := Standard_Window;
- Pair : <b>in</b> Color_Pair);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wcolor_set()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Color);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_36">|</EM></FONT>
- <b>procedure</b> Change_Attributes
- (Win : <b>in</b> Window := Standard_Window;
- Count : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Integer</A> := -1;
- Attr : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
- Color : <b>in</b> Color_Pair := Color_Pair'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wchgat()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_37">|</EM></FONT>
- <b>procedure</b> Change_Attributes
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A> := Line_Position'First;
- Column : <b>in</b> Column_Position := Column_Position'First;
- Count : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#305_9">Integer</A> := -1;
- Attr : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
- Color : <b>in</b> Color_Pair := Color_Pair'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">mvwchgat()</A></EM></FONT>
- <b>pragma</b> Inline (Change_Attributes);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_38">|</EM></FONT>
- <b>procedure</b> Beep;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_beep.3x.html">beep()</A></EM></FONT>
- <b>pragma</b> Inline (Beep);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_39">|</EM></FONT>
- <b>procedure</b> Flash_Screen;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_beep.3x.html">flash()</A></EM></FONT>
- <b>pragma</b> Inline (Flash_Screen);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- | Not implemented : typeahead</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_40">|</EM></FONT>
- <b>procedure</b> Set_Cbreak_Mode (SwitchOn : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">cbreak()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: nocbreak()</EM></FONT>
- <b>pragma</b> Inline (Set_Cbreak_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_41">|</EM></FONT>
- <b>procedure</b> Set_Raw_Mode (SwitchOn : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">raw()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: noraw()</EM></FONT>
- <b>pragma</b> Inline (Set_Raw_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_42">|</EM></FONT>
- <b>procedure</b> Set_Echo_Mode (SwitchOn : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">echo()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: noecho()</EM></FONT>
- <b>pragma</b> Inline (Set_Echo_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_43">|</EM></FONT>
- <b>procedure</b> Set_Meta_Mode (Win : <b>in</b> Window := Standard_Window;
- SwitchOn : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">meta()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Meta_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_44">|</EM></FONT>
- <b>procedure</b> Set_KeyPad_Mode (Win : <b>in</b> Window := Standard_Window;
- SwitchOn : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">keypad()</A></EM></FONT>
- <b>pragma</b> Inline (Set_KeyPad_Mode);
-
- <b>type</b> Half_Delay_Amount <b>is</b> <b>range</b> 1 .. 255;
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_45">|</EM></FONT>
- <b>procedure</b> Half_Delay (Amount : <b>in</b> Half_Delay_Amount);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">halfdelay()</A></EM></FONT>
- <b>pragma</b> Inline (Half_Delay);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_46">|</EM></FONT>
- <b>procedure</b> Set_Flush_On_Interrupt_Mode
- (Win : <b>in</b> Window := Standard_Window;
- Mode : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">intrflush()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Flush_On_Interrupt_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_47">|</EM></FONT>
- <b>procedure</b> Set_Queue_Interrupt_Mode
- (Win : <b>in</b> Window := Standard_Window;
- Flush : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">qiflush()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: noqiflush()</EM></FONT>
- <b>pragma</b> Inline (Set_Queue_Interrupt_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_48">|</EM></FONT>
- <b>procedure</b> Set_NoDelay_Mode
- (Win : <b>in</b> Window := Standard_Window;
- Mode : <b>in</b> Boolean := False);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">nodelay()</A></EM></FONT>
- <b>pragma</b> Inline (Set_NoDelay_Mode);
-
- <b>type</b> Timeout_Mode <b>is</b> (Blocking, Non_Blocking, Delayed);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_49">|</EM></FONT>
- <b>procedure</b> Set_Timeout_Mode (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#896_9">Window</A> := Standard_Window;
- Mode : <b>in</b> Timeout_Mode;
- Amount : <b>in</b> Natural);<FONT COLOR=green><EM>-- in Miliseconds</EM></FONT>
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">wtimeout()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Instead of overloading the semantic of the sign of amount, we</EM></FONT>
- <FONT COLOR=green><EM>-- introduce the Timeout_Mode parameter. This should improve</EM></FONT>
- <FONT COLOR=green><EM>-- readability. For Blocking and Non_Blocking, the Amount is not</EM></FONT>
- <FONT COLOR=green><EM>-- evaluated.</EM></FONT>
- <FONT COLOR=green><EM>-- We don't inline this procedure.</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_50">|</EM></FONT>
- <b>procedure</b> Set_Escape_Timer_Mode
- (Win : <b>in</b> Window := Standard_Window;
- Timer_Off : <b>in</b> Boolean := False);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">notimeout()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Escape_Timer_Mode);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_51">|</EM></FONT>
- <b>procedure</b> Set_NL_Mode (SwitchOn : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">nl()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: nonl()</EM></FONT>
- <b>pragma</b> Inline (Set_NL_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_52">|</EM></FONT>
- <b>procedure</b> Clear_On_Next_Update
- (Win : <b>in</b> Window := Standard_Window;
- Do_Clear : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">clearok()</A></EM></FONT>
- <b>pragma</b> Inline (Clear_On_Next_Update);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_53">|</EM></FONT>
- <b>procedure</b> Use_Insert_Delete_Line
- (Win : <b>in</b> Window := Standard_Window;
- Do_Idl : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">idlok()</A></EM></FONT>
- <b>pragma</b> Inline (Use_Insert_Delete_Line);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_54">|</EM></FONT>
- <b>procedure</b> Use_Insert_Delete_Character
- (Win : <b>in</b> Window := Standard_Window;
- Do_Idc : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">idcok()</A></EM></FONT>
- <b>pragma</b> Inline (Use_Insert_Delete_Character);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_55">|</EM></FONT>
- <b>procedure</b> Leave_Cursor_After_Update
- (Win : <b>in</b> Window := Standard_Window;
- Do_Leave : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">leaveok()</A></EM></FONT>
- <b>pragma</b> Inline (Leave_Cursor_After_Update);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_56">|</EM></FONT>
- <b>procedure</b> Immediate_Update_Mode
- (Win : <b>in</b> Window := Standard_Window;
- Mode : <b>in</b> Boolean := False);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">immedok()</A></EM></FONT>
- <b>pragma</b> Inline (Immediate_Update_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_57">|</EM></FONT>
- <b>procedure</b> Allow_Scrolling
- (Win : <b>in</b> Window := Standard_Window;
- Mode : <b>in</b> Boolean := False);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">scrollok()</A></EM></FONT>
- <b>pragma</b> Inline (Allow_Scrolling);
-
- <b>function</b> Scrolling_Allowed (Win : Window := Standard_Window) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- There is no such function in the C interface.</EM></FONT>
- <b>pragma</b> Inline (Scrolling_Allowed);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_58">|</EM></FONT>
- <b>procedure</b> Set_Scroll_Region
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Top_Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
- Bottom_Line : <b>in</b> Line_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">wsetscrreg()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Scroll_Region);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_59">|</EM></FONT>
- <b>procedure</b> Update_Screen;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">doupdate()</A></EM></FONT>
- <b>pragma</b> Inline (Update_Screen);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_60">|</EM></FONT>
- <b>procedure</b> Refresh (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wrefresh()</A></EM></FONT>
- <FONT COLOR=green><EM>-- There is an overloaded Refresh for Pads.</EM></FONT>
- <FONT COLOR=green><EM>-- The Inline pragma appears there</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_61">|</EM></FONT>
- <b>procedure</b> Refresh_Without_Update
- (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wnoutrefresh()</A></EM></FONT>
- <FONT COLOR=green><EM>-- There is an overloaded Refresh_Without_Update for Pads.</EM></FONT>
- <FONT COLOR=green><EM>-- The Inline pragma appears there</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_62">|</EM></FONT>
- <b>procedure</b> Redraw (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">redrawwin()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_63">|</EM></FONT>
- <b>procedure</b> Redraw (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Begin_Line : <b>in</b> Line_Position;
- Line_Count : <b>in</b> Positive);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wredrawln()</A></EM></FONT>
- <b>pragma</b> Inline (Redraw);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_64">|</EM></FONT>
- <b>procedure</b> Erase (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">werase()</A></EM></FONT>
- <b>pragma</b> Inline (Erase);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_65">|</EM></FONT>
- <b>procedure</b> Clear
- (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclear()</A></EM></FONT>
- <b>pragma</b> Inline (Clear);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_66">|</EM></FONT>
- <b>procedure</b> Clear_To_End_Of_Screen
- (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclrtobot()</A></EM></FONT>
- <b>pragma</b> Inline (Clear_To_End_Of_Screen);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_67">|</EM></FONT>
- <b>procedure</b> Clear_To_End_Of_Line
- (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclrtoeol()</A></EM></FONT>
- <b>pragma</b> Inline (Clear_To_End_Of_Line);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_68">|</EM></FONT>
- <b>procedure</b> Set_Background
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
- Ch : <b>in</b> Attributed_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdset()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Background);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_69">|</EM></FONT>
- <b>procedure</b> Change_Background
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
- Ch : <b>in</b> Attributed_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgd()</A></EM></FONT>
- <b>pragma</b> Inline (Change_Background);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_70">|</EM></FONT>
- <b>function</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Get_Background</A> (Win : Window := Standard_Window)
- <b>return</b> Attributed_Character;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdget()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Background);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_71">|</EM></FONT>
- <b>procedure</b> Untouch (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">untouchwin()</A></EM></FONT>
- <b>pragma</b> Inline (Untouch);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_72">|</EM></FONT>
- <b>procedure</b> Touch (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">touchwin()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_73">|</EM></FONT>
- <b>procedure</b> Touch (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Start : <b>in</b> Line_Position;
- Count : <b>in</b> Positive);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">touchline()</A></EM></FONT>
- <b>pragma</b> Inline (Touch);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_74">|</EM></FONT>
- <b>procedure</b> Change_Lines_Status (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Start : <b>in</b> Line_Position;
- Count : <b>in</b> Positive;
- State : <b>in</b> Boolean);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">wtouchln()</A></EM></FONT>
- <b>pragma</b> Inline (Change_Lines_Status);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_75">|</EM></FONT>
- <b>function</b> Is_Touched (Win : <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : Line_Position) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">is_linetouched()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_76">|</EM></FONT>
- <b>function</b> Is_Touched (Win : Window := Standard_Window) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">is_wintouched()</A></EM></FONT>
- <b>pragma</b> Inline (Is_Touched);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_overlay.3x.html">curs_overlay.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_77">|</EM></FONT>
- <b>procedure</b> Copy
- (<FONT COLOR=red><A NAME="1109_7">Source_Window</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Destination_Window : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
- Source_Top_Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Source_Left_Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
- Destination_Top_Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Destination_Left_Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
- Destination_Bottom_Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Destination_Right_Column : <b>in</b> Column_Position;
- Non_Destructive_Mode : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">copywin()</A></EM></FONT>
- <b>pragma</b> Inline (Copy);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_78">|</EM></FONT>
- <b>procedure</b> Overwrite (<FONT COLOR=red><A NAME="1122_25">Source_Window</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Destination_Window : <b>in</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">overwrite()</A></EM></FONT>
- <b>pragma</b> Inline (Overwrite);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_79">|</EM></FONT>
- <b>procedure</b> Overlay (<FONT COLOR=red><A NAME="1128_23">Source_Window</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Destination_Window : <b>in</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">overlay()</A></EM></FONT>
- <b>pragma</b> Inline (Overlay);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_80">|</EM></FONT>
- <b>procedure</b> Insert_Delete_Lines
- (Win : <b>in</b> Window := Standard_Window;
- Lines : <b>in</b> Integer := 1);<FONT COLOR=green><EM>-- default is to insert one line above</EM></FONT>
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">winsdelln()</A></EM></FONT>
- <b>pragma</b> Inline (Insert_Delete_Lines);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_81">|</EM></FONT>
- <b>procedure</b> Delete_Line (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">wdeleteln()</A></EM></FONT>
- <b>pragma</b> Inline (Delete_Line);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_82">|</EM></FONT>
- <b>procedure</b> Insert_Line (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">winsertln()</A></EM></FONT>
- <b>pragma</b> Inline (Insert_Line);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_getyx.3x.html">curs_getyx.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_83">|</EM></FONT>
- <b>procedure</b> Get_Size
- (Win : <b>in</b> Window := Standard_Window;
- Number_Of_Lines : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Number_Of_Columns : <b>out</b> Column_Count);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getmaxyx()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Size);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_84">|</EM></FONT>
- <b>procedure</b> Get_Window_Position
- (Win : <b>in</b> Window := Standard_Window;
- Top_Left_Line : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Top_Left_Column : <b>out</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getbegyx()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Window_Position);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_85">|</EM></FONT>
- <b>procedure</b> Get_Cursor_Position
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>out</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getyx()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Cursor_Position);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_86">|</EM></FONT>
- <b>procedure</b> Get_Origin_Relative_To_Parent
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
- Top_Left_Line : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Top_Left_Column : <b>out</b> Column_Position;
- Is_Not_A_Subwindow : <b>out</b> Boolean);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getparyx()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Instead of placing -1 in the coordinates as return, we use a boolean</EM></FONT>
- <FONT COLOR=green><EM>-- to return the info that the window has no parent.</EM></FONT>
- <b>pragma</b> Inline (Get_Origin_Relative_To_Parent);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_87">|</EM></FONT>
- <b>function</b> New_Pad (Lines : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Columns : Column_Count) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">newpad()</A></EM></FONT>
- <b>pragma</b> Inline (New_Pad);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_88">|</EM></FONT>
- <b>function</b> Sub_Pad
- (Pad : <A HREF="terminal_interface-curses__ads.htm#63_12">Window</A>;
- Number_Of_Lines : <A HREF="terminal_interface-curses__ads.htm#65_12">Line_Count</A>;
- Number_Of_Columns : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Count</A>;
- First_Line_Position : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- First_Column_Position : Column_Position) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">subpad()</A></EM></FONT>
- <b>pragma</b> Inline (Sub_Pad);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_89">|</EM></FONT>
- <b>procedure</b> Refresh
- (Pad : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
- Source_Top_Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Source_Left_Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
- Destination_Top_Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Destination_Left_Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
- Destination_Bottom_Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Destination_Right_Column : <b>in</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">prefresh()</A></EM></FONT>
- <b>pragma</b> Inline (Refresh);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_90">|</EM></FONT>
- <b>procedure</b> Refresh_Without_Update
- (Pad : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A>;
- Source_Top_Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Source_Left_Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
- Destination_Top_Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Destination_Left_Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
- Destination_Bottom_Row : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Destination_Right_Column : <b>in</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">pnoutrefresh()</A></EM></FONT>
- <b>pragma</b> Inline (Refresh_Without_Update);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_91">|</EM></FONT>
- <b>procedure</b> Add_Character_To_Pad_And_Echo_It
- (Pad : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A>;
- Ch : <b>in</b> Attributed_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">pechochar()</A></EM></FONT>
-
- <b>procedure</b> Add_Character_To_Pad_And_Echo_It
- (Pad : <b>in</b> Window;
- Ch : <b>in</b> Character);
- <b>pragma</b> Inline (Add_Character_To_Pad_And_Echo_It);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_scroll.3x.html">curs_scroll.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_92">|</EM></FONT>
- <b>procedure</b> Scroll (Win : <b>in</b> Window := Standard_Window;
- Amount : <b>in</b> Integer := 1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_scroll.3x.html">wscrl()</A></EM></FONT>
- <b>pragma</b> Inline (Scroll);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_93">|</EM></FONT>
- <b>procedure</b> Delete_Character (Win : <b>in</b> Window := Standard_Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_delch.3x.html">wdelch()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_94">|</EM></FONT>
- <b>procedure</b> Delete_Character
- (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_delch.3x.html">mvwdelch()</A></EM></FONT>
- <b>pragma</b> Inline (Delete_Character);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_95">|</EM></FONT>
- <b>function</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Peek</A> (Win : Window := Standard_Window)
- <b>return</b> Attributed_Character;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inch.3x.html">winch()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_96">|</EM></FONT>
- <b>function</b> Peek
- (Win : <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : Column_Position) <b>return</b> Attributed_Character;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inch.3x.html">mvwinch()</A></EM></FONT>
- <FONT COLOR=green><EM>-- More Peek's follow, pragma Inline appears later.</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_97">|</EM></FONT>
- <b>procedure</b> Insert (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Window</A> := Standard_Window;
- Ch : <b>in</b> Attributed_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_winch.3x.html">winsch()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_98">|</EM></FONT>
- <b>procedure</b> Insert (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#351_9">Column_Position</A>;
- Ch : <b>in</b> Attributed_Character);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_winch.3x.html">mvwinsch()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_99">|</EM></FONT>
- <b>procedure</b> Insert (Win : <b>in</b> Window := Standard_Window;
- Str : <b>in</b> String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_winch.3x.html">winsnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: winsstr()</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_100">|</EM></FONT>
- <b>procedure</b> Insert (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position;
- Str : <b>in</b> String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_winch.3x.html">mvwinsnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: mvwinsstr()</EM></FONT>
- <b>pragma</b> Inline (Insert);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_instr.3x.html">curs_instr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_101">|</EM></FONT>
- <b>procedure</b> Peek (Win : <b>in</b> Window := Standard_Window;
- Str : <b>out</b> String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_instr.3x.html">winnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: winstr()</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_102">|</EM></FONT>
- <b>procedure</b> Peek (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position;
- Str : <b>out</b> String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_instr.3x.html">mvwinnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: mvwinstr()</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_103">|</EM></FONT>
- <b>procedure</b> Peek (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#375_9">Window</A> := Standard_Window;
- Str : <b>out</b> Attributed_String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inchstr.3x.html">winchnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: winchstr()</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_104">|</EM></FONT>
- <b>procedure</b> Peek (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#375_9">Column_Position</A>;
- Str : <b>out</b> Attributed_String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inchstr.3x.html">mvwinchnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: mvwinchstr()</EM></FONT>
- <FONT COLOR=green><EM>-- We don't inline the Peek procedures</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_105">|</EM></FONT>
- <b>procedure</b> Get (Win : <b>in</b> Window := Standard_Window;
- Str : <b>out</b> String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getstr.3x.html">wgetnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: wgetstr()</EM></FONT>
-
- <b>procedure</b> Get (Win : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Window</A> := Standard_Window;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> Column_Position;
- Str : <b>out</b> String;
- Len : <b>in</b> Integer := -1);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getstr.3x.html">wgetnstr()</A></EM></FONT>
- <FONT COLOR=green><EM>-- not specified in ncurses, should be: mvwgetnstr()</EM></FONT>
- <FONT COLOR=green><EM>-- and mvwgetstr() (which exists)</EM></FONT>
- <FONT COLOR=green><EM>-- Get is not inlined</EM></FONT>
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <b>type</b> Soft_Label_Key_Format <b>is</b> (Three_Two_Three,
- Four_Four,
- PC_Style, <FONT COLOR=green><EM>-- ncurses specific</EM></FONT>
- <FONT COLOR=red><A NAME="1397_9"> </A></FONT> PC_Style_With_Index); <FONT COLOR=green><EM>-- "</EM></FONT>
- <b>type</b> <FONT COLOR=red><A NAME="1398_9">Label_Number</A></FONT> <b>is</b> <b>new</b> Positive <b>range</b> 1 .. 12;
- <b>type</b> Label_Justification <b>is</b> (Left, Centered, Right);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_106">|</EM></FONT>
- <b>procedure</b> Init_Soft_Label_Keys
- (Format : <b>in</b> Soft_Label_Key_Format := Three_Two_Three);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_init()</A></EM></FONT>
- <b>pragma</b> Inline (Init_Soft_Label_Keys);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_107">|</EM></FONT>
- <b>procedure</b> Set_Soft_Label_Key (Label : <b>in</b> Label_Number;
- Text : <b>in</b> <A HREF="terminal_interface-curses__ads.htm<398_9">String</A>;
- Fmt : <b>in</b> Label_Justification := Left);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_set()</A></EM></FONT>
- <FONT COLOR=green><EM>-- We don't inline this procedure</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_108">|</EM></FONT>
- <b>procedure</b> Refresh_Soft_Label_Keys;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_refresh()</A></EM></FONT>
- <b>pragma</b> Inline (Refresh_Soft_Label_Keys);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_109">|</EM></FONT>
- <b>procedure</b> Refresh_Soft_Label_Keys_Without_Update;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_noutrefresh()</A></EM></FONT>
- <b>pragma</b> Inline (Refresh_Soft_Label_Keys_Without_Update);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_110">|</EM></FONT>
- <b>procedure</b> Get_Soft_Label_Key (Label : <b>in</b> Label_Number;
- Text : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_111">|</EM></FONT>
- <b>function</b> Get_Soft_Label_Key (Label : <b>in</b> Label_Number) <b>return</b> String;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
- <b>pragma</b> Inline (Get_Soft_Label_Key);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_112">|</EM></FONT>
- <b>procedure</b> Clear_Soft_Label_Keys;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_clear()</A></EM></FONT>
- <b>pragma</b> Inline (Clear_Soft_Label_Keys);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_113">|</EM></FONT>
- <b>procedure</b> Restore_Soft_Label_Keys;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_restore()</A></EM></FONT>
- <b>pragma</b> Inline (Restore_Soft_Label_Keys);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_114">|</EM></FONT>
- <b>procedure</b> Touch_Soft_Label_Keys;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_touch()</A></EM></FONT>
- <b>pragma</b> Inline (Touch_Soft_Label_Keys);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_115">|</EM></FONT>
- <b>procedure</b> Switch_Soft_Label_Key_Attributes
- (Attr : <b>in</b> Character_Attribute_Set;
- On : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attron()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: slk_attroff()</EM></FONT>
- <b>pragma</b> Inline (Switch_Soft_Label_Key_Attributes);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_116">|</EM></FONT>
- <b>procedure</b> Set_Soft_Label_Key_Attributes
- (Attr : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>97_9">Character_Attribute_Set</A> := Normal_Video;
- Color : <b>in</b> Color_Pair := Color_Pair'First);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attrset()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Soft_Label_Key_Attributes);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_117">|</EM></FONT>
- <b>function</b> Get_Soft_Label_Key_Attributes <b>return</b> Character_Attribute_Set;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_118">|</EM></FONT>
- <b>function</b> Get_Soft_Label_Key_Attributes <b>return</b> Color_Pair;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></FONT>
- <b>pragma</b> Inline (Get_Soft_Label_Key_Attributes);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_119">|</EM></FONT>
- <b>procedure</b> Set_Soft_Label_Key_Color (Pair : <b>in</b> Color_Pair);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_color()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Soft_Label_Key_Color);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/keyok.3x.html">keyok.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_120">|</EM></FONT>
- <b>procedure</b> Enable_Key (Key : <b>in</b> Special_Key_Code;
- Enable : <b>in</b> Boolean := True);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/keyok.3x.html">keyok()</A></EM></FONT>
- <b>pragma</b> Inline (Enable_Key);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/define_key.3x.html">define_key.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_121">|</EM></FONT>
- <b>procedure</b> Define_Key (Definition : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#77_12">String</A>;
- Key : <b>in</b> Special_Key_Code);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/define_key.3x.html">define_key()</A></EM></FONT>
- <b>pragma</b> Inline (Define_Key);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_util.3x.html">curs_util.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- | Not implemented : filter, use_env, putwin, getwin</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_122">|</EM></FONT>
- <b>procedure</b> Key_Name (Key : <b>in</b> Real_Key_Code;
- Name : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></FONT>
- <FONT COLOR=green><EM>-- The external name for a real keystroke.</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_123">|</EM></FONT>
- <b>function</b> Key_Name (Key : <b>in</b> Real_Key_Code) <b>return</b> String;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
- <FONT COLOR=green><EM>-- We don't inline this routine</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_124">|</EM></FONT>
- <b>procedure</b> Un_Control (Ch : <b>in</b> Attributed_Character;
- Str : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_125">|</EM></FONT>
- <b>function</b> Un_Control (Ch : <b>in</b> Attributed_Character) <b>return</b> String;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
- <b>pragma</b> Inline (Un_Control);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_126">|</EM></FONT>
- <b>procedure</b> Delay_Output (Msecs : <b>in</b> Natural);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">delay_output()</A></EM></FONT>
- <b>pragma</b> Inline (Delay_Output);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_127">|</EM></FONT>
- <b>procedure</b> Flush_Input;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">flushinp()</A></EM></FONT>
- <b>pragma</b> Inline (Flush_Input);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_128">|</EM></FONT>
- <b>function</b> Baudrate <b>return</b> Natural;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">baudrate()</A></EM></FONT>
- <b>pragma</b> Inline (Baudrate);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_129">|</EM></FONT>
- <b>function</b> Erase_Character <b>return</b> Character;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">erasechar()</A></EM></FONT>
- <b>pragma</b> Inline (Erase_Character);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_130">|</EM></FONT>
- <b>function</b> Kill_Character <b>return</b> Character;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">killchar()</A></EM></FONT>
- <b>pragma</b> Inline (Kill_Character);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_131">|</EM></FONT>
- <b>function</b> Has_Insert_Character <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">has_ic()</A></EM></FONT>
- <b>pragma</b> Inline (Has_Insert_Character);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_132">|</EM></FONT>
- <b>function</b> Has_Insert_Line <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">has_il()</A></EM></FONT>
- <b>pragma</b> Inline (Has_Insert_Line);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_133">|</EM></FONT>
- <b>function</b> Supported_Attributes <b>return</b> Character_Attribute_Set;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termattrs()</A></EM></FONT>
- <b>pragma</b> Inline (Supported_Attributes);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_134">|</EM></FONT>
- <b>procedure</b> Long_Name (Name : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_135">|</EM></FONT>
- <b>function</b> Long_Name <b>return</b> String;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
- <b>pragma</b> Inline (Long_Name);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_136">|</EM></FONT>
- <b>procedure</b> Terminal_Name (Name : <b>out</b> String);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_137">|</EM></FONT>
- <b>function</b> Terminal_Name <b>return</b> String;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
- <b>pragma</b> Inline (Terminal_Name);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_color.3x.html">curs_color.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_138">|</EM></FONT>
- <b>procedure</b> Start_Color;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">start_clolor()</A></EM></FONT>
- <b>pragma</b> Import (C, Start_Color, "start_color");
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_139">|</EM></FONT>
- <b>procedure</b> Init_Pair (Pair : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Redefinable_Color_Pair</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A>;
- Back : <b>in</b> Color_Number);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">init_pair()</A></EM></FONT>
- <b>pragma</b> Inline (Init_Pair);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_140">|</EM></FONT>
- <b>procedure</b> Pair_Content (Pair : <b>in</b> Color_Pair;
- Fore : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>77_9">Color_Number</A>;
- Back : <b>out</b> Color_Number);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">pair_content()</A></EM></FONT>
- <b>pragma</b> Inline (Pair_Content);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_141">|</EM></FONT>
- <b>function</b> Has_Colors <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">has_colors()</A></EM></FONT>
- <b>pragma</b> Inline (Has_Colors);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_142">|</EM></FONT>
- <b>procedure</b> Init_Color (Color : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>93_9">Color_Number</A>;
- Red : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>93_9">RGB_Value</A>;
- Green : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>93_9">RGB_Value</A>;
- Blue : <b>in</b> RGB_Value);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">init_color()</A></EM></FONT>
- <b>pragma</b> Inline (Init_Color);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_143">|</EM></FONT>
- <b>function</b> Can_Change_Color <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">can_change_color()</A></EM></FONT>
- <b>pragma</b> Inline (Can_Change_Color);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_144">|</EM></FONT>
- <b>procedure</b> Color_Content (Color : <b>in</b> <A HREF="terminal_interface-curses__ads.htm>93_9">Color_Number</A>;
- Red : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>93_9">RGB_Value</A>;
- Green : <b>out</b> <A HREF="terminal_interface-curses__ads.htm>93_9">RGB_Value</A>;
- Blue : <b>out</b> RGB_Value);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">color_content()</A></EM></FONT>
- <b>pragma</b> Inline (Color_Content);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
-
- <FONT COLOR=green><EM>-- | Not implemented: getsyx, setsyx</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- <b>type</b> Curses_Mode <b>is</b> (Curses, Shell);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_145">|</EM></FONT>
- <b>procedure</b> Save_Curses_Mode (Mode : <b>in</b> Curses_Mode);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">def_prog_mode()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: def_shell_mode()</EM></FONT>
- <b>pragma</b> Inline (Save_Curses_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_146">|</EM></FONT>
- <b>procedure</b> Reset_Curses_Mode (Mode : <b>in</b> Curses_Mode);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">reset_prog_mode()</A></EM></FONT>
- <FONT COLOR=green><EM>-- AKA: reset_shell_mode()</EM></FONT>
- <b>pragma</b> Inline (Reset_Curses_Mode);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_147">|</EM></FONT>
- <b>procedure</b> Save_Terminal_State;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">savetty()</A></EM></FONT>
- <b>pragma</b> Inline (Save_Terminal_State);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_148">|</EM></FONT>
- <b>procedure</b> Reset_Terminal_State;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">resetty();</A></EM></FONT>
- <b>pragma</b> Inline (Reset_Terminal_State);
-
- <b>type</b> Stdscr_Init_Proc <b>is</b> <b>access</b>
- <b>function</b> (Win : <A HREF="terminal_interface-curses__ads.htm#65_12">Window</A>;
- Columns :<A HREF="terminal_interface-curses__ads.htm<670_9"> </A>Column_Count) <b>return</b> Integer;
- <b>pragma</b> Convention (C, Stdscr_Init_Proc);
- <FONT COLOR=green><EM>-- N.B.: the return value is actually ignored, but it seems to be</EM></FONT>
- <FONT COLOR=green><EM>-- a good practice to return 0 if you think all went fine</EM></FONT>
- <FONT COLOR=green><EM>-- and -1 otherwise.</EM></FONT>
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_149">|</EM></FONT>
- <b>procedure</b> Rip_Off_Lines (Lines : <b>in</b> <A HREF="terminal_interface-curses__ads.htm<670_9">Integer</A>;
- Proc : <b>in</b> Stdscr_Init_Proc);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">ripoffline()</A></EM></FONT>
- <FONT COLOR=green><EM>-- N.B.: to be more precise, this uses a ncurses specific enhancement of</EM></FONT>
- <FONT COLOR=green><EM>-- ripoffline(), in which the Lines argument absolute value is the</EM></FONT>
- <FONT COLOR=green><EM>-- number of lines to be ripped of. The official ripoffline() only</EM></FONT>
- <FONT COLOR=green><EM>-- uses the sign of Lines to rip of a single line from bottom or top.</EM></FONT>
- <b>pragma</b> Inline (Rip_Off_Lines);
-
- <b>type</b> Cursor_Visibility <b>is</b> (Invisible, Normal, Very_Visible);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_150">|</EM></FONT>
- <b>procedure</b> Set_Cursor_Visibility (Visibility : <b>in</b> <b>out</b> Cursor_Visibility);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">curs_set()</A></EM></FONT>
- <b>pragma</b> Inline (Set_Cursor_Visibility);
-
- <FONT COLOR=green><EM>-- <A NAME="AFU_151">|</EM></FONT>
- <b>procedure</b> Nap_Milli_Seconds (Ms : <b>in</b> Natural);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">napms()</A></EM></FONT>
- <b>pragma</b> Inline (Nap_Milli_Seconds);
-
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Some usefull helpers.</EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <b>type</b> Transform_Direction <b>is</b> (From_Screen, To_Screen);
- <b>procedure</b> Transform_Coordinates
- (W : <b>in</b> Window := Standard_Window;
- Line : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- Column : <b>in</b> <b>out</b> Column_Position;
- Dir : <b>in</b> Transform_Direction := From_Screen);
- <FONT COLOR=green><EM>-- This procedure transforms screen coordinates into coordinates relative</EM></FONT>
- <FONT COLOR=green><EM>-- to the window and vice versa, depending on the Dir parmeter.</EM></FONT>
- <FONT COLOR=green><EM>-- Screen coordinates are the position informations on the physical device.</EM></FONT>
- <FONT COLOR=green><EM>-- An Curses_Exception will be raised if Line and Column are not in the</EM></FONT>
- <FONT COLOR=green><EM>-- Window or if you pass the Null_Window as argument.</EM></FONT>
- <FONT COLOR=green><EM>-- We don't inline this procedure</EM></FONT>
-
-<b>private</b>
- <b>type</b> Window <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
- Null_Window : <b>constant</b> Window := 0;
-
- <FONT COLOR=green><EM>-- The next constants are generated and may be different on your</EM></FONT>
- <FONT COLOR=green><EM>-- architecture.</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- Offset_maxy : <b>constant</b> Natural := 2;<FONT COLOR=green><EM>-- short</EM></FONT>
- Offset_maxx : <b>constant</b> Natural := 3;<FONT COLOR=green><EM>-- short</EM></FONT>
- Offset_begy : <b>constant</b> Natural := 4;<FONT COLOR=green><EM>-- short</EM></FONT>
- Offset_begx : <b>constant</b> Natural := 5;<FONT COLOR=green><EM>-- short</EM></FONT>
- Offset_cury : <b>constant</b> Natural := 0;<FONT COLOR=green><EM>-- short</EM></FONT>
- Offset_curx : <b>constant</b> Natural := 1;<FONT COLOR=green><EM>-- short</EM></FONT>
- Offset_yoffset : <b>constant</b> Natural := 36;<FONT COLOR=green><EM>-- short</EM></FONT>
- Offset_pary : <b>constant</b> Natural := 13;<FONT COLOR=green><EM>-- int</EM></FONT>
- Offset_parx : <b>constant</b> Natural := 12;<FONT COLOR=green><EM>-- int</EM></FONT>
- Offset_scroll : <b>constant</b> Natural := 27;<FONT COLOR=green><EM>-- char</EM></FONT>
- Sizeof_bool : <b>constant</b> Natural := 1;<FONT COLOR=green><EM>-- bool</EM></FONT>
- Offset_XY : <b>constant</b> Natural := 1;<FONT COLOR=green><EM>-- int</EM></FONT>
-
-
-<b>end</b> Terminal_Interface.Curses;
-</PRE></BODY></HTML>
\ No newline at end of file
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>addch(chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>waddch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvaddch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwaddch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>echochar(chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>wechochar(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><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</STRONG> in <STRONG><A HREF="stdio.3.html">stdio(3)</A></STRONG>. 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 <STRONG>scrollok</STRONG> is enabled, the scrolling region is
- scrolled up one line.
-
- If <EM>ch</EM> 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 <STRONG>clrtoeol</STRONG>, 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.
-
- If <EM>ch</EM> is any control character other than tab, newline, or
- backspace, it is drawn in <STRONG>^</STRONG><EM>X</EM> notation. Calling <STRONG>winch</STRONG>
- 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 <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>inch</STRONG> and
- <STRONG>addch</STRONG>.). See the <STRONG><A HREF="curs_attr.3x.html">curs_attr(3X)</A></STRONG> page for values of prede-
- fined video attribute constants that can be usefully OR'ed
- into characters.
-
- The <STRONG>echochar</STRONG> and <STRONG>wechochar</STRONG> routines are equivalent to a
- call to <STRONG>addch</STRONG> followed by a call to <STRONG>refresh</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
- The following variables may be used to add line drawing
- characters to the screen with routines of the <STRONG>addch</STRONG> fam-
- ily. The default character listed below is used if the
- <STRONG>acsc</STRONG> capability doesn't define a terminal-specific
- replacement for it (but see the EXTENSIONS section below).
- The names are taken from VT100 nomenclature.
-
- l l l _ _ _ l l l. <EM>Name</EM> <EM>Default</EM> <EM>Description</EM>
- ACS_BLOCK # solid square block ACS_BOARD # board of
- squares ACS_BTEE + bottom tee ACS_BULLET o bul-
- let ACS_CKBOARD : checker board (stipple)
- ACS_DARROW v arrow pointing down
- ACS_DEGREE ' degree symbol ACS_DIAMOND + dia-
- mond 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-ster-
- ling 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
-
-
-
-</PRE>
-<H2>RETURN VALUE</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 other-
- wise noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>addch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and <STRONG>echochar</STRONG> may be
- macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- 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.
-
- 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
- <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>SEE ALSO</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="putc.3s.html">putc(3S)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>addchstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
- <STRONG>int</STRONG> <STRONG>addchnstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>waddchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
- <STRONG>int</STRONG> <STRONG>waddchnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvaddchstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvaddchnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwaddchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG>
- <STRONG>*chstr);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwaddchnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG>
- <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines copy <EM>chstr</EM> into the window image structure
- at and after the current cursor position. The four rou-
- tines 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 string is copied, to the maximum number of charac-
- ters that will fit on the line.
-
- The window cursor is <EM>not</EM> advanced, and these routines work
- faster than <STRONG>waddnstr</STRONG>. On the other hand, they don't per-
- form any kind of checking (such as for the newline,
- backspace, or carriage return characters), they don't
- advance the current cursor position, they don't expand
- other control characters to ^-escapes, and they truncate
- the string if it crosses the right margin, rather then
- wrapping it around to the new line.
-
-
-
-</PRE>
-<H2>RETURN VALUES</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 other-
- wise noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that all routines except <STRONG>waddchnstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- All these entry points are described in the XSI Curses
- standard, Issue 4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>addstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>addnstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>waddstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>waddnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvaddstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvaddnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwaddstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwaddnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG>
- <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines write the characters of the (null-termi-
- nated) character string <EM>str</EM> on the given window. It is
- similar to calling <STRONG>waddch</STRONG> once for each character in the
- string. The four routines with <EM>n</EM> as the last argument
- write at most <EM>n</EM> characters. If <EM>n</EM> is -1, then the entire
- string will be added.
-
-
-</PRE>
-<H2>RETURN VALUE</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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that all of these routines except <STRONG>waddstr</STRONG> and
- <STRONG>waddnstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- 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.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>attroff</STRONG>, <STRONG>wattroff</STRONG>, <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>wattrset</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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattroff(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>attron(int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattron(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>attrset(int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattrset(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>color_set(short</STRONG> <STRONG>color_pair_number,</STRONG> <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>short</STRONG> <STRONG>color_pair_number,</STRONG>
- <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>standend(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>standout(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wstandout(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>attr_get(attr_t</STRONG> <STRONG>*attrs,</STRONG> <STRONG>short</STRONG> <STRONG>*pair,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattr_get(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>*attrs,</STRONG> <STRONG>short</STRONG> <STRONG>*pair,</STRONG>
- <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>attr_off(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattr_off(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>attr_set(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>wattr_set(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
- <STRONG>int</STRONG> <STRONG>chgat(int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG> <STRONG>short</STRONG> <STRONG>color,</STRONG>
- <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
- <STRONG>int</STRONG> <STRONG>wchgat(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
- <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
- <STRONG>int</STRONG> <STRONG>mvchgat(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
- <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG>
- <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG> <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- 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 <STRONG>wad-</STRONG>
- <STRONG>dch</STRONG>, <STRONG>waddstr</STRONG> and <STRONG>wprintw</STRONG>. 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 <STRONG>attrset</STRONG> sets the current attributes of the
- given window to <EM>attrs</EM>. The routine <STRONG>attroff</STRONG> turns off the
- named attributes without turning any other attributes on
- 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.
-
- The routine <STRONG>color_set</STRONG> 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 <STRONG>wattr_get</STRONG> returns the current attribute and
- color pair for the given window; <STRONG>attr_get</STRONG> returns the cur-
- rent attribute and color pair for <STRONG>stdscr</STRONG>. The remaining
- <STRONG>attr_</STRONG>* functions operate exactly like the corresponding
- <STRONG>attr</STRONG>* functions, except that they take arguments of type
- <STRONG>attr_t</STRONG> rather than <STRONG>int</STRONG>.
-
- The routine <STRONG>chgat</STRONG> changes the attributes of a given number
- of characters starting at the current cursor location of
- <STRONG>stdscr</STRONG>. 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 <STRONG>wchgat</STRONG> func-
- tion generalizes this to any window; the <STRONG>mvwchgat</STRONG> function
- does a cursor move before acting. In these functions, the
- color argument is a color-pair index (as in the first
- argument of <EM>init</EM><STRONG>_</STRONG><EM>pair</EM>, see <STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>). The <STRONG>opts</STRONG>
- argument is not presently used, but is reserved for the
- future (leave it <STRONG>NULL</STRONG>).
-
- <STRONG>Attributes</STRONG>
- The following video attributes, defined in <STRONG><curses.h></STRONG>, can
- be passed to the routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or
- OR'ed with the characters passed to <STRONG>addch</STRONG>.
-
- center ; l l . <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> Invisi-
- ble or blank mode <STRONG>A_ALTCHARSET</STRONG> Alternate character set
- <STRONG>A_CHARTEXT</STRONG> Bit-mask to extract a character
- <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> Color-pair number <EM>n</EM>
-
- The following macro is the reverse of <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG>:
-
- <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM>) Returns the pair number associated
- with the <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> 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 <STRONG>1</STRONG>.
- Note that <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> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- All these functions are supported in the XSI Curses stan-
- dard, Issue 4. The standard defined the dedicated type
- for highlights, <STRONG>attr_t</STRONG>, which is not defined in SVr4
- curses. The functions taking <STRONG>attr_t</STRONG> arguments are not sup-
- ported under SVr4.
-
- The XSI Curses standard states that whether the tradi-
- tional 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
- correctly manipulate all other highlights (specifically,
- <STRONG>A_ALTCHARSET</STRONG>, <STRONG>A_PROTECT</STRONG>, and <STRONG>A_INVIS</STRONG>).
-
- XSI Curses added the new 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>wattr_get</STRONG>,
- <STRONG>wattr_set</STRONG>. These are intended to work with a new series
- of highlight macros prefixed with <STRONG>WA_</STRONG>.
-
- center ; l l . <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
-
- The XSI curses standard specifies that each pair of corre-
- sponding <STRONG>A_</STRONG> and <STRONG>WA_</STRONG>-using functions operates on the same
- current-highlight information.
-
- The XSI standard extended conformance level adds new high-
- lights <STRONG>A_HORIZONTAL</STRONG>, <STRONG>A_LEFT</STRONG>, <STRONG>A_LOW</STRONG>, <STRONG>A_RIGHT</STRONG>, <STRONG>A_TOP</STRONG>, <STRONG>A_VER-</STRONG>
- <STRONG>TICAL</STRONG> (and corresponding <STRONG>WA_</STRONG> macros for each) which this
- curses does not yet support.
-
-
-</PRE>
-<H2>SEE ALSO</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_printw.3x.html">curs_printw(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>beep</STRONG>, <STRONG>flash</STRONG> - <STRONG>curses</STRONG> bell and screen flash routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>beep(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>flash(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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>RETURN VALUE</H2><PRE>
- These routines return <STRONG>OK</STRONG> if they succeed in beeping or
- flashing, <STRONG>ERR</STRONG> otherwise.
-
-
-</PRE>
-<H2>EXTENSIONS</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>PORTABILITY</H2><PRE>
- These functions are defined in the XSI Curses standard,
- Issue 4. Like SVr4, it specifies that they always return
- <STRONG>OK</STRONG>.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>bkgdset</STRONG>, <STRONG>wbkgdset</STRONG>, <STRONG>bkgd</STRONG>, <STRONG>wbkgd</STRONG> - <STRONG>curses</STRONG> window background
- manipulation routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>void</STRONG> <STRONG>bkgdset(const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>void</STRONG> <STRONG>wbkgdset(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>bkgd(const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>wbkgd(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>chtype</STRONG> <STRONG>getbkgd(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>bkgdset</STRONG> and <STRONG>wbkgdset</STRONG> routines manipulate the back-
- ground 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 charac-
- ters 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.
-
- 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:
-
- 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 <STRONG>getbkgd</STRONG> function returns the given window's current
- background character/attribute pair.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The routines <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> 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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>bkgdset</STRONG> and <STRONG>bkgd</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- return <STRONG>ERR</STRONG>, on failure. but gives no failure conditions.
-
-
-</PRE>
-<H2>SEE ALSO</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_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>border</STRONG>, <STRONG>wborder</STRONG>, <STRONG>box</STRONG>, <STRONG>hline</STRONG>, <STRONG>whline</STRONG>, <STRONG>vline</STRONG>, <STRONG>wvline</STRONG> - cre-
- ate <STRONG>curses</STRONG> borders, horizontal and vertical lines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- <STRONG>int</STRONG> <STRONG>border(chtype</STRONG> <STRONG>ls,</STRONG> <STRONG>chtype</STRONG> <STRONG>rs,</STRONG> <STRONG>chtype</STRONG> <STRONG>ts,</STRONG> <STRONG>chtype</STRONG> <STRONG>bs,</STRONG>
- <STRONG>chtype</STRONG> <STRONG>tl,</STRONG> <STRONG>chtype</STRONG> <STRONG>tr,</STRONG> <STRONG>chtype</STRONG> <STRONG>bl,</STRONG> <STRONG>chtype</STRONG> <STRONG>br);</STRONG>
- <STRONG>int</STRONG> <STRONG>wborder(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ls,</STRONG> <STRONG>chtype</STRONG> <STRONG>rs,</STRONG>
- <STRONG>chtype</STRONG> <STRONG>ts,</STRONG> <STRONG>chtype</STRONG> <STRONG>bs,</STRONG> <STRONG>chtype</STRONG> <STRONG>tl,</STRONG> <STRONG>chtype</STRONG> <STRONG>tr,</STRONG>
- <STRONG>chtype</STRONG> <STRONG>bl,</STRONG> <STRONG>chtype</STRONG> <STRONG>br);</STRONG>
- <STRONG>int</STRONG> <STRONG>box(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>verch,</STRONG> <STRONG>chtype</STRONG> <STRONG>horch);</STRONG>
- <STRONG>int</STRONG> <STRONG>hline(chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>whline(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>vline(chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>wvline(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>mvhline(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>mvwhline(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvvline(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwvline(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>border</STRONG>, <STRONG>wborder</STRONG> and <STRONG>box</STRONG> routines draw a box around the
- edges of a window. The argument <EM>ls</EM> is a character and
- attributes used for the left side of the border, <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 following default
- values (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>wborder(</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 posi-
- tion in the window. The current cursor position is not
- changed. The line is at most <EM>n</EM> characters 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 using <EM>ch</EM> starting at the current cursor posi-
- tion in the window. The current 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>RETURN VALUE</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.
- The borders generated by these functions are <EM>inside</EM> bor-
- ders (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>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4. Additional functions <STRONG>mvhline</STRONG>, <STRONG>mvvline</STRONG>, <STRONG>mvwhline</STRONG>,
- and <STRONG>mvwvline</STRONG> are described there which this implementation
- does not yet support. The standard specifies that they
- return <STRONG>ERR</STRONG> on failure, but specifies no error conditions.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, <STRONG>wclrtobot</STRONG>, <STRONG>clr-</STRONG>
- <STRONG>toeol</STRONG>, <STRONG>wclrtoeol</STRONG> - clear all or part of a <STRONG>curses</STRONG> window
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>erase(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>werase(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>clear(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wclear(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>clrtobot(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wclrtobot(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>clrtoeol(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wclrtoeol(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>erase</STRONG> and <STRONG>werase</STRONG> routines copy blanks to every posi-
- tion in the window, 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 ren-
- dition (as set by <STRONG>wbkgdset</STRONG>) merged into them.
-
-
-</PRE>
-<H2>RETURN VALUE</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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, and <STRONG>clr-</STRONG>
- <STRONG>toeol</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</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.
-
- Some historic curses implementations had, as an undocu-
- mented feature, the ability to do the equivalent of
-
-
-</PRE>
-<H2>SEE ALSO</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>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>start_color</STRONG>, <STRONG>init_pair</STRONG>, <STRONG>init_color</STRONG>, <STRONG>has_colors</STRONG>,
- <STRONG>can_change_color</STRONG>, <STRONG>color_content</STRONG>, <STRONG>pair_content</STRONG> - <STRONG>curses</STRONG>
- color manipulation routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG><curses.h></STRONG>
- <STRONG>int</STRONG> <STRONG>start_color(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>init_pair(short</STRONG> <STRONG>pair,</STRONG> <STRONG>short</STRONG> <STRONG>f,</STRONG> <STRONG>short</STRONG> <STRONG>b);</STRONG>
- <STRONG>int</STRONG> <STRONG>init_color(short</STRONG> <STRONG>color,</STRONG> <STRONG>short</STRONG> <STRONG>r,</STRONG> <STRONG>short</STRONG> <STRONG>g,</STRONG> <STRONG>short</STRONG> <STRONG>b);</STRONG>
- <STRONG>bool</STRONG> <STRONG>has_colors(void);</STRONG>
- <STRONG>bool</STRONG> <STRONG>can_change_color(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>color_content(short</STRONG> <STRONG>color,</STRONG> <STRONG>short</STRONG> <STRONG>*r,</STRONG> <STRONG>short</STRONG> <STRONG>*g,</STRONG> <STRONG>short</STRONG>
- <STRONG>*b);</STRONG>
- <STRONG>int</STRONG> <STRONG>pair_content(short</STRONG> <STRONG>pair,</STRONG> <STRONG>short</STRONG> <STRONG>*f,</STRONG> <STRONG>short</STRONG> <STRONG>*b);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- <STRONG>Overview</STRONG>
- <STRONG>curses</STRONG> support 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 charac-
- ters are displayed). A programmer initializes a color-
- pair with the routine <STRONG>init_pair</STRONG>. After it has been ini-
- tialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>), a macro defined in <STRONG><curses.h></STRONG>,
- can be used as a new video attribute.
-
- If a terminal is capable of redefining colors, the pro-
- grammer can use the routine <STRONG>init_color</STRONG> to change the defi-
- nition of a color. The routines <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 programmer can change the colors. The routine
- <STRONG>color_content</STRONG> allows a programmer 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.
-
- <STRONG>Routine</STRONG> <STRONG>Descriptions</STRONG>
- 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 manipulation routine is called. It is
- good practice to call this routine right after <STRONG>initscr</STRONG>.
- <STRONG>start_color</STRONG> initializes eight basic colors (black, red,
- green, yellow, blue, magenta, cyan, and white), and two
- global variables, <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG> (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.
-
- pair to be changed, the foreground color number, and the
- background color number. The value of the first argument
- must be between <STRONG>1</STRONG> and <STRONG>COLOR_PAIRS-1</STRONG>. The value of the
- second and third arguments must be between 0 and <STRONG>COLORS</STRONG>
- (the 0 color pair is wired to white on black and cannot be
- changed). If the color-pair was previously initialized,
- the screen is refreshed and all occurrences of that color-
- pair is changed to the new definition.
-
- 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). The value of the first
- argument must be between <STRONG>0</STRONG> and <STRONG>COLORS</STRONG>. (See the section
- <STRONG>Colors</STRONG> for the default color index.) Each of the last
- three arguments must be a value between 0 and 1000. When
- <STRONG>init_color</STRONG> is used, all occurrences of that color on the
- screen immediately change to the new definition.
-
- 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 routine facilitates writing terminal-
- independent programs. For example, a programmer can use
- it to decide whether to use color or some other video
- attribute.
-
- 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-independent programs.
-
- 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 components in
- the given color. The value of the first argument must be
- between 0 and <STRONG>COLORS</STRONG>. 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 com-
- ponent).
-
- 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. The value of the first argument must be
- between 1 and <STRONG>COLOR_PAIRS-1</STRONG>. The values that are stored
- at the addresses pointed to by the second and third argu-
- ments are between 0 and <STRONG>COLORS</STRONG>.
-
- <STRONG>Colors</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>
-
-
-</PRE>
-<H2>RETURN VALUE</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 completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- In the <EM>ncurses</EM> implementation, there is a separate color
- activation flag, color palette, color pairs table, and
- associated COLORS and COLOR_PAIRS 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.
-
- 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 <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3X)</A></STRONG>.
-
- Several caveats apply on 386 and 486 machines with VGA-
- compatible graphics:
-
- COLOR_YELLOW is actually brown. To get yellow, use
- COLOR_YELLOW combined with the <STRONG>A_BOLD</STRONG> attribute.
-
- 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).
-
- Color RGB values are not settable.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- This implementation satisfies XSI Curses's minimum maxi-
- mums for <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG>.
- ground and background color to support the
- <STRONG>use_default_colors</STRONG> extension, but only if that routine has
- been first invoked.
-
-
-</PRE>
-<H2>SEE ALSO</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="dft_fgbg.3x.html">dft_fgbg(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>delch(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wdelch(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvdelch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwdelch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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 fea-
- ture.)
-
-
-</PRE>
-<H2>RETURN VALUE</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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>delch</STRONG>, <STRONG>mvdelch</STRONG>, and <STRONG>mvwdelch</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</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>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>deleteln</STRONG>, <STRONG>wdeleteln</STRONG>, <STRONG>insdelln</STRONG>, <STRONG>winsdelln</STRONG>, <STRONG>insertln</STRONG>, <STRONG>win-</STRONG>
- <STRONG>sertln</STRONG> - delete and insert lines in a <STRONG>curses</STRONG> window
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>deleteln(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wdeleteln(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>insdelln(int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>winsdelln(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>insertln(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>winsertln(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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>insertln</STRONG> routines, insert a blank line
- above the current line and the bottom line is lost.
-
-
-</PRE>
-<H2>RETURN VALUE</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.
-
-
-</PRE>
-<H2>PORTABILITY</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>NOTES</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 won't use
- hardware line delete/insert unless <STRONG>idlok(...,</STRONG> <STRONG>TRUE)</STRONG> has
- been set on the current window.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, <STRONG>mvwgetch</STRONG>, <STRONG>ungetch</STRONG> - get (or push
- back) characters from <STRONG>curses</STRONG> terminal keyboard
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>getch(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvgetch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwgetch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>int</STRONG> <STRONG>ungetch(int</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <STRONG>ch);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><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 new-
- line (nocbreak mode). In half-delay mode, the program
- waits until a character is typed or the specified timeout
- has been reached.
-
- If <STRONG>noecho</STRONG> has been set, then the character will also be
- echoed into the designated window according to the follow-
- ing rules: If the character is the current erase charac-
- ter, 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. If the character value is any
- other <STRONG>KEY_</STRONG> define, the user is alerted with a <STRONG>beep</STRONG> 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 <STRONG>wrefresh</STRONG>, <STRONG>wrefresh</STRONG> will be
- called before another character is read.
-
- 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. Possible function keys are defined in
- <STRONG><curses.h></STRONG> as macros with values outside the range of
- 8-bit characters whose names begin with <STRONG>KEY_.</STRONG> 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
- 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 experience a delay between the time a user
-
- 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>. Note that there
- is, in effect, just one input queue for all windows.
-
-
- <STRONG>Function</STRONG> <STRONG>Keys</STRONG>
- The following function keys, defined in <STRONG><curses.h></STRONG>, might
- be returned by <STRONG>getch</STRONG> if <STRONG>keypad</STRONG> has been enabled. Note
- that not all of these are necessarily supported on any
- particular terminal.
-
- center tab(/) ; l l l l . <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/T{ Function keys;
- space for 64 keys is reserved. T} KEY_F(<EM>n</EM>)/T{ For 0 <= <EM>n</EM>
- <= 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_PREVI-
- OUS/Previous object key KEY_REDO/Redo key KEY_REFER-
- ENCE/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_SCAN-
- CEL/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 mes-
- sage key KEY_SMOVE/Shifted move key KEY_SNEXT/Shifted next
- 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 sus-
- pend key KEY_SUNDO/Shifted undo key KEY_SUSPEND/Suspend
- key KEY_UNDO/Undo key
-
- Keypad is arranged like this:
-
- center allbox tab(/) ; c c c . <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>
-
- The <STRONG>has_key</STRONG> routine takes a key value from the above list,
- and returns TRUE or FALSE according as the current termi-
- nal type recognizes a key with that value.
-
-
-
-</PRE>
-<H2>RETURN VALUE</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 ungetch())
- upon successful completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- 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.
-
- 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 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 <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>PORTABILITY</H2><PRE>
- 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 <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 docu-
-
- The behavior of <STRONG>getch</STRONG> 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
- implementation of handled signal receipt interrupts a
- <STRONG><A HREF="read.2.html">read(2)</A></STRONG> call in progress or not, and also (in some imple-
- mentations) depending on whether an input timeout or non-
- blocking mode hsd been set.
-
- 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 ERR with <STRONG>errno</STRONG> set to <STRONG>EINTR</STRONG>. Under
- the <STRONG>ncurses</STRONG> implementation, handled signals never inter-
- rupt <STRONG>getch</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>SEE ALSO</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><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>. <STRONG><A HREF="resizeterm.3x.html">resizeterm(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>getstr</STRONG>, <STRONG>wgetstr</STRONG>, <STRONG>mvgetstr</STRONG>, <STRONG>mvwgetstr</STRONG>, <STRONG>wgetnstr</STRONG> - accept
- character strings from <STRONG>curses</STRONG> terminal keyboard
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>getstr(char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>getnstr(char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>wgetstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvgetstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwgetstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvgetnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwgetnstr(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>wgetnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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>.
-
- <STRONG>wgetnstr</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 <STRONG>getnstr</STRONG> function reads
- from the <EM>stdscr</EM> default window.
-
- 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 pre-
- vious character (typically a left motion).
-
-
-</PRE>
-<H2>RETURN VALUE</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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>getstr</STRONG>, <STRONG>mvgetstr</STRONG>, and <STRONG>mvwgetstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These 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
- the single error condition <STRONG>EOVERFLOW</STRONG> associated with
- extended-level conformance is not yet returned (the XSI
-
- 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, <EM>etc</EM>.) 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 <STRONG>getnstr</STRONG>, <STRONG>mvgetnstr</STRONG>, and <STRONG>mvwgetnstr</STRONG> were pre-
- sent but not documented in SVr4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>getyx</STRONG>, <STRONG>getparyx</STRONG>, <STRONG>getbegyx</STRONG>, <STRONG>getmaxyx</STRONG> - get <STRONG>curses</STRONG> cursor
- and window coordinates
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>void</STRONG> <STRONG>getyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>void</STRONG> <STRONG>getparyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>void</STRONG> <STRONG>getbegyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>void</STRONG> <STRONG>getmaxyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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>. Other-
- wise, <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>RETURN VALUE</H2><PRE>
- The return values of these macros are undefined (<EM>i</EM>.<EM>e</EM>.,
- they should not be used as the right-hand side of assign-
- ment statements).
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- All of these interfaces are macros and that "<STRONG>&</STRONG>" is not
- necessary before the variables <EM>y</EM> and <EM>x</EM>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>chtype</STRONG> <STRONG>inch(void);</STRONG>
- <STRONG>chtype</STRONG> <STRONG>winch(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>chtype</STRONG> <STRONG>mvinch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>chtype</STRONG> <STRONG>mvwinch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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><curses.h></STRONG> can be used with the <STRONG>&</STRONG> (logical AND) operator
- to extract the character or attributes alone.
-
-
- <STRONG>Attributes</STRONG>
- The following bit-masks may be AND-ed with characters
- returned by <STRONG>winch</STRONG>.
-
- l l . <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>NOTES</H2><PRE>
- Note that all of these routines may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>inchstr(chtype</STRONG> <STRONG>*chstr);</STRONG>
- <STRONG>int</STRONG> <STRONG>inchnstr(chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>winchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
- <STRONG>int</STRONG> <STRONG>winchnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvinchstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvinchnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwinchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwinchnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG>
- <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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><curses.h></STRONG>
- can be used with the <STRONG>&</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>RETURN VALUE</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 retrieved, exclusive of the
- trailing 0).
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that all routines except <STRONG>winchnstr</STRONG> may be macros.
- SVr4 does not document whether the result string is 0-ter-
- minated; it does not document whether a length limit argu-
- ment includes any trailing 0; and it does not document the
- meaning of the return value.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- 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 <STRONG>OK</STRONG>.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3X)</A></STRONG>.
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>WINDOW</STRONG> <STRONG>*initscr(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>endwin(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>isendwin(void);</STRONG>
- <STRONG>SCREEN</STRONG> <STRONG>*newterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*type,</STRONG> <STRONG>FILE</STRONG> <STRONG>*outfd,</STRONG> <STRONG>FILE</STRONG>
- <STRONG>*infd);</STRONG>
- <STRONG>SCREEN</STRONG> <STRONG>*set_term(SCREEN</STRONG> <STRONG>*new);</STRONG>
- <STRONG>void</STRONG> <STRONG>delscreen(SCREEN*</STRONG> <STRONG>sp);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><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>slk_init</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 initial-
- izes all <STRONG>curses</STRONG> data structures. <STRONG>initscr</STRONG> also causes the
- first call to <STRONG>refresh</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 returned
- to <STRONG>stdscr</STRONG>.
-
- 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 ter-
- minal cannot support a screen-oriented program, would also
- use <STRONG>newterm</STRONG>. The routine <STRONG>newterm</STRONG> should be called once
- for each terminal. It returns a variable of type <STRONG>SCREEN</STRONG> <STRONG>*</STRONG>
- which should be saved as a reference to that terminal.
- The arguments are the <EM>type</EM> of the terminal to be used in
- place of <STRONG>$TERM</STRONG>, a file pointer for output to the terminal,
- and another file pointer for input from the terminal (if
- <EM>type</EM> is <STRONG>NULL</STRONG>, <STRONG>$TERM</STRONG> will be used). 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
- 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 <STRONG>refresh</STRONG> or <STRONG>doupdate</STRONG> after
- a temporary escape causes the program to resume visual
- mode.
- called without any subsequent calls to <STRONG>wrefresh</STRONG>, and <STRONG>FALSE</STRONG>
- otherwise.
-
- The <STRONG>set_term</STRONG> routine is used to switch between different
- terminals. The screen reference <STRONG>new</STRONG> becomes the new cur-
- rent terminal. The previous terminal is returned by the
- routine. This is the only routine which manipulates
- <STRONG>SCREEN</STRONG> pointers; all other routines affect only the cur-
- rent terminal.
-
- 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 par-
- ticular <STRONG>SCREEN</STRONG> is no longer needed.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- <STRONG>endwin</STRONG> returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon
- successful completion.
-
- Routines that return pointers always return <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4. It specifies that portable applications must not
- call <STRONG>initscr</STRONG> more than once.
-
-
-</PRE>
-<H2>SEE ALSO</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><A HREF="curs_util.3x.html">curs_util(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>key-</STRONG>
- <STRONG>pad</STRONG>, <STRONG>meta</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>notimeout</STRONG>, <STRONG>raw</STRONG>, <STRONG>noraw</STRONG>, <STRONG>noqiflush</STRONG>,
- <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, <STRONG>wtimeout</STRONG>, <STRONG>typeahead</STRONG> - <STRONG>curses</STRONG> input
- options
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></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>halfdelay(int</STRONG> <STRONG>tenths);</STRONG>
- <STRONG>int</STRONG> <STRONG>intrflush(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>keypad(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>meta(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>nodelay(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>raw(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>noraw(void);</STRONG>
- <STRONG>void</STRONG> <STRONG>noqiflush(void);</STRONG>
- <STRONG>void</STRONG> <STRONG>qiflush(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>notimeout(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>void</STRONG> <STRONG>timeout(int</STRONG> <STRONG>delay);</STRONG>
- <STRONG>void</STRONG> <STRONG>wtimeout(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>delay);</STRONG>
- <STRONG>int</STRONG> <STRONG>typeahead(int</STRONG> <STRONG>fd);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><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-process-
- ing (interrupt and flow control characters are unaf-
- fected), 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> explicitly. Most interactive programs
- using <STRONG>curses</STRONG> set the <STRONG>cbreak</STRONG> mode. Note that <STRONG>cbreak</STRONG> over-
- rides <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>.]
-
- The <STRONG>echo</STRONG> and <STRONG>noecho</STRONG> routines control whether characters
- typed by the user are echoed by <STRONG>getch</STRONG> as they are typed.
- Echoing by the tty driver is always disabled, but ini-
- tially <STRONG>getch</STRONG> 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
- <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>.]
-
- user are immediately available to the program. However,
- after blocking for <EM>tenths</EM> tenths of seconds, ERR is
- returned if nothing has been typed. The value of <STRONG>tenths</STRONG>
- must be a number between 1 and 255. Use <STRONG>nocbreak</STRONG> to leave
- half-delay mode.
-
- If the <STRONG>intrflush</STRONG> option is enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), 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 <STRONG>curses</STRONG> to have the wrong idea of
- what is on the screen. Disabling (<EM>bf</EM> is <STRONG>FALSE</STRONG>), the
- option prevents the flush. The default for the option is
- inherited from the tty driver settings. The window argu-
- ment is ignored.
-
- The <STRONG>keypad</STRONG> option enables the keypad of the user's termi-
- nal. If enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a func-
- tion key (such as an arrow key) and <STRONG>wgetch</STRONG> returns a sin-
- gle 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
- 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 key-
- pad to be turned on when <STRONG>wgetch</STRONG> 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
- driver [see <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>]. To force 8 bits to be returned,
- invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>); this is equivalent, 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 equiva-
- lent, under POSIX, to setting the CS8 flag on the termi-
- nal. 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 terminal 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.
-
- 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.
-
- While interpreting an input escape sequence, <STRONG>wgetch</STRONG> sets a
- timer while waiting for the next character. If <STRONG>notime-</STRONG>
- <STRONG>out(</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.
-
- 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 <STRONG>curses</STRONG>.
-
- 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><A HREF="termio.7.html">termio(7)</A></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.
-
- 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 (<EM>i</EM>.<EM>e</EM>., waits indefinitely for
- input). If <EM>delay</EM> is zero, then non-blocking read is used
- (<EM>i</EM>.<EM>e</EM>., 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 rou-
- tines 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).
-
- The <STRONG>curses</STRONG> 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 <STRONG>refresh</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>RETURN VALUE</H2><PRE>
- All routines that return an integer return <STRONG>ERR</STRONG> upon fail-
- ure and OK (SVr4 specifies only "an integer value other
- than <STRONG>ERR</STRONG>") upon successful completion, unless otherwise
- noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- 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;
- ity, set echo or noecho explicitly just after initializa-
- tion, even if your program remains in cooked mode.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>, <STRONG>node-</STRONG>
- <STRONG>lay</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>SEE ALSO</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="termio.7.html">termio(7)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>insch(chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>winsch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvinsch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwinsch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines, insert the character <EM>ch</EM> 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.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- All routines that return an integer return <STRONG>ERR</STRONG> upon fail-
- ure and OK (SVr4 specifies only "an integer value other
- than <STRONG>ERR</STRONG>") upon successful completion, unless otherwise
- noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>NOTES</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>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- <STRONG>int</STRONG> <STRONG>insstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>insnstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>winsstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>winsnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvinsstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvinsnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwinsstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwinsnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG>
- <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- 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 <EM>y</EM>, <EM>x</EM>, if specified). The four
- routines with <EM>n</EM> as the last argument insert a leading sub-
- string of at most <EM>n</EM> characters. If <EM>n</EM><=0, then the entire
- string is inserted.
-
- If a character in <EM>str</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>str</EM> is another control character, it is drawn
- in the <STRONG>^</STRONG><EM>X</EM> notation. Calling <STRONG>winch</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>RETURN VALUE</H2><PRE>
- All routines that return an integer return <STRONG>ERR</STRONG> upon fail-
- ure and OK (SVr4 specifies only "an integer value other
- than <STRONG>ERR</STRONG>") upon successful completion, unless otherwise
- noted in the preceding routine descriptions.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that all but <STRONG>winsnstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4, which adds const qualifiers to the arguments.
- The XSI Curses error conditions <STRONG>EILSEQ</STRONG> and <STRONG>EILOVERFLOW</STRONG>
- associated with extended-level conformance are not yet
- detected (this implementation does not yet support XPG4
- <STRONG><A HREF="ncurses.3x.html">curses(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>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>instr</STRONG>, <STRONG>innstr</STRONG>, <STRONG>winstr</STRONG>, <STRONG>winnstr</STRONG>, <STRONG>mvinstr</STRONG>, <STRONG>mvinnstr</STRONG>, <STRONG>mvwin-</STRONG>
- <STRONG>str</STRONG>, <STRONG>mvwinnstr</STRONG> - get a string of characters from a <STRONG>curses</STRONG>
- window
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>instr(char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>innstr(char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>winstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>winnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvinstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvinnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwinstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwinnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG>
- <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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 charac-
- ters. 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>RETURN VALUE</H2><PRE>
- All of the functions return <STRONG>ERR</STRONG> upon failure, or the num-
- ber of characters actually read into the string.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that all routines except <STRONG>winnstr</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses error conditions <STRONG>EILSEQ</STRONG> and <STRONG>EILOVERFLOW</STRONG>
- associated with extended-level conformance are not yet
- detected (this implementation does not yet support XPG4
- multi-byte characters). 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 <EM>n</EM>. In this case, the functions
- return the string ending at the right margin.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>ripof-</STRONG>
- <STRONG>fline</STRONG>, <STRONG>curs_set</STRONG>, <STRONG>napms</STRONG> - low-level <STRONG>curses</STRONG> routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></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> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>void</STRONG> <STRONG>setsyx(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>int</STRONG> <STRONG>ripoffline(int</STRONG> <STRONG>line,</STRONG> <STRONG>int</STRONG> <STRONG>(*init)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int));</STRONG>
- <STRONG>int</STRONG> <STRONG>curs_set(int</STRONG> <STRONG>visibility);</STRONG>
- <STRONG>int</STRONG> <STRONG>napms(int</STRONG> <STRONG>ms);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The following routines give low-level access to various
- <STRONG>curses</STRONG> capabilities. Theses routines typically are used
- inside library routines.
-
- 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>.
-
- 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>endwin</STRONG>
- and, after an <STRONG>endwin</STRONG>, by <STRONG>doupdate</STRONG>, so they normally are
- not called.
-
- The <STRONG>resetty</STRONG> and <STRONG>savetty</STRONG> routines save and restore the
- state of the terminal 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>.
-
- The <STRONG>getsyx</STRONG> routine returns the current coordinates of the
- virtual screen 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>.
-
- The <STRONG>setsyx</STRONG> routine sets the virtual screen 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 rou-
- tines <STRONG>getsyx</STRONG> and <STRONG>setsyx</STRONG> are designed to be used by a
- 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 windows, call <STRONG>setsyx</STRONG>, and then call
- <STRONG>doupdate</STRONG>.
-
- The <STRONG>ripoffline</STRONG> routine provides access to the same facil-
- ity 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. If <EM>line</EM> is positive, a line
- is removed from the top of <STRONG>stdscr</STRONG>; if <EM>line</EM> is negative, a
- line is removed from the bottom. When this is done inside
- <STRONG>initscr</STRONG>, the routine <STRONG>init</STRONG> (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 <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> (defined in
- <STRONG><curses.h></STRONG>) are not guaranteed to be accurate and <STRONG>wrefresh</STRONG>
- or <STRONG>doupdate</STRONG> must not be called. It is allowable to call
- <STRONG>wnoutrefresh</STRONG> during the initialization routine.
-
- <STRONG>ripoffline</STRONG> can be called up to five times before calling
- <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.
-
- The <STRONG>curs_set</STRONG> routine sets the cursor state is set 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.
-
- The <STRONG>napms</STRONG> routine is used to sleep for <EM>ms</EM> milliseconds.
-
-
-</PRE>
-<H2>RETURN VALUE</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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>getsyx</STRONG> is a macro, so <STRONG>&</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 currently incorrect". This implementation
- gets it right, but it may be unwise to count on the cor-
- rectness of the return value anywhere else.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The 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 hav-
- ing return type int. This is misleading, as they are
- <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>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>getmouse</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>wenclose</STRONG>, <STRONG>wmouse_trafo</STRONG>,
- <STRONG>mouseinterval</STRONG> - mouse interface through curses
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></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>int</STRONG> <STRONG>getmouse(MEVENT</STRONG> <STRONG>*event);</STRONG>
- <STRONG>int</STRONG> <STRONG>ungetmouse(MEVENT</STRONG> <STRONG>*event);</STRONG>
- <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <STRONG>newmask,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*oldmask);</STRONG>
- <STRONG>bool</STRONG> <STRONG>wenclose(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>bool</STRONG> <STRONG>wmouse_trafo(const</STRONG> <STRONG>WINDOW*</STRONG> <STRONG>win,</STRONG> <STRONG>int*</STRONG> <STRONG>pY,</STRONG> <STRONG>int*</STRONG> <STRONG>pX,</STRONG>
- <STRONG>bool</STRONG> <STRONG>to_screen);</STRONG>
- <STRONG>int</STRONG> <STRONG>mouseinterval(int</STRONG> <STRONG>erval);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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>wgetch</STRONG> input stream.
-
- 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.
-
- Here are the mouse event type masks:
-
- l l _ _ l l. <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
- 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
-
- Once a class of mouse events have 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 coordinates. The returned
- state mask will have exactly one bit set to indicate the
- event type.
-
- 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.
-
- The <STRONG>wenclose</STRONG> 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 <STRONG>wmouse_trafo</STRONG> function transforms a given pair of coor-
- dinates from stdscr-relative coordinates to screen-rela-
- tive coordinates or vice versa. Please remember, that
- stdscr-relative coordinates are not always identical to
- screen-relative coordinates due to the mechanism to
- reserve lines on top or bottom of the screen for other
- purposes (ripoff() call, see also slk_... functions). If
- the parameter <STRONG>to_screen</STRONG> is <STRONG>TRUE</STRONG>, the pointers <STRONG>pY,</STRONG> <STRONG>pX</STRONG> must
- reference the coordinates of a location inside the window
- <STRONG>win</STRONG>. They are converted to screen-relative coordinates and
- returned through the pointers. If the conversion was suc-
- cessful, the function returns <STRONG>TRUE</STRONG>. If one of the parame-
- ters was NULL or the location is not inside the window,
- <STRONG>FALSE</STRONG> is returned. If <STRONG>to_screen</STRONG> is <STRONG>FALSE</STRONG>, the pointers <STRONG>pY,</STRONG>
- encloses this point. In this case the function returns
- <STRONG>TRUE</STRONG>. If one of the parameters is NULL or the point is not
- inside the window, <STRONG>FALSE</STRONG> is returned. Please notice, that
- the referenced coordinates are only replaced by the con-
- verted coordinates if the transformation was successful.
-
- The <STRONG>mouseinterval</STRONG> function sets the maximum time (in thou-
- sands 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.
-
- 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>get-</STRONG>
- <STRONG>str</STRONG> that expects a linefeed for input-loop termination.
-
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- <STRONG>getmouse</STRONG>, <STRONG>ungetmouse</STRONG> and <STRONG>mouseinterval</STRONG> return the integer
- <STRONG>ERR</STRONG> upon failure or <STRONG>OK</STRONG> upon successful completion. <STRONG>mouse-</STRONG>
- <STRONG>mask</STRONG> returns the mask of reportable events. <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>PORTABILITY</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.
-
- The feature macro <STRONG>NCURSES_MOUSE_VERSION</STRONG> is provided so the
- preprocessor can be used to test whether these features
- are present (its value is 1). NOTE: THIS INTERFACE IS
- EXPERIMENTAL AND IS SUBJECT TO CHANGE WITHOUT NOTICE! If
- the interface is changed, the value of <STRONG>NCURSES_MOUSE_VER-</STRONG>
- <STRONG>SION</STRONG> will be incremented.
-
- The order of the <STRONG>MEVENT</STRONG> structure members is not guaran-
- teed. Additional 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 Alessandro
- Rubini's gpm server. If you are using something other
- than xterm there is no gpm daemon running on your machine,
- mouse events will not be visible to <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG> (and the
- <STRONG>wmousemask</STRONG> function will always return <STRONG>0</STRONG>).
-
- 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.
- Mouse events under xterm will not in fact be ignored dur-
- ing cooked mode, if they have been enabled by <STRONG>wmousemask</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.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>move</STRONG>, <STRONG>wmove</STRONG> - move <STRONG>curses</STRONG> window cursor
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>move(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>int</STRONG> <STRONG>wmove(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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 terminal until <STRONG>refresh</STRONG> is called.
- The position specified is relative to the upper left-hand
- corner of the window, which is (0,0).
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- These routines return <STRONG>ERR</STRONG> upon failure and OK (SVr4 speci-
- fies only "an integer value other than <STRONG>ERR</STRONG>") upon success-
- ful completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>move</STRONG> may be a macro.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These functions are described in the XSI Curses standard,
- Issue 4. The standard specifies that if (y,x) is within a
- multi-column character, the cursor is moved to the first
- column of that character; however, this implementation
- does not yet support the extended-level XSI multi-byte
- characters.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>nl</STRONG>, <STRONG>nonl</STRONG> - <STRONG>curses</STRONG> output options
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>clearok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>idlok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>void</STRONG> <STRONG>idcok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>void</STRONG> <STRONG>immedok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>leaveok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>setscrreg(int</STRONG> <STRONG>top,</STRONG> <STRONG>int</STRONG> <STRONG>bot);</STRONG>
- <STRONG>int</STRONG> <STRONG>wsetscrreg(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>top,</STRONG> <STRONG>int</STRONG> <STRONG>bot);</STRONG>
- <STRONG>int</STRONG> <STRONG>scrollok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>int</STRONG> <STRONG>nl(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>nonl(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines set options that change the style of output
- within <STRONG>curses</STRONG>. All options are initially <STRONG>FALSE</STRONG>, unless
- otherwise stated. It is not necessary to turn these
- options off before calling <STRONG>endwin</STRONG>.
-
- 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 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 <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.
-
- 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 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 isn't really needed. If insert/delete line can-
- not be used, <STRONG>curses</STRONG> redraws the changed portions of all
- lines.
-
- If <STRONG>idcok</STRONG> is called with <STRONG>FALSE</STRONG> as second argument, <STRONG>curses</STRONG>
- 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 <STRONG>idcok</STRONG> with
- <STRONG>TRUE</STRONG> as second argument re-enables use of character inser-
- tion and deletion.
-
- If <STRONG>immedok</STRONG> is called with <STRONG>TRUE</STRONG> <STRONG>as</STRONG> <STRONG>argument</STRONG>, any change in
- <STRONG>fresh</STRONG>. However, it may degrade performance considerably,
- due to repeated calls to <STRONG>wrefresh</STRONG>. It is disabled by
- default.
-
- 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 applications where the cur-
- sor is not used, since it reduces the need for cursor
- motions. If possible, the cursor is made invisible when
- this option is enabled.
-
- The <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> routines allow the applica-
- tion programmer to set a software scrolling region in a
- window. <EM>top</EM> and <EM>bot</EM> 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 <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.)
-
- 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 character 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 in order to get the
- physical scrolling effect on the terminal, it is also nec-
- essary to call <STRONG>idlok</STRONG>).
-
- The <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> 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 <STRONG>addch('\n')</STRONG>
- does the equivalent of return and line feed on the virtual
- screen). Initially, these translations do occur. If you
- disable them using <STRONG>nonl</STRONG>, <STRONG>curses</STRONG> will be able to make bet-
- ter use of the line-feed capability, resulting in faster
- cursor motion. Also, <STRONG>curses</STRONG> will then be able to detect
- the return key.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The functions <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> return <STRONG>OK</STRONG> upon suc-
- cess and <STRONG>ERR</STRONG> upon failure. All other routines that return
- an integer always return <STRONG>OK</STRONG>.
- These functions are described in the XSI Curses standard,
- Issue 4.
-
- The XSI Curses standard is ambiguous on the question of
- whether <STRONG>raw</STRONG>() should disable the CRLF translations con-
- trolled by <STRONG>nl</STRONG>() and <STRONG>nonl</STRONG>(). 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 does not mess with.
-
- Some historic curses implementations had, as an undocu-
- mented feature, the ability to do the equivalent of
- <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG> by saying <STRONG>touchwin(stdscr)</STRONG> or <STRONG>clear(std-</STRONG>
- <STRONG>scr)</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 in order 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.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>clearok</STRONG>, <STRONG>leaveok</STRONG>, <STRONG>scrollok</STRONG>, <STRONG>idcok</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG> and
- <STRONG>setscrreg</STRONG> may be macros.
-
- The <STRONG>immedok</STRONG> routine is useful for windows that are used as
- terminal emulators.
-
-
-</PRE>
-<H2>SEE ALSO</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>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>overlay</STRONG>, <STRONG>overwrite</STRONG>, <STRONG>copywin</STRONG> - overlay and manipulate over-
- lapped <STRONG>curses</STRONG> windows
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>overlay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*srcwin,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*dstwin);</STRONG>
- <STRONG>int</STRONG> <STRONG>overwrite(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*srcwin,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*dstwin);</STRONG>
- <STRONG>int</STRONG> <STRONG>copywin(WINDOW</STRONG> <STRONG>*srcwin,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*dstwin,</STRONG> <STRONG>int</STRONG> <STRONG>sminrow,</STRONG>
- <STRONG>int</STRONG> <STRONG>smincol,</STRONG> <STRONG>int</STRONG> <STRONG>dminrow,</STRONG> <STRONG>int</STRONG> <STRONG>dmincol,</STRONG> <STRONG>int</STRONG> <STRONG>dmaxrow,</STRONG>
- <STRONG>int</STRONG> <STRONG>dmaxcol,</STRONG> <STRONG>int</STRONG> <STRONG>overlay);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><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 destructive.
-
- The <STRONG>copywin</STRONG> routine provides a finer granularity of con-
- trol over the <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> routines. Like in the
- <STRONG>prefresh</STRONG> routine, a rectangle is specified in the destina-
- tion window, (<EM>dminrow</EM>, <EM>dmincol</EM>) and (<EM>dmaxrow</EM>, <EM>dmaxcol</EM>),
- and the upper-left-corner coordinates of the source win-
- dow, (<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>RETURN VALUE</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 completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</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 multi-byte
- renditions (not yet supported in this implementation).
-
-
-</PRE>
-<H2>SEE ALSO</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>
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>newpad</STRONG>, <STRONG>subpad</STRONG>, <STRONG>prefresh</STRONG>, <STRONG>pnoutrefresh</STRONG>, <STRONG>pechochar</STRONG> - create
- and display <STRONG>curses</STRONG> pads
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>WINDOW</STRONG> <STRONG>*newpad(int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols);</STRONG>
- <STRONG>WINDOW</STRONG> <STRONG>*subpad(WINDOW</STRONG> <STRONG>*orig,</STRONG> <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
- <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
- <STRONG>int</STRONG> <STRONG>prefresh(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>int</STRONG> <STRONG>pminrow,</STRONG> <STRONG>int</STRONG> <STRONG>pmincol,</STRONG>
- <STRONG>int</STRONG> <STRONG>sminrow,</STRONG> <STRONG>int</STRONG> <STRONG>smincol,</STRONG> <STRONG>int</STRONG> <STRONG>smaxrow,</STRONG> <STRONG>int</STRONG> <STRONG>smaxcol);</STRONG>
- <STRONG>int</STRONG> <STRONG>pnoutrefresh(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>int</STRONG> <STRONG>pminrow,</STRONG> <STRONG>int</STRONG> <STRONG>pmincol,</STRONG>
- <STRONG>int</STRONG> <STRONG>sminrow,</STRONG> <STRONG>int</STRONG> <STRONG>smincol,</STRONG> <STRONG>int</STRONG> <STRONG>smaxrow,</STRONG> <STRONG>int</STRONG> <STRONG>smaxcol);</STRONG>
- <STRONG>int</STRONG> <STRONG>pechochar(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><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 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.
- Automatic refreshes of pads (<EM>e</EM>.<EM>g</EM>., from scrolling or echo-
- ing of input) do not occur. It is not legal to call <STRONG>wre-</STRONG>
- <STRONG>fresh</STRONG> with a <EM>pad</EM> as an argument; the routines <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.
-
- The <STRONG>subpad</STRONG> routine creates and returns a pointer to a sub-
- window within a pad with the given number of lines,
- <EM>nlines</EM>, and columns, <EM>ncols</EM>. Unlike <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>.
-
- 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.
- <EM>pminrow</EM> and <EM>pmincol</EM> specify the upper left-hand corner of
- the rectangle to be displayed in the pad. <EM>sminrow</EM>, <EM>smin-</EM>
- <EM>col</EM>, <EM>smaxrow</EM>, and <EM>smaxcol</EM> specify the edges of the rectan-
- gle to be displayed on the screen. The lower right-hand
- corner of the rectangle to be displayed in the pad is cal-
- culated from the screen coordinates, since the rectangles
- must be the same size. Both rectangles must be entirely
- treated as if they were zero.
-
- The <STRONG>pechochar</STRONG> routine is functionally equivalent to a call
- to <STRONG>addch</STRONG> followed by a call to <STRONG>refresh</STRONG>, a call to <STRONG>waddch</STRONG>
- followed by a call to <STRONG>wrefresh</STRONG>, or a call to <STRONG>waddch</STRONG> fol-
- lowed by a call to <STRONG>prefresh.</STRONG> 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
- 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>
-<H2>RETURN VALUE</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 completion.
-
- Routines that return pointers return <STRONG>NULL</STRONG> on error, and
- set <STRONG>errno</STRONG> to <STRONG>ENOMEM</STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>pechochar</STRONG> may be a macro.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions.
-
-
-</PRE>
-<H2>SEE ALSO</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>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG>, <STRONG>mvwprintw</STRONG>, <STRONG>vwprintw</STRONG> - print
- formatted output in <STRONG>curses</STRONG> windows
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>printw(char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>wprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvprintw(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG>
- <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg]</STRONG> ...);
-
- <STRONG>#include</STRONG> <STRONG><varargs.h></STRONG>
- <STRONG>int</STRONG> <STRONG>vwprintw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>varglist);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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><A HREF="printf.3s.html">printf(3S)</A></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 window.
-
- The <STRONG>vwprintw</STRONG> routine is analogous to <STRONG>vprintf</STRONG> [see
- <STRONG><A HREF="printf.3s.html">printf(3S)</A></STRONG>] and performs a <STRONG>wprintw</STRONG> using a variable argu-
- ment list. The third argument is a <STRONG>va_list</STRONG>, a pointer to
- a list of arguments, as defined in <STRONG><varargs.h></STRONG>.
-
-
-</PRE>
-<H2>RETURN VALUE</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 completion.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions. 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><stdarg.h></STRONG> interface.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="printf.3s.html">printf(3S)</A></STRONG>, <STRONG>vprintf(3S)</STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>refresh</STRONG>, <STRONG>wrefresh</STRONG>, <STRONG>wnoutrefresh</STRONG>, <STRONG>doupdate</STRONG>, <STRONG>redrawwin</STRONG>, <STRONG>wre-</STRONG>
- <STRONG>drawln</STRONG> - refresh <STRONG>curses</STRONG> windows and lines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>refresh(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>wrefresh(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>wnoutrefresh(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>doupdate(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>redrawwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>wredrawln(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>beg_line,</STRONG> <STRONG>int</STRONG> <STRONG>num_lines);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><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 ter-
- minal, as other routines merely manipulate data struc-
- tures. The routine <STRONG>wrefresh</STRONG> copies the named window to
- the physical terminal screen, taking into account what is
- already there in order to do optimizations. The <STRONG>refresh</STRONG>
- routine is the same, using <STRONG>stdscr</STRONG> as the default window.
- Unless <STRONG>leaveok</STRONG> has been enabled, the physical cursor of
- the terminal is left at the location of the cursor for
- that window.
-
- 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 structures, <STRONG>curses</STRONG> keeps two
- data structures representing the terminal screen: a physi-
- cal screen, describing what is actually on the screen, and
- a virtual screen, describing what the programmer wants to
- have on the screen.
-
- The routine <STRONG>wrefresh</STRONG> works by first calling <STRONG>wnoutrefresh</STRONG>,
- which copies the named window to the virtual screen, and
- then calling <STRONG>doupdate</STRONG>, 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 <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>doupdate</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 global 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 ambiguous. 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 overlap-
- ping windows; it means that if two windows overlap, you
- see the section on <STRONG>PORTABILITY</STRONG> below for a warning about
- exploiting this behavior.)
-
- The <STRONG>wredrawln</STRONG> routine indicates to <STRONG>curses</STRONG> 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 <STRONG>redrawwin</STRONG>()
- touches the entire window.
-
-
-</PRE>
-<H2>RETURN VALUE</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 completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>refresh</STRONG> and <STRONG>redrawwin</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions.
-
- 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 anywhere.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG>, <STRONG>mvscanw</STRONG>, <STRONG>mvwscanw</STRONG>, <STRONG>vwscanw</STRONG> - convert for-
- matted input from a <STRONG>curses</STRONG> widow
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>scanw(char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>wscanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvscanw(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg</STRONG>] <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwscanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG>
- <STRONG>char</STRONG> <STRONG>*fmt</STRONG> [<STRONG>,</STRONG> <STRONG>arg]</STRONG> <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>vwscanw(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>va_list</STRONG> <STRONG>varglist);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG> and <STRONG>mvscanw</STRONG> routines are analogous to
- <STRONG>scanf</STRONG> [see <STRONG><A HREF="scanf.3s.html">scanf(3S)</A></STRONG>]. The effect of these routines is as
- though <STRONG>wgetstr</STRONG> were called on the window, and the result-
- ing line used as input for <STRONG><A HREF="sscanf.3.html">sscanf(3)</A></STRONG>. Fields which do not
- map to a variable in the <EM>fmt</EM> field are lost.
-
- The <STRONG>vwscanw</STRONG> routine is similar to <STRONG>vwprintw</STRONG> in that it per-
- forms a <STRONG>wscanw</STRONG> using a variable argument list. The third
- argument is a <EM>va</EM>_<EM>list</EM>, a pointer to a list of arguments,
- as defined in <STRONG><varargs.h></STRONG>.
-
-
-</PRE>
-<H2>RETURN VALUE</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.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions. 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><stdarg.h></STRONG> interface.
-
-
-</PRE>
-<H2>SEE ALSO</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="scanf.3s.html">scanf(3S)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>scr_dump(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
- <STRONG>int</STRONG> <STRONG>scr_restore(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
- <STRONG>int</STRONG> <STRONG>scr_init(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
- <STRONG>int</STRONG> <STRONG>scr_set(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>scr_dump</STRONG> routine dumps the current contents of the
- virtual screen to the file <EM>filename</EM>.
-
- The <STRONG>scr_restore</STRONG> routine sets the virtual screen 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 screen
- to the way it looked in the dump file.
-
- 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> [see <STRONG>system</STRONG>(BA_LIB)]
- call to share the screen with another process which has
- done a <STRONG>scr_dump</STRONG> after its <STRONG>endwin</STRONG> call. The data is
- declared invalid if the terminfo capabilities <STRONG>rmcup</STRONG> and
- <STRONG>nrrmc</STRONG> exist; also if the terminal has been written to
- since the preceding <STRONG>scr_dump</STRONG> call.
-
- 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>RETURN VALUE</H2><PRE>
- All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
- upon success.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>, and <STRONG>scr_restore</STRONG> may be
- macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4, describes these func-
- is also considered invalid "if the time-stamp of the tty
- is old" but don't define "old".
-
-
-</PRE>
-<H2>SEE ALSO</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="system.3s.html">system(3S)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>scr_dump(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
- <STRONG>int</STRONG> <STRONG>scr_restore(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
- <STRONG>int</STRONG> <STRONG>scr_init(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
- <STRONG>int</STRONG> <STRONG>scr_set(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>scr_dump</STRONG> routine dumps the current contents of the
- virtual screen to the file <EM>filename</EM>.
-
- The <STRONG>scr_restore</STRONG> routine sets the virtual screen 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 screen
- to the way it looked in the dump file.
-
- 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> [see <STRONG>system</STRONG>(BA_LIB)]
- call to share the screen with another process which has
- done a <STRONG>scr_dump</STRONG> after its <STRONG>endwin</STRONG> call. The data is
- declared invalid if the terminfo capabilities <STRONG>rmcup</STRONG> and
- <STRONG>nrrmc</STRONG> exist; also if the terminal has been written to
- since the preceding <STRONG>scr_dump</STRONG> call.
-
- 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>RETURN VALUE</H2><PRE>
- All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
- upon success.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>, and <STRONG>scr_restore</STRONG> may be
- macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4, describes these func-
- is also considered invalid "if the time-stamp of the tty
- is old" but don't define "old".
-
-
-</PRE>
-<H2>SEE ALSO</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="system.3s.html">system(3S)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>scroll</STRONG>, <STRONG>srcl</STRONG>, <STRONG>wscrl</STRONG> - scroll a <STRONG>curses</STRONG> window
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>scroll(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>scrl(int</STRONG> <STRONG>n);</STRONG>
- <STRONG>int</STRONG> <STRONG>wscrl(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>scroll</STRONG> 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 <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 cur-
- sor position is not changed.
-
- For these functions to work, scrolling must be enabled via
- <STRONG>scrollok</STRONG>.
-
-
-</PRE>
-<H2>RETURN VALUE</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 success-
- ful completion.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>scrl</STRONG> and <STRONG>scroll</STRONG> 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, in order to leave open the possibility of
- smarter optimization of multiple scroll actions on the
- next update.
-
- Neither the SVr4 documentation specifies whether the cur-
- rent attribute or current color-pair of blanks generated
- by the scroll function is zeroed. Under this implementa-
- tion it is.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3X)</A></STRONG>
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>slk_init</STRONG>, <STRONG>slk_set</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_color</STRONG> - <STRONG>curses</STRONG> soft label
- routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>slk_init(int</STRONG> <STRONG>fmt);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_set(int</STRONG> <STRONG>labnum,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*label,</STRONG> <STRONG>int</STRONG> <STRONG>fmt);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_refresh(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_noutrefresh(void);</STRONG>
- <STRONG>char</STRONG> <STRONG>*slk_label(int</STRONG> <STRONG>labnum);</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> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_attrset(const</STRONG> <STRONG>chtype</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>attr_t</STRONG> <STRONG>slk_attr(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_attroff(const</STRONG> <STRONG>chtype</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>slk_color(short</STRONG> <STRONG>color_pair_number);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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 labels, <STRONG>curses</STRONG> takes over the bottom
- line of <STRONG>stdscr</STRONG>, reducing the size of <STRONG>stdscr</STRONG> and the vari-
- able <STRONG>LINES</STRONG>. <STRONG>curses</STRONG> 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 most common
- for todays PC like enduser devices. Please note that
- ncurses simulates this mode by taking over up to two lines
- at the bottom of the screen, it doesn't try to use any
- hardware support for this mode.
-
- 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. Setting <EM>fmt</EM> to <STRONG>0</STRONG>
- indicates a 3-2-3 arrangement of the labels, <STRONG>1</STRONG> indicates a
- 4-4 arrangement and <STRONG>2</STRONG> indicates the PC like 4-4-4 mode. If
- <STRONG>fmt</STRONG> is set to <STRONG>3</STRONG>, it 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 <STRONG>slk_set</STRONG> routine requires <EM>labnum</EM> to be a label number,
- from <STRONG>1</STRONG> to <STRONG>8</STRONG> (resp. <STRONG>12</STRONG>); <EM>label</EM> must be the string to be put
- on the label, up to eight (resp. five) 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-justi-
- the <STRONG>wrefresh</STRONG> and <STRONG>wnoutrefresh</STRONG> routines.
-
- The <STRONG>slk_label</STRONG> routine returns the current label for label
- number <EM>labnum</EM>, with leading and trailing blanks stripped.
-
- 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.
-
- The <STRONG>slk_attron</STRONG>, <STRONG>slk_attrset</STRONG>, <STRONG>slk_attroff</STRONG> and <STRONG>slk_attr</STRONG> rou-
- tines correspond to <STRONG>attron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>attroff</STRONG> and <STRONG>attr_get</STRONG>.
- 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 <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.
-
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- These routines return <STRONG>ERR</STRONG> upon failure and OK (SVr4 speci-
- fies only "an integer value other than <STRONG>ERR</STRONG>") upon success-
- ful completion. <STRONG>slk_attr</STRONG> returns the attribute used for
- the soft keys.
-
- <STRONG>slk_label</STRONG> returns <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Most applications would use <STRONG>slk_noutrefresh</STRONG> because a <STRONG>wre-</STRONG>
- <STRONG>fresh</STRONG> is likely to follow soon.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4, describes these func-
- tions. It changes the argument type of the attribute-
- manipulation functions <STRONG>slk_attron</STRONG>, <STRONG>slk_attroff</STRONG>,
- <STRONG>slk_attrset</STRONG> to be <STRONG>attr_t</STRONG>, and adds <STRONG>const</STRONG> qualifiers. 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.
-
-
-</PRE>
-<H2>SEE ALSO</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>
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>baudrate</STRONG>, <STRONG>erasechar</STRONG>, <STRONG>has_ic</STRONG>, <STRONG>has_il</STRONG>, <STRONG>killchar</STRONG>, <STRONG>longname</STRONG>,
- <STRONG>termattrs</STRONG>, <STRONG>termname</STRONG> - <STRONG>curses</STRONG> environment query routines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>baudrate(void);</STRONG>
- <STRONG>char</STRONG> <STRONG>erasechar(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>has_ic(void);</STRONG>
- <STRONG>int</STRONG> <STRONG>has_il(void);</STRONG>
- <STRONG>char</STRONG> <STRONG>killchar(void);</STRONG>
- <STRONG>char</STRONG> <STRONG>*longname(void);</STRONG>
- <STRONG>attr_t</STRONG> <STRONG>termattrs(void);</STRONG>
- <STRONG>char</STRONG> <STRONG>*termname(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>baudrate</STRONG> routine returns the output speed of the ter-
- minal. The number returned is in bits per second, for
- example <STRONG>9600</STRONG>, and is an integer.
-
- The <STRONG>erasechar</STRONG> routine returns the user's current erase
- character.
-
- 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>.
-
- The <STRONG>killchar</STRONG> routine returns the user's current line kill
- character.
-
- 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 charac-
- ters. 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.
-
- If a given terminal doesn't support a video attribute that
- an application program is trying to use, <STRONG>curses</STRONG> may sub-
- stitute a different video attribute for it. The <STRONG>termattrs</STRONG>
- function returns a logical <STRONG>OR</STRONG> of all video attributes sup-
- ported by the terminal. This information is useful when a
- <STRONG>curses</STRONG> program needs complete control over the appearance
- of the screen.
-
-
-
-</PRE>
-<H2>RETURN VALUE</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>NOTES</H2><PRE>
- Note that <STRONG>termattrs</STRONG> may be a macro.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions. It changes the return type of <STRONG>termattrs</STRONG> to the new
- type <STRONG>attr_t</STRONG>.
-
-
-</PRE>
-<H2>SEE ALSO</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>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>, <STRONG>tgetstr</STRONG>, <STRONG>tgoto</STRONG>, <STRONG>tputs</STRONG> - direct
- <STRONG>curses</STRONG> interface to the terminfo capability database
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- <STRONG>#include</STRONG> <STRONG><term.h></STRONG>
- <STRONG>int</STRONG> <STRONG>tgetent(const</STRONG> <STRONG>char</STRONG> <STRONG>*bp,</STRONG> <STRONG>char</STRONG> <STRONG>*name);</STRONG>
- <STRONG>int</STRONG> <STRONG>tgetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*id);</STRONG>
- <STRONG>int</STRONG> <STRONG>tgetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*id);</STRONG>
- <STRONG>char</STRONG> <STRONG>*tgetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*id,</STRONG> <STRONG>char</STRONG> <STRONG>**area);</STRONG>
- <STRONG>char</STRONG> <STRONG>*tgoto(const</STRONG> <STRONG>char</STRONG> <STRONG>*cap,</STRONG> <STRONG>int</STRONG> <STRONG>col,</STRONG> <STRONG>int</STRONG> <STRONG>row);</STRONG>
- <STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>affcnt,</STRONG> <STRONG>int</STRONG> <STRONG>(*putc)(int));</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- These routines are included as a conversion aid for pro-
- grams that use the <EM>termcap</EM> library. Their parameters are
- the same and the routines are emulated using the <EM>terminfo</EM>
- database. Thus, they can only be used to query the capa-
- bilities of entries for which a terminfo entry has been
- compiled.
-
- The <STRONG>tgetent</STRONG> routine loads the entry for <EM>name</EM>. 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 <EM>bp</EM>.
-
- 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 <STRONG>tgoto</STRONG> routine instantiates the parameters into the
- given capability. The output from this routine is to be
- passed to <STRONG>tputs</STRONG>.
-
- 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 term-
- cap or terminfo name.
-
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Except where explicitly noted, routines that return an
- integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 only speci-
- fies "an integer value other than <STRONG>ERR</STRONG>") upon successful
- completion.
-
- Routines that return pointers return <STRONG>NULL</STRONG> on error.
- 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 won't cause problems if all you do with it
- is call <STRONG>tgoto</STRONG> or <STRONG>tparm</STRONG>, which both expand terminfo-style.
-
- Because terminfo conventions for representing padding in
- string capabilities differ from termcap's, <STRONG>tputs("50");</STRONG>
- will put out a literal "50" rather than busy-waiting for
- 50 milliseconds. Cope with it.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- 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 <STRONG>tgetent</STRONG> correctly, though
- all three were in fact returned ever since SVr1.
-
-
-</PRE>
-<H2>SEE ALSO</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="putc.3s.html">putc(3S)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>setupterm</STRONG>, <STRONG>setterm</STRONG>, <STRONG>set_curterm</STRONG>, <STRONG>del_curterm</STRONG>, <STRONG>restartterm</STRONG>,
- <STRONG>tparm</STRONG>, <STRONG>tputs</STRONG>, <STRONG>putp</STRONG>, <STRONG>vidputs</STRONG>, <STRONG>vidattr</STRONG>, <STRONG>mvcur</STRONG>, <STRONG>tigetflag</STRONG>,
- <STRONG>tigetnum</STRONG>, <STRONG>tigetstr</STRONG> - <STRONG>curses</STRONG> interfaces to terminfo
- database
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- <STRONG>#include</STRONG> <STRONG><term.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>setupterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*term,</STRONG> <STRONG>int</STRONG> <STRONG>fildes,</STRONG> <STRONG>int</STRONG> <STRONG>*errret);</STRONG>
- <STRONG>int</STRONG> <STRONG>setterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*term);</STRONG>
- <STRONG>TERMINAL</STRONG> <STRONG>*set_curterm(TERMINAL</STRONG> <STRONG>*nterm);</STRONG>
- <STRONG>int</STRONG> <STRONG>del_curterm(TERMINAL</STRONG> <STRONG>*oterm);</STRONG>
- <STRONG>int</STRONG> <STRONG>restartterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*term,</STRONG> <STRONG>int</STRONG> <STRONG>fildes,</STRONG> <STRONG>int</STRONG>
- <STRONG>*errret);</STRONG>
- <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>...);</STRONG>
- <STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>affcnt,</STRONG> <STRONG>int</STRONG> <STRONG>(*putc)(int));</STRONG>
- <STRONG>int</STRONG> <STRONG>putp(const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
- <STRONG>int</STRONG> <STRONG>vidputs(chtype</STRONG> <STRONG>attrs,</STRONG> <STRONG>int</STRONG> <STRONG>(*putc)(char));</STRONG>
- <STRONG>int</STRONG> <STRONG>vidattr(chtype</STRONG> <STRONG>attrs);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvcur(int</STRONG> <STRONG>oldrow,</STRONG> <STRONG>int</STRONG> <STRONG>oldcol,</STRONG> <STRONG>int</STRONG> <STRONG>newrow,</STRONG> <STRONG>int</STRONG> <STRONG>newcol);</STRONG>
- <STRONG>int</STRONG> <STRONG>tigetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*capname);</STRONG>
- <STRONG>int</STRONG> <STRONG>tigetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*capname);</STRONG>
- <STRONG>char</STRONG> <STRONG>*tigetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*capname);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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 capabilities, such as programming func-
- tion keys. For all other functionality, <STRONG>curses</STRONG> routines
- are more suitable and their use is recommended.
-
- Initially, <STRONG>setupterm</STRONG> should be called. Note that
- <STRONG>setupterm</STRONG> is automatically called by <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG>.
- This defines the set of terminal-dependent variables
- [listed in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>]. The <STRONG>terminfo</STRONG> variables <STRONG>lines</STRONG> and
- <STRONG>columns</STRONG> are initialized by <STRONG>setupterm</STRONG> as follows: 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. Otherwise, if the
- environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> exist, their val-
- ues 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.
-
- The header files <STRONG>curses.h</STRONG> and <STRONG>term.h</STRONG> should be included
- (in this order) to get the definitions for these strings,
- numbers, and flags. 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 the <STRONG>reset_shell_mode</STRONG> to restore
- <STRONG>enter_ca_mode</STRONG> upon startup and should output <STRONG>exit_ca_mode</STRONG>
- before exiting. Programs desiring shell escapes should
- call
-
- <STRONG>reset_shell_mode</STRONG> and output <STRONG>exit_ca_mode</STRONG> before the shell
- is called and should 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, ini-
- tializing the <STRONG>terminfo</STRONG> structures, but does not set up the
- output virtualization structures used by <STRONG>curses</STRONG>. The ter-
- minal type is the character string <EM>term</EM>; if <EM>term</EM> is null,
- the environment variable <STRONG>TERM</STRONG> is used. All output is to
- file descriptor <STRONG>fildes</STRONG> which is initialized for output.
- 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 status of <STRONG>1</STRONG> in <EM>errret</EM> is normal, <STRONG>0</STRONG> means that
- the terminal could not be found, and <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 finding 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>std-</STRONG>
- <STRONG>out</STRONG>.
-
- The <STRONG>setterm</STRONG> routine is being replaced by <STRONG>setupterm</STRONG>. 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>. The
- <STRONG>setterm</STRONG> routine is included here for BSD compatibility,
- and is not recommended for new programs.
-
- The <STRONG>set_curterm</STRONG> routine sets the variable <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>, references to any of the <STRONG>terminfo</STRONG>
- boolean, numeric, and string variables thereafter may
- refer to invalid memory locations until another <STRONG>setupterm</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 example, when reloading a game
- saved as a core image dump). It assumes that the windows
- be different. Accordingly, it saves various tty state
- bits, does a setupterm, and then restores the bits.
-
- The <STRONG>tparm</STRONG> routine instantiates the string <EM>str</EM> with parame-
- ters <EM>pi</EM>. A pointer is returned to the result of <EM>str</EM> with
- the parameters applied.
-
- The <STRONG>tputs</STRONG> routine applies padding information to the
- string <EM>str</EM> and outputs it. The <EM>str</EM> must be a terminfo
- string variable or the return value from <STRONG>tparm</STRONG>, <STRONG>tgetstr</STRONG>,
- or <STRONG>tgoto</STRONG>. <EM>affcnt</EM> is the number of lines affected, or 1 if
- not applicable. <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>. Note that
- the output of <STRONG>putp</STRONG> always goes to <STRONG>stdout</STRONG>, not to the
- <EM>fildes</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>mvcur</STRONG> routine provides low-level cursor motion. It
- takes effect immediately (rather than at the next
- refresh).
-
- 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>cap-</EM>
- <EM>name</EM> passed to them, such as <STRONG>xenl</STRONG>.
-
- The <STRONG>tigetflag</STRONG> routine returns the value <STRONG>-1</STRONG> if <EM>capname</EM> is
- not a boolean capability, or <STRONG>0</STRONG> if it is cancelled or
- absent from the terminal description.
-
- The <STRONG>tigetnum</STRONG> routine returns the value <STRONG>-2</STRONG> if <EM>capname</EM> is
- not a numeric capability, or <STRONG>-1</STRONG> if it is cancelled or
- absent from the terminal description.
-
- The <STRONG>tigetstr</STRONG> routine returns the value <STRONG>(char</STRONG> <STRONG>*)-1</STRONG> if <EM>cap-</EM>
- <EM>name</EM> is not a string capability, or <STRONG>0</STRONG> if it is cancelled
- or absent from the terminal description.
-
- The <EM>capname</EM> for each capability is given in the table col-
- umn entitled <EM>capname</EM> code in the capabilities section of
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
-
- <STRONG>char</STRONG> <STRONG>*boolnames</STRONG>, <STRONG>*boolcodes</STRONG>, <STRONG>*boolfnames</STRONG>
-
-
- These null-terminated arrays contain the <EM>capnames</EM>, the
- <STRONG>termcap</STRONG> codes, and the full C names, for each of the <STRONG>ter-</STRONG>
- <STRONG>minfo</STRONG> variables.
-
-
-</PRE>
-<H2>RETURN VALUE</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 completion, unless otherwise noted
- in the preceding routine descriptions.
-
- Routines that return pointers always return <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The <STRONG>setupterm</STRONG> routine should be used in place of <STRONG>setterm</STRONG>.
- It may be useful when you want to test for terminal capa-
- bilities without committing to the allocation of storage
- involved in <STRONG>initscr</STRONG>.
-
- Note that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The function <STRONG>setterm</STRONG> is not described in the XSI Curses
- standard and must be considered non-portable. All other
- functions are as described in the XSI curses standard.
-
- 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
- XSI Curses semantics.
-
- In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the
- type <STRONG>int</STRONG> <STRONG>(*putc)(char)</STRONG>.
-
- The XSI Curses standard prototypes <STRONG>tparm</STRONG> with a fixed num-
- ber of parameters, rather than a variable argument list.
-
-
-</PRE>
-<H2>SEE ALSO</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>curs_term-</STRONG>
- <STRONG><A HREF="cap.3x.html">cap(3X)</A></STRONG>, <STRONG><A HREF="putc.3s.html">putc(3S)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
- <STRONG>int</STRONG> <STRONG>touchwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>touchline(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>start,</STRONG> <STRONG>int</STRONG> <STRONG>count);</STRONG>
- <STRONG>int</STRONG> <STRONG>untouchwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>wtouchln(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>int</STRONG> <STRONG>changed);</STRONG>
- <STRONG>int</STRONG> <STRONG>is_linetouched(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>line);</STRONG>
- <STRONG>int</STRONG> <STRONG>is_wintouched(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>touchwin</STRONG> and <STRONG>touchline</STRONG> 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 <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 specified line/window was modified since the last
- call to <STRONG>wrefresh</STRONG>; otherwise they return <STRONG>FALSE</STRONG>. In addi-
- tion, <STRONG>is_linetouched</STRONG> returns <STRONG>ERR</STRONG> if <EM>line</EM> is not valid for
- the given window.
-
-
-</PRE>
-<H2>RETURN VALUE</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 descrip-
- tions.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- 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
- <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG> by saying <STRONG>touchwin(stdscr)</STRONG> or <STRONG>clear(std-</STRONG>
- <STRONG>scr)</STRONG>. This will not work under ncurses.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>unctrl</STRONG>, <STRONG>keyname</STRONG>, <STRONG>filter</STRONG>, <STRONG>use_env</STRONG>, <STRONG>putwin</STRONG>, <STRONG>getwin</STRONG>,
- <STRONG>delay_output</STRONG>, <STRONG>flushinp</STRONG> - miscellaneous <STRONG>curses</STRONG> utility rou-
- tines
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>char</STRONG> <STRONG>*unctrl(chtype</STRONG> <STRONG>c);</STRONG>
- <STRONG>char</STRONG> <STRONG>*keyname(int</STRONG> <STRONG>c);</STRONG>
- <STRONG>void</STRONG> <STRONG>filter(void);</STRONG>
- <STRONG>void</STRONG> <STRONG>use_env(char</STRONG> <STRONG>bool);</STRONG>
- <STRONG>int</STRONG> <STRONG>putwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>FILE</STRONG> <STRONG>*filep);</STRONG>
- <STRONG>WINDOW</STRONG> <STRONG>*getwin(FILE</STRONG> <STRONG>*filep);</STRONG>
- <STRONG>int</STRONG> <STRONG>delay_output(int</STRONG> <STRONG>ms);</STRONG>
- <STRONG>int</STRONG> <STRONG>flushinp(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The <STRONG>unctrl</STRONG> macro expands to a character string which is a
- printable representation of the character <EM>c</EM>. Control
- characters are displayed in the <STRONG>^</STRONG><EM>X</EM> notation. Printing
- characters are displayed as is.
-
- The <STRONG>keyname</STRONG> routine returns a character string correspond-
- ing to the key <EM>c</EM>.
-
- The <STRONG>filter</STRONG> routine, if used, must be called before <STRONG>initscr</STRONG>
- or <STRONG>newterm</STRONG> are called. The effect is that, during those
- calls, <STRONG>LINES</STRONG> is set to 1; the capabilities <STRONG>clear</STRONG>, <STRONG>cup</STRONG>,
- <STRONG>cud</STRONG>, <STRONG>cud1</STRONG>, <STRONG>cuu1</STRONG>, <STRONG>cuu</STRONG>, <STRONG>vpa</STRONG> are disabled; and the <STRONG>home</STRONG>
- string is set to the value of <STRONG>cr</STRONG>.
-
- The <STRONG>use_env</STRONG> routine, if used, is called before <STRONG>initscr</STRONG> or
- <STRONG>newterm</STRONG> are called. When called with <STRONG>FALSE</STRONG> as an argu-
- ment, the values of <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the
- <EM>terminfo</EM> database will be used, even if environment vari-
- ables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> (used by default) are set, or if
- <STRONG>curses</STRONG> is running in a window (in which case default
- behavior would be to use the window size if <STRONG>LINES</STRONG> and
- <STRONG>COLUMNS</STRONG> are not set).
-
- The <STRONG>putwin</STRONG> routine writes all data associated with window
- <EM>win</EM> into the file to which <EM>filep</EM> points. This information
- can be later retrieved 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.
-
- 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
- been typed by the user and has not yet been read by the
- program.
-
-
-</PRE>
-<H2>RETURN VALUE</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.
-
- <STRONG>flushinp</STRONG> always returns <STRONG>OK</STRONG>.
-
- Routines that return pointers return <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions.
-
- 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>
-<H2>NOTES</H2><PRE>
- Note that <STRONG>unctrl</STRONG> is a macro, which is defined in <<STRONG>unc-</STRONG>
- <STRONG>trl.h</STRONG>>.
-
-
-</PRE>
-<H2>SEE ALSO</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_scr_dump.3x.html">curs_scr_dump(3X)</A></STRONG>.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<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>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>WINDOW</STRONG> <STRONG>*newwin(int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG> <STRONG>int</STRONG> <STRONG>begin_y,</STRONG>
- <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
- <STRONG>int</STRONG> <STRONG>delwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
- <STRONG>WINDOW</STRONG> <STRONG>*subwin(WINDOW</STRONG> <STRONG>*orig,</STRONG> <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
- <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
- <STRONG>WINDOW</STRONG> <STRONG>*derwin(WINDOW</STRONG> <STRONG>*orig,</STRONG> <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
- <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
- <STRONG>int</STRONG> <STRONG>mvderwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>par_y,</STRONG> <STRONG>int</STRONG> <STRONG>par_x);</STRONG>
- <STRONG>WINDOW</STRONG> <STRONG>*dupwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>void</STRONG> <STRONG>wsyncup(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>int</STRONG> <STRONG>syncok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
- <STRONG>void</STRONG> <STRONG>wcursyncup(WINDOW</STRONG> <STRONG>*win);</STRONG>
- <STRONG>void</STRONG> <STRONG>wsyncdown(WINDOW</STRONG> <STRONG>*win);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Calling <STRONG>newwin</STRONG> 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 <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>.
-
- Calling <STRONG>delwin</STRONG> deletes the named window, freeing all mem-
- ory associated with it (it does not actually erase the
- window's screen image). Subwindows must be deleted before
- the main window can be deleted.
-
- 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.
-
- Calling <STRONG>subwin</STRONG> creates and returns a pointer to a new win-
- dow 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. (This position is relative to the screen, and
- not to the window <EM>orig</EM>.) The window is made in the middle
- of the window <EM>orig</EM>, so that changes made to one window
- will affect both windows. The subwindow shares memory
- with the window <EM>orig</EM>. When using this routine, it is nec-
- essary to call <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> before call-
- ing <STRONG>wrefresh</STRONG> on the subwindow.
-
- dow <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 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.
-
- Calling <STRONG>dupwin</STRONG> creates an exact duplicate of the window
- <EM>win</EM>.
-
- 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 when-
- ever there is a change in the window.
-
- 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>wrefresh</STRONG>, so it should almost never
- be necessary to call it manually.
-
- 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>RETURN VALUE</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 successful completion.
-
- <STRONG>delwin</STRONG> returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon
- successful completion.
-
- Routines that return pointers return <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>NOTES</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>BUGS</H2><PRE>
- The subwindow functions (<EM>subwin</EM>, <EM>derwin</EM>, <EM>mvderwin</EM>, <STRONG>wsyn-</STRONG>
- <STRONG>cup</STRONG>, <STRONG>wsyncdown</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>syncok</STRONG>) are flaky, incom-
- pletely 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 supposed to touch exactly those lines
- that are affected by ancestor changes. The language here,
- and the behavior of the <STRONG>curses</STRONG> implementation, is pat-
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- The XSI Curses standard, Issue 4 describes these func-
- tions.
-
-
-</PRE>
-<H2>SEE ALSO</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>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>dft_fgbg</STRONG> - use terminal's default colors
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
- <STRONG>int</STRONG> <STRONG>use_default_colors(void);</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- This is an extension to the curses library. It is 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).
- Because they are designed to support this, their design
- usually includes features to change the default foreground
- or background colors so that they do not match the assump-
- tion in XSI curses of white on black.
-
- Applications that paint a colored background over the
- whole screen are not adversely impacted by this type of
- terminal design. However, there are applications that are
- designed to work with the default background.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The function returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
- on success. It will fail if either the terminal does not
- support the <EM>orig</EM><STRONG>_</STRONG><EM>pair</EM> or <EM>orig</EM><STRONG>_</STRONG><EM>colors</EM> capability. If the
- <EM>initialize</EM><STRONG>_</STRONG><EM>pair</EM> capability is found, this causes an error
- as well.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- Associated with this extension, the <STRONG><A HREF="init_pair.3x.html">init_pair(3X)</A></STRONG> function
- accepts negative arguments to specify default foreground
- or background colors.
-
-
-</PRE>
-<H2>PORTABILITY</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 con-
- ditioned using NCURSES_VERSION.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="curs_color.3x.html">curs_color(3X)</A></STRONG>, <STRONG><A HREF="ded.1.html">ded(1)</A></STRONG>.
-
-
-</PRE>
-<H2>AUTHOR</H2><PRE>
- Thomas Dickey (from an analysis of the requirements for
- color xterm for XFree86 3.1.2C, February 1996).
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form</STRONG> - curses extension for programming forms
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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 inter-
- action with the user.
-
- The <STRONG>form</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>form</STRONG>
- library, link with the options <STRONG>-lform</STRONG> <STRONG>-lcurses</STRONG>.
-
-
- <STRONG>Current</STRONG> <STRONG>Default</STRONG> <STRONG>Values</STRONG> <STRONG>for</STRONG> <STRONG>Field</STRONG> <STRONG>Attributes</STRONG>
- The <STRONG>form</STRONG> library maintains a default value for field
- 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> 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.
-
-
- <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
- The following table lists each <STRONG>form</STRONG> routine and the name
- of the manual page on which it is described.
-
- l l l l . <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_fieldinfo <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>
- 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_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_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>
- unpost_form <STRONG><A HREF="form_post.3x.html">form_post(3X)</A></STRONG>
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Routines that return pointers return <STRONG>NULL</STRONG> on error. Rou-
- tines that return an integer return one of the following
- error codes:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_CONNECTED</STRONG>
- The field is already connected to a form.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_POSTED</STRONG>
- The form is already posted.
-
- <STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
-
- <STRONG>E_NO_ROOM</STRONG>
- Form is too large for its window.
-
- <STRONG>E_NOT_POSTED</STRONG>
- The form has not been posted.
-
- <STRONG>E_UNKNOWN_COMMAND</STRONG>
- The form driver code saw an unknown request code.
-
- <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_REQUEST_DENIED</STRONG>
- The form driver could not process the request.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages whose names begin "form_" for
- detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- files <STRONG><curses.h></STRONG> and <STRONG><eti.h></STRONG>.
-
- 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 GNU <STRONG><A HREF="ld.1.html">ld(1)</A></STRONG> and many other linkers).
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for ncurses
- by Eric S. Raymond.
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_field</STRONG> - make and break connections between fields and
- forms
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- 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);
-
-
-</PRE>
-<H2>DESCRIPTION</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> move the given field (which must
- be disconnected) to a specified location on the screen.
-
-
-</PRE>
-<H2>RETURN VALUES</H2><PRE>
- The function <STRONG>form_fields</STRONG> returns <STRONG>NULL</STRONG> on error.
-
- The function <STRONG>field_count</STRONG> returns <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG>
- error return value) on error.
-
- 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_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_POSTED</STRONG>
- The form is already posted.
-
- <STRONG>E_CONNECTED</STRONG>
- The field is already connected to a form.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-
-
-</PRE>
-<H2>PORTABILITY</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>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_field_attributes</STRONG> - color and attribute control for
- form fields
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- 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);
- chtype field_pad(const FIELD *field);
-
-
-</PRE>
-<H2>DESCRIPTION</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>RETURN VALUE</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</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages whose names begin "form_" for
- detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_field_buffer</STRONG> - field buffer control
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- 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);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_field_buffer</STRONG> sets the numbered buffer of
- the given field to contain a given string. Buffer 0 is
- the displayed value of the field; 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 the
- address of the buffer.
-
- 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>RETURN VALUE</H2><PRE>
- The <STRONG>field_buffer</STRONG> function returns NULL on error.
-
- 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</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages whose names begin "form_" for
- detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_field_just</STRONG> - retrieve field characteristics
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- int set_field_just(FIELD *field, int justification);
- int field_just(const FIELD *field);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_field_just</STRONG> sets the justification
- attribute of a field; <STRONG>field_just</STRONG> returns a field's justi-
- fication attribute. The attribute may be one of NO_JUSTI-
- FICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
-
-
-
-</PRE>
-<H2>RETURN VALUE</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> return one of the following:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages whose names begin "form_" for
- detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_hook</STRONG> - set hooks for automatic invocation by applica-
- tions
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- int set_field_init(FORM *form, void (*func)(FORM *));
- void (*)(FORM *) field_init(const FORM *form);
- int set_field_term(FORM *form, void (*func)(FORM *));
- void (*)(FORM *) field_term(const FORM *form);
- int set_form_init(FORM *form, void (*func)(FORM *));
- void (*)(FORM *) form_init(const FORM *form);
- int set_form_term(FORM *form, void (*func)(FORM *));
- void (*)(FORM *) form_term(const FORM *form);
-
-
-</PRE>
-<H2>DESCRIPTION</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>RETURN VALUE</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</STRONG>).
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_new</STRONG> - create and destroy forms
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- FORM *new_form(FIELD **fields);
- int free_form(FORM *form);
-
-
-</PRE>
-<H2>DESCRIPTION</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>-termi-
- nated).
-
- The function <STRONG>free_form</STRONG> disconnects <EM>form</EM> from its field
- array and frees the storage allocated for the form.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The function <STRONG>new_form</STRONG> returns <STRONG>NULL</STRONG> on error.
-
- The function <STRONG>free_form</STRONG> returns one of the following:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_POSTED</STRONG>
- The form has already been posted.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_new_page</STRONG> - form pagination functions
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- int set_new_page(FIELD *field, bool new_page_flag);
- bool new_page(const FIELD *field);
-
-
-</PRE>
-<H2>DESCRIPTION</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>RETURN VALUE</H2><PRE>
- The function <STRONG>new_page</STRONG> returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
-
- The function <STRONG>set_new_page</STRONG> return one of the following:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- <STRONG>E_CONNECTED</STRONG>
- The given field is already connected to a form.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages whose names begin "form_" for
- detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_opts</STRONG> - set and get form options
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- int set_form_opts(FORM *form, OPTIONS opts);
- int form_opts_on(FORM *form, OPTIONS opts);
- int form_opts_off(FORM *form, OPTIONS opts);
- OPTIONS form_opts(const FORM *form);
-
-
-</PRE>
-<H2>DESCRIPTION</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>RETURN VALUE</H2><PRE>
- Except for <STRONG>form_opts</STRONG>, each routine returns one of the fol-
- lowing:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_page</STRONG> - set and get form page number
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- 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);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_current</STRONG> <STRONG>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>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>RETURN VALUE</H2><PRE>
- Except for <STRONG>form_page</STRONG>, each routine returns one of the fol-
- lowing:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion 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.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
-
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>form_post</STRONG> - write or erase forms from associated subwin-
- dows
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
- int post_form(FORM *form);
- int unpost_form(FORM *form);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>post_form</STRONG> displays a form to its associated
- subwindow. To trigger physical display of the subwindow,
- use <STRONG>refresh</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>RETURN VALUE</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</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_POSTED</STRONG>
- The form has already been posted.
-
- <STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
-
- <STRONG>E_NO_ROOM</STRONG>
- Form is too large for its window.
-
- <STRONG>E_NOT_POSTED</STRONG>
- The form has not been posted.
-
- <STRONG>E_NOT_CONNECTED</STRONG>
- No items are connected to the form.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
- These routines emulate the System V forms library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>menu</STRONG> - curses extension for programming menus
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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 mod-
- ify 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>.
-
-
- <STRONG>Current</STRONG> <STRONG>Default</STRONG> <STRONG>Values</STRONG> <STRONG>for</STRONG> <STRONG>Item</STRONG> <STRONG>Attributes</STRONG>
- 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.
-
-
- <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
- The following table lists each <STRONG>menu</STRONG> routine and the name
- of the manual page on which it is described.
-
- l l . <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>mitem_visi-</STRONG>
- <STRONG><A HREF="ble.3x.html">ble(3X)</A></STRONG> menu_back <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG>
- menu_driver <STRONG><A HREF="menu_driver.3x.html">menu_driver(3X)</A></STRONG> menu_fore
- <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(3X)</A></STRONG> menu_format <STRONG><A HREF="menu_format.3x.html">menu_format(3X)</A></STRONG>
- menu_grey <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(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_attribs.3x.html">menu_attribs(3X)</A></STRONG> menu_pattern <STRONG>menu_pat-</STRONG>
- <STRONG><A HREF="tern.3x.html">tern(3X)</A></STRONG> menu_request_by_name <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3X)</A></STRONG>
- <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_attribs.3x.html">menu_attribs(3X)</A></STRONG>
- set_menu_fore <STRONG><A HREF="menu_attribs.3x.html">menu_attribs(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_attribs.3x.html">menu_attribs(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_attribs.3x.html">menu_attribs(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>mitem_cur-</STRONG>
- <STRONG><A HREF="rent.3x.html">rent(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>RETURN VALUE</H2><PRE>
- Routines that return pointers return <STRONG>NULL</STRONG> on error. Rou-
- tines 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</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_POSTED</STRONG>
- The menu is already posted.
-
- <STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
-
- <STRONG>E_NO_ROOM</STRONG>
- Menu is too large for its window.
-
- <STRONG>E_NOT_POSTED</STRONG>
- The menu has not been posted.
-
- The menu driver code saw an unknown request code.
-
- <STRONG>E_NO_MATCH</STRONG>
- Character failed to match.
-
- <STRONG>E_NOT_SELECTABLE</STRONG>
- The designated item cannot be selected.
-
- <STRONG>E_NOT_CONNECTED</STRONG>
- No items are connected to the menu.
-
- <STRONG>E_REQUEST_DENIED</STRONG>
- The menu driver could not process the request.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages whose names begin "menu_" for
- detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- files <STRONG><curses.h></STRONG> and <STRONG><eti.h></STRONG>.
-
- 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 give you a link error
- using GNU <STRONG><A HREF="ld.1.html">ld(1)</A></STRONG> and many other linkers).
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for ncurses
- by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>menu_attributes</STRONG> - color and attribute control for menus
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- 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);
-
-
-</PRE>
-<H2>DESCRIPTION</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_STANDOUT</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>RETURN VALUE</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</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages whose names begin "menu_" for
- detailed descriptions of the entry points.
-
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>menu_format</STRONG> - set and get menu sizes
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- int set_menu_format(MENU *menu, int rows, int cols);
- int menu_format(const MENU *menu, int *rows, int *cols);
-
-
-</PRE>
-<H2>DESCRIPTION</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 con-
- straints for the given menu into the storage addressed by
- <STRONG>rows</STRONG> and <STRONG>cols</STRONG>.
-
-
-</PRE>
-<H2>RETURN VALUE</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</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_POSTED</STRONG>
- The menu is already posted.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>menu_hook</STRONG> - set hooks for automatic invocation by applica-
- tions
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- int set_item_init(MENU *menu, void (*func)(MENU *));
- void (*)(MENU *) item_init(const MENU *menu);
- int set_item_term(MENU *menu, void (*func)(MENU *));
- void (*)(MENU *) item_term(const MENU *menu);
- int set_menu_init(MENU *menu, void (*func)(MENU *));
- void (*)(MENU *) menu_init(const MENU *menu);
- int set_menu_term(MENU *menu, void (*func)(MENU *));
- void (*)(MENU *) menu_term(const MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</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>RETURN VALUE</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</STRONG>).
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>menu_items</STRONG> - make and break connections between items and
- menus
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- int set_menu_items(MENU *menu, ITEM **items);
- ITEM **menu_items(const MENU *menu);
- int item_count(const MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</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>RETURN VALUES</H2><PRE>
- The function <STRONG>menu_items</STRONG> returns <STRONG>NULL</STRONG> on error.
-
- The function <STRONG>item_count</STRONG> returns <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG>
- error return value) on error.
-
- The function <STRONG>set_menu_items</STRONG> returns one of the following
- codes on error:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_POSTED</STRONG>
- The menu is already posted.
-
- <STRONG>E_NOT_CONNECTED</STRONG>
- No items are connected to the menu.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
-
- 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>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>menu_mark</STRONG> - get and set the menu mark string
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- int set_menu_mark(MENU *menu, const char *mark);
- const char *menu_mark(const MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- 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 <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 <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>RETURN VALUE</H2><PRE>
- The function <STRONG>menu_mark</STRONG> returns <STRONG>NULL</STRONG> on error. The func-
- tion <STRONG>set_menu_mark</STRONG> may return the following error codes:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>menu_new</STRONG> - create and destroy menus
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- MENU *new_menu(ITEM **items);
- int free_menu(MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</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>-termi-
- nated).
-
- The function <STRONG>free_menu</STRONG> disconnects <EM>menu</EM> from its item
- array and frees the storage allocated for the menu.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- The function <STRONG>new_menu</STRONG> returns <STRONG>NULL</STRONG> on error.
-
- 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</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_POSTED</STRONG>
- The menu has already been posted.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>menu_pattern</STRONG> - get and set a menu's pattern buffer
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- int set_menu_pattern(MENU *menu, const char *pattern);
- char *menu_pattern(const MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- Every menu has an associated pattern match buffer. As
- input events that are printable ASCII 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>RETURN VALUE</H2><PRE>
- The function <STRONG>menu_pattern</STRONG> returns <STRONG>NULL</STRONG> on error. The
- function <STRONG>set_menu_pattern</STRONG> may return the following error
- codes:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_NO_MATCH</STRONG>
- Character failed to match.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>menu_post</STRONG> - write or erase menus from associated subwin-
- dows
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- int post_menu(MENU *menu);
- int unpost_menu(MENU *menu);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>post_menu</STRONG> displays a menu to its associated
- subwindow. To trigger physical display of the subwindow,
- use <STRONG>refresh</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>RETURN VALUE</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</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_POSTED</STRONG>
- The menu has already been posted.
-
- <STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
-
- <STRONG>E_NO_ROOM</STRONG>
- Menu is too large for its window. You should consider
- to use <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>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>mitem_current</STRONG> - set and get current_menu_item
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- 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);
-
-
-</PRE>
-<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_current_item</STRONG> sets the current item (the
- item on which the menu cursor is positioned). <STRONG>cur-</STRONG>
- <STRONG>rent_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 tog-
- gled). The item leftmost on the given row becomes cur-
- rent. 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>RETURN VALUE</H2><PRE>
- <STRONG>current_item</STRONG> returns <STRONG>NULL</STRONG> on error.
-
- <STRONG>top_row</STRONG> and <STRONG>item_index</STRONG> return <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG>
- error value) on error.
-
- <STRONG>set_current_item</STRONG> and <STRONG>set_top_row</STRONG> return one of the follow-
- ing:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
- <STRONG>E_BAD_ARGUMENT</STRONG>
- Routine detected an incorrect or out-of-range argu-
- ment.
-
- <STRONG>E_BAD_STATE</STRONG>
- Routine was called from an initialization or termina-
- tion function.
-
- <STRONG>E_NOT_CONNECTED</STRONG>
- No items are connected to the menu.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</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>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>mitem_name</STRONG> - get menu item name and description fields
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- const char *item_name(const ITEM *item);
- const char *item_description(const ITEM *item);
-
-
-</PRE>
-<H2>DESCRIPTION</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>RETURN VALUE</H2><PRE>
- These routines returns <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>mitem_opts</STRONG> - set and get menu item options
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- int set_item_opts(ITEM *item, OPTIONS opts);
- int item_opts_on(ITEM *item, OPTIONS opts);
- int item_opts_off(ITEM *item, OPTIONS opts);
- OPTIONS item_opts(const ITEM *item);
-
-
-</PRE>
-<H2>DESCRIPTION</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 pro-
- cessing. This option defaults to on.
-
-
-</PRE>
-<H2>RETURN VALUE</H2><PRE>
- Except for <STRONG>item_opts</STRONG>, each routine returns one of the fol-
- lowing:
-
- <STRONG>E_OK</STRONG> The routine succeeded.
-
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>mitem_value</STRONG> - set and get menu item values
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
- int set_item_value(ITEM *item, bool value);
- bool item_value(const ITEM *item);
-
-
-</PRE>
-<H2>DESCRIPTION</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 dese-
- lect it (second argument <STRONG>FALSE</STRONG>).
-
-
-</PRE>
-<H2>RETURN VALUE</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</STRONG>).
-
- <STRONG>E_REQUEST_DENIED</STRONG>
- The menu driver could not process the request.
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
- These routines emulate the System V menu library. They
- were not supported on Version 7 or BSD versions.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Juergen Pfeifer. Manual pages and adaptation for new
- curses by Eric S. Raymond.
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- <STRONG>ncurses</STRONG> - CRT screen handling and optimization package
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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.
-
- The <STRONG>ncurses</STRONG> routines emulate the <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> library of
- System V Release 4 UNIX, and the XPG4 curses standard (XSI
- curses) but the <STRONG>ncurses</STRONG> library is freely redistributable
- in source form. Differences from the SVr4 curses are
- summarized under the EXTENSIONS and BUGS sections below
- and described in detail in the EXTENSIONS and BUGS
- sections of individual man pages.
-
- 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.
-
- 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.
-
- To initialize the routines, the routine <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>
- must be called before any of the other routines that deal
- with windows and screens are used. The routine <STRONG>endwin</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>nonl();</STRONG>
- <STRONG>intrflush(stdscr,</STRONG> <STRONG>FALSE);</STRONG>
- <STRONG>keypad(stdscr,</STRONG> <STRONG>TRUE);</STRONG>
-
- 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.]
-
- 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 which 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>refresh</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><curses.h></STRONG>, such as <STRONG>A_REVERSE</STRONG>, <STRONG>ACS_HLINE</STRONG>, and <STRONG>KEY_LEFT</STRONG>.
-
- 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
- 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>@DATADIR@/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>@DATADIR@/terminfo/a/att4424</STRONG>.
-
- This is useful for developing experimental definitions or
- when write permission in <STRONG>@DATADIR@/terminfo</STRONG> is not
- available.
-
- The integer variables <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> are defined in
- <STRONG><curses.h></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.
-
-
- <STRONG>Routine</STRONG> <STRONG>and</STRONG> <STRONG>Argument</STRONG> <STRONG>Names</STRONG>
- 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.
-
- <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>. The
- variables <EM>ch</EM> and <EM>attrs</EM> below are always of type <STRONG>chtype</STRONG>.
- The types <STRONG>WINDOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are defined in
- <STRONG><curses.h></STRONG>. The type <STRONG>TERMINAL</STRONG> is defined in <STRONG><term.h></STRONG>.
- All other arguments are integers.
-
-
- <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
- The following table lists each <STRONG>curses</STRONG> 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.
-
- center tab(/); l l l l . <STRONG>curses</STRONG> Routine Name/Manual Page
- Name = 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>
- addstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(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>
- border/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG> box/<STRONG><A HREF="curs_border.3x.html">curs_border(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> 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>
- 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>
- filter/<STRONG><A HREF="curs_util.3x.html">curs_util(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> 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> getch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(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>*
- getnstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(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>* hline/<STRONG><A HREF="curs_border.3x.html">curs_border(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> inch/<STRONG><A HREF="curs_inch.3x.html">curs_inch(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>
- 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> is_linetouched/<STRONG><A HREF="curs_touch.3x.html">curs_touch(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>
- 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>
- 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>
- 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> 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> mvaddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(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>
- mvgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(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>
- 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>
- 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>
- 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>
- 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>
- mvwaddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(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> mvwgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(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> mvwin/<STRONG><A HREF="curs_window.3x.html">curs_window(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>
- 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>
- 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> 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_outopts.3x.html">curs_outopts(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> nonl/<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(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>
- 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_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>
- 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>
- 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>
- 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>
- setterm/<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(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>
- 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>
- 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> 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>
- 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>
- 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="dft_fgbg.3x.html">dft_fgbg(3X)</A></STRONG>*
- use_env/<STRONG><A HREF="curs_util.3x.html">curs_util(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>
- 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>
- 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>
- waddstr/<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(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>
- wborder/<STRONG><A HREF="curs_border.3x.html">curs_border(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> 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>
- wgetch/<STRONG><A HREF="curs_getch.3x.html">curs_getch(3X)</A></STRONG> wgetnstr/<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(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>
- 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>
- 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>
- 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>
- 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>
- wvline/<STRONG><A HREF="curs_border.3x.html">curs_border(3X)</A></STRONG>
-
-
-</PRE>
-<H2>RETURN VALUE</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.
-
- All macros return the value of the <STRONG>w</STRONG> version, except
- <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>, <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 (<EM>i</EM>.<EM>e</EM>., these should not be used
- as the right-hand side of assignment statements).
-
- Routines that return pointers return <STRONG>NULL</STRONG> on error.
-
-
-</PRE>
-<H2>ENVIRONMENT</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.
-
- 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 <STRONG>ncurses</STRONG> 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 <STRONG>cmdch</STRONG> capability) of the loaded terminfo
- entries to the value of this symbol. Very few
- terminfo entries provide this feature.
-
- 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 $COLUMNS
- 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. However, this is not always
- possible because your application may be running on a
- host which does not honor NAWS (Negotiations About
-
- 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, <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 this feature.
-
- 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.
-
- 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.
-
- HOME Tells <STRONG>ncurses</STRONG> 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.
-
- 123 or 321. If it is not specified, <STRONG>ncurses</STRONG> uses
- 132.
-
- 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.
-
- 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 <EM>flash</EM>.
-
- NCURSES_NO_SETBUF
- Normally <STRONG>ncurses</STRONG> enables buffered output during
- terminal initialization. This is done (as in SVr4
- curses) for performance reasons. For testing
- purposes, both of <STRONG>ncurses</STRONG> 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_TRACE
- During initialization, the <STRONG>ncurses</STRONG> debugging library
- checks the NCURSES_TRACE symbol. 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.
-
- TERM Denotes your terminal type. Each terminal type is
- 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 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 <STRONG>ncurses</STRONG> to ignore the usual place for this
- information, e.g., /etc/termcap.
-
- TERMINFO
- Overrides the directory in which <STRONG>ncurses</STRONG> 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:
-
- - the last directory to which <STRONG>ncurses</STRONG> wrote, if any,
- is searched first.
-
- - the directory specified by the TERMINFO symbol
-
- - $HOME/.terminfo
-
- - directories listed in the TERMINFO_DIRS symbol
-
- - one or more directories whose names are configured
- and compiled into the ncurses library, e.g.,
- @DATADIR@/terminfo
-
- TERMINFO_DIRS
- Specifies a list of directories to search for
- terminal descriptions. The list is separated by
- colons (i.e., ":"). 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 <STRONG>ncurses</STRONG>
- checks the TERMPATH symbol. This is a list of
- filenames separated by colons (i.e., ":"). If the
- TERMPATH symbol is not set, <STRONG>ncurses</STRONG> looks in the
- files /etc/termcap, /usr/share/misc/termcap and
- $HOME/.termcap, in that order.
-
-
-</PRE>
-<H2>FILES</H2><PRE>
- @DATADIR@/tabset
- directory containing initialization files for the
- terminal capability database @DATADIR@/terminfo
- terminal capability database
-
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> and 3X pages whose names begin "curs_" for
- detailed routine descriptions.
-
-
-</PRE>
-<H2>EXTENSIONS</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 SIGWINCH 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> 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="use_default_colors.3x.html">use_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>PORTABILITY</H2><PRE>
- The <STRONG>ncurses</STRONG> library is intended to be BASE-level
- conformant with the XSI Curses standard. Certain portions
- of the EXTENDED XSI Curses functionality (including color
- support) are supported. The following EXTENDED XSI Curses
- calls in support of wide (multibyte) characters are not
- yet implemented: <STRONG>add_wch</STRONG>, <STRONG>add_wchnstr</STRONG>, <STRONG>add_wchstr</STRONG>,
- <STRONG>addnwstr</STRONG>, <STRONG>addwstr</STRONG>, <STRONG>bkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, <STRONG>border_set</STRONG>, <STRONG>box_set</STRONG>,
- <STRONG>echo_wchar</STRONG>, <STRONG>erasewchar</STRONG>, <STRONG>get_wch</STRONG>, <STRONG>get_wstr</STRONG>, <STRONG>getbkgrnd</STRONG>,
- <STRONG>getcchar</STRONG>, <STRONG>getn_wstr</STRONG>, <STRONG>getwchtype</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>in_wch</STRONG>,
- <STRONG>killwchar</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvadd_wchnstr</STRONG>, <STRONG>mvadd_wchstr</STRONG>,
- <STRONG>mvaddnwstr</STRONG>, <STRONG>mvaddwstr</STRONG>, <STRONG>mvget_wch</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>,
- <STRONG>mvhline_set</STRONG>, <STRONG>mvin_wch</STRONG>, <STRONG>mvinnwstr</STRONG>, <STRONG>mvins_nwstr</STRONG>, <STRONG>mvins_wch</STRONG>,
- <STRONG>mvins_wstr</STRONG>, <STRONG>mvinwchnstr</STRONG>, <STRONG>mvinwchstr</STRONG>, <STRONG>mvinwchstr</STRONG>, <STRONG>mvinwstr</STRONG>,
- <STRONG>mvvline_set</STRONG>, <STRONG>mvwadd_wch</STRONG>, <STRONG>mvwadd_wchnstr</STRONG>, <STRONG>mvwadd_wchstr</STRONG>,
- <STRONG>mvwaddnwstr</STRONG>, <STRONG>mvwaddwstr</STRONG>, <STRONG>mvwget_ch</STRONG>, <STRONG>mvwget_wch</STRONG>,
- <STRONG>mvwget_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, <STRONG>mvwhline_set</STRONG>, <STRONG>mvwin_wch</STRONG>,
- <STRONG>mvwin_wchnstr</STRONG>, <STRONG>mvwin_wchstr</STRONG>, <STRONG>mvwinnwstr</STRONG>, <STRONG>mvwins_nwstr</STRONG>,
- <STRONG>mvwins_wch</STRONG>, <STRONG>mvwins_wstr</STRONG>, <STRONG>mvwinwchnstr</STRONG>. <STRONG>mvwinwstr</STRONG>,
- <STRONG>mvwvline_set</STRONG>, <STRONG>pecho_wchar</STRONG>, <STRONG>setcchar</STRONG>, <STRONG>slk_wset</STRONG>, <STRONG>term_attrs</STRONG>,
- <STRONG>unget_wch</STRONG>, <STRONG>vhline_set</STRONG>, <STRONG>vid_attr</STRONG>, <STRONG>vid_puts</STRONG>, <STRONG>vline_set</STRONG>,
- <STRONG>wadd_wch</STRONG>, <STRONG>wadd_wchnstr</STRONG>, <STRONG>wadd_wchstr</STRONG>, <STRONG>waddnwstr</STRONG>, <STRONG>waddwstr</STRONG>,
- <STRONG>waddwstr</STRONG>, <STRONG>wbkgrnd</STRONG>, <STRONG>wbkgrndset</STRONG>, <STRONG>wbkgrndset</STRONG>, <STRONG>wborder_set</STRONG>,
- <STRONG>wecho_wchar</STRONG>, <STRONG>wecho_wchar</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>wget_wstr</STRONG>, <STRONG>wgetbkgrnd</STRONG>,
- <STRONG>wgetn_wstr</STRONG>, <STRONG>whline_set</STRONG>, <STRONG>win_wch</STRONG>, <STRONG>win_wchnstr</STRONG>, <STRONG>win_wchstr</STRONG>,
- <STRONG>winnwstr</STRONG>, <STRONG>wins_nwstr</STRONG>, <STRONG>wins_wch</STRONG>, <STRONG>wins_wstr</STRONG>, <STRONG>winwchnstr</STRONG>,
- <STRONG>winwchstr</STRONG>, <STRONG>winwstr</STRONG>, <STRONG>wunctrl</STRONG>, <STRONG>wvline_set</STRONG>,
-
- 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.
-
- 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.
-
- 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.
-
- 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.
-
- 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.
-
- 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.
-
- 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 NUL sends. This
- method is slightly more expensive, but narrows the
- interface to the UNIX kernel significantly and increases
- the package's portability correspondingly.
-
- In the XSI standard and SVr4 manual pages, many entry
- points have prototype arguments of the for <STRONG>char</STRONG> <STRONG>*const</STRONG> (or
- (see section 3.5.4.1), these declarations are either (a)
- meaningless, or (b) meaningless and illegal. The
- declaration <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*x</STRONG> is a modifiable pointer to
- unmodifiable data, but <STRONG>char</STRONG> <STRONG>*const</STRONG> <STRONG>x</STRONG>' is an unmodifiable
- pointer to modifiable data. Given that C passes arguments
- by value, <STRONG><type></STRONG> <STRONG>*const</STRONG> as a formal type is at best
- dubious. Some compilers choke on the prototypes.
- Therefore, in this implementation, they have been changed
- to <STRONG>const</STRONG> <STRONG><type></STRONG> <STRONG>*</STRONG> globally.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
- The header file <STRONG><curses.h></STRONG> automatically includes the
- header files <STRONG><stdio.h></STRONG> and <STRONG><unctrl.h></STRONG>.
-
- 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&T System V Release 3 curses.
-
-
-</PRE>
-<H2>AUTHORS</H2><PRE>
- Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
- Based on pcurses by Pavel Curtis.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<HTML>
-<BODY>
-<PRE>
- panel - panel stack extension for curses
-
-
-</PRE>
-<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><panel.h></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>*win)</STRONG>
- <STRONG>int</STRONG> <STRONG>bottom_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
- <STRONG>int</STRONG> <STRONG>top_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
- <STRONG>int</STRONG> <STRONG>show_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
- <STRONG>void</STRONG> <STRONG>update_panels();</STRONG>
- <STRONG>int</STRONG> <STRONG>hide_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
- <STRONG>WINDOW</STRONG> <STRONG>*panel_window(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
- <STRONG>int</STRONG> <STRONG>replace_panel(PANEL</STRONG> <STRONG>*pan,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*window)</STRONG>
- <STRONG>int</STRONG> <STRONG>move_panel(PANEL</STRONG> <STRONG>*pan,</STRONG> <STRONG>int</STRONG> <STRONG>starty,</STRONG> <STRONG>int</STRONG> <STRONG>startx)</STRONG>
- <STRONG>int</STRONG> <STRONG>panel_hidden(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
- <STRONG>PANEL</STRONG> <STRONG>*panel_above(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
- <STRONG>PANEL</STRONG> <STRONG>*panel_below(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
- <STRONG>int</STRONG> <STRONG>set_panel_userptr(PANEL</STRONG> <STRONG>*pan,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*ptr)</STRONG>
- <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*panel_userptr(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*pan)</STRONG>
- <STRONG>int</STRONG> <STRONG>del_panel(PANEL</STRONG> <STRONG>*pan)</STRONG>
-
-
-</PRE>
-<H2>DESCRIPTION</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 cur-
- rently 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 rou-
- tines enable you to create, move, hides, 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 ter-
- minfo curses does.
-
-
-</PRE>
-<H2>FUNCTIONS</H2><PRE>
- <STRONG>new_panel(win)</STRONG>
- allocates a <STRONG>PANEL</STRONG> structure, associates it with
- <STRONG>win</STRONG>, 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.
-
- <STRONG>void</STRONG> <STRONG>update_panels()</STRONG>
- refreshes the virtual screen to reflect the rela-
- tions between the panels in the stack, but does not
- update_panels() may be called more than once before
- a call to doupdate(), but doupdate() is the func-
- tion responsible for updating the physical screen.
-
- <STRONG>del_panel(pan)</STRONG>
- removes the given panel from the stack and deallo-
- cates the <STRONG>PANEL</STRONG> structure (but not its associated
- window).
-
- <STRONG>hide_panel(pan)</STRONG>
- removes the given panel from the panel stack and
- thus hides it from view. The <STRONG>PANEL</STRONG> structure is not
- lost, merely removed from the stack.
-
- <STRONG>show_panel(pan)</STRONG>
- makes a hidden panel visible by placing it on top
- of the panels in the panel stack. See COMPATIBILITY
- below.
-
- <STRONG>top_panel(pan)</STRONG>
- puts the given visible panel on top of all panels
- in the stack. See COMPATIBILITY below.
-
- <STRONG>bottom_panel(pan)</STRONG>
- puts panel at the bottom of all panels.
-
- <STRONG>move_panel(pan,starty,startx)</STRONG>
- moves the given panel window so that its upper-left
- corner is at <STRONG>starty</STRONG>, <STRONG>startx</STRONG>. It does not change
- the position of the panel in the stack. Be sure to
- use this function, not <STRONG>mvwin()</STRONG>, to move a panel
- window.
-
- <STRONG>replace_panel(pan,window)</STRONG>
- replaces the current window of panel with <STRONG>window</STRONG>
- (useful, for example if you want to resize a panel;
- if you're using <STRONG>ncurses</STRONG>, you can call <STRONG>replace_panel</STRONG>
- on the output of <STRONG><A HREF="wresize.3x.html">wresize(3X)</A></STRONG>). It does not change
- the position of the panel in the stack.
-
- <STRONG>panel_above(pan)</STRONG>
- returns a pointer to the panel above pan. If the
- panel argument is <STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>, it returns a pointer
- to the bottom panel in the stack.
-
- <STRONG>panel_below(pan)</STRONG>
- returns a pointer to the panel just below pan. If
- the panel argument is <STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>, it returns a
- pointer to the top panel in the stack.
-
- <STRONG>set_panel_userptr(pan,ptr)</STRONG>
- sets the panel's user pointer.
- returns the user pointer for a given panel.
-
- <STRONG>panel_window(pan)</STRONG>
- returns a pointer to the window of the given panel.
-
-
-</PRE>
-<H2>DIAGNOSTICS</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.
-
-
-</PRE>
-<H2>COMPATIBILITY</H2><PRE>
- 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 program-
- ming 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 dis-
- played or hidden panels. In the native System V implemen-
- tation, <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>NOTE</H2><PRE>
- 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 give you a link
- error using GNU <STRONG><A HREF="ld.1.html">ld(1)</A></STRONG> and some other linkers).
-
-
-</PRE>
-<H2>FILES</H2><PRE>
- panel.h interface for the panels library
-
- libpanel.a the panels library itself
-
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
-
-
-</PRE>
-<H2>AUTHOR</H2><PRE>
- 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.
-
-
-
-
-
-</PRE>
-</BODY>
-</HTML>
+++ /dev/null
-<!DOCTYPE HTML
-PUBLIC "-//IETF//DTD HTML 3.0//EN">
-<HTML>
-<HEAD>
-<TITLE>Correspondence between ncurses C and Ada functions</TITLE>
-</HEAD>
-<BODY>
-<H1>Correspondence between ncurses C and Ada functions</H1>
-<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>baudrate()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_128">Baudrate</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>beep()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_38">Beep</A></TD><TD><A HREF="man/curs_beep.3x.html">curs_beep.3x</A></TD></TR>
-<TR><TD>bottom_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_3">Bottom</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>box()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_25">Box</A></TD><TD><A HREF="man/curs_border.3x.html">curs_border.3x</A></TD></TR>
-<TR><TD>can_change_color()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_143">Can_Change_Color</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>cbreak()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_40">Set_Cbreak_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>clearok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_52">Clear_On_Next_Update</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>color_content()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_144">Color_Content</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>copywin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_77">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="ada/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="ada/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="ada/terminal_interface-curses__ads.htm#AFU_150">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="ada/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="ada/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="ada/terminal_interface-curses__ads.htm#AFU_145">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="ada/terminal_interface-curses__ads.htm#AFU_121">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="ada/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>delay_output()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_126">Delay_Output</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
-<TR><TD>delwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_11">Delete</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>derwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_13">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="ada/terminal_interface-curses__ads.htm#AFU_59">Update_Screen</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>dup_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_4">Duplicate</A></TD><TD><A HREF="man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
-<TR><TD>dupwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_14">Duplicate</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>dynamic_field_info()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_26">Dynamic_Info</A></TD><TD><A HREF="man/form_field_info.3x.html">form_field_info.3x</A></TD></TR>
-<TR><TD>echo()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_42">Set_Echo_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>endwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_4">End_Windows</A></TD><TD><A HREF="man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
-<TR><TD>erasechar()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_129">Erase_Character</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>field_back()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_21">Background</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>field_back()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_22">Background</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>field_buffer()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_9">Get_Buffer</A></TD><TD><A HREF="man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
-<TR><TD>field_count()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_43">Field_Count</A></TD><TD><A HREF="man/form_field.3x.html">form_field.3x</A></TD></TR>
-<TR><TD>field_fore()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_18">Foreground</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>field_fore()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_19">Foreground</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>field_index()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_61">Get_Index</A></TD><TD><A HREF="man/form_page.3x.html">form_page.3x</A></TD></TR>
-<TR><TD>field_info()</TD><TD><A HREF="ada/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="ada/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="ada/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()</TD><TD><A HREF="ada/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="ada/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="ada/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="ada/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="ada/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="ada/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>
-<TR><TD>field_type()</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_2">Get_Type</A></TD><TD><A HREF="man/form_field_validation.3x.html">form_field_validation.3x</A></TD></TR>
-<TR><TD>field_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="man/form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
-<TR><TD>field_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="man/form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
-<TR><TD>flash()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_39">Flash_Screen</A></TD><TD><A HREF="man/curs_beep.3x.html">curs_beep.3x</A></TD></TR>
-<TR><TD>flushinp()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_127">Flush_Input</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
-<TR><TD>form_driver()</TD><TD><A HREF="ada/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="ada/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="ada/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()</TD><TD><A HREF="ada/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="ada/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="ada/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="ada/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="ada/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="ada/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>
-<TR><TD>form_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-form_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="man/form_userptr.3x.html">form_userptr.3x</A></TD></TR>
-<TR><TD>form_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-form_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="man/form_userptr.3x.html">form_userptr.3x</A></TD></TR>
-<TR><TD>form_win()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_28">Get_Window</A></TD><TD><A HREF="man/form_win.3x.html">form_win.3x</A></TD></TR>
-<TR><TD>free_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_3">Delete</A></TD><TD><A HREF="man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
-<TR><TD>free_form()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_47">Delete</A></TD><TD><A HREF="man/form_new.3x.html">form_new.3x</A></TD></TR>
-<TR><TD>free_item()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_3">Delete</A></TD><TD><A HREF="man/mitem_new.3x.html">mitem_new.3x</A></TD></TR>
-<TR><TD>free_menu()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_60">Delete</A></TD><TD><A HREF="man/menu_new.3x.html">menu_new.3x</A></TD></TR>
-<TR><TD>getbegyx()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_84">Get_Window_Position</A></TD><TD><A HREF="man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
-<TR><TD>getmaxyx()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_83">Get_Size</A></TD><TD><A HREF="man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
-<TR><TD>getmouse()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_2">Get_Mouse</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>getparyx()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_86">Get_Origin_Relative_To_Parent</A></TD><TD><A HREF="man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
-<TR><TD>getyx()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_85">Get_Cursor_Position</A></TD><TD><A HREF="man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
-<TR><TD>halfdelay()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_45">Half_Delay</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>has_colors()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_141">Has_Colors</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>has_ic()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_131">Has_Insert_Character</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>has_il()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_132">Has_Insert_Line</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>has_key()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_30">Has_Key</A></TD><TD><A HREF="man/curs_getch.3x.html">curs_getch.3x</A></TD></TR>
-<TR><TD>hide_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_7">Hide</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>idcok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_54">Use_Insert_Delete_Character</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>idlok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_53">Use_Insert_Delete_Line</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>immedok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_56">Immediate_Update_Mode</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>init_color()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_142">Init_Color</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>init_pair()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_139">Init_Pair</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>initscr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_2">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="ada/terminal_interface-curses__ads.htm#AFU_3">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="ada/terminal_interface-curses__ads.htm#AFU_46">Set_Flush_On_Interrupt_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>is_linetouched()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_75">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="ada/terminal_interface-curses__ads.htm#AFU_76">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="ada/terminal_interface-curses__ads.htm#AFU_5">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="ada/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="ada/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="ada/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="ada/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="ada/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()</TD><TD><A HREF="ada/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="ada/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="ada/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="ada/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="ada/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="ada/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>
-<TR><TD>item_value()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_5">Value</A></TD><TD><A HREF="man/mitem_value.3x.html">mitem_value.3x</A></TD></TR>
-<TR><TD>item_visible()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_6">Visible</A></TD><TD><A HREF="man/mitem_visible.3x.html">mitem_visible.3x</A></TD></TR>
-<TR><TD>keyname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_122">Key_Name</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
-<TR><TD>keyname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_123">Key_Name</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
-<TR><TD>keyok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_120">Enable_Key</A></TD><TD><A HREF="man/keyok.3x.html">keyok.3x</A></TD></TR>
-<TR><TD>keypad()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_44">Set_KeyPad_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>killchar()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_130">Kill_Character</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>leaveok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_55">Leave_Cursor_After_Update</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>link_field()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_5">Link</A></TD><TD><A HREF="man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
-<TR><TD>longname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_134">Long_Name</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>longname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_135">Long_Name</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>menu_back()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_35">Background</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_back()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_36">Background</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_driver()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_61">Driver</A></TD><TD><A HREF="man/menu_new.3x.html">menu_new.3x</A></TD></TR>
-<TR><TD>menu_fore()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_32">Foreground</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_fore()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_33">Foreground</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_format()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_47">Format</A></TD><TD><A HREF="man/menu_format.3x.html">menu_format.3x</A></TD></TR>
-<TR><TD>menu_grey()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_38">Grey</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_grey()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_39">Grey</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_init()</TD><TD><A HREF="ada/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="ada/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="ada/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()</TD><TD><A HREF="ada/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="ada/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="ada/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="ada/terminal_interface-curses-menus__ads.htm#AFU_41">Pad_Character</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>menu_pattern()</TD><TD><A HREF="ada/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_spacing()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_43">Spacing</A></TD><TD><A HREF="man/menu_spacing.3x.html">menu_spacing.3x</A></TD></TR>
-<TR><TD>menu_sub()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_26">Get_Sub_Window</A></TD><TD><A HREF="man/menu_win.3x.html">menu_win.3x</A></TD></TR>
-<TR><TD>menu_term()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_55">Get_Menu_Term_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>menu_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-menu_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="man/menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
-<TR><TD>menu_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-menu_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="man/menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
-<TR><TD>menu_win()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_24">Get_Window</A></TD><TD><A HREF="man/menu_win.3x.html">menu_win.3x</A></TD></TR>
-<TR><TD>meta()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_43">Set_Meta_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>mouseinterval()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_5">Mouse_Interval</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>mousemask()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_1">Start_Mouse</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>move_field()</TD><TD><A HREF="ada/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="ada/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="ada/terminal_interface-curses__ads.htm#AFU_16">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="ada/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>mvwaddchnstr()</TD><TD><A HREF="ada/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>mvwaddnstr()</TD><TD><A HREF="ada/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>mvwchgat()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_37">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="ada/terminal_interface-curses__ads.htm#AFU_94">Delete_Character</A></TD><TD><A HREF="man/curs_delch.3x.html">curs_delch.3x</A></TD></TR>
-<TR><TD>mvwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_15">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="ada/terminal_interface-curses__ads.htm#AFU_96">Peek</A></TD><TD><A HREF="man/curs_inch.3x.html">curs_inch.3x</A></TD></TR>
-<TR><TD>mvwinchnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_104">Peek</A></TD><TD><A HREF="man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
-<TR><TD>mvwinnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_102">Peek</A></TD><TD><A HREF="man/curs_instr.3x.html">curs_instr.3x</A></TD></TR>
-<TR><TD>mvwinsch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_98">Insert</A></TD><TD><A HREF="man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
-<TR><TD>mvwinsnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_100">Insert</A></TD><TD><A HREF="man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
-<TR><TD>napms()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_151">Nap_Milli_Seconds</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>new_field()</TD><TD><A HREF="ada/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="ada/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="ada/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>
-<TR><TD>new_form()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_46">New_Form</A></TD><TD><A HREF="man/form_new.3x.html">form_new.3x</A></TD></TR>
-<TR><TD>new_item()</TD><TD><A HREF="ada/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="ada/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="ada/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>new_page()</TD><TD><A HREF="ada/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="ada/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="ada/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="ada/terminal_interface-curses__ads.htm#AFU_87">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="ada/terminal_interface-curses__ads.htm#AFU_10">Create</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>nl()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_51">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="ada/terminal_interface-curses__ads.htm#AFU_48">Set_NoDelay_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>notimeout()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_50">Set_Escape_Time_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>overlay()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_79">Overlay</A></TD><TD><A HREF="man/curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
-<TR><TD>overwrite()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_78">Overwrite</A></TD><TD><A HREF="man/curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
-<TR><TD>pair_content()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_140">Pair_Content</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>panel_above()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_13">Above</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_below()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_14">Below</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_hidden()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_12">Is_Hidden</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_userptr</TD><TD><A HREF="ada/terminal_interface-curses-panels-user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_userptr</TD><TD><A HREF="ada/terminal_interface-curses-panels-user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_window()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_8">Get_Window</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>panel_window()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_9">Panel_Window</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>pechochar()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_91">Add_Character_To_Pad_And_Echo_It</A></TD><TD><A HREF="man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
-<TR><TD>pnoutrefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_90">Refresh_Without_Update</A></TD><TD><A HREF="man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
-<TR><TD>pos_form_cursor()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_53">Position_Cursor</A></TD><TD><A HREF="man/form_cursor.3x.html">form_cursor.3x</A></TD></TR>
-<TR><TD>pos_menu_cursor()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_28">Position_Cursor</A></TD><TD><A HREF="man/menu_cursor.3x.html">menu_cursor.3x</A></TD></TR>
-<TR><TD>post_form()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_52">Post</A></TD><TD><A HREF="man/form_post.3x.html">form_post.3x</A></TD></TR>
-<TR><TD>post_menu()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_18">Post</A></TD><TD><A HREF="man/menu_post.3x.html">menu_post.3x</A></TD></TR>
-<TR><TD>prefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_89">Refresh</A></TD><TD><A HREF="man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
-<TR><TD>qiflush()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_47">Set_Queue_Interrupt_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>raw()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_41">Set_Raw_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>redrawwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_62">Redraw</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>replace_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_10">Replace</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>reset_prog_mode()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_146">Reset_Curses_Mode</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>resetty();</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_148">Reset_Terminal_State</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>ripoffline()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_149">Rip_Off_Lines</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>savetty()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_147">Save_Terminal_State</A></TD><TD><A HREF="man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
-<TR><TD>scale_form()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_31">Scale</A></TD><TD><A HREF="man/form_win.3x.html">form_win.3x</A></TD></TR>
-<TR><TD>scale_menu()</TD><TD><A HREF="ada/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>scrollok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_57">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="ada/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="ada/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="ada/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>
-<TR><TD>set_field_buffer()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_8">Set_Buffer</A></TD><TD><A HREF="man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
-<TR><TD>set_field_fore()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_17">Set_Foreground</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>set_field_init()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_32">Set_Field_Init_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>set_field_just()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_6">Set_Justification</A></TD><TD><A HREF="man/form_field_just.3x.html">form_field_just.3x</A></TD></TR>
-<TR><TD>set_field_max()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_12">Set_Maximum_Size</A></TD><TD><A HREF="man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
-<TR><TD>set_field_opts()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_13">Set_Options</A></TD><TD><A HREF="man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
-<TR><TD>set_field_pad()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_23">Set_Pad_Character</A></TD><TD><A HREF="man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
-<TR><TD>set_field_status()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_10">Set_Status</A></TD><TD><A HREF="man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
-<TR><TD>set_field_term()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_33">Set_Field_Term_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>set_field_type()</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_1">Set_Type</A></TD><TD><A HREF="man/form_fieldtype.3x.html">form_fieldtype.3x</A></TD></TR>
-<TR><TD>set_field_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-field_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="man/form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
-<TR><TD>set_form_fields()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_40">Redefine</A></TD><TD><A HREF="man/form_field.3x.html">form_field.3x</A></TD></TR>
-<TR><TD>set_form_fields()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_41">Set_Fields</A></TD><TD><A HREF="man/form_field.3x.html">form_field.3x</A></TD></TR>
-<TR><TD>set_form_init()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_34">Set_Form_Init_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>set_form_opts()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_48">Set_Options</A></TD><TD><A HREF="man/form_opts.3x.html">form_opts.3x</A></TD></TR>
-<TR><TD>set_form_page()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_59">Set_Page</A></TD><TD><A HREF="man/form_page.3x.html">form_page.3x</A></TD></TR>
-<TR><TD>set_form_sub()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_29">Set_Sub_Window</A></TD><TD><A HREF="man/form_win.3x.html">form_win.3x</A></TD></TR>
-<TR><TD>set_form_term()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_35">Set_Form_Term_Hook</A></TD><TD><A HREF="man/form_hook.3x.html">form_hook.3x</A></TD></TR>
-<TR><TD>set_form_userptr</TD><TD><A HREF="ada/terminal_interface-curses-forms-form_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="man/form_userptr.3x.html">form_userptr.3x</A></TD></TR>
-<TR><TD>set_form_win()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_27">Set_Window</A></TD><TD><A HREF="man/form_win.3x.html">form_win.3x</A></TD></TR>
-<TR><TD>set_item_init()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_48">Set_Item_Init_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>set_item_opts()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_7">Set_Options</A></TD><TD><A HREF="man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
-<TR><TD>set_item_term()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_49">Set_Item_Term_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>set_item_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-item_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="man/mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR>
-<TR><TD>set_item_value()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_4">Set_Value</A></TD><TD><A HREF="man/mitem_value.3x.html">mitem_value.3x</A></TD></TR>
-<TR><TD>set_menu_back()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_34">Set_Background</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>set_menu_fore()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_31">Set_Foreground</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>set_menu_format()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_46">Set_Format</A></TD><TD><A HREF="man/menu_format.3x.html">menu_format.3x</A></TD></TR>
-<TR><TD>set_menu_grey()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_37">Set_Grey</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>set_menu_init()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_50">Set_Menu_Init_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>set_menu_items()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_56">Redefine</A></TD><TD><A HREF="man/menu_items.3x.html">menu_items.3x</A></TD></TR>
-<TR><TD>set_menu_mark()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_29">Set_Mark</A></TD><TD><A HREF="man/menu_mark.3x.html">menu_mark.3x</A></TD></TR>
-<TR><TD>set_menu_opts()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_19">Set_Options</A></TD><TD><A HREF="man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
-<TR><TD>set_menu_pad()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_40">Set_Pad_Character</A></TD><TD><A HREF="man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
-<TR><TD>set_menu_pattern()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_44">Set_Pattern</A></TD><TD><A HREF="man/menu_pattern.3x.html">menu_pattern.3x</A></TD></TR>
-<TR><TD>set_menu_spacing()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_42">Set_Spacing</A></TD><TD><A HREF="man/menu_spacing.3x.html">menu_spacing.3x</A></TD></TR>
-<TR><TD>set_menu_sub()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_25">Set_Sub_Window</A></TD><TD><A HREF="man/menu_win.3x.html">menu_win.3x</A></TD></TR>
-<TR><TD>set_menu_term()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_51">Set_Menu_Term_Hook</A></TD><TD><A HREF="man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
-<TR><TD>set_menu_userptr</TD><TD><A HREF="ada/terminal_interface-curses-menus-menu_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="man/menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
-<TR><TD>set_menu_win()</TD><TD><A HREF="ada/terminal_interface-curses-menus__ads.htm#AFU_23">Set_Window</A></TD><TD><A HREF="man/menu_win.3x.html">menu_win.3x</A></TD></TR>
-<TR><TD>set_new_page()</TD><TD><A HREF="ada/terminal_interface-curses-forms__ads.htm#AFU_62">Set_New_Page</A></TD><TD><A HREF="man/form_new_page.3x.html">form_new_page.3x</A></TD></TR>
-<TR><TD>set_panel_userptr</TD><TD><A HREF="ada/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="ada/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="ada/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="ada/terminal_interface-curses__ads.htm#AFU_117">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="ada/terminal_interface-curses__ads.htm#AFU_118">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="ada/terminal_interface-curses__ads.htm#AFU_115">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="ada/terminal_interface-curses__ads.htm#AFU_116">Set_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="ada/terminal_interface-curses__ads.htm#AFU_112">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="ada/terminal_interface-curses__ads.htm#AFU_119">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="ada/terminal_interface-curses__ads.htm#AFU_106">Init_Soft_Label_Keys</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_label()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_110">Get_Soft_Label_Key</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_label()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_111">Get_Soft_Label_Key</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_noutrefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_109">Refresh_Soft_Label_Keys_Without_Update</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_refresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_108">Refresh_Soft_Label_Key</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_restore()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_113">Restore_Soft_Label_Keys</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_set()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_107">Set_Soft_Label_Key</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>slk_touch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_114">Touch_Soft_Label_Keys</A></TD><TD><A HREF="man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
-<TR><TD>start_clolor()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_138">Start_Color</A></TD><TD><A HREF="man/curs_color.3x.html">curs_color.3x</A></TD></TR>
-<TR><TD>stdscr</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_1">Standard_Window</A></TD><TD><A HREF="man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
-<TR><TD>subpad()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_88">Sub_Pad</A></TD><TD><A HREF="man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
-<TR><TD>subwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_12">Sub_Window</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>syncok()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_19">Set_Synch_Mode</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>termattrs()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_133">Supported_Attributes</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>termname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_136">Terminal_Name</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>termname()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_137">Terminal_Name</A></TD><TD><A HREF="man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
-<TR><TD>top_panel()</TD><TD><A HREF="ada/terminal_interface-curses-panels__ads.htm#AFU_4">Top</A></TD><TD><A HREF="man/panel.3x.html">panel.3x</A></TD></TR>
-<TR><TD>top_row()</TD><TD><A HREF="ada/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="ada/terminal_interface-curses__ads.htm#AFU_73">Touch</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>touchwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_72">Touch</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>unctrl()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_124">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="ada/terminal_interface-curses__ads.htm#AFU_125">Un_Control</A></TD><TD><A HREF="man/curs_util.3x.html">curs_util.3x</A></TD></TR>
-<TR><TD>ungetch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_29">Undo_Keystroke</A></TD><TD><A HREF="man/curs_getch.3x.html">curs_getch.3x</A></TD></TR>
-<TR><TD>ungetmouse()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_3">Unget_Mouse</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>untouchwin()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_71">Untouch</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>update_panels()</TD><TD><A HREF="ada/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>waddch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_7">Add</A></TD><TD><A HREF="man/curs_addch.3x.html">curs_addch.3x</A></TD></TR>
-<TR><TD>waddchnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_22">Add</A></TD><TD><A HREF="man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
-<TR><TD>waddnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_20">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="ada/terminal_interface-curses__ads.htm#AFU_33">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="ada/terminal_interface-curses__ads.htm#AFU_34">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="ada/terminal_interface-curses__ads.htm#AFU_31">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="ada/terminal_interface-curses__ads.htm#AFU_32">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="ada/terminal_interface-curses__ads.htm#AFU_69">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="ada/terminal_interface-curses__ads.htm#AFU_70">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="ada/terminal_interface-curses__ads.htm#AFU_68">Set_Background</A></TD><TD><A HREF="man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR>
-<TR><TD>wborder()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_24">Border</A></TD><TD><A HREF="man/curs_border.3x.html">curs_border.3x</A></TD></TR>
-<TR><TD>wchgat()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_36">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="ada/terminal_interface-curses__ads.htm#AFU_65">Clear</A></TD><TD><A HREF="man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
-<TR><TD>wclrtobot()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_66">Clear_To_End_Of_Screen</A></TD><TD><A HREF="man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
-<TR><TD>wclrtoeol()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_67">Clear_To_End_Of_Line</A></TD><TD><A HREF="man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
-<TR><TD>wcolor_set()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_35">Set_Color</A></TD><TD><A HREF="man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
-<TR><TD>wdelch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_93">Delete_Character</A></TD><TD><A HREF="man/curs_delch.3x.html">curs_delch.3x</A></TD></TR>
-<TR><TD>wdeleteln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_81">Delete_Line</A></TD><TD><A HREF="man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
-<TR><TD>wechochar()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_9">Add_With_Immediate_Echo</A></TD><TD><A HREF="man/curs_addch.3x.html">curs_addch.3x</A></TD></TR>
-<TR><TD>wenclose()</TD><TD><A HREF="ada/terminal_interface-curses-mouse__ads.htm#AFU_4">Enclosed_In_Window</A></TD><TD><A HREF="man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
-<TR><TD>werase()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_64">Erase</A></TD><TD><A HREF="man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
-<TR><TD>wgetch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_28">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="ada/terminal_interface-curses__ads.htm#AFU_105">Get</A></TD><TD><A HREF="man/curs_getstr.3x.html">curs_getstr.3x</A></TD></TR>
-<TR><TD>whline()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_26">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="ada/terminal_interface-curses__ads.htm#AFU_95">Peek</A></TD><TD><A HREF="man/curs_inch.3x.html">curs_inch.3x</A></TD></TR>
-<TR><TD>winchnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_103">Peek</A></TD><TD><A HREF="man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
-<TR><TD>winnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_101">Peek</A></TD><TD><A HREF="man/curs_instr.3x.html">curs_instr.3x</A></TD></TR>
-<TR><TD>winsch()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_97">Insert</A></TD><TD><A HREF="man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
-<TR><TD>winsdelln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_80">Insert_Delete_Lines</A></TD><TD><A HREF="man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
-<TR><TD>winsertln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_82">Insert_Line</A></TD><TD><A HREF="man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
-<TR><TD>winsnstr()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_99">Insert</A></TD><TD><A HREF="man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
-<TR><TD>wmove()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_6">Move_Cursor</A></TD><TD><A HREF="man/curs_move.3x.html">curs_move.3x</A></TD></TR>
-<TR><TD>wnoutrefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_61">Refresh_Without_Update</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>wredrawln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_63">Redraw</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>wrefresh()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_60">Refresh</A></TD><TD><A HREF="man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
-<TR><TD>wscrl()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_92">Scroll</A></TD><TD><A HREF="man/curs_scroll.3x.html">curs_scroll.3x</A></TD></TR>
-<TR><TD>wsetscrreg()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_58">Set_Scroll_Region</A></TD><TD><A HREF="man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
-<TR><TD>wsyncdown()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_18">Synchronize_Downwards</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>wsyncup()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_17">Synchronize_Upwards</A></TD><TD><A HREF="man/curs_window.3x.html">curs_window.3x</A></TD></TR>
-<TR><TD>wtimeout()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_49">Set_Timeout_Mode</A></TD><TD><A HREF="man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
-<TR><TD>wtouchln()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_74">Change_Line_Status</A></TD><TD><A HREF="man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
-<TR><TD>wvline()</TD><TD><A HREF="ada/terminal_interface-curses__ads.htm#AFU_27">Vertical_Line</A></TD><TD><A HREF="man/curs_border.3x.html">curs_border.3x</A></TD></TR>
-</TABLE></BODY></HTML>
# Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
#
# Version Control
-# $Revision: 1.21 $
+# $Revision: 1.24 $
#
.SUFFIXES:
ABASE = $(ALIB)-curses
CARGS =-cargs $(ADAFLAGS)
-LARGS =-largs -L../../lib $(LD_FLAGS) -lncurses
+LARGS =-largs -L../../lib $(LD_FLAGS) -lAdaCurses -lncurses@LIB_SUFFIX@
PROGS = tour rain
sources :
@
+libs \
install \
install.libs ::
@
# Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996
#
# Version Control
-# $Revision: 1.19 $
+# $Revision: 1.20 $
#
.SUFFIXES:
sources :
@
-install ::
-install.libs ::
-uninstall ::
+libs \
+install \
+install.libs \
+uninstall \
uninstall.libs ::
+ @
generics: $(GENALIS)
@
--- $Id: INSTALL,v 1.33 1999/09/18 23:04:36 tom Exp $
+-- $Id: INSTALL,v 1.38 2000/07/08 22:46:08 tom Exp $
---------------------------------------------------------------------
How to install Ncurses/Terminfo on your system
---------------------------------------------------------------------
+
************************************************************
* READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. *
************************************************************
If you are trying to build applications using gpm with ncurses,
read the USING NCURSES WITH GPM section below.
-If you are trying to build Elvis using ncurses for terminal support,
-read the USING NCURSES WITH ELVIS section below.
-
If you are running over the Andrew File System see the note below on
USING NCURSES WITH AFS.
i386 Unixes, go read the Portability section in the TO-DO file before you
do anything else.
+
REQUIREMENTS:
+------------
You will need the following in order to build and install ncurses under UNIX:
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
The package gets installed beneath the --prefix directory as follows:
In $(prefix)/bin: tic, infocmp, captoinfo, tset,
- reset, clear, tput, toe
+ reset, clear, tput, toe
In $(prefix)/lib: libncurses*.* libcurses.a
In $(prefix)/share/terminfo: compiled terminal descriptions
In $(prefix)/include: C header files
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
+ ./configure --with-normal --with-debug --enable-overwrite
Typing
- ./configure --with-shared
+ ./configure --with-shared
makes the shared libraries the default, resulting in
- ./configure --with-shared --with-normal --with-debug --enable-overwrite
+ ./configure --with-shared --with-normal --with-debug --enable-overwrite
If you want only shared libraries, type
- ./configure --with-shared --without-normal --without-debug
+ ./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 Linux
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 man pages for explanation of what they do), some test
+ 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
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 man pages. Alternately, you
+ 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 man pages.
+ '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 #
# this purpose. Don't forget to run tic on the file once you're done. #
############################################################################
- The terminfo(5) manual page wants to be preprocessed with tbl(1) before
+ 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 man page
+ this by default, but you may want to look at your version's manual page
to be sure.
If the system already has a curses library that you need to keep using
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++.
-
+
7. If you're running an older Linux, you must either (a) tell Linux that the
console terminal type is `linux' or (b) make a link to or copy of the
linux entry in the appropriate place under your terminfo directory, named
and you'll have to redo it. There is no need to have entries for all
possible screen sizes, ncurses will figure out the size automatically.
+
+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-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-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.
+
+ --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-leaks
+ For testing, compile-in code that frees memory that normally would not
+ be freed, to simplify analysis of memory-leaks.
+
+ --disable-macros
+ For testing, use functions rather than macros. The program will run
+ more slowly, but it is simpler to debug. This makes a header file
+ "nomacros.h". 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-scroll-hints
+ Compile without scroll-hints code. This option is ignored when
+ hashmap scrolling is configured, which is the default.
+
+ --enable-add-ons=DIR...
+ This is used to check if this package is a glibc add-on. This is used
+ only by the glibc makefiles.
+
+ --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-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.
+
+ --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-hashmap
+ Compile with hashmap scrolling-optimization code. This is the default,
+ replacing an older scrolling-hints algorithm.
+
+ --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-rpath
+ Use rpath option when generating shared libraries. This applies mainly
+ to systems using the GNU linker (read the manpage).
+
+ --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-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-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-widec
+ Compile with experimental wide-character code. This makes a different
+ version of the libraries (e.g., libncursesw.so), which stores
+ characters in 16-bits. We provide a simple UTF-8 driver and test
+ program to use this feature with terminals that can display UTF-8.
+
+ 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
+
+ --enable-xmc-glitch
+ Compile-in support experimental xmc (magic cookie) code.
+
+ --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-dbmalloc
+ For testing, compile and link with Conor Cahill's dbmalloc library.
+
+ --with-debug
+ Generate debug-libraries (default). These are named by adding "_g"
+ to the root, e.g., libncurses_g.a
+
+ --with-develop
+ Enable experimental/development options. This does not count those
+ that change the interface, such as --enable-widec.
+
+ --with-dmalloc
+ For testing, compile and link with Gray Watson's dmalloc library.
+
+ --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.
+
+ --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.
+
+ NOTE: a few systems build shared libraries with fixed pathnames; this
+ option probably will not work for those configurations.
+
+ --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
+ the Linux 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-normal
+ Generate normal (i.e., static) libraries (default).
+
+ --with-profile
+ Generate profile-libraries These are named by adding "_p" to the root,
+ e.g., libncurses_p.a
+
+ --with-rcs-ids
+ Compile-in RCS identifiers. Most of the C files have an identifier.
+
+ --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.
+
+ --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-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
+ 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.
+
+ --without-ada
+ Suppress the configure script's check for Ada95, do not build the
+ Ada95 binding and related demo.
+
+ --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-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".
+
+
+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.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 dynamic loader
+ (ld.so.1.8.5) on Linux 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:
+------------------------------
Beginning with 1.9.9, the ncurses distribution includes both a tset
utility and /usr/share/tabset directory. If you are installing ncurses,
reverse-tabulation sequence) rather than ^I. Here are the loadkeys -d
mappings that will set this up:
- keycode 15 = Tab Tab
+ keycode 15 = Tab Tab
alt keycode 15 = Meta_Tab
shift keycode 15 = F26
string F26 ="\033[Z"
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
+
+RECENT XTERM VERSIONS:
+---------------------
+
The terminfo database file included with this distribution assumes you
are running an XFree86 xterm based on X11R6 (i.e., xterm-r6). The
earlier X11R5 entry (xterm-r5) is provided as well.
applications that assume these capabilities will produce incorrect
output on the older xterm (e.g., highlighting is not cleared).
-CONFIGURING FALLBACK ENTRIES
+
+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
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
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
+ The following note applies only if you have configured ncurses with
--enable-termcap.
------------------------------- CUT HERE --------------------------------
which is used on 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 of libcurses.so (the BSD curses)
- into the libgpm.so file, producing symbol conflicts with ncurses. You
- may be able to work around this problem by linking as follows:
+ linking applications by combining all or part of libcurses.so (the BSD
+ curses) into the libgpm.so file, producing symbol conflicts with
+ ncurses (specifically the wgetch function). 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.
A patched version of gpm is available:
- ftp.clark.net:/pub/dickey/ncurses/gpm-1.10-970125.tgz
+ dickey.his.com:/ncurses/gpm-1.10-970125.tar.gz
This patch is incorporated in gpm 1.12; however some integrators
- are slow to update this library.
-
-USING NCURSES WITH ELVIS:
- To use ncurses as the screen-painting library for Elvis, apply the
- following patch to the Elvis curses
-
-*** curses.c.orig Sun Jun 26 05:48:23 1994
---- curses.c Sun Feb 11 16:50:41 1996
-***************
-*** 986,992 ****
- {
- if (has_IM)
- do_IM();
-! do_IC();
- qaddch(ch);
- if (has_EI)
- do_EI();
---- 986,995 ----
- {
- if (has_IM)
- do_IM();
-!#ifdef NCURSES_VERSION
-! else /* ncurses does insertion in a slightly nonstandard way */
-!#endif
-! do_IC();
- qaddch(ch);
- if (has_EI)
- do_EI();
-
-This patch is for elvis-1.8pl4 but it can even be used for elvis-1.8pl3 with
-an offset of -11 lines.
+ are slow to update this library. Current distributions of gpm can
+ be configured properly using the --without-curses option.
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:
+ bug-ncurses@gnu.org. To subscribe send mail to
+ bug-ncurses-request@gnu.org with body that reads:
subscribe ncurses <your-email-address-here>
The Hacker's Guide in the misc directory includes some guidelines
./Ada95/TODO
./Ada95/gen/Makefile.in
./Ada95/gen/gen.c
+./Ada95/gen/html.m4
./Ada95/gen/normal.m4
+./Ada95/gen/table.m4
./Ada95/gen/terminal_interface-curses-aux.ads.m4
./Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4
./Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4
./Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4
./Ada95/gen/terminal_interface-curses-panels.ads.m4
./Ada95/gen/terminal_interface-curses.ads.m4
-./Ada95/html/ada/files.htm
-./Ada95/html/ada/files/T.htm
-./Ada95/html/ada/funcs.htm
-./Ada95/html/ada/funcs/A.htm
-./Ada95/html/ada/funcs/C.htm
-./Ada95/html/ada/funcs/E.htm
-./Ada95/html/ada/funcs/F.htm
-./Ada95/html/ada/funcs/G.htm
-./Ada95/html/ada/funcs/I.htm
-./Ada95/html/ada/funcs/L.htm
-./Ada95/html/ada/funcs/M.htm
-./Ada95/html/ada/funcs/N.htm
-./Ada95/html/ada/funcs/P.htm
-./Ada95/html/ada/funcs/R.htm
-./Ada95/html/ada/funcs/S.htm
-./Ada95/html/ada/funcs/T.htm
-./Ada95/html/ada/funcs/U.htm
-./Ada95/html/ada/funcs/V.htm
-./Ada95/html/ada/index.htm
-./Ada95/html/ada/main.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_types__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
-./Ada95/html/ada/terminal_interface-curses-forms__ads.htm
-./Ada95/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
-./Ada95/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
-./Ada95/html/ada/terminal_interface-curses-menus__ads.htm
-./Ada95/html/ada/terminal_interface-curses-mouse__ads.htm
-./Ada95/html/ada/terminal_interface-curses-panels-user_data__ads.htm
-./Ada95/html/ada/terminal_interface-curses-panels__ads.htm
-./Ada95/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
-./Ada95/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
-./Ada95/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
-./Ada95/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
-./Ada95/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
-./Ada95/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
-./Ada95/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
-./Ada95/html/ada/terminal_interface-curses-text_io__ads.htm
-./Ada95/html/ada/terminal_interface-curses__ads.htm
-./Ada95/html/ada/terminal_interface__ads.htm
-./Ada95/html/index.html
-./Ada95/html/man/curs_addch.3x.html
-./Ada95/html/man/curs_addchstr.3x.html
-./Ada95/html/man/curs_addstr.3x.html
-./Ada95/html/man/curs_attr.3x.html
-./Ada95/html/man/curs_beep.3x.html
-./Ada95/html/man/curs_bkgd.3x.html
-./Ada95/html/man/curs_border.3x.html
-./Ada95/html/man/curs_clear.3x.html
-./Ada95/html/man/curs_color.3x.html
-./Ada95/html/man/curs_delch.3x.html
-./Ada95/html/man/curs_deleteln.3x.html
-./Ada95/html/man/curs_getch.3x.html
-./Ada95/html/man/curs_getstr.3x.html
-./Ada95/html/man/curs_getyx.3x.html
-./Ada95/html/man/curs_inch.3x.html
-./Ada95/html/man/curs_inchstr.3x.html
-./Ada95/html/man/curs_initscr.3x.html
-./Ada95/html/man/curs_inopts.3x.html
-./Ada95/html/man/curs_insch.3x.html
-./Ada95/html/man/curs_insstr.3x.html
-./Ada95/html/man/curs_instr.3x.html
-./Ada95/html/man/curs_kernel.3x.html
-./Ada95/html/man/curs_mouse.3x.html
-./Ada95/html/man/curs_move.3x.html
-./Ada95/html/man/curs_outopts.3x.html
-./Ada95/html/man/curs_overlay.3x.html
-./Ada95/html/man/curs_pad.3x.html
-./Ada95/html/man/curs_print.3x.html
-./Ada95/html/man/curs_printw.3x.html
-./Ada95/html/man/curs_refresh.3x.html
-./Ada95/html/man/curs_scanw.3x.html
-./Ada95/html/man/curs_scr_dmp.3x.html
-./Ada95/html/man/curs_scr_dump.3x.html
-./Ada95/html/man/curs_scroll.3x.html
-./Ada95/html/man/curs_slk.3x.html
-./Ada95/html/man/curs_termattrs.3x.html
-./Ada95/html/man/curs_termcap.3x.html
-./Ada95/html/man/curs_terminfo.3x.html
-./Ada95/html/man/curs_touch.3x.html
-./Ada95/html/man/curs_util.3x.html
-./Ada95/html/man/curs_window.3x.html
-./Ada95/html/man/define_key.3x.html
-./Ada95/html/man/dft_fgbg.3x.html
-./Ada95/html/man/form.3x.html
-./Ada95/html/man/form_cursor.3x.html
-./Ada95/html/man/form_data.3x.html
-./Ada95/html/man/form_driver.3x.html
-./Ada95/html/man/form_field.3x.html
-./Ada95/html/man/form_field_attributes.3x.html
-./Ada95/html/man/form_field_buffer.3x.html
-./Ada95/html/man/form_field_info.3x.html
-./Ada95/html/man/form_field_just.3x.html
-./Ada95/html/man/form_field_new.3x.html
-./Ada95/html/man/form_field_opts.3x.html
-./Ada95/html/man/form_field_userptr.3x.html
-./Ada95/html/man/form_field_validation.3x.html
-./Ada95/html/man/form_fieldtype.3x.html
-./Ada95/html/man/form_hook.3x.html
-./Ada95/html/man/form_new.3x.html
-./Ada95/html/man/form_new_page.3x.html
-./Ada95/html/man/form_opts.3x.html
-./Ada95/html/man/form_page.3x.html
-./Ada95/html/man/form_post.3x.html
-./Ada95/html/man/form_requestname.3x.html
-./Ada95/html/man/form_userptr.3x.html
-./Ada95/html/man/form_win.3x.html
-./Ada95/html/man/keyok.3x.html
-./Ada95/html/man/menu.3x.html
-./Ada95/html/man/menu_attribs.3x.html
-./Ada95/html/man/menu_cursor.3x.html
-./Ada95/html/man/menu_driver.3x.html
-./Ada95/html/man/menu_format.3x.html
-./Ada95/html/man/menu_hook.3x.html
-./Ada95/html/man/menu_items.3x.html
-./Ada95/html/man/menu_mark.3x.html
-./Ada95/html/man/menu_new.3x.html
-./Ada95/html/man/menu_opts.3x.html
-./Ada95/html/man/menu_pattern.3x.html
-./Ada95/html/man/menu_post.3x.html
-./Ada95/html/man/menu_requestname.3x.html
-./Ada95/html/man/menu_spacing.3x.html
-./Ada95/html/man/menu_userptr.3x.html
-./Ada95/html/man/menu_win.3x.html
-./Ada95/html/man/mitem_current.3x.html
-./Ada95/html/man/mitem_name.3x.html
-./Ada95/html/man/mitem_new.3x.html
-./Ada95/html/man/mitem_opts.3x.html
-./Ada95/html/man/mitem_userptr.3x.html
-./Ada95/html/man/mitem_value.3x.html
-./Ada95/html/man/mitem_visible.3x.html
-./Ada95/html/man/ncurses.3x.html
-./Ada95/html/man/panel.3x.html
-./Ada95/html/man/resizeterm.3x.html
-./Ada95/html/man/wresize.3x.html
-./Ada95/html/table.html
./Ada95/samples/Makefile.in
./Ada95/samples/README
./Ada95/samples/explain.txt
./README.glibc
./TO-DO
./aclocal.m4
-./announce.html
./announce.html.in
./c++/Makefile.in
./c++/NEWS
./configure.in
./convert_configure.pl
./dist.mk
+./doc/hackguide.doc
+./doc/html/Ada95.html
+./doc/html/ada/files.htm
+./doc/html/ada/files/T.htm
+./doc/html/ada/funcs.htm
+./doc/html/ada/funcs/A.htm
+./doc/html/ada/funcs/B.htm
+./doc/html/ada/funcs/C.htm
+./doc/html/ada/funcs/D.htm
+./doc/html/ada/funcs/E.htm
+./doc/html/ada/funcs/F.htm
+./doc/html/ada/funcs/G.htm
+./doc/html/ada/funcs/H.htm
+./doc/html/ada/funcs/I.htm
+./doc/html/ada/funcs/K.htm
+./doc/html/ada/funcs/L.htm
+./doc/html/ada/funcs/M.htm
+./doc/html/ada/funcs/N.htm
+./doc/html/ada/funcs/O.htm
+./doc/html/ada/funcs/P.htm
+./doc/html/ada/funcs/Q.htm
+./doc/html/ada/funcs/R.htm
+./doc/html/ada/funcs/S.htm
+./doc/html/ada/funcs/T.htm
+./doc/html/ada/funcs/U.htm
+./doc/html/ada/funcs/V.htm
+./doc/html/ada/funcs/W.htm
+./doc/html/ada/index.htm
+./doc/html/ada/main.htm
+./doc/html/ada/table.html
+./doc/html/ada/terminal_interface-curses-aux__adb.htm
+./doc/html/ada/terminal_interface-curses-aux__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-forms__adb.htm
+./doc/html/ada/terminal_interface-curses-forms__ads.htm
+./doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-menus__adb.htm
+./doc/html/ada/terminal_interface-curses-menus__ads.htm
+./doc/html/ada/terminal_interface-curses-mouse__adb.htm
+./doc/html/ada/terminal_interface-curses-mouse__ads.htm
+./doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm
+./doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm
+./doc/html/ada/terminal_interface-curses-panels__adb.htm
+./doc/html/ada/terminal_interface-curses-panels__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm
+./doc/html/ada/terminal_interface-curses-text_io__adb.htm
+./doc/html/ada/terminal_interface-curses-text_io__ads.htm
+./doc/html/ada/terminal_interface-curses__adb.htm
+./doc/html/ada/terminal_interface-curses__ads.htm
+./doc/html/ada/terminal_interface__ads.htm
+./doc/html/announce.html
+./doc/html/hackguide.html
+./doc/html/index.html
+./doc/html/man/captoinfo.1m.html
+./doc/html/man/clear.1.html
+./doc/html/man/curs_addch.3x.html
+./doc/html/man/curs_addchstr.3x.html
+./doc/html/man/curs_addstr.3x.html
+./doc/html/man/curs_attr.3x.html
+./doc/html/man/curs_beep.3x.html
+./doc/html/man/curs_bkgd.3x.html
+./doc/html/man/curs_border.3x.html
+./doc/html/man/curs_clear.3x.html
+./doc/html/man/curs_color.3x.html
+./doc/html/man/curs_delch.3x.html
+./doc/html/man/curs_deleteln.3x.html
+./doc/html/man/curs_extend.3x.html
+./doc/html/man/curs_getch.3x.html
+./doc/html/man/curs_getstr.3x.html
+./doc/html/man/curs_getyx.3x.html
+./doc/html/man/curs_inch.3x.html
+./doc/html/man/curs_inchstr.3x.html
+./doc/html/man/curs_initscr.3x.html
+./doc/html/man/curs_inopts.3x.html
+./doc/html/man/curs_insch.3x.html
+./doc/html/man/curs_insstr.3x.html
+./doc/html/man/curs_instr.3x.html
+./doc/html/man/curs_kernel.3x.html
+./doc/html/man/curs_mouse.3x.html
+./doc/html/man/curs_move.3x.html
+./doc/html/man/curs_outopts.3x.html
+./doc/html/man/curs_overlay.3x.html
+./doc/html/man/curs_pad.3x.html
+./doc/html/man/curs_print.3x.html
+./doc/html/man/curs_printw.3x.html
+./doc/html/man/curs_refresh.3x.html
+./doc/html/man/curs_scanw.3x.html
+./doc/html/man/curs_scr_dump.3x.html
+./doc/html/man/curs_scroll.3x.html
+./doc/html/man/curs_slk.3x.html
+./doc/html/man/curs_termattrs.3x.html
+./doc/html/man/curs_termcap.3x.html
+./doc/html/man/curs_terminfo.3x.html
+./doc/html/man/curs_touch.3x.html
+./doc/html/man/curs_trace.3x.html
+./doc/html/man/curs_util.3x.html
+./doc/html/man/curs_window.3x.html
+./doc/html/man/define_key.3x.html
+./doc/html/man/dft_fgbg.3x.html
+./doc/html/man/form.3x.html
+./doc/html/man/form_cursor.3x.html
+./doc/html/man/form_data.3x.html
+./doc/html/man/form_driver.3x.html
+./doc/html/man/form_field.3x.html
+./doc/html/man/form_field_attributes.3x.html
+./doc/html/man/form_field_buffer.3x.html
+./doc/html/man/form_field_info.3x.html
+./doc/html/man/form_field_just.3x.html
+./doc/html/man/form_field_new.3x.html
+./doc/html/man/form_field_opts.3x.html
+./doc/html/man/form_field_userptr.3x.html
+./doc/html/man/form_field_validation.3x.html
+./doc/html/man/form_fieldtype.3x.html
+./doc/html/man/form_hook.3x.html
+./doc/html/man/form_new.3x.html
+./doc/html/man/form_new_page.3x.html
+./doc/html/man/form_opts.3x.html
+./doc/html/man/form_page.3x.html
+./doc/html/man/form_post.3x.html
+./doc/html/man/form_requestname.3x.html
+./doc/html/man/form_userptr.3x.html
+./doc/html/man/form_win.3x.html
+./doc/html/man/infocmp.1m.html
+./doc/html/man/infotocap.1m.html
+./doc/html/man/keybound.3x.html
+./doc/html/man/keyok.3x.html
+./doc/html/man/menu.3x.html
+./doc/html/man/menu_attribs.3x.html
+./doc/html/man/menu_cursor.3x.html
+./doc/html/man/menu_driver.3x.html
+./doc/html/man/menu_format.3x.html
+./doc/html/man/menu_hook.3x.html
+./doc/html/man/menu_items.3x.html
+./doc/html/man/menu_mark.3x.html
+./doc/html/man/menu_new.3x.html
+./doc/html/man/menu_opts.3x.html
+./doc/html/man/menu_pattern.3x.html
+./doc/html/man/menu_post.3x.html
+./doc/html/man/menu_requestname.3x.html
+./doc/html/man/menu_spacing.3x.html
+./doc/html/man/menu_userptr.3x.html
+./doc/html/man/menu_win.3x.html
+./doc/html/man/mitem_current.3x.html
+./doc/html/man/mitem_name.3x.html
+./doc/html/man/mitem_new.3x.html
+./doc/html/man/mitem_opts.3x.html
+./doc/html/man/mitem_userptr.3x.html
+./doc/html/man/mitem_value.3x.html
+./doc/html/man/mitem_visible.3x.html
+./doc/html/man/ncurses.3x.html
+./doc/html/man/panel.3x.html
+./doc/html/man/resizeterm.3x.html
+./doc/html/man/term.5.html
+./doc/html/man/term.7.html
+./doc/html/man/terminfo.5.html
+./doc/html/man/tic.1m.html
+./doc/html/man/toe.1m.html
+./doc/html/man/tput.1.html
+./doc/html/man/tset.1.html
+./doc/html/man/wresize.3x.html
+./doc/html/ncurses-intro.html
+./doc/ncurses-intro.doc
./form/Makefile.in
./form/READ.ME
./form/fld_arg.c
./man/curs_color.3x
./man/curs_delch.3x
./man/curs_deleteln.3x
+./man/curs_extend.3x
./man/curs_getch.3x
./man/curs_getstr.3x
./man/curs_getyx.3x
./man/curs_termcap.3x
./man/curs_terminfo.3x
./man/curs_touch.3x
+./man/curs_trace.3x
./man/curs_util.3x
./man/curs_window.3x
./man/define_key.3x
./man/form_userptr.3x
./man/form_win.3x
./man/infocmp.1m
+./man/infotocap.1m
./man/keybound.3x
./man/keyok.3x
./man/make_sed.sh
./man/man_db.renames
+./man/manlinks.sed
./man/menu.3x
./man/menu_attribs.3x
./man/menu_cursor.3x
./misc/emx.src
./misc/form.def
./misc/form.ref
-./misc/hackguide.doc
-./misc/hackguide.html
+./misc/indent.pro
./misc/makedef.cmd
./misc/makellib
./misc/menu.def
./misc/menu.ref
-./misc/ncurses-intro.doc
-./misc/ncurses-intro.html
./misc/ncurses.def
./misc/ncurses.ref
./misc/panel.def
./progs/toe.c
./progs/tput.c
./progs/tset.c
-./shlib-versions
./sysdeps/unix/sysv/linux/Makefile
./sysdeps/unix/sysv/linux/alpha/configure
./sysdeps/unix/sysv/linux/configure
./test/ncurses.c
./test/ncurses_tst.hin
./test/newdemo.c
+./test/railroad.c
./test/rain.c
./test/tclock.c
./test/test.priv.h
--- $Id: NEWS,v 1.504 1999/10/24 00:31:05 tom Exp $
+-- $Id: NEWS,v 1.577 2000/07/08 20:59:25 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 Dickey.
+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 <gary@Intrepid.Com>).
+ + 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 <philippe.blain2@freesbee.fr>:
+ + 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 <mej@valinux.com>).
+ + 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 <Thanh.Ma@casi-rusco.com>).
+ + 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 <DAllen24@aol.com>).
+
+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 (from comment by
+ Akim Demaille <akim@epita.fr> to autoconf mailing list).
+ + modify headers.sh to avoid creating temporary files in the build
+ directory when installing headers (reported by Sergei Pokrovsky
+ <pok@nbsp.nsk.su>)
+
+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 <kev@primenet.com> for elf64_ia64
+ Bernd Kuemmerlen <bkuemmer@mevis.de> and 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 <at_1@zdnetonebox.com>).
+ + correct typo in curs_getch.3x manpage regarding noecho (reported by
+ David Malone <dwmalone@maths.tcd.ie>).
+ + 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 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 (from bug report by Brendan O'Dea <bod@compusol.com.au>).
+
+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
+ <uwe@ptc.spbu.ru>).
+ + 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 <sys/time.h> in lib_napms.c to compile on MacOS X DP3
+ (reported by Gerben Wierda <wierda@holmes.nl>).
+ + 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
+ <btrompetter@firemail.de>, 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 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" <tlkeith@keithconsulting.com>).
+ + 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
+ 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 Eric'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 <haible@ilog.fr>:
+ + 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 Eric Raymond to make infocmp -F less verbose
+ (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 <davidm@hpl.hp.com>).
+ + 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 <ma@suse.de>).
+ + 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 <werner@suse.de> and
+ Ismael Cordeiro <ismael@cordeiro.com>).
+
+20000219
+ + store default-color code consistently as C_MASK, even if given as
+ -1 for convenience (adapted from patches by Alexander Lukyanov).
+ > patches by Alexander 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 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 <sys/poll.h>, 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 <mpakovic@fdn.com>).
+ + update CF_SHARED_OPTS macro for SCO Unixware 7.1 to allow building
+ shared libraries (reported/tested by Thanh <thanhma@mediaone.net>).
+ + 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.
+ + 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 <dalgoda@ix.netcom.com>).
+ + 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).
+ + 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).
+
+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 <naddy@mips.rhein-neckar.de>).
+ + modify raw() and noraw() to clear/restore IEXTEN flag which affects
+ stty lnext on systems such as FreeBSD (report by Bruce Evans
+ <bde@zeta.org.au>, via Jason Evans <jasone@canonware.com>).
+ + 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
+ <eric@cls.usask.ca>).
+ + 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 <huyle@ugcs.caltech.edu>).
+ + 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
+ <robert@progplus.com>)
+ + 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 <mgeras@ticon.net>)
+
+19991030
+ + modify linux terminfo entry to indicate that dim does not mix with
+ color (reported by Klaus Weide <kweide@enteract.com>).
+ + 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.
+ split up an expression in configure script check for ldconfig to
workaround limitation of BSD/OS sh (reported by Jeff Haas
<jmh@mail.msen.com>).
- + correct a typo in man/form_hook.3x (Todd Miller).
+ + 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
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 Miller).
+ + 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
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 Miller).
+ 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
<nzanella@cs.mun.ca>).
tic, infocmp).
+ modify tic, infocmp to discard redundant i3, r3 strings when output
to termcap format.
- > patch by Alexander V Lukyanov:
+ > 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.
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:
+ > 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
manpage (patch by Rick Ohnemus <rick@ecompcon.com>).
+ 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.
+ + 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 correction from Alexander V Lukyanov.
- + Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version.
+ + 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.
980822
+ document AT&T acs characters in terminfo.5 manpage.
+ 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.
+ reflect above enhancements.
980307
+ use 'stat()' rather than 'access()' in toe.c to check for the
--- $Id: README.emx,v 1.1 1998/11/21 20:13:05 tom Exp $
+-- $Id: README.emx,v 1.2 2000/05/06 17:41:56 tom Exp $
-- Author: Thomas Dickey <dickey@clark.net>
-------------------------------------------------------------------------------
Apply the autoconf patches from
- http://www.clark.net/pub/dickey/autoconf
- ftp://ftp.clark.net/pub/dickey/autoconf
+ http://dickey.his.com/autoconf
+ ftp://dickey.his.com/autoconf
These are ordered by date:
- autoconf-2.12-970309.patch
- autoconf-2.12-970429.patch
- autoconf-2.12-971222-emx.patch
- autoconf-2.12-971222.patch
- autoconf-2.12-971230.patch
+ autoconf-2.12-970309.patch.gz
+ autoconf-2.12-970429.patch.gz
+ autoconf-2.12-971222-emx.patch.gz
+ autoconf-2.12-971222.patch.gz
+ autoconf-2.12-971230.patch.gz
I built my development environment for ncurses using EMX 0.9c at the end of
1997. Much of the EMX patch for autoconf was done originally by J.J.G.Ripoll,
dnl***************************************************************************
-dnl Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+dnl Copyright (c) 1998-2000 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
dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998
dnl
-dnl $Id: aclocal.m4,v 1.179 1999/10/23 21:49:25 tom Exp $
+dnl $Id: aclocal.m4,v 1.214 2000/07/07 15:11:34 tom Exp $
dnl Macros used in NCURSES auto-configuration script.
dnl
dnl ---------------------------------------------------------------------------
"" \
-qlanglvl=ansi \
-std1 \
- "-Aa -D_HPUX_SOURCE +e" \
+ -Ae \
"-Aa -D_HPUX_SOURCE" \
-Xc
do
AC_MSG_CHECKING(if external $1 is declared)
AC_CACHE_VAL(cf_cv_dcl_$1,[
AC_TRY_COMPILE([
-#if HAVE_STDLIB_H
+#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include <stdio.h>
#include <errno.h> ],
[long x = (long) $1],
[eval 'cf_cv_dcl_'$1'=yes'],
- [eval 'cf_cv_dcl_'$1'=no]')
+ [eval 'cf_cv_dcl_'$1'=no'])
])
eval 'cf_result=$cf_cv_dcl_'$1
fi
])])dnl
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 <stdio.h>
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#else
+#include <sys/poll.h>
+#endif
+int main() {
+ struct pollfd myfds;
+ int ret;
+
+ myfds.fd = 0;
+ myfds.events = POLLIN;
+
+ ret = poll(&myfds, 1, 100);
+ exit(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 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.
cf_cv_gnat_version=`$cf_ada_make -v 2>&1 | grep '[0-9].[0-9][0-9]*' |\
sed -e 's/[^0-9 \.]//g' | $AWK '{print $<<1>>;}'`
case $cf_cv_gnat_version in
- 3.[1-9]*|[4-9].*)
+ 3.1[1-9]*|3.[2-9]*|[4-9].*)
cf_cv_prog_gnat_correct=yes
;;
- *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.10 or better. Disabling Ada95 binding.
+ *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
cf_cv_prog_gnat_correct=no
;;
esac
if test $ac_cv_prog_gxx = yes; then
AC_MSG_CHECKING([for lib$cf_gpp_libname])
cf_save="$LIBS"
- LIBS="$LIBS -l$cf_gpp_libname -lm"
+ LIBS="$LIBS -l$cf_gpp_libname"
AC_TRY_LINK([
#include <$cf_gpp_libname/builtin.h>
],
- [//float foo=abs(1.0);
- two_arg_error_handler_t foo2 = lib_error_handler],
+ [two_arg_error_handler_t foo2 = lib_error_handler],
[cf_cxx_library=yes
- CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+ CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
if test "$cf_gpp_libname" = cpp ; then
AC_DEFINE(HAVE_GPP_BUILTIN_H)
else
[AC_TRY_LINK([
#include <builtin.h>
],
- [//float foo=abs(1.0);
- two_arg_error_handler_t foo2 = lib_error_handler],
+ [two_arg_error_handler_t foo2 = lib_error_handler],
[cf_cxx_library=yes
- CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+ CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
AC_DEFINE(HAVE_BUILTIN_H)],
[cf_cxx_library=no])])
LIBS="$cf_save"
AC_DEFUN([CF_LIB_PREFIX],
[
case $cf_cv_system_name in
- os2) $1='' ;;
- *) $1='lib' ;;
+ os2) LIB_PREFIX='' ;;
+ *) LIB_PREFIX='lib' ;;
esac
- LIB_PREFIX=[$]$1
+ifelse($1,,,[$1=$LIB_PREFIX])
AC_SUBST(LIB_PREFIX)
])dnl
dnl ---------------------------------------------------------------------------
for cf_item in $CF_LIST_MODELS
do
CF_LIB_SUFFIX($cf_item,cf_suffix)
+ if test $cf_item = shared ; then
+ if test $cf_cv_do_symlinks = yes ; then
+ case "$cf_cv_shlib_version" in #(vi
+ rel) cf_suffix="$cf_suffix"'.$(REL_VERSION)' ;; #(vi
+ abi) cf_suffix="$cf_suffix"'.$(ABI_VERSION)' ;;
+ esac
+ fi
+ fi
cf_libs_to_make="$cf_libs_to_make ../lib/${cf_prefix}${cf_dir}${cf_suffix}"
done
if test $cf_dir = ncurses ; then
- case "$LIB_SUBSETS" in
+ case "$LIB_SUBSETS" in #(vi
termlib+*) #(vi
;;
*) #(vi
do
$AWK -f $srcdir/mk-1st.awk \
name=$cf_dir \
+ traces=$LIB_TRACING \
MODEL=$CF_ITEM \
model=$cf_subdir \
prefix=$cf_prefix \
suffix=$cf_suffix \
subset=$cf_subset \
+ ShlibVer=$cf_cv_shlib_version \
DoLinks=$cf_cv_do_symlinks \
rmSoLocs=$cf_cv_rm_so_locs \
ldconfig="$LDCONFIG" \
test $cf_dir = ncurses && WITH_OVERWRITE=no
$AWK -f $srcdir/mk-2nd.awk \
name=$cf_dir \
+ traces=$LIB_TRACING \
MODEL=$CF_ITEM \
model=$cf_subdir \
subset=$cf_subset \
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
echo 'lint \' >> Makefile
fi
cat >> Makefile <<CF_EOF
+libs \\
lintlib \\
install.libs \\
uninstall.libs \\
elif test -f $srcdir/$cf_dir/headers; then
cat >> Makefile <<CF_EOF
+libs \\
install.libs \\
uninstall.libs \\
install.includes \\
echo installing \$SRC in \$DST
case \$DST in
/*/include/*)
- TMP=\${TMPDIR-/tmp}/\`basename \$SRC\`
- if test ! -f ../headers.sed ; then
- END=\`basename \$DST\`
- for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
- do
- NAME=\`basename \$i\`
- echo "s/<\$NAME>/<\$END\/\$NAME>/" >> ../headers.sed
- done
- fi
- rm -f \$TMP
- sed -f ../headers.sed \$SRC > \$TMP
- eval \$PRG \$TMP \$DST
- rm -f \$TMP
+ TMPSRC=\${TMPDIR-/tmp}/\`basename \$SRC\`\$\$
+ TMPSED=\${TMPDIR-/tmp}/headers.sed\$\$
+ END=\`basename \$DST\`
+ for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
+ do
+ NAME=\`basename \$i\`
+ echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
+ done
+ rm -f \$TMPSRC
+ sed -f \$TMPSED \$SRC > \$TMPSRC
+ eval \$PRG \$TMPSRC \$DST/\$SRC
+ rm -f \$TMPSRC \$TMPSED
;;
*)
eval \$PRG \$SRC \$DST
])dnl
dnl ---------------------------------------------------------------------------
-dnl Compute the library-suffix from the given model name
+dnl Compute the library file-suffix 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_SUFFIX],
[
AC_REQUIRE([CF_SUBST_NCURSES_VERSION])
profile) $2='_p.a' ;;
shared)
case $cf_cv_system_name in
- openbsd*|freebsd*)
- $2='.so.$(REL_VERSION)' ;;
- netbsd*)
- if test -f /usr/libexec/ld.elf_so; then
- $2='.so'
- else
- $2='.so.$(REL_VERSION)'
- fi
- ;;
hpux*) $2='.sl' ;;
*) $2='.so' ;;
esac
esac
+ test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
])dnl
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
profile) $2='_p' ;;
shared) $2='' ;;
esac
+ test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}"
])dnl
dnl ---------------------------------------------------------------------------
dnl Some systems have a non-ANSI linker that doesn't pull in modules that have
AC_MSG_RESULT($cf_manpage_renames)
])dnl
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(for manpage symlinks)
+
+AC_ARG_WITH(manpage-symlinks,
+ [ --with-manpage-symlinks specify manpage-symlinks],
+ [cf_manpage_symlinks=$withval],
+ [cf_manpage_symlinks=yes])
+
+AC_MSG_RESULT($cf_manpage_symlinks)
+])dnl
+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.
CF_HELP_MESSAGE(Options to Specify How Manpages are Installed:)
CF_MANPAGE_FORMAT
CF_MANPAGE_RENAMES
+CF_MANPAGE_SYMLINKS
if test "$prefix" = "NONE" ; then
cf_prefix="$ac_default_prefix"
MKDIRS="`cd $srcdir && pwd`/mkinstalldirs"
INSTALL="$INSTALL"
INSTALL_DATA="$INSTALL_DATA"
+
TMP=\${TMPDIR-/tmp}/man\$\$
trap "rm -f \$TMP" 0 1 2 5 15
mandir=\{{$}}1
shift
+srcdir=\{{$}}1
+shift
+
for i in \{{$}}* ; do
case \$i in #(vi
*.orig|*.rej) ;; #(vi
\$MKDIRS $cf_subdir\$section
fi
fi
+ aliases=
source=\`basename \$i\`
CF_EOF
+if test "$cf_manpage_symlinks" = yes ; then
+cat >>man/edit_man.sh <<CF_EOF
+ aliases=\`sed -f \$srcdir/manlinks.sed \$source | sort -u\`
+CF_EOF
+fi
if test "$cf_manpage_renames" = no ; then
cat >>man/edit_man.sh <<CF_EOF
target=$cf_subdir\${section}/\$source
esac
cat >>man/edit_man.sh <<CF_EOF
echo \$verb \$target
+ suffix=\`basename \$target | sed -e 's/^[^.]*//'\`
if test \$verb = installing ; then
\$INSTALL_DATA \$TMP \$target
+ test -n "\$aliases" && (
+ cd $cf_subdir\${section} && (
+ target=\`basename \$target\`
+ for cf_alias in \$aliases
+ do
+ if test -f \$cf_alias\${suffix} ; then
+ if ( cmp -s \$target \$cf_alias\${suffix} )
+ then
+ :
+ else
+ echo .. \$verb alias \$cf_alias\${suffix}
+ rm -f \$cf_alias\${suffix}
+ $LN_S \$target \$cf_alias\${suffix}
+ fi
+ else
+ echo .. \$verb alias \$cf_alias\${suffix}
+ rm -f \$cf_alias\${suffix}
+ $LN_S \$target \$cf_alias\${suffix}
+ fi
+ done
+ )
+ )
else
rm -f \$target
+ test -n "\$aliases" && (
+ cd $cf_subdir\${section} && (
+ for cf_alias in \$aliases
+ do
+ echo .. \$verb alias \$cf_alias\${suffix}
+ rm -f \$cf_alias\${suffix}
+ done
+ )
+ )
fi
;;
esac
done
+exit 0
CF_EOF
changequote([,])dnl
chmod 755 man/edit_man.sh
])dnl
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 <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,,[
+ LIBS="$LIBS -lm"
+],[$1=-lm])
+fi
+])
+dnl ---------------------------------------------------------------------------
dnl Compute the object-directory name from the given model name
AC_DEFUN([CF_OBJ_SUBDIR],
[
case ".[$]$1" in #(vi
./*) #(vi
;;
+.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX
+ ;;
.\[$]{*prefix}*) #(vi
eval $1="[$]$1"
case ".[$]$1" in #(vi
cf_cv_rm_so_locs=no
+ # Some less-capable ports of gcc support only -fpic
+ CC_SHARED_OPTS=
+ if test -n "$GCC"
+ 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 <stdio.h>],[int x = 1],[break],[])
+ done
+ AC_MSG_RESULT($CC_SHARED_OPTS)
+ CFLAGS="$cf_save_CFLAGS"
+ fi
+
case $cf_cv_system_name in
+ beos*)
+ MK_SHARED_LIB='$(CC) -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0'
+ ;;
hpux10.*)
# (tested with gcc 2.7.2 -- I don't have c89)
if test -n "$GCC"; then
- CC_SHARED_OPTS='-fPIC'
LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
else
CC_SHARED_OPTS='+Z'
hpux*)
# (tested with gcc 2.7.2 -- I don't have c89)
if test -n "$GCC"; then
- CC_SHARED_OPTS='-fPIC'
LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
else
CC_SHARED_OPTS='+Z'
;;
irix*)
# tested with IRIX 5.2 and 'cc'.
- if test -n "$GCC"; then
- CC_SHARED_OPTS='-fPIC'
- else
+ if test -z "$GCC"; then
CC_SHARED_OPTS='-KPIC'
fi
MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $[@]` -o $[@]'
;;
linux*|gnu*)
# tested with Linux 2.0.29 and gcc 2.7.2 (ELF)
- CC_SHARED_OPTS='-fpic'
test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-Wl,-rpath,"
if test $DFT_LWR_MODEL = "shared" ; then
LOCAL_LDFLAGS='-Wl,-rpath,../lib'
LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
fi
test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
- if test $cf_cv_shlib_version = no ; then
- MK_SHARED_LIB='$(CC) -shared -Wl,-stats,-lc -o $[@]'
- else
- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@].$(ABI_VERSION)`,-stats,-lc -o $[@]'
- fi
+ MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $[@]'
;;
openbsd2*)
- CC_SHARED_OPTS='-fpic -DPIC'
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $[@].$(ABI_VERSION)` -o $[@]'
;;
openbsd*|freebsd*)
- CC_SHARED_OPTS='-fpic -DPIC'
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
;;
netbsd*)
- CC_SHARED_OPTS='-fpic -DPIC'
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-Wl,-rpath,"
if test $DFT_LWR_MODEL = "shared" && test $cf_cv_ld_rpath = yes ; then
LOCAL_LDFLAGS='-Wl,-rpath,../lib'
LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@].$(ABI_VERSION)` -o $[@]'
- test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+ MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
+ if test $cf_cv_shlib_version = auto; then
+ if test ! -f /usr/libexec/ld.elf_so; then
+ cf_cv_shlib_version=rel
+ fi
+ fi
else
MK_SHARED_LIB='$(LD) -Bshareable -o $[@]'
fi
# 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).
- CC_SHARED_OPTS=''
MK_SHARED_LIB='$(LD) -set_version $(REL_VERSION):$(ABI_VERSION) -expect_unresolved "*" -shared -soname `basename $[@]`'
test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-rpath"
case $host_os in
;;
sco3.2v5*) # (also uw2* and UW7) hops 13-Apr-98
# tested with osr5.0.5
- if test $ac_cv_prog_gcc = yes; then
- CC_SHARED_OPTS='-fpic'
- else
+ if test $ac_cv_prog_gcc != yes; then
CC_SHARED_OPTS='-belf -KPIC'
fi
- MK_SHARED_LIB='$(LD) -dy -G -h `basename [$]@.$(ABI_VERSION)` -o [$]@'
+ MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o [$]@'
if test $cf_cv_ld_rpath = yes ; then
# only way is to set LD_RUN_PATH but no switch for it
RUN_PATH=$libdir
;;
sunos4*)
# tested with SunOS 4.1.1 and gcc 2.7.0
- if test $ac_cv_prog_gcc = yes; then
- CC_SHARED_OPTS='-fpic'
- else
+ if test $ac_cv_prog_gcc != yes; then
CC_SHARED_OPTS='-KPIC'
fi
MK_SHARED_LIB='$(LD) -assert pure-text -o $[@]'
;;
solaris2*)
# tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
- if test $ac_cv_prog_gcc = yes; then
- CC_SHARED_OPTS='-fpic'
- else
+ if test $ac_cv_prog_gcc != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@].$(ABI_VERSION)` -o $[@]'
+ MK_SHARED_LIB='$(LD) -dy -G -h `basename $[@] .$(REL_VERSION)`.$(ABI_VERSION) -o $[@]'
if test $cf_cv_ld_rpath = yes ; then
cf_ld_rpath_opt="-R"
EXTRA_LDFLAGS="-R ../lib:\$(libdir) $EXTRA_LDFLAGS"
fi
test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
;;
- unix_sv*)
- # tested with UnixWare 1.1.2
- CC_SHARED_OPTS='-KPIC'
- MK_SHARED_LIB='$(LD) -d y -G -o $[@]'
+ sysv5uw7*|unix_sv*)
+ # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
+ if test $ac_cv_prog_gcc != yes; then
+ CC_SHARED_OPTS='-KPIC'
+ fi
+ MK_SHARED_LIB='$(LD) -d y -G -o [$]@'
;;
*)
CC_SHARED_OPTS='unknown'
rel|abi)
case "$MK_SHARED_LIB" in #(vi
*'-o $[@]')
- if test "$cf_cv_do_symlinks" = reverse ; then
- AC_ERROR(cannot use --with-shlib-version with this platform)
- fi
- if test "$cf_cv_shlib_version" = rel ; then
- MK_SHARED_LIB="$MK_SHARED_LIB"'.$(REL_VERSION)'
- else
- MK_SHARED_LIB="$MK_SHARED_LIB"'.$(ABI_VERSION)'
- fi
- cf_cv_do_symlinks=yes
+ test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
;;
*)
AC_MSG_WARN(ignored --with-shlib-version)
AC_MSG_CHECKING(for src modules)
# dependencies and linker-arguments for test-programs
-TEST_DEPS="${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
+TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
# dependencies and linker-arguments for utility-programs
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_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
+ TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
fi
fi
test $cf_with_cxx_binding != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
ADA_SUBDIRS=
-if test "$cf_cv_prog_gnat_correct" = yes && test -d $srcdir/Ada95; then
+if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then
SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
ADA_SUBDIRS="gen src samples"
fi
esac
AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[
cf_save="$LIBS"
- LIBS="$LIBS -l$cf_stdcpp_libname -lm"
+ LIBS="$LIBS -l$cf_stdcpp_libname"
AC_TRY_LINK([
#include <strstream.h>],[
char buf[80];
strstreambuf foo(buf, sizeof(buf))
-//destroy foo
],
[cf_cv_libstdcpp=yes],
[cf_cv_libstdcpp=no])
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<!--
- $Id: announce.html.in,v 1.34 1999/10/23 20:52:29 tom Exp $
+ $Id: announce.html.in,v 1.39 2000/07/04 21:59:36 tom Exp $
-->
<HTML>
<HEAD>
The ncurses distribution is available via anonymous FTP at
the GNU distribution site
<A HREF="ftp://ftp.gnu.org/pub/gnu/ncurses">ftp://ftp.gnu.org/pub/gnu/ncurses</A>.
-It is also available at
-<A HREF="ftp://ftp.clark.net/pub/dickey/ncurses">ftp://ftp.clark.net/pub/dickey/ncurses</A>.
+<br>It is also available at
+<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
<H1>Release Notes</H1>
-We decided to release ncurses as a new whole number release (5.0) because it
-incorporates several interface changes, including some that would invalidate
-existing shared libraries. These are the highlights from the change-log
-since ncurses 4.2 release.
+This release is designed to be upward compatible from ncurses 5.0; very few
+applications will require recompilation, depending on the platform.
+These are the highlights from the change-log since ncurses 5.0 release.
<p>
Interface changes:
<ul>
- <li>The principal source of changes to the interface comes from the
- release of X/Open Curses in 1997. Earlier versions of ncurses (4.0
- and before) were based on a draft version of the specification. The
- release version adds parameters to some functions to support the
- evolving internationalization of curses. These summarize the impact:
-<ul>
- <li>modified several prototypes to correspond with 1997 version of
- X/Open Curses (affects ABI since developers have used attr_get).
-
- <li>corrected prototypes for slk_* functions, using chtype rather than
- attr_t.
-
- <li>the slk_attr_{set,off,on} functions need an additional void*
- parameter according to XSI.
-
- <li>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.
-
- <li>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.
-
- <li>reviewed/corrected macros in curses.h as per XSI document.
-
- <li>add set_a_attributes and set_pglen_inch to terminfo structure, as per
- XSI and Solaris 2.5.
-</ul>
- <li>The newest version of the X/Open Curses is implemented on Solaris
- and other vendor's systems. It adds new features to the terminfo
- descriptions:
-<ul>
- <li>implement tparm %l format.
-
- <li>implement tparm printf-style width and precision for %s, %d, %x, %o
- as per XSI.
-</ul>
- <li>We made additional changes to reduce impact by future interface
- changes:
-<ul>
- <li>rename key_names[] array to _nc_key_names since it is not part of
- the curses interface.
-
- <li>move macro winch to a function, to hide details of struct ldat
-</ul>
- <li>modify configure script to embed ABI in shared libraries for HP-UX
- 10.x (detailed request by Tim Mooney).
-
- <li>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).
+ <li>made the extended terminal capabilities
+ (<code>configure --enable-tcap-names</code>)
+ a standard feature (though the configure script can disable it,
+ it is built by default).
+
+ <li>removed the <code>trace()</code> function and related trace support
+ from the production library. This is the only interface change that
+ may cause problems with existing applications linked to shared
+ libraries, since not all platforms use the minor version number.
+
+ <li>explicitly initialized 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 some platforms.
+
+ <li>modified curses.h.in, undef'ing some symbols to avoid conflict with
+ C++ STL.
</ul>
New features:
<ul>
- <li>enable sigwinch handler by default.
+ <li>added a new extension, <code>assume_default_colors()</code> to
+ provide better control over the use of default colors. This is
+ the principal visible difference between ncurses 5.1 and preceding
+ versions. The new extension allows an application to specify what
+ colors pair 0 uses.
+ <p>
+ <em>NOTE</em>: Pair 0 defaults to white on black unless
+ you have invoked <code>use_default_colors()</code> or set it via
+ <code>assume_default_colors()</code>. An application that calls
+ <code>start_colors()</code> without setting the background color
+ will consistently have a black background no matter what color your
+ terminal's background actually is.
+
+ <li>made several fixes to the terminfo-to-termcap conversion, and
+ have been using the generated termcaps without further hand-tuning.
+ This builds on the extension <code>use_extended_names()</code> by
+ adding "obsolete" termcap strings to terminfo.src
+ <ul>
+ <li>modified <code>tic</code> so that if extended names (i.e.,
+ configure --enable-tcap-names) are active, then <code>tic -x</code>
+ will also write "obsolete" capabilities that are present in the
+ terminfo source.
+
+ <li>added 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.
+
+ <li>add -a option to tic and infocmp, which retains commented-out
+ capabilities during source translation/comparison, e.g., captoinfo
+ and infotocap.
+ </ul>
+
+ <li>implemented limited support for UTF-8, useful with XFree86 xterm:
+ <ul>
+ <li>if the <code>configure --enable-widec</code> option is
+ given, append 'w' to names of the generated libraries (e.g.,
+ libncursesw.so) to avoid conflict with existing ncurses libraries.
+ <li>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.
+ <li>modified view.c to make a rudimentary viewer of UTF-8 text.
+ </ul>
+
+ <li>modify <code>raw()</code> and <code>noraw()</code> to clear/restore
+ IEXTEN flag which affects <code>stty lnext</code> on systems such as FreeBSD
+
+ <li>reordered tests during mouse initialization to allow for gpm to run
+ in xterm, or for xterm to be used under OS/2 EMX. Also dropped test
+ for <code>$DISPLAY</code> in favor of the terminfo capability
+ <code>kmous=\E[M</code> or
+ if <code>$TERM</code> environment variable contains "xterm".
+
+ <li>added configure option <code>--with-manpage-symlinks</code>, which
+ provides for fully indexing manpage entries by making symbolic links
+ for the aliases.
+
+ <li>changed <code>unctrl()</code> to render C1 characters (128-159) as
+ <code>~@</code>, <code>~A</code>, etc.
+
+ <li>add experimental configure option --enable-colorfgbg to check for
+ $COLORTERM variable as set by rxvt/aterm/Eterm.
+
+ <li>made the <code>infocmp -F</code> option less verbose.
+
+ <li>dropped support for gnat 3.10 (gnat 3.12 is current).
- <li>turn on hashmap scrolling code by default
-
- <li>improved support for termcap applications
+</ul>
+Major bug fixes:
<ul>
- <li>modify tput to accept termcap names as an alternative to terminfo
- names.
+ <li>modified infocmp -e, -E options to ensure that generated fallback.c
+ type for Booleans agrees with term.h
- <li>provide support for termcap PC variable by copying it from terminfo
- data and using it as the padding character in tputs.
+ <li>documented a special case of incompatiblity between ncurses 4.2 and
+ 5.0, added a section for this in INSTALL.
- <li>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.
+ <li>corrected 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.
- <li>change name-comparisons in lib_termcap to compare no more than 2
- characters.
+ <li>made '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
+ could mislead ncurses into producing too few padding characters.
- <li>add configure option --enable-tcap-names, which essentially
- allows users to define new capabilities as in termcap.
-</ul>
- <li>add mouse support to ncurses menus.
-
- <li>add mouse and dll support for OS/2 EMX
+ <li>modified 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.
- <li>modify terminfo parsing to accept octal and hexadecimal constants
+ <li>modified echo() behavior of getch() to match Solaris curses for
+ carriage return and backspace (reported by Neil Zanella).
- <li>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.
+ <li>corrected offsets used for subwindows in <code>wresize()</code>
- <li>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.
+ <li>modified 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
- <li>add -f option to infocmp and tic, which formats the terminfo
- if/then/else/endif so that they are readable (with newlines and
- tabs).
+ <li>corrected logic in lib_twait.c as used by lib_mouse.c for GPM mouse
+ support when poll() is used rather than select().
- <li>modify tic to compile into %'char' form in preference to %{number},
- since that is a little more efficient.
-</ul>
-Major bug fixes:
-<ul>
- <li>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.
-
- <li>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.
-
- <li>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.
-
- <li>modify setupterm so that cancelled strings are treated the same as
- absent strings, cancelled and absent booleans false (does not affect
- tic, infocmp).
-
- <li>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.
-
- <li>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.
-
- <li>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.
+ <li>made several fixes for buffer overflows, unchecked recursion,
+ improvements in performance, etc. See the NEWS file for details.
</ul>
<H1>Features of Ncurses</H1>
<DL>
<DT> cdk
<DD> Curses Development Kit
-<A HREF="http://www.vexus.ca/CDK.html">Curses Development Kit</a>
-<A HREF="ftp://ftp.clark.net/pub/dickey/cdk">ftp://ftp.clark.net/pub/dickey/cdk</A>.
+<br>
+<A HREF="http://www.vexus.ca/CDK.html">http://www.vexus.ca/CDK.html</a>
+<br>
+<A HREF="http://dickey.his.com/cdk/cdk.html">http://dickey.his.com/cdk</A>.
<DT> ded
<DD> directory-editor
-<A HREF="ftp://ftp.clark.net/pub/dickey/ded">ftp://ftp.clark.net/pub/dickey/ded</A>.
+<br>
+<A HREF="http://dickey.his.com/ded/ded.html">http://dickey.his.com/ded</A>.
<DT> dialog
<DD> the underlying application used in Slackware's setup, and the basis
for similar applications on GNU/Linux.
+<br>
+<A HREF="http://dickey.his.com/dialog/dialog.html">http://dickey.his.com/dialog</A>.
<DT> lynx
<DD> the character-screen WWW browser
+<br>
+<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release</A>.
<DT> Midnight Commander 4.1
<DD> file manager
+<br>
+<A HREF="www.gnome.org/mc/">www.gnome.org/mc/</A>.
<DT> mutt
<DD> mail utility
+<br>
+<A HREF="http://www.mutt.org">http://www.mutt.org</A>.
<DT> ncftp
<DD> file-transfer utility
+<br>
+<A HREF="http://www.ncftp.com">http://www.ncftp.com</A>.
<DT> nvi
<DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
+<br>
+<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>.
<DT> tin
<DD> newsreader, supporting color, MIME
-<A HREF="ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff">ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff</A>.
+<br>
+<A HREF="http://www.tin.org">http://www.tin.org</A>.
<DT> taper
<DD> tape archive utility
+<br>
+<A HREF="http://members.iinet.net.au/~yusuf/taper/">http://members.iinet.net.au/~yusuf/taper/</A>.
<DT> vh-1.6
<DD> Volks-Hypertext browser for the Jargon File
+<br>
+<A HREF="http://www.bg.debian.org/Packages/unstable/text/vh.html">http://www.bg.debian.org/Packages/unstable/text/vh.html</A>.
</DL>
as well as some that use ncurses for the terminfo support alone:
<DL>
<DT> minicom
<DD> terminal emulator
+<br>
+<A HREF="http://www.pp.clinet.fi/~walker/minicom.html">http://www.pp.clinet.fi/~walker/minicom.html</A>.
<DT> vile
<DD> vi-like-emacs
-<A HREF="ftp://ftp.clark.net/pub/dickey/vile">ftp://ftp.clark.net/pub/dickey/vile</A>.
+<br>
+<A HREF="http://dickey.his.com/vile/vile.html">http://dickey.his.com/vile</A>.
</DL>
<P>
HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A> and
<A HREF="http://www.ccil.org/~esr/home.html">Eric S. Raymond</A>.
Ongoing work is being done by
-<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
and
<A HREF="mailto:juergen.pfeifer@gmx.net">Jürgen Pfeifer</A>.
-<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
acts as the maintainer for the Free Software Foundation, which holds the
copyright on ncurses.
Contact the current maintainers at
testing of this package.<P>
Beta versions of ncurses and patches to the current release are made available at
-<A HREF="ftp://ftp.clark.net/pub/dickey/ncurses">ftp://ftp.clark.net/pub/dickey/ncurses</A>.
+<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
<H2>Future Plans</H2>
<UL>
-# $Id: Makefile.in,v 1.51 1999/10/23 20:13:02 tom Exp $
+# $Id: Makefile.in,v 1.52 2000/05/28 01:44:34 tom Exp $
##############################################################################
# Copyright (c) 1998,1999 Free Software Foundation, Inc. #
# #
LINK = @LINK_PROGS@ $(CXX) @CXXLDFLAGS@
-LIBROOT = ncurses++
+LIBROOT = ncurses++@LIB_SUFFIX@
LIBNAME = @LIB_PREFIX@$(LIBROOT).a
LDFLAGS = @EXTRA_LDFLAGS@ -L../lib -L$(libdir) \
AUTO_SRC = \
etip.h
-all: $(AUTO_SRC) ../lib/$(LIBNAME) demo$x
+all \
+libs :: $(AUTO_SRC) ../lib/$(LIBNAME)
+
+all :: demo$x
sources : $(AUTO_SRC)
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include "cursesapp.h"
#include "internal.h"
-MODULE_ID("$Id: cursesapp.cc,v 1.4 1999/05/16 17:31:11 juergen Exp $")
+MODULE_ID("$Id: cursesapp.cc,v 1.6 1999/10/30 23:59:37 tom Exp $")
void
NCursesApplication::init(bool bColors) {
void NCursesApplication::push(Soft_Label_Key_Set& S) {
SLK_Link* L = new SLK_Link;
- assert(L);
+ assert(L != 0);
L->prev = slk_stack;
L->SLKs = &S;
slk_stack = L;
Soft_Label_Key_Set::Label_Layout fmt = useSLKs();
if (fmt!=Soft_Label_Key_Set::None) {
S = new Soft_Label_Key_Set(fmt);
- assert(S);
+ assert(S != 0);
init_labels(*S);
}
#include "cursesapp.h"
#include "internal.h"
-MODULE_ID("$Id: cursesf.cc,v 1.9 1999/05/16 17:29:36 juergen Exp $")
+MODULE_ID("$Id: cursesf.cc,v 1.10 1999/10/30 23:49:28 tom Exp $")
NCursesFormField::~NCursesFormField () {
if (field)
NCursesForm::mapFields(NCursesFormField* nfields[]) {
int fieldCount = 0,lcv;
- assert(nfields);
+ assert(nfields != 0);
for (lcv=0; nfields[lcv]->field; ++lcv)
++fieldCount;
//
bool UserDefinedFieldType::fcheck(FIELD *f, const void *u) {
NCursesFormField* F = (NCursesFormField*)u;
- assert(F);
+ assert(F != 0);
UserDefinedFieldType* udf = (UserDefinedFieldType*)(F->fieldtype());
- assert(udf);
+ assert(udf != 0);
return udf->field_check(*F);
}
bool UserDefinedFieldType::ccheck(int c, const void *u) {
NCursesFormField* F = (NCursesFormField*)u;
- assert(F);
+ assert(F != 0);
UserDefinedFieldType* udf =
(UserDefinedFieldType*)(F->fieldtype());
- assert(udf);
+ assert(udf != 0);
return udf->char_check(c);
}
bool UserDefinedFieldType_With_Choice::next_choice(FIELD *f, const void *u) {
NCursesFormField* F = (NCursesFormField*)u;
- assert(F);
+ assert(F != 0);
UserDefinedFieldType_With_Choice* udf =
(UserDefinedFieldType_With_Choice*)(F->fieldtype());
- assert(udf);
+ assert(udf != 0);
return udf->next(*F);
}
bool UserDefinedFieldType_With_Choice::prev_choice(FIELD *f, const void *u) {
NCursesFormField* F = (NCursesFormField*)u;
- assert(F);
+ assert(F != 0);
UserDefinedFieldType_With_Choice* udf =
(UserDefinedFieldType_With_Choice*)(F->fieldtype());
- assert(udf);
+ assert(udf != 0);
return udf->previous(*F);
}
// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997 *
****************************************************************************/
-// $Id: cursesf.h,v 1.10 1999/05/16 17:31:42 juergen Exp $
+// $Id: cursesf.h,v 1.11 1999/10/30 23:59:37 tom Exp $
#ifndef _CURSESF_H
#define _CURSESF_H
// Get the backward pointer to the C++ object from a FORM
static inline NCursesForm* getHook(const FORM *f) {
UserHook* hook = (UserHook*)::form_userptr(f);
- assert(hook && hook->m_owner==f);
+ assert(hook != 0 && hook->m_owner==f);
return (NCursesForm*)(hook->m_back);
}
// internal routines
inline void set_user(void *user) {
UserHook* uptr = (UserHook*)::form_userptr (form);
- assert (uptr && uptr->m_back==this && uptr->m_owner==form);
+ assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form);
uptr->m_user = user;
}
inline void *get_user() {
UserHook* uptr = (UserHook*)::form_userptr (form);
- assert (uptr && uptr->m_back==this && uptr->m_owner==form);
+ assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==form);
return uptr->m_user;
}
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include "cursesapp.h"
#include "internal.h"
-MODULE_ID("$Id: cursesm.cc,v 1.11 1999/07/31 09:45:23 juergen Exp $")
+MODULE_ID("$Id: cursesm.cc,v 1.12 1999/10/30 23:59:37 tom Exp $")
NCursesMenuItem::~NCursesMenuItem() {
if (item)
if (drvCmnd == CMD_ACTION) {
if (options() & O_ONEVALUE) {
NCursesMenuItem* itm = current_item();
- assert(itm);
+ assert(itm != 0);
if (itm->options() & O_SELECTABLE)
{
b_action = itm->action();
// * This makes emacs happy -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
* Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1997 *
****************************************************************************/
-// $Id: cursesm.h,v 1.12 1999/05/16 17:30:27 juergen Exp $
+// $Id: cursesm.h,v 1.13 1999/10/30 23:59:37 tom Exp $
#ifndef _CURSESM_H
#define _CURSESM_H
// function pointer for items.
class NCursesMenuCallbackItem : public NCursesMenuItem {
private:
- const ITEMCALLBACK* p_fct;
+ ITEMCALLBACK* p_fct;
public:
- NCursesMenuCallbackItem(const ITEMCALLBACK* fct = NULL,
+ NCursesMenuCallbackItem(ITEMCALLBACK* fct = NULL,
const char* p_name = NULL,
const char* p_descript = NULL )
: NCursesMenuItem (p_name, p_descript),
// Get the backward pointer to the C++ object from a MENU
static inline NCursesMenu* getHook(const MENU *m) {
UserHook* hook = (UserHook*)::menu_userptr(m);
- assert(hook && hook->m_owner==m);
+ assert(hook != 0 && hook->m_owner==m);
return (NCursesMenu*)(hook->m_back);
}
// internal routines
inline void set_user(void *user) {
UserHook* uptr = (UserHook*)::menu_userptr (menu);
- assert (uptr && uptr->m_back==this && uptr->m_owner==menu);
+ assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu);
uptr->m_user = user;
}
inline void *get_user() {
UserHook* uptr = (UserHook*)::menu_userptr (menu);
- assert (uptr && uptr->m_back==this && uptr->m_owner==menu);
+ assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==menu);
return uptr->m_user;
}
// * this is for making emacs happy: -*-Mode: C++;-*-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include "cursesp.h"
#include "internal.h"
-MODULE_ID("$Id: cursesp.cc,v 1.14 1999/05/16 17:30:51 juergen Exp $")
+MODULE_ID("$Id: cursesp.cc,v 1.15 1999/10/30 23:59:37 tom Exp $")
NCursesPanel* NCursesPanel::dummy = (NCursesPanel*)0;
NCursesPanel::~NCursesPanel() {
UserHook* hook = (UserHook*)::panel_userptr(p);
- assert(hook && hook->m_back==this && hook->m_owner==p);
+ assert(hook != 0 && hook->m_back==this && hook->m_owner==p);
delete hook;
::del_panel(p);
::update_panels();
// * This makes emacs happy -*-Mode: C++;-*-
+/****************************************************************************
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders 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 <juergen.pfeifer@gmx.net> 1997 *
+ ****************************************************************************/
+
#ifndef _CURSESP_H
#define _CURSESP_H
-// $Id: cursesp.h,v 1.11 1999/07/31 09:46:05 juergen Exp $
+// $Id: cursesp.h,v 1.12 1999/10/31 00:00:02 tom Exp $
#include <cursesw.h>
protected:
void set_user(void *user) {
UserHook* uptr = (UserHook*)::panel_userptr (p);
- assert (uptr && uptr->m_back==this && uptr->m_owner==p);
+ assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==p);
uptr->m_user = user;
}
// Set the user pointer of the panel.
void *get_user() {
UserHook* uptr = (UserHook*)::panel_userptr (p);
- assert (uptr && uptr->m_back==this && uptr->m_owner==p);
+ assert (uptr != 0 && uptr->m_back==this && uptr->m_owner==p);
return uptr->m_user;
}
#include "cursesw.h"
#include "internal.h"
-MODULE_ID("$Id: cursesw.cc,v 1.15 1999/09/11 23:26:29 tom Exp $")
+MODULE_ID("$Id: cursesw.cc,v 1.16 1999/11/13 23:42:17 tom Exp $")
#define COLORS_NEED_INITIALIZATION -1
#define COLORS_NOT_INITIALIZED 0
return OK;
}
+#ifdef HAVE_HAS_KEY
extern "C" int _nc_has_mouse(void);
bool NCursesWindow::has_mouse() const {
return ((::has_key(KEY_MOUSE) || ::_nc_has_mouse())
? TRUE : FALSE);
}
+#endif
#!/bin/sh
-# $Id: edit_cfg.sh,v 1.7 1999/09/12 02:00:14 tom Exp $
+# $Id: edit_cfg.sh,v 1.8 2000/07/01 16:07:37 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
# $1 = ncurses_cfg.h
# $2 = etip.h
#
+echo "substituting autoconf'd values from $1 into $2"
for name in \
CPP_HAS_PARAM_INIT \
ETIP_NEEDS_MATH_EXCEPTION \
mv $2 $2.bak
if ( grep "[ ]$name[ ]1" $1 2>&1 >/dev/null)
then
- sed -e 's/define '$name'.*$/ define '$name' 1/' $2.bak >$2
+ value=1
+ sed -e 's/define '$name'.*$/define '$name' 1/' $2.bak >$2
else
- sed -e 's/define '$name'.*$/ define '$name' 0/' $2.bak >$2
+ value=0
+ sed -e 's/define '$name'.*$/define '$name' 0/' $2.bak >$2
fi
if (cmp -s $2 $2.bak)
then
- echo '** same: '$name
+ echo '... '$name $value
mv $2.bak $2
else
- echo '** edit: '$name
+ echo '... '$name $value
rm -f $2.bak
fi
done
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
-#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+# Free Software Foundation, Inc.
+
+version='2000-06-13'
+
# 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
# the same distribution terms that you use for the rest of that program.
# Written by Per Bothner <bothner@cygnus.com>.
-# The master version of this file is at the FSF in /home/gd/gnu/lib.
+# Please send patches to <config-patches@gnu.org>.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# (but try to keep the structure clean).
#
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of this system.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit"
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case "$1" in
+ --version | --vers* | -V )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ exec >&2
+ echo "$me: invalid option $1"
+ echo "$help"
+ exit 1 ;;
+ * )
+ break ;;
+ esac
+done
+
+if test $# != 0; then
+ echo "$me: too many arguments$help" >&2
+ exit 1
+fi
+
+# Use $HOST_CC if defined. $CC may point to a cross-compiler
+if test x"$CC_FOR_BUILD" = x; then
+ if test x"$HOST_CC" != x; then
+ CC_FOR_BUILD="$HOST_CC"
+ else
+ if test x"$CC" != x; then
+ CC_FOR_BUILD="$CC"
+ else
+ CC_FOR_BUILD=cc
+ fi
+ fi
+fi
+
+
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 8/24/94.)
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
-trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
+dummy=dummy-$$
+trap 'rm -f $dummy.c $dummy.o $dummy; exit 1' 1 2 15
# 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 tupples: *-*-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.
+ # Determine the machine/vendor (is the vendor relevant).
+ case "${UNAME_MACHINE}" in
+ amiga) machine=m68k-cbm ;;
+ arm32) machine=arm-unknown ;;
+ atari*) machine=m68k-atari ;;
+ sun3*) machine=m68k-sun ;;
+ mac68k) machine=m68k-apple ;;
+ macppc) machine=powerpc-apple ;;
+ hp3[0-9][05]) machine=m68k-hp ;;
+ ibmrt|romp-ibm) machine=romp-ibm ;;
+ *) machine=${UNAME_MACHINE}-unknown ;;
+ esac
+ # The Operating System including object format.
+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ # The OS release
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ # 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 0 ;;
alpha:OSF1:*:*)
if test $UNAME_RELEASE = "V4.0"; then
UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
# 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.
- cat <<EOF >dummy.s
+ cat <<EOF >$dummy.s
+ .data
+\$Lformat:
+ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
+
+ .text
.globl main
+ .align 4
.ent main
main:
- .frame \$30,0,\$26,0
- .prologue 0
- .long 0x47e03d80 # implver $0
- lda \$2,259
- .long 0x47e20c21 # amask $2,$1
- srl \$1,8,\$2
- sll \$2,2,\$2
- sll \$0,3,\$0
- addl \$1,\$0,\$0
- addl \$2,\$0,\$0
- ret \$31,(\$26),1
+ .frame \$30,16,\$26,0
+ ldgp \$29,0(\$27)
+ .prologue 1
+ .long 0x47e03d80 # implver \$0
+ lda \$2,-1
+ .long 0x47e20c21 # amask \$2,\$1
+ lda \$16,\$Lformat
+ mov \$0,\$17
+ not \$1,\$18
+ jsr \$26,printf
+ ldgp \$29,0(\$26)
+ mov 0,\$16
+ jsr \$26,exit
.end main
EOF
- ${CC-cc} dummy.s -o dummy 2>/dev/null
+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
if test "$?" = 0 ; then
- ./dummy
- case "$?" in
- 7)
+ case `./$dummy` in
+ 0-0)
UNAME_MACHINE="alpha"
;;
- 15)
+ 1-0)
UNAME_MACHINE="alphaev5"
;;
- 14)
+ 1-1)
UNAME_MACHINE="alphaev56"
;;
- 10)
+ 1-101)
UNAME_MACHINE="alphapca56"
;;
- 16)
+ 2-303)
UNAME_MACHINE="alphaev6"
;;
+ 2-307)
+ UNAME_MACHINE="alphaev67"
+ ;;
esac
fi
- rm -f dummy.s dummy
- echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr [[A-Z]] [[a-z]]`
+ rm -f $dummy.s $dummy
+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
+ exit 0 ;;
+ 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 0 ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
Amiga*:UNIX_System_V:4.0:*)
echo m68k-cbm-sysv4
exit 0;;
- amiga:NetBSD:*:*)
- echo m68k-cbm-netbsd${UNAME_RELEASE}
- exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
wgrisc:OpenBSD:*:*)
echo mipsel-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
- arm32:NetBSD:*:*)
- echo arm-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
SR2?01:HI-UX/MPP:*:*)
echo hppa1.1-hitachi-hiuxmpp
exit 0;;
- Pyramid*:OSx*:*:*|MIS*:OSx*:*:*|MIS*:SMP_DC-OSx*:*:*)
+ 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
echo pyramid-pyramid-bsd
fi
exit 0 ;;
- NILE:*:*:dcosx)
+ NILE*:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
sun4H:SunOS:5.*:*)
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
exit 0 ;;
- atari*:NetBSD:*:*)
- echo m68k-atari-netbsd${UNAME_RELEASE}
- exit 0 ;;
atari*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- sun3*:NetBSD:*:*)
- echo m68k-sun-netbsd${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:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
exit 0 ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit 0 ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit 0 ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit 0 ;;
sun3*:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
- mac68k:NetBSD:*:*)
- echo m68k-apple-netbsd${UNAME_RELEASE}
- exit 0 ;;
mac68k:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;;
- macppc:NetBSD:*:*)
- echo powerpc-apple-netbsd${UNAME_RELEASE}
- exit 0 ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit 0 ;;
echo clipper-intergraph-clix${UNAME_RELEASE}
exit 0 ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
- sed 's/^ //' << EOF >dummy.c
- int main (argc, argv) int argc; char **argv; {
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <stdio.h> /* 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);
exit (-1);
}
EOF
- ${CC-cc} dummy.c -o dummy \
- && ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
+ $CC_FOR_BUILD $dummy.c -o $dummy \
+ && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
+ && rm $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
- if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
- -o ${TARGET_BINARY_INTERFACE}x = x ] ; then
+ 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
+ else
echo m88k-dg-dguxbcs${UNAME_RELEASE}
+ fi
+ else
+ echo i586-dg-dgux${UNAME_RELEASE}
fi
- else echo i586-dg-dgux${UNAME_RELEASE}
- fi
exit 0 ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
i?86:AIX:*:*)
echo i386-ibm-aix
exit 0 ;;
- *:MVS:*:* | *:OS390:*:*|*:OS/390:*:*)
- # uname -m gives a processor model number /* S/390 -- gil -- 1389 */
- echo s390-ibm-os390 # on R1 and R2, uname -s reports OS390
- exit 0 ;; # on R3, uname -s reports OS/390
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
- sed 's/^ //' << EOF >dummy.c
+ sed 's/^ //' << EOF >$dummy.c
#include <sys/systemcfg.h>
main()
exit(0);
}
EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
exit 0 ;;
- ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
exit 0 ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
- 9000/6?? | 9000/7?? | 9000/80[024] | 9000/8?[13679] | 9000/892 )
- sed 's/^ //' << EOF >dummy.c
+ 9000/[678][0-9][0-9])
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
#include <stdlib.h>
#include <unistd.h>
exit (0);
}
EOF
- (${CC-cc} dummy.c -o dummy 2>/dev/null ) && HP_ARCH=`./dummy`
- rm -f dummy.c dummy
+ (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
+ rm -f $dummy.c $dummy
esac
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
3050*:HI-UX:*:*)
- sed 's/^ //' << EOF >dummy.c
+ sed 's/^ //' << EOF >$dummy.c
#include <unistd.h>
int
main ()
exit (0);
}
EOF
- ${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
+ $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
exit 0 ;;
+ *9??*:MPE/iX:*:*)
+ echo hppa1.0-hp-mpeix
+ exit 0 ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
exit 0 ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
exit 0 ;;
+ hppa*:OpenBSD:*:*)
+ echo hppa-unknown-openbsd
+ exit 0 ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit 0 ;;
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
exit 0 ;;
CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE}
+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*T3E:*:*:*)
+ echo alpha-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
+ exit 0 ;;
+ CRAY*SV1:*:*:*)
+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
F300:UNIX_System_V:*:*)
- FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
F301:UNIX_System_V:*:*)
echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
exit 0 ;;
- hp3[0-9][05]:NetBSD:*:*)
- echo m68k-hp-netbsd${UNAME_RELEASE}
- exit 0 ;;
hp300:OpenBSD:*:*)
echo m68k-unknown-openbsd${UNAME_RELEASE}
exit 0 ;;
+ i?86:BSD/386:*:* | i?86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ exit 0 ;;
sparc*:BSD/OS:*:*)
echo sparc-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
- i?86:BSD/386:*:* | *:BSD/OS:*:*)
- echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
+ *:BSD/OS:*:*)
+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
- *:NetBSD:*:*)
- echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
- exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
i*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit 0 ;;
+ 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 i386-pc-interix
+ exit 0 ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit 0 ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin
exit 0 ;;
*:GNU:*:*)
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit 0 ;;
*:Linux:*:*)
- # uname on the ARM produces all sorts of strangeness, and we need to
- # filter it out.
- case "$UNAME_MACHINE" in
- arm* | sa110*) UNAME_MACHINE="arm" ;;
- esac
# The BFD linker knows what the default object file format is, so
- # first see if it will tell us.
- ld_help_string=`ld --help 2>&1`
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ ld_help_string=`cd /; ld --help 2>&1`
ld_supported_emulations=`echo $ld_help_string \
| sed -ne '/supported emulations:/!d
s/[ ][ ]*/ /g
s/ .*//
p'`
case "$ld_supported_emulations" in
- i?86linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" ; exit 0 ;;
- i?86coff) echo "${UNAME_MACHINE}-pc-linux-gnucoff" ; exit 0 ;;
- sparclinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
- armlinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
- m68klinux) echo "${UNAME_MACHINE}-unknown-linux-gnuaout" ; exit 0 ;;
- elf32ppc) echo "powerpc-unknown-linux-gnu" ; exit 0 ;;
+ *ia64)
+ echo "${UNAME_MACHINE}-unknown-linux"
+ exit 0
+ ;;
+ i?86linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit 0
+ ;;
+ elf_i?86)
+ echo "${UNAME_MACHINE}-pc-linux"
+ exit 0
+ ;;
+ i?86coff)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit 0
+ ;;
+ sparclinux)
+ echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+ exit 0
+ ;;
+ armlinux)
+ echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+ exit 0
+ ;;
+ elf32arm*)
+ echo "${UNAME_MACHINE}-unknown-linux-gnuoldld"
+ exit 0
+ ;;
+ armelf_linux*)
+ echo "${UNAME_MACHINE}-unknown-linux-gnu"
+ exit 0
+ ;;
+ m68klinux)
+ echo "${UNAME_MACHINE}-unknown-linux-gnuaout"
+ exit 0
+ ;;
+ elf32ppc | elf32ppclinux)
+ # Determine Lib Version
+ cat >$dummy.c <<EOF
+#include <features.h>
+#if defined(__GLIBC__)
+extern char __libc_version[];
+extern char __libc_release[];
+#endif
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+#if defined(__GLIBC__)
+ printf("%s %s\n", __libc_version, __libc_release);
+#else
+ printf("unkown\n");
+#endif
+ return 0;
+}
+EOF
+ LIBC=""
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
+ if test "$?" = 0 ; then
+ ./$dummy | grep 1\.99 > /dev/null
+ if test "$?" = 0 ; then
+ LIBC="libc1"
+ fi
+ fi
+ rm -f $dummy.c $dummy
+ echo powerpc-unknown-linux-gnu${LIBC}
+ exit 0
+ ;;
+ shelf_linux)
+ echo "${UNAME_MACHINE}-unknown-linux-gnu"
+ exit 0
+ ;;
esac
if test "${UNAME_MACHINE}" = "alpha" ; then
- sed 's/^ //' <<EOF >dummy.s
- .globl main
- .ent main
- main:
- .frame \$30,0,\$26,0
- .prologue 0
- .long 0x47e03d80 # implver $0
- lda \$2,259
- .long 0x47e20c21 # amask $2,$1
- srl \$1,8,\$2
- sll \$2,2,\$2
- sll \$0,3,\$0
- addl \$1,\$0,\$0
- addl \$2,\$0,\$0
- ret \$31,(\$26),1
- .end main
+ cat <<EOF >$dummy.s
+ .data
+ \$Lformat:
+ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
+
+ .text
+ .globl main
+ .align 4
+ .ent main
+ main:
+ .frame \$30,16,\$26,0
+ ldgp \$29,0(\$27)
+ .prologue 1
+ .long 0x47e03d80 # implver \$0
+ lda \$2,-1
+ .long 0x47e20c21 # amask \$2,\$1
+ lda \$16,\$Lformat
+ mov \$0,\$17
+ not \$1,\$18
+ jsr \$26,printf
+ ldgp \$29,0(\$26)
+ mov 0,\$16
+ jsr \$26,exit
+ .end main
EOF
LIBC=""
- ${CC-cc} dummy.s -o dummy 2>/dev/null
+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
if test "$?" = 0 ; then
- ./dummy
- case "$?" in
- 7)
+ case `./$dummy` in
+ 0-0)
UNAME_MACHINE="alpha"
;;
- 15)
+ 1-0)
UNAME_MACHINE="alphaev5"
;;
- 14)
+ 1-1)
UNAME_MACHINE="alphaev56"
;;
- 10)
+ 1-101)
UNAME_MACHINE="alphapca56"
;;
- 16)
+ 2-303)
UNAME_MACHINE="alphaev6"
;;
+ 2-307)
+ UNAME_MACHINE="alphaev67"
+ ;;
esac
- objdump --private-headers dummy | \
+ objdump --private-headers $dummy | \
grep ld.so.1 > /dev/null
if test "$?" = 0 ; then
LIBC="libc1"
fi
fi
- rm -f dummy.s dummy
+ rm -f $dummy.s $dummy
echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} ; exit 0
elif test "${UNAME_MACHINE}" = "mips" ; then
- cat >dummy.c <<EOF
-main(argc, argv)
- int argc;
- char *argv[];
-{
+ cat >$dummy.c <<EOF
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
#ifdef __MIPSEB__
printf ("%s-unknown-linux-gnu\n", argv[1]);
#endif
return 0;
}
EOF
- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
+ elif test "${UNAME_MACHINE}" = "s390"; then
+ echo s390-ibm-linux && exit 0
else
# Either a pre-BFD a.out linker (linux-gnuoldld)
# or one that does not give us useful --help.
;;
esac
# Determine whether the default compiler is a.out or elf
- cat >dummy.c <<EOF
+ cat >$dummy.c <<EOF
#include <features.h>
-main(argc, argv)
- int argc;
- char *argv[];
-{
+#ifdef __cplusplus
+#include <stdio.h> /* for printf() prototype */
+ int main (int argc, char *argv[]) {
+#else
+ int main (argc, argv) int argc; char *argv[]; {
+#endif
#ifdef __ELF__
# ifdef __GLIBC__
-# if (__GLIBC__ >= 2)
+# if __GLIBC__ >= 2
printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
# else
printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
return 0;
}
EOF
- ${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
- rm -f dummy.c dummy
+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm $dummy.c $dummy && exit 0
+ rm -f $dummy.c $dummy
fi ;;
# 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.
# Use sysv4.2uw... so that sysv4* matches it.
echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
exit 0 ;;
- # SysVr5/Unixware7
- i?86:*:5*:* | i?86:SYSTEM_V:5*:*)
- if uname -a | grep SCO >/dev/null 2>/dev/null ; then
- (/bin/uname -s|egrep UnixWare >/dev/null) && UNAME_VER=uw${UNAME_VERSION}
- if /bin/uname -X 2>/dev/null >/dev/null ; then
- (/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- fi
- echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}${UNAME_VER}
+ 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}-unknown-sysv${UNAME_RELEASE}
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
fi
exit 0 ;;
- i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
- if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
- echo ${UNAME_MACHINE}-univel-sysv4.2uw${UNAME_VERSION}
+ i?86:*:5:7*)
+ # Fixed at (any) Pentium or better
+ UNAME_MACHINE=i586
+ if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
+ echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
else
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
fi
exit 0 ;;
i?86:*:3.2:*)
(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
+ (/bin/uname -X|egrep '^Machine.*Pent ?II' >/dev/null) \
+ && UNAME_MACHINE=i686
+ (/bin/uname -X|egrep '^Machine.*Pentium Pro' >/dev/null) \
+ && UNAME_MACHINE=i686
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit 0 ;;
- i?86:UnixWare:*:*)
- if /bin/uname -X 2>/dev/null >/dev/null ; then
- (/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
- && UNAME_MACHINE=i586
- fi
- echo ${UNAME_MACHINE}-unixware-${UNAME_RELEASE}-${UNAME_VERSION}
+ i?86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
exit 0 ;;
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 i386.
echo i386-pc-msdosdjgpp
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit 0 ;;
- i?86:LynxOS:2.*:*)
+ i?86:LynxOS:2.*:* | i?86:LynxOS:3.[01]*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
TSUNAMI:LynxOS:2.*:*)
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
exit 0 ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit 0 ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
exit 0 ;;
news*:NEWS-OS:*:6*)
echo mips-sony-newsos6
exit 0 ;;
- R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R4000:UNIX_SV:*:*)
+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos
exit 0 ;;
+ SX-4:SUPER-UX:*:*)
+ echo sx4-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ SX-5:SUPER-UX:*:*)
+ echo sx5-nec-superux${UNAME_RELEASE}
+ exit 0 ;;
+ Power*:Rhapsody:*:*)
+ echo powerpc-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Rhapsody:*:*)
+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE}
+ exit 0 ;;
+ *:Darwin:*:*)
+ echo `uname -p`-apple-darwin${UNAME_RELEASE}
+ exit 0 ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ if test "${UNAME_MACHINE}" = "x86pc"; then
+ UNAME_MACHINE=pc
+ fi
+ echo `uname -p`-${UNAME_MACHINE}-nto-qnx
+ exit 0 ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit 0 ;;
+ NSR-W:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit 0 ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit 0 ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-cat >dummy.c <<EOF
+cat >$dummy.c <<EOF
#ifdef _SEQUENT_
# include <sys/types.h>
# include <sys/utsname.h>
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
- printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
}
EOF
-${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
-rm -f dummy.c dummy
+$CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm $dummy.c $dummy && exit 0
+rm -f $dummy.c $dummy
# Apollos put the system type in the environment.
esac
fi
-#echo '(Unable to guess system type)' 1>&2
+cat >&2 <<EOF
+$0: unable to guess system type
+
+The $version version of this script cannot recognize your system type.
+Please download the most up to date version of the config scripts:
+
+ ftp://ftp.gnu.org/pub/gnu/config/
+
+If the version you run ($0) is already up to date, please
+send the following data and any information you think might be
+pertinent to <config-patches@gnu.org> in order to provide the needed
+information to handle your system.
+
+config.guess version = $version
+
+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: "version='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
#! /bin/sh
# Configuration validation subroutine script, version 1.1.
-# Copyright (C) 1991, 92-97, 1998 Free Software Foundation, Inc.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+# Free Software Foundation, Inc.
+
+version='2000-06-13'
+
# 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.
# 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 <config-patches@gnu.org>.
+#
# 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.
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
-if [ x$1 = x ]
-then
- echo Configuration name missing. 1>&2
- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
- echo "or $0 ALIAS" 1>&2
- echo where ALIAS is a recognized configuration type. 1>&2
- exit 1
-fi
+me=`echo "$0" | sed -e 's,.*/,,'`
-# First pass through any local machine types.
-case $1 in
- *local*)
- echo $1
- exit 0
- ;;
- *)
- ;;
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -V, --version print version number, then exit"
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case "$1" in
+ --version | --vers* | -V )
+ echo "$version" ; exit 0 ;;
+ --help | --h* | -h )
+ echo "$usage"; exit 0 ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ exec >&2
+ echo "$me: invalid option $1"
+ echo "$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
- linux-gnu*)
+ nto-qnx* | linux-gnu*)
os=-$maybe_os
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
- -apple)
+ -apple | -axis)
os=
basic_machine=$1
;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
-hiux*)
os=-hiuxwe2
;;
-sco5)
- os=sco3.2v5
+ os=-sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
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/'`
-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.
- tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
+ tahoe | i860 | ia64 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \
| arme[lb] | pyramid | mn10200 | mn10300 | tron | a29k \
| 580 | i960 | h8300 \
- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w \
- | alpha | alphaev5 | alphaev56 | we32k | ns16k | clipper \
- | i370 | sh | powerpc | powerpcle | 1750a | dsp16xx | pdp11 \
- | mips64 | mipsel | mips64el | mips64orion | mips64orionel \
- | mipstx39 | mipstx39el \
- | sparc | sparclet | sparclite | sparc64 | v850)
+ | x86 | ppcbe | mipsbe | mipsle | shbe | shle | armbe | armle \
+ | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \
+ | hppa64 \
+ | alpha | alphaev[4-8] | alphaev56 | alphapca5[67] \
+ | alphaev6[78] \
+ | we32k | ns16k | clipper | i370 | sh | sh[34] \
+ | powerpc | powerpcle \
+ | 1750a | dsp16xx | pdp11 | mips16 | mips64 | mipsel | mips64el \
+ | mips64orion | mips64orionel | mipstx39 | mipstx39el \
+ | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
+ | mips64vr5000 | miprs64vr5000el | mcore \
+ | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x \
+ | thumb | d10v | fr30 | avr)
basic_machine=$basic_machine-unknown
;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | h8500 | w65 | pj | pjl)
+ ;;
+
# 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[34567]86)
+ i[234567]86)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
exit 1
;;
# Recognize the basic CPU types with company name.
- vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \
+ # FIXME: clean up the formatting here.
+ vax-* | tahoe-* | i[234567]86-* | i860-* | ia64-* | m32r-* | m68k-* | m68000-* \
| m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \
- | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \
+ | power-* | none-* | 580-* | cray2-* | h8300-* | h8500-* | i960-* \
| xmp-* | ymp-* \
+ | x86-* | ppcbe-* | mipsbe-* | mipsle-* | shbe-* | shle-* | armbe-* | armle-* \
| hppa-* | hppa1.0-* | hppa1.1-* | hppa2.0-* | hppa2.0w-* \
- | alpha-* | alphaev5-* | alphaev56-* | we32k-* | cydra-* \
- | ns16k-* | pn-* | np1-* | xps100-* | clipper-* | orion-* \
+ | hppa2.0n-* | hppa64-* \
+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphapca5[67]-* \
+ | alphaev6[78]-* \
+ | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
+ | clipper-* | orion-* \
| sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
- | sparc64-* | mips64-* | mipsel-* \
- | mips64el-* | mips64orion-* | mips64orionel-* \
- | mipstx39-* | mipstx39el-* \
- | f301-*)
+ | sparc64-* | sparcv9-* | sparc86x-* | mips16-* | mips64-* | mipsel-* \
+ | mips64el-* | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
+ | mipstx39-* | mipstx39el-* | mcore-* \
+ | f301-* | armv*-* | s390-* | sv1-* | t3e-* \
+ | m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | d10v-* \
+ | thumb-* | v850-* | d30v-* | tic30-* | c30-* | fr30-* \
+ | bs2000-*)
;;
# 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
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
alliant | fx80)
basic_machine=fx80-alliant
;;
basic_machine=m68k-apollo
os=-sysv
;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
aux)
basic_machine=m68k-apple
os=-aux
crds | unos)
basic_machine=m68k-crds
;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
da30 | da30-*)
basic_machine=m68k-da30
;;
encore | umax | mmax)
basic_machine=ns32k-encore
;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
fx2800)
basic_machine=i860-alliant
;;
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
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
;;
- hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
+ 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])
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
- os=-mvs
- ;;
- s390 | s390-ibm*)
-# OS/390 support after:
-# Linkname: Mortice Kern Systems (MKS) Inc. - OS/390 OpenEdition -- GNU Utilities Downloads
-# URL: http://www.mks.com/s390/gnu/download.htm#autoconf
- basic_machine=s390-ibm # /* S/390 -- gil -- 1419 */
- os=-os390
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i[34567]86v32)
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
+ ;;
+ i386-go32 | go32)
+ basic_machine=i386-unknown
+ os=-go32
+ ;;
+ i386-mingw32 | mingw32)
+ basic_machine=i386-unknown
+ os=-mingw32
+ ;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
miniframe)
basic_machine=m68000-convergent
;;
+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*)
+ basic_machine=m68k-atari
+ os=-mint
+ ;;
mipsel*-linux*)
basic_machine=mipsel-unknown
os=-linux-gnu
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
+ ;;
+ msdos)
+ basic_machine=i386-unknown
+ 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
basic_machine=mips-sony
os=-newsos
;;
+ necv70)
+ basic_machine=v70-nec
+ os=-sysv
+ ;;
next | m*-next )
basic_machine=m68k-next
case $os in
basic_machine=i960-intel
os=-nindy
;;
+ mon960)
+ basic_machine=i960-intel
+ os=-mon960
+ ;;
np1)
basic_machine=np1-gould
;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
- pentium | p5 | k5 | nexen)
+ pentium | p5 | k5 | k6 | nexen)
basic_machine=i586-pc
;;
- pentiumpro | p6 | k6 | 6x86)
+ pentiumpro | p6 | 6x86 | athlon)
basic_machine=i686-pc
;;
pentiumii | pentium2)
basic_machine=i786-pc
;;
- pentium-* | p5-* | k5-* | nexen-*)
+ pentium-* | p5-* | k5-* | k6-* | nexen-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
- pentiumpro-* | p6-* | k6-* | 6x86-*)
+ pentiumpro-* | p6-* | 6x86-* | athlon-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumii-* | pentium2-*)
ps2)
basic_machine=i386-ibm
;;
+ rom68k)
+ basic_machine=m68k-rom68k
+ os=-coff
+ ;;
rm[46]00)
basic_machine=mips-siemens
;;
rtpc | rtpc-*)
basic_machine=romp-ibm
;;
+ sa29200)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
sequent)
basic_machine=i386-sequent
;;
basic_machine=sh-hitachi
os=-hms
;;
+ sparclite-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
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
symmetry)
basic_machine=i386-sequent
os=-dynix
;;
+ t3e)
+ basic_machine=t3e-cray
+ os=-unicos
+ ;;
tx39)
basic_machine=mipstx39-unknown
;;
basic_machine=a29k-nyu
os=-sym1
;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
vaxv)
basic_machine=vax-dec
os=-sysv
basic_machine=a29k-wrs
os=-vxworks
;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
xmp)
basic_machine=xmp-cray
os=-unicos
xps | xps100)
basic_machine=xps100-honeywell
;;
+ 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
+ ;;
mips)
if [ x$os = x-linux-gnu ]; then
basic_machine=mips-unknown
we32k)
basic_machine=we32k-att
;;
- sparc)
+ sh3 | sh4)
+ base_machine=sh-unknown
+ ;;
+ sparc | sparcv9)
basic_machine=sparc-sun
;;
cydra)
orion105)
basic_machine=clipper-highlevel
;;
+ mac | mpw | mac-mpw)
+ basic_machine=m68k-apple
+ ;;
+ pmac | pmac-mpw)
+ basic_machine=powerpc-apple
+ ;;
+ c4x*)
+ basic_machine=c4x-none
+ os=-coff
+ ;;
*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* \
- | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* | -os390* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
- | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
+ | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
- | -mingw32* | -linux-gnu* | -uxpv* | -beos*)
+ | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
+ | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
+ | -openstep* | -oskit*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i[34567]86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto*)
+ os=-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*)
os=`echo $os | sed -e 's|linux|linux-gnu|'`
;;
-sunos6*)
os=`echo $os | sed -e 's|sunos6|solaris3|'`
;;
+ -opened*)
+ os=-openedition
+ ;;
+ -wince*)
+ os=-wince
+ ;;
-osfrose*)
os=-osfrose
;;
-acis*)
os=-aos
;;
+ -386bsd)
+ os=-bsd
+ ;;
-ctix* | -uts*)
os=-sysv
;;
-ns2 )
os=-nextstep2
;;
+ -nsk)
+ os=-nsk
+ ;;
# Preserve the version number of sinix5.
-sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
# This must come after -sysvr4.
-sysv*)
;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
-xenix)
os=-xenix
;;
+ -*mint | -*MiNT)
+ os=-mint
+ ;;
-none)
;;
*)
*-acorn)
os=-riscix1.2
;;
+ arm*-rebel)
+ os=-linux
+ ;;
arm*-semi)
os=-aout
;;
# default.
# os=-sunos4
;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ mips*-cisco)
+ os=-elf
+ ;;
+ mips*-*)
+ os=-elf
+ ;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
*-be)
os=-beos
;;
- s390-ibm)
- os=-os390 # /* S/390 -- gil -- 1451 */
- ;;
*-ibm)
os=-aix
;;
+ *-wec)
+ os=-proelf
+ ;;
+ *-winbond)
+ os=-proelf
+ ;;
+ *-oki)
+ os=-proelf
+ ;;
*-hp)
os=-hpux
;;
f301-fujitsu)
os=-uxpv
;;
+ *-rom68k)
+ os=-coff
+ ;;
+ *-*bug)
+ os=-coff
+ ;;
+ *-apple)
+ os=-macos
+ ;;
+ *-atari*)
+ os=-mint
+ ;;
*)
os=-none
;;
-aix*)
vendor=ibm
;;
+ -beos*)
+ vendor=be
+ ;;
-hpux*)
vendor=hp
;;
+ -mpeix*)
+ vendor=hp
+ ;;
-hiux*)
vendor=hitachi
;;
-genix*)
vendor=ns
;;
- -mvs*)
+ -mvs* | -opened*)
vendor=ibm
;;
-ptx*)
-aux*)
vendor=apple
;;
+ -hms*)
+ vendor=hitachi
+ ;;
+ -mpw* | -macos*)
+ vendor=apple
+ ;;
+ -*mint | -*MiNT)
+ vendor=atari
+ ;;
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: "version='"
+# time-stamp-format: "%:y-%02m-%02d"
+# time-stamp-end: "'"
+# End:
#! /bin/sh
-# From configure.in Revision: 1.179
+# From configure.in Revision: 1.195
+
# Guess values for system-dependent variables and create Makefiles.
--with-manpage-format specify manpage-format: gzip/compress/BSDI/normal and
optionally formatted, e.g., gzip,formatted
--with-manpage-renames specify manpage-renaming
+ --with-manpage-symlinks specify manpage-symlinks
Options to Specify the Libraries Built/Used:
--with-shared generate shared-libraries
- --with-normal generate normal-libraries (default)
EOF
cat <<EOF
+ --with-normal generate normal-libraries (default)
--with-debug generate debug-libraries (default)
--with-profile generate profile-libraries
--with-termlib generate separate terminfo library
Fine-Tuning Your Configuration:
--disable-overwrite leave out the link to -lcurses
--disable-database use only built-in data
- --disable-ext-funcs disable function-extensions
EOF
cat <<EOF
--with-fallbacks=XXX specify list of fallback terminal descriptions
--enable-getcap fast termcap load, no xrefs to terminfo
--enable-getcap-cache cache translated termcaps in ~/.terminfo
--enable-symlinks make tic use symbolic links not hard links
+ --enable-broken_linker compile with broken-linker support code
--enable-bsdpad recognize BSD-style prefix padding
- --enable-const compile with extra/non-standard const
--with-rcs-ids compile-in RCS identifiers
-Experimental Code:
- --with-develop enable all experimental options for testing
+Extensions:
+ --disable-ext-funcs disable function-extensions
EOF
cat <<EOF
- --enable-broken_linker compile with broken-linker support code
+ --enable-const compile with extra/non-standard const
+ --enable-hashmap compile with hashmap scrolling-optimization code
+ --enable-no-padding compile with \$NCURSES_NO_PADDING code
+ --enable-sigwinch compile with SIGWINCH handler
+ --enable-tcap-names compile with user-definable terminal capabilities
+Experimental Code:
+ --with-develop enable all experimental options for testing
+ --enable-colorfgbg compile with experimental \$COLORFGBG code
--enable-hard-tabs compile with experimental hard-tabs code
- --enable-hashmap compile with experimental hashmap code
- --enable-no-padding compile with experimental no-padding code
--enable-safe-sprintf compile with experimental safe-sprintf code
- --disable-scroll-hints compile hashmap without scroll-hints code
- --enable-tcap-names compile with experimental definable-name code
- --enable-sigwinch compile with experimental SIGWINCH handler
+ --disable-scroll-hints compile without scroll-hints code
--enable-widec compile with experimental wide-char code
+EOF
+cat <<EOF
--enable-xmc-glitch compile with experimental xmc code
Testing/development Options:
--enable-echo build: display "compiling" commands (default)
-EOF
-cat <<EOF
--enable-warnings build: turn on GCC compiler warnings
--enable-assertions test: turn on generation of assertion code
--disable-leaks test: suppress permanent memory-leaks
--disable-macros test: use functions rather than macros
Ada95 Binding Options:
--with-ada-compiler=CMD Specify Ada95 compiler command (default gnatmake)
- --with-ada-include=DIR Ada includes are in DIR (default: PREFIX/lib/gnu-Ada/adainclude)
- --with-ada-objects=DIR Ada objects are in DIR (default: PREFIX/lib/gnu-Ada/adalib)
+ --with-ada-include=DIR Ada includes are in DIR (default: PREFIX/lib/ada/adainclude)
+ --with-ada-objects=DIR Ada objects are in DIR (default: PREFIX/lib/ada/adalib)
+EOF
+cat <<EOF
EOF
exit 0 ;;
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:640: checking host system type" >&5
+echo "configure:646: checking host system type" >&5
host_alias=$host
case "$host_alias" in
### Default install-location
echo $ac_n "checking for prefix""... $ac_c" 1>&6
-echo "configure:731: checking for prefix" >&5
+echo "configure:737: checking for prefix" >&5
if test "x$prefix" = "xNONE" ; then
case "$cf_cv_system_name" in
# non-vendor systems don't have a conflict
if test "x$prefix" = "xNONE" ; then
echo $ac_n "checking for default include-directory""... $ac_c" 1>&6
-echo "configure:746: checking for default include-directory" >&5
+echo "configure:752: checking for default include-directory" >&5
test -n "$verbose" && echo 1>&6
for cf_symbol in \
$includedir \
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:776: checking for $ac_word" >&5
+echo "configure:782: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:806: checking for $ac_word" >&5
+echo "configure:812: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:857: checking for $ac_word" >&5
+echo "configure:863: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:889: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:895: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
cat > conftest.$ac_ext << EOF
-#line 900 "configure"
+#line 906 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:911: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:931: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:937: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:936: checking whether we are using GNU C" >&5
+echo "configure:942: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:945: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:951: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:964: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:970: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test -n "$GCC" ; then
echo $ac_n "checking version of gcc""... $ac_c" 1>&6
-echo "configure:997: checking version of gcc" >&5
+echo "configure:1003: checking version of gcc" >&5
eval "$CC --version"
fi
if test $host != $build; then
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1006: checking for $ac_word" >&5
+echo "configure:1012: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_BUILD_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:1037: checking how to run the C preprocessor" >&5
+echo "configure:1043: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 1052 "configure"
+#line 1058 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1064: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 1069 "configure"
+#line 1075 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1081: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 1086 "configure"
+#line 1092 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1092: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1098: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
if test $ac_cv_prog_gcc = yes; then
echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6
-echo "configure:1118: checking whether ${CC-cc} needs -traditional" >&5
+echo "configure:1124: checking whether ${CC-cc} needs -traditional" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_pattern="Autoconf.*'x'"
cat > conftest.$ac_ext <<EOF
-#line 1124 "configure"
+#line 1130 "configure"
#include "confdefs.h"
#include <sgtty.h>
Autoconf TIOCGETP
if test $ac_cv_prog_gcc_traditional = no; then
cat > conftest.$ac_ext <<EOF
-#line 1142 "configure"
+#line 1148 "configure"
#include "confdefs.h"
#include <termio.h>
Autoconf TCGETA
fi
echo $ac_n "checking for POSIXized ISC""... $ac_c" 1>&6
-echo "configure:1164: checking for POSIXized ISC" >&5
+echo "configure:1170: checking for POSIXized ISC" >&5
if test -d /etc/conf/kconfig.d &&
grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1
then
echo $ac_n "checking for ${CC-cc} option to accept ANSI C""... $ac_c" 1>&6
-echo "configure:1186: checking for ${CC-cc} option to accept ANSI C" >&5
+echo "configure:1192: checking for ${CC-cc} option to accept ANSI C" >&5
if eval "test \"`echo '$''{'cf_cv_ansi_cc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
"" \
-qlanglvl=ansi \
-std1 \
- "-Aa -D_HPUX_SOURCE +e" \
+ -Ae \
"-Aa -D_HPUX_SOURCE" \
-Xc
do
CFLAGS="$cf_save_CFLAGS $cf_arg"
cat > conftest.$ac_ext <<EOF
-#line 1210 "configure"
+#line 1216 "configure"
#include "confdefs.h"
#ifndef CC_HAS_PROTOS
struct s2 {int (*f) (double a);};
; return 0; }
EOF
-if { (eval echo configure:1226: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cf_cv_ansi_cc="$cf_arg"; break
else
# Extract the first word of "ldconfig", so it can be a program name with args.
set dummy ldconfig; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1287: checking for $ac_word" >&5
+echo "configure:1293: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_LDCONFIG'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking if you want to ensure bool is consistent with C++""... $ac_c" 1>&6
-echo "configure:1324: checking if you want to ensure bool is consistent with C++" >&5
+echo "configure:1330: checking if you want to ensure bool is consistent with C++" >&5
# Check whether --with-cxx or --without-cxx was given.
if test "${with_cxx+set}" = set; then
CXX=""
GXX=""
else
- for ac_prog in $CCC c++ g++ gcc CC cxx cc++ cl
+ for ac_prog in $CCC c++ g++ gcc CC cxx 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1344: checking for $ac_word" >&5
+echo "configure:1350: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CXX'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1376: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1382: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
cat > conftest.$ac_ext << EOF
-#line 1387 "configure"
+#line 1393 "configure"
#include "confdefs.h"
int main(){return(0);}
EOF
-if { (eval echo configure:1392: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1398: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cxx_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
echo "$ac_t""$ac_cv_prog_cxx_works" 1>&6
if test $ac_cv_prog_cxx_works = no; then
- { echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
+ echo "$ac_t""You don't have any C++ compiler, too bad" 1>&6; cf_with_cxx=no; CXX=""; GXX="";
fi
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1418: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1424: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1423: checking whether we are using GNU C++" >&5
+echo "configure:1429: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1432: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1438: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1451: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1457: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
fi
-fi
+ fi
if test -n "$GXX" ; then case "`${CXX-g++} --version`" in 1*|2.[0-6]*) GXX=""; CXX=""; ac_cv_prog_gxx=no; cf_cxx_library=no ; echo No: templates do not work;; esac; fi
echo $ac_n "checking if you want to build C++ binding and demo""... $ac_c" 1>&6
-echo "configure:1486: checking if you want to build C++ binding and demo" >&5
+echo "configure:1492: checking if you want to build C++ binding and demo" >&5
# Check whether --with-cxx-binding or --without-cxx-binding was given.
if test "${with_cxx_binding+set}" = set; then
echo "$ac_t""$cf_with_cxx_binding" 1>&6
echo $ac_n "checking if you want to build with Ada95""... $ac_c" 1>&6
-echo "configure:1499: checking if you want to build with Ada95" >&5
+echo "configure:1505: checking if you want to build with Ada95" >&5
# Check whether --with-ada or --without-ada was given.
if test "${with_ada+set}" = set; then
echo "$ac_t""$cf_with_ada" 1>&6
echo $ac_n "checking if you want to build programs such as tic""... $ac_c" 1>&6
-echo "configure:1512: checking if you want to build programs such as tic" >&5
+echo "configure:1518: checking if you want to build programs such as tic" >&5
# Check whether --with-progs or --without-progs was given.
if test "${with_progs+set}" = set; then
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1535: checking for $ac_word" >&5
+echo "configure:1541: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
done
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:1565: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:1571: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1603: checking for a BSD compatible install" >&5
+echo "configure:1609: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
esac
echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:1666: checking for long file names" >&5
+echo "configure:1672: checking for long file names" >&5
if eval "test \"`echo '$''{'ac_cv_sys_long_file_names'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:1710: checking whether ln -s works" >&5
+echo "configure:1716: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1733: checking for $ac_word" >&5
+echo "configure:1739: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1765: checking for $ac_word" >&5
+echo "configure:1771: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LINT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1799: checking for $ac_word" >&5
+echo "configure:1805: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_MAN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
else
echo $ac_n "checking for loader (symbol LD)""... $ac_c" 1>&6
-echo "configure:1835: checking for loader (symbol LD)" >&5
+echo "configure:1841: checking for loader (symbol LD)" >&5
test -z "$LD" && LD=ld
echo "$ac_t""$LD" 1>&6
else
echo $ac_n "checking for archiver (symbol AR)""... $ac_c" 1>&6
-echo "configure:1849: checking for archiver (symbol AR)" >&5
+echo "configure:1855: checking for archiver (symbol AR)" >&5
test -z "$AR" && AR=ar
echo "$ac_t""$AR" 1>&6
else
echo $ac_n "checking for archiver options (symbol AR_OPTS)""... $ac_c" 1>&6
-echo "configure:1863: checking for archiver options (symbol AR_OPTS)" >&5
+echo "configure:1869: checking for archiver options (symbol AR_OPTS)" >&5
test -z "$AR_OPTS" && AR_OPTS=rv
echo "$ac_t""$AR_OPTS" 1>&6
echo $ac_n "checking for makeflags variable""... $ac_c" 1>&6
-echo "configure:1875: checking for makeflags variable" >&5
+echo "configure:1881: checking for makeflags variable" >&5
if eval "test \"`echo '$''{'cf_cv_makeflags'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking if you have specified an install-prefix""... $ac_c" 1>&6
-echo "configure:1911: checking if you have specified an install-prefix" >&5
+echo "configure:1917: checking if you have specified an install-prefix" >&5
# Check whether --with-install-prefix or --without-install-prefix was given.
if test "${with_install_prefix+set}" = set; then
echo $ac_n "checking format of man-pages""... $ac_c" 1>&6
-echo "configure:1931: checking format of man-pages" >&5
+echo "configure:1937: checking format of man-pages" >&5
# Check whether --with-manpage-format or --without-manpage-format was given.
echo $ac_n "checking for manpage renaming""... $ac_c" 1>&6
-echo "configure:1983: checking for manpage renaming" >&5
+echo "configure:1989: checking for manpage renaming" >&5
# Check whether --with-manpage-renames or --without-manpage-renames was given.
echo "$ac_t""$cf_manpage_renames" 1>&6
+echo $ac_n "checking for manpage symlinks""... $ac_c" 1>&6
+echo "configure:2032: checking for manpage symlinks" >&5
+
+
+# Check whether --with-manpage-symlinks or --without-manpage-symlinks was given.
+if test "${with_manpage_symlinks+set}" = set; then
+ withval="$with_manpage_symlinks"
+ cf_manpage_symlinks=$withval
+else
+ cf_manpage_symlinks=yes
+fi
+
+
+echo "$ac_t""$cf_manpage_symlinks" 1>&6
+
+
if test "$prefix" = "NONE" ; then
cf_prefix="$ac_default_prefix"
else
MKDIRS="`cd $srcdir && pwd`/mkinstalldirs"
INSTALL="$INSTALL"
INSTALL_DATA="$INSTALL_DATA"
+
TMP=\${TMPDIR-/tmp}/man\$\$
trap "rm -f \$TMP" 0 1 2 5 15
mandir=\$1
shift
+srcdir=\$1
+shift
+
for i in \$* ; do
case \$i in #(vi
*.orig|*.rej) ;; #(vi
\$MKDIRS $cf_subdir\$section
fi
fi
+ aliases=
source=\`basename \$i\`
CF_EOF
+if test "$cf_manpage_symlinks" = yes ; then
+cat >>man/edit_man.sh <<CF_EOF
+ aliases=\`sed -f \$srcdir/manlinks.sed \$source | sort -u\`
+CF_EOF
+fi
if test "$cf_manpage_renames" = no ; then
cat >>man/edit_man.sh <<CF_EOF
target=$cf_subdir\${section}/\$source
esac
cat >>man/edit_man.sh <<CF_EOF
echo \$verb \$target
+ suffix=\`basename \$target | sed -e 's/^[^.]*//'\`
if test \$verb = installing ; then
\$INSTALL_DATA \$TMP \$target
+ test -n "\$aliases" && (
+ cd $cf_subdir\${section} && (
+ target=\`basename \$target\`
+ for cf_alias in \$aliases
+ do
+ if test -f \$cf_alias\${suffix} ; then
+ if ( cmp -s \$target \$cf_alias\${suffix} )
+ then
+ :
+ else
+ echo .. \$verb alias \$cf_alias\${suffix}
+ rm -f \$cf_alias\${suffix}
+ $LN_S \$target \$cf_alias\${suffix}
+ fi
+ else
+ echo .. \$verb alias \$cf_alias\${suffix}
+ rm -f \$cf_alias\${suffix}
+ $LN_S \$target \$cf_alias\${suffix}
+ fi
+ done
+ )
+ )
else
rm -f \$target
+ test -n "\$aliases" && (
+ cd $cf_subdir\${section} && (
+ for cf_alias in \$aliases
+ do
+ echo .. \$verb alias \$cf_alias\${suffix}
+ rm -f \$cf_alias\${suffix}
+ done
+ )
+ )
fi
;;
esac
done
+exit 0
CF_EOF
chmod 755 man/edit_man.sh
cf_list_models=""
echo $ac_n "checking if you want to build shared libraries""... $ac_c" 1>&6
-echo "configure:2148: checking if you want to build shared libraries" >&5
+echo "configure:2213: checking if you want to build shared libraries" >&5
# Check whether --with-shared or --without-shared was given.
if test "${with_shared+set}" = set; then
test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared"
echo $ac_n "checking if you want to build static libraries""... $ac_c" 1>&6
-echo "configure:2162: checking if you want to build static libraries" >&5
+echo "configure:2227: checking if you want to build static libraries" >&5
# Check whether --with-normal or --without-normal was given.
if test "${with_normal+set}" = set; then
test "$with_normal" = "yes" && cf_list_models="$cf_list_models normal"
echo $ac_n "checking if you want to build debug libraries""... $ac_c" 1>&6
-echo "configure:2176: checking if you want to build debug libraries" >&5
+echo "configure:2241: checking if you want to build debug libraries" >&5
# Check whether --with-debug or --without-debug was given.
if test "${with_debug+set}" = set; then
test "$with_debug" = "yes" && cf_list_models="$cf_list_models debug"
echo $ac_n "checking if you want to build profiling libraries""... $ac_c" 1>&6
-echo "configure:2190: checking if you want to build profiling libraries" >&5
+echo "configure:2255: checking if you want to build profiling libraries" >&5
# Check whether --with-profile or --without-profile was given.
if test "${with_profile+set}" = set; then
echo "$ac_t""$with_profile" 1>&6
test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
+###############################################################################
+
+echo $ac_n "checking for specified models""... $ac_c" 1>&6
+echo "configure:2271: checking for specified models" >&5
+test -z "$cf_list_models" && cf_list_models=normal
+echo "$ac_t""$cf_list_models" 1>&6
+
+### Use the first model as the default, and save its suffix for use in building
+### up test-applications.
+echo $ac_n "checking for default model""... $ac_c" 1>&6
+echo "configure:2278: checking for default model" >&5
+DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
+echo "$ac_t""$DFT_LWR_MODEL" 1>&6
+
+
+DFT_UPR_MODEL=`echo $DFT_LWR_MODEL | tr '[a-z]' '[A-Z]'`
+
+
+TINFO_NAME=tinfo
+
+
+LIB_NAME=ncurses
+
+
+LIB_DIR=../lib
+
+ case $cf_cv_system_name in
+ os2) LIB_PREFIX='' ;;
+ *) LIB_PREFIX='lib' ;;
+ esac
+cf_prefix=$LIB_PREFIX
+
+
+LIB_PREFIX=$cf_prefix
+
+
+LIB_SUFFIX=
+
+
+###############################################################################
+
echo $ac_n "checking if you want to build a separate terminfo library""... $ac_c" 1>&6
-echo "configure:2204: checking if you want to build a separate terminfo library" >&5
+echo "configure:2310: checking if you want to build a separate terminfo library" >&5
# Check whether --with-termlib or --without-termlib was given.
if test "${with_termlib+set}" = set; then
### Checks for special libraries, must be done up-front.
echo $ac_n "checking if you want to link with dbmalloc for testing""... $ac_c" 1>&6
-echo "configure:2218: checking if you want to link with dbmalloc for testing" >&5
+echo "configure:2324: checking if you want to link with dbmalloc for testing" >&5
# Check whether --with-dbmalloc or --without-dbmalloc was given.
if test "${with_dbmalloc+set}" = set; then
echo "$ac_t""$with_dbmalloc" 1>&6
if test $with_dbmalloc = yes ; then
echo $ac_n "checking for debug_malloc in -ldbmalloc""... $ac_c" 1>&6
-echo "configure:2231: checking for debug_malloc in -ldbmalloc" >&5
+echo "configure:2337: checking for debug_malloc in -ldbmalloc" >&5
ac_lib_var=`echo dbmalloc'_'debug_malloc | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-ldbmalloc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2239 "configure"
+#line 2345 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
debug_malloc()
; return 0; }
EOF
-if { (eval echo configure:2250: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
echo $ac_n "checking if you want to link with dmalloc for testing""... $ac_c" 1>&6
-echo "configure:2280: checking if you want to link with dmalloc for testing" >&5
+echo "configure:2386: checking if you want to link with dmalloc for testing" >&5
# Check whether --with-dmalloc or --without-dmalloc was given.
if test "${with_dmalloc+set}" = set; then
echo "$ac_t""$with_dmalloc" 1>&6
if test $with_dmalloc = yes ; then
echo $ac_n "checking for dmalloc_debug in -ldmalloc""... $ac_c" 1>&6
-echo "configure:2293: checking for dmalloc_debug in -ldmalloc" >&5
+echo "configure:2399: checking for dmalloc_debug in -ldmalloc" >&5
ac_lib_var=`echo dmalloc'_'dmalloc_debug | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-ldmalloc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2301 "configure"
+#line 2407 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
dmalloc_debug()
; return 0; }
EOF
-if { (eval echo configure:2312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2418: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
SHLIB_LIST=""
echo $ac_n "checking if you want to link with the gpm mouse library""... $ac_c" 1>&6
-echo "configure:2343: checking if you want to link with the gpm mouse library" >&5
+echo "configure:2449: checking if you want to link with the gpm mouse library" >&5
# Check whether --with-gpm or --without-gpm was given.
if test "${with_gpm+set}" = set; then
echo "$ac_t""$with_gpm" 1>&6
if test $with_gpm = yes ; then
echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:2356: checking for Gpm_Open in -lgpm" >&5
+echo "configure:2462: checking for Gpm_Open in -lgpm" >&5
ac_lib_var=`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lgpm $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2364 "configure"
+#line 2470 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
Gpm_Open()
; return 0; }
EOF
-if { (eval echo configure:2375: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:2401: checking for $ac_hdr" >&5
+echo "configure:2507: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2406 "configure"
+#line 2512 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2517: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
fi
-TINFO_LIST="$SHLIB_LIST"
-test $with_termlib = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo"
-
-
-
-
-
-echo $ac_n "checking for specified models""... $ac_c" 1>&6
-echo "configure:2453: checking for specified models" >&5
-test -z "$cf_list_models" && cf_list_models=normal
-echo "$ac_t""$cf_list_models" 1>&6
-
-### Use the first model as the default, and save its suffix for use in building
-### up test-applications.
-DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
-
-DFT_UPR_MODEL=`echo $DFT_LWR_MODEL | tr '[a-z]' '[A-Z]'`
-
-
- case $DFT_LWR_MODEL in
- normal) DFT_DEP_SUFFIX='.a' ;;
- debug) DFT_DEP_SUFFIX='_g.a' ;;
- profile) DFT_DEP_SUFFIX='_p.a' ;;
- shared)
- case $cf_cv_system_name in
- openbsd*|freebsd*)
- DFT_DEP_SUFFIX='.so.$(REL_VERSION)' ;;
- netbsd*)
- if test -f /usr/libexec/ld.elf_so; then
- DFT_DEP_SUFFIX='.so'
- else
- DFT_DEP_SUFFIX='.so.$(REL_VERSION)'
- fi
- ;;
- hpux*) DFT_DEP_SUFFIX='.sl' ;;
- *) DFT_DEP_SUFFIX='.so' ;;
- esac
- esac
-
- case $DFT_LWR_MODEL in
- normal) DFT_ARG_SUFFIX='' ;;
- debug) DFT_ARG_SUFFIX='_g' ;;
- profile) DFT_ARG_SUFFIX='_p' ;;
- shared) DFT_ARG_SUFFIX='' ;;
- esac
-
- case $DFT_LWR_MODEL in
- normal) DFT_OBJ_SUBDIR='objects' ;;
- debug) DFT_OBJ_SUBDIR='obj_g' ;;
- profile) DFT_OBJ_SUBDIR='obj_p' ;;
- shared) DFT_OBJ_SUBDIR='obj_s' ;;
- esac
-
-TINFO_NAME=tinfo
-
-
-LIB_NAME=ncurses
-
-
-LIB_DIR=../lib
-
- case $cf_cv_system_name in
- os2) cf_prefix='' ;;
- *) cf_prefix='lib' ;;
- esac
- LIB_PREFIX=$cf_prefix
-
-
-LIB_PREFIX=$LIB_DIR/$cf_prefix
-
-
if test X"$CC_G_OPT" = X"" ; then
CC_G_OPT='-g'
fi
+echo $ac_n "checking for default loader flags""... $ac_c" 1>&6
+echo "configure:2565: checking for default loader flags" >&5
case $DFT_LWR_MODEL in
normal) LD_MODEL='' ;;
debug) LD_MODEL=$CC_G_OPT ;;
profile) LD_MODEL='-pg';;
shared) LD_MODEL='' ;;
esac
+echo "$ac_t""$LD_MODEL" 1>&6
echo $ac_n "checking if rpath option should be used""... $ac_c" 1>&6
-echo "configure:2537: checking if rpath option should be used" >&5
+echo "configure:2575: checking if rpath option should be used" >&5
# Check whether --enable-rpath or --disable-rpath was given.
if test "${enable_rpath+set}" = set; then
cf_cv_do_symlinks=no
echo $ac_n "checking if release/abi version should be used for shared libs""... $ac_c" 1>&6
-echo "configure:2559: checking if release/abi version should be used for shared libs" >&5
+echo "configure:2597: checking if release/abi version should be used for shared libs" >&5
# Check whether --with-shlib-version or --without-shlib-version was given.
if test "${with_shlib_version+set}" = set; then
cf_cv_rm_so_locs=no
+ # Some less-capable ports of gcc support only -fpic
+ CC_SHARED_OPTS=
+ if test -n "$GCC"
+ then
+ echo $ac_n "checking which $CC option to use""... $ac_c" 1>&6
+echo "configure:2628: checking which $CC option to use" >&5
+ cf_save_CFLAGS="$CFLAGS"
+ for CC_SHARED_OPTS in -fPIC -fpic ''
+ do
+ CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS"
+ cat > conftest.$ac_ext <<EOF
+#line 2634 "configure"
+#include "confdefs.h"
+#include <stdio.h>
+int main() {
+int x = 1
+; return 0; }
+EOF
+if { (eval echo configure:2641: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ break
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+fi
+rm -f conftest*
+ done
+ echo "$ac_t""$CC_SHARED_OPTS" 1>&6
+ CFLAGS="$cf_save_CFLAGS"
+ fi
+
case $cf_cv_system_name in
+ beos*)
+ MK_SHARED_LIB='$(CC) -o $@ -Xlinker -soname=`basename $@` -nostart -e 0'
+ ;;
hpux10.*)
# (tested with gcc 2.7.2 -- I don't have c89)
if test -n "$GCC"; then
- CC_SHARED_OPTS='-fPIC'
LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
else
CC_SHARED_OPTS='+Z'
hpux*)
# (tested with gcc 2.7.2 -- I don't have c89)
if test -n "$GCC"; then
- CC_SHARED_OPTS='-fPIC'
LD_SHARED_OPTS='-Xlinker +b -Xlinker $(libdir)'
else
CC_SHARED_OPTS='+Z'
;;
irix*)
# tested with IRIX 5.2 and 'cc'.
- if test -n "$GCC"; then
- CC_SHARED_OPTS='-fPIC'
- else
+ if test -z "$GCC"; then
CC_SHARED_OPTS='-KPIC'
fi
MK_SHARED_LIB='$(LD) -shared -rdata_shared -soname `basename $@` -o $@'
;;
linux*|gnu*)
# tested with Linux 2.0.29 and gcc 2.7.2 (ELF)
- CC_SHARED_OPTS='-fpic'
test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-Wl,-rpath,"
if test $DFT_LWR_MODEL = "shared" ; then
LOCAL_LDFLAGS='-Wl,-rpath,../lib'
LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
fi
test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
- if test $cf_cv_shlib_version = no ; then
- MK_SHARED_LIB='$(CC) -shared -Wl,-stats,-lc -o $@'
- else
- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@.$(ABI_VERSION)`,-stats,-lc -o $@'
- fi
+ MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@ .$(REL_VERSION)`.$(ABI_VERSION),-stats,-lc -o $@'
;;
openbsd2*)
- CC_SHARED_OPTS='-fpic -DPIC'
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
MK_SHARED_LIB='$(LD) -Bshareable -soname,`basename $@.$(ABI_VERSION)` -o $@'
;;
openbsd*|freebsd*)
- CC_SHARED_OPTS='-fpic -DPIC'
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
MK_SHARED_LIB='$(LD) -Bshareable -o $@'
test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
;;
netbsd*)
- CC_SHARED_OPTS='-fpic -DPIC'
+ CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC"
test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-Wl,-rpath,"
if test $DFT_LWR_MODEL = "shared" && test $cf_cv_ld_rpath = yes ; then
LOCAL_LDFLAGS='-Wl,-rpath,../lib'
LOCAL_LDFLAGS2='-Wl,-rpath,../../lib'
EXTRA_LDFLAGS="-Wl,-rpath,\$(libdir) $EXTRA_LDFLAGS"
- MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@.$(ABI_VERSION)` -o $@'
- test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
+ MK_SHARED_LIB='$(CC) -shared -Wl,-soname,`basename $@ .$(REL_VERSION)`.$(ABI_VERSION) -o $@'
+ if test $cf_cv_shlib_version = auto; then
+ if test ! -f /usr/libexec/ld.elf_so; then
+ cf_cv_shlib_version=rel
+ fi
+ fi
else
MK_SHARED_LIB='$(LD) -Bshareable -o $@'
fi
# 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).
- CC_SHARED_OPTS=''
MK_SHARED_LIB='$(LD) -set_version $(REL_VERSION):$(ABI_VERSION) -expect_unresolved "*" -shared -soname `basename $@`'
test $cf_cv_ld_rpath = yes && cf_ld_rpath_opt="-rpath"
case $host_os in
;;
sco3.2v5*) # (also uw2* and UW7) hops 13-Apr-98
# tested with osr5.0.5
- if test $ac_cv_prog_gcc = yes; then
- CC_SHARED_OPTS='-fpic'
- else
+ if test $ac_cv_prog_gcc != yes; then
CC_SHARED_OPTS='-belf -KPIC'
fi
- MK_SHARED_LIB='$(LD) -dy -G -h `basename $@.$(ABI_VERSION)` -o $@'
+ MK_SHARED_LIB='$(LD) -dy -G -h `basename $@ .$(REL_VERSION)`.$(ABI_VERSION) -o $@'
if test $cf_cv_ld_rpath = yes ; then
# only way is to set LD_RUN_PATH but no switch for it
RUN_PATH=$libdir
;;
sunos4*)
# tested with SunOS 4.1.1 and gcc 2.7.0
- if test $ac_cv_prog_gcc = yes; then
- CC_SHARED_OPTS='-fpic'
- else
+ if test $ac_cv_prog_gcc != yes; then
CC_SHARED_OPTS='-KPIC'
fi
MK_SHARED_LIB='$(LD) -assert pure-text -o $@'
;;
solaris2*)
# tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2
- if test $ac_cv_prog_gcc = yes; then
- CC_SHARED_OPTS='-fpic'
- else
+ if test $ac_cv_prog_gcc != yes; then
CC_SHARED_OPTS='-KPIC'
fi
- MK_SHARED_LIB='$(LD) -dy -G -h `basename $@.$(ABI_VERSION)` -o $@'
+ MK_SHARED_LIB='$(LD) -dy -G -h `basename $@ .$(REL_VERSION)`.$(ABI_VERSION) -o $@'
if test $cf_cv_ld_rpath = yes ; then
cf_ld_rpath_opt="-R"
EXTRA_LDFLAGS="-R ../lib:\$(libdir) $EXTRA_LDFLAGS"
fi
test $cf_cv_shlib_version = auto && cf_cv_shlib_version=rel
;;
- unix_sv*)
- # tested with UnixWare 1.1.2
- CC_SHARED_OPTS='-KPIC'
+ sysv5uw7*|unix_sv*)
+ # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc)
+ if test $ac_cv_prog_gcc != yes; then
+ CC_SHARED_OPTS='-KPIC'
+ fi
MK_SHARED_LIB='$(LD) -d y -G -o $@'
;;
*)
rel|abi)
case "$MK_SHARED_LIB" in #(vi
*'-o $@')
- if test "$cf_cv_do_symlinks" = reverse ; then
- { echo "configure: error: cannot use --with-shlib-version with this platform" 1>&2; exit 1; }
- fi
- if test "$cf_cv_shlib_version" = rel ; then
- MK_SHARED_LIB="$MK_SHARED_LIB"'.$(REL_VERSION)'
- else
- MK_SHARED_LIB="$MK_SHARED_LIB"'.$(ABI_VERSION)'
- fi
- cf_cv_do_symlinks=yes
+ test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes
;;
*)
echo "configure: warning: ignored --with-shlib-version" 1>&2
if test -n "$cf_ld_rpath_opt" ; then
echo $ac_n "checking if we need a space after rpath option""... $ac_c" 1>&6
-echo "configure:2756: checking if we need a space after rpath option" >&5
+echo "configure:2810: checking if we need a space after rpath option" >&5
cf_save_LIBS="$LIBS"
LIBS="$LIBS ${cf_ld_rpath_opt}/usr/lib"
cat > conftest.$ac_ext <<EOF
-#line 2760 "configure"
+#line 2814 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:2767: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2821: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cf_rpath_space=no
else
### use option --disable-overwrite to leave out the link to -lcurses
echo $ac_n "checking if you wish to install ncurses overwriting curses""... $ac_c" 1>&6
-echo "configure:2806: checking if you wish to install ncurses overwriting curses" >&5
+echo "configure:2860: checking if you wish to install ncurses overwriting curses" >&5
# Check whether --enable-overwrite or --disable-overwrite was given.
if test "${enable_overwrite+set}" = set; then
enableval="$enable_overwrite"
with_overwrite=$enableval
- test "$with_overwrite" = no && \
- test "x$includedir" = 'x${prefix}/include' && \
- includedir='$(prefix)/include/ncurses'
-
else
with_overwrite=yes
fi
echo "$ac_t""$with_overwrite" 1>&6
-echo $ac_n "checking where we will install curses.h""... $ac_c" 1>&6
-echo "configure:2822: checking where we will install curses.h" >&5
-echo "$ac_t""$includedir" 1>&6
echo $ac_n "checking if external terminfo-database is used""... $ac_c" 1>&6
-echo "configure:2826: checking if external terminfo-database is used" >&5
+echo "configure:2873: checking if external terminfo-database is used" >&5
# Check whether --enable-database or --disable-database was given.
if test "${enable_database+set}" = set; then
EOF
-echo $ac_n "checking if you want to build with function extensions""... $ac_c" 1>&6
-echo "configure:2843: checking if you want to build with function extensions" >&5
-
-# 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 "$ac_t""$with_ext_funcs" 1>&6
-test "$with_ext_funcs" = yes && cat >> confdefs.h <<\EOF
-#define NCURSES_EXT_FUNCS 1
-EOF
-
-
echo $ac_n "checking for list of fallback descriptions""... $ac_c" 1>&6
-echo "configure:2860: checking for list of fallback descriptions" >&5
+echo "configure:2890: checking for list of fallback descriptions" >&5
# Check whether --with-fallbacks or --without-fallbacks was given.
if test "${with_fallbacks+set}" = set; then
echo $ac_n "checking for list of terminfo directories""... $ac_c" 1>&6
-echo "configure:2875: checking for list of terminfo directories" >&5
+echo "configure:2905: checking for list of terminfo directories" >&5
# Check whether --with-terminfo-dirs or --without-terminfo-dirs was given.
case ".$cf_src_path" in #(vi
./*) #(vi
;;
+.a-zA-Z:\\/*) #(vi OS/2 EMX
+ ;;
.\${*prefix}*) #(vi
eval cf_src_path="$cf_src_path"
case ".$cf_src_path" in #(vi
### use option --disable-big-core to make tic run on small machines
### We need 4Mb, check if we can allocate 50% more than that.
echo $ac_n "checking if big-core option selected""... $ac_c" 1>&6
-echo "configure:2932: checking if big-core option selected" >&5
+echo "configure:2964: checking if big-core option selected" >&5
# Check whether --enable-big-core or --disable-big-core was given.
if test "${enable_big_core+set}" = set; then
with_big_core=no
else
cat > conftest.$ac_ext <<EOF
-#line 2943 "configure"
+#line 2975 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <string.h>
int main() { exit(malloc(6000000L) == 0); }
EOF
-if { (eval echo configure:2950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
with_big_core=yes
else
### use option --enable-termcap to compile in the termcap fallback support
echo $ac_n "checking if you want termcap-fallback support""... $ac_c" 1>&6
-echo "configure:2972: checking if you want termcap-fallback support" >&5
+echo "configure:3004: checking if you want termcap-fallback support" >&5
# Check whether --enable-termcap or --disable-termcap was given.
if test "${enable_termcap+set}" = set; then
### use option --enable-getcap to use a hacked getcap for reading termcaps
echo $ac_n "checking if fast termcap-loader is needed""... $ac_c" 1>&6
-echo "configure:2993: checking if fast termcap-loader is needed" >&5
+echo "configure:3025: checking if fast termcap-loader is needed" >&5
# Check whether --enable-getcap or --disable-getcap was given.
if test "${enable_getcap+set}" = set; then
echo $ac_n "checking if translated termcaps will be cached in ~/.terminfo""... $ac_c" 1>&6
-echo "configure:3010: checking if translated termcaps will be cached in ~/.terminfo" >&5
+echo "configure:3042: checking if translated termcaps will be cached in ~/.terminfo" >&5
# Check whether --enable-getcap-cache or --disable-getcap-cache was given.
if test "${enable_getcap_cache+set}" = set; then
unlink
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3036: checking for $ac_func" >&5
+echo "configure:3068: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3041 "configure"
+#line 3073 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:3064: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3096: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
symlink
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3095: checking for $ac_func" >&5
+echo "configure:3127: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3100 "configure"
+#line 3132 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:3123: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
else
echo $ac_n "checking if link/symlink functions work""... $ac_c" 1>&6
-echo "configure:3149: checking if link/symlink functions work" >&5
+echo "configure:3181: checking if link/symlink functions work" >&5
if eval "test \"`echo '$''{'cf_cv_link_funcs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
eval 'ac_cv_func_'$cf_func'=error'
else
cat > conftest.$ac_ext <<EOF
-#line 3161 "configure"
+#line 3193 "configure"
#include "confdefs.h"
#include <sys/types.h>
}
EOF
-if { (eval echo configure:3190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:3222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
cf_cv_link_funcs="$cf_cv_link_funcs $cf_func"
if test "$ac_cv_func_link" != yes ; then
echo $ac_n "checking if tic should use symbolic links""... $ac_c" 1>&6
-echo "configure:3226: checking if tic should use symbolic links" >&5
+echo "configure:3258: checking if tic should use symbolic links" >&5
if test "$ac_cv_func_symlink" = yes ; then
with_symlinks=yes
else
echo "$ac_t""$with_symlinks" 1>&6
elif test "$ac_cv_func_symlink" != yes ; then
echo $ac_n "checking if tic should use hard links""... $ac_c" 1>&6
-echo "configure:3235: checking if tic should use hard links" >&5
+echo "configure:3267: checking if tic should use hard links" >&5
if test "$ac_cv_func_link" = yes ; then
with_links=yes
else
echo "$ac_t""$with_links" 1>&6
else
echo $ac_n "checking if tic should use symbolic links""... $ac_c" 1>&6
-echo "configure:3244: checking if tic should use symbolic links" >&5
+echo "configure:3276: checking if tic should use symbolic links" >&5
# Check whether --enable-symlinks or --disable-symlinks was given.
if test "${enable_symlinks+set}" = set; then
EOF
+### use option --enable-broken-linker to force on use of broken-linker support
+echo $ac_n "checking if you want broken-linker support code""... $ac_c" 1>&6
+echo "configure:3300: checking if you want broken-linker support code" >&5
+
+# 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
+fi
+
+echo "$ac_t""$with_broken_linker" 1>&6
+test "$with_broken_linker" = yes && cat >> confdefs.h <<\EOF
+#define BROKEN_LINKER 1
+EOF
+
+
### use option --enable-bsdpad to have tputs process BSD-style prefix padding
echo $ac_n "checking if tputs should process BSD-style prefix padding""... $ac_c" 1>&6
-echo "configure:3268: checking if tputs should process BSD-style prefix padding" >&5
+echo "configure:3318: checking if tputs should process BSD-style prefix padding" >&5
# Check whether --enable-bsdpad or --disable-bsdpad was given.
if test "${enable_bsdpad+set}" = set; then
EOF
+### Enable compiling-in rcs id's
+echo $ac_n "checking if RCS identifiers should be compiled-in""... $ac_c" 1>&6
+echo "configure:3336: checking if RCS identifiers should be compiled-in" >&5
+
+# 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 "$ac_t""$with_rcs_ids" 1>&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 $ac_n "checking if you want to build with function extensions""... $ac_c" 1>&6
+echo "configure:3357: checking if you want to build with function extensions" >&5
+
+# 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 "$ac_t""$with_ext_funcs" 1>&6
+if test "$with_ext_funcs" = yes ; then
+ 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_USE_DEFAULT_COLORS 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define HAVE_WRESIZE 1
+EOF
+
+ cat >> confdefs.h <<\EOF
+#define NCURSES_EXT_FUNCS 1
+EOF
+
+fi
+
### use option --enable-const to turn on use of const beyond that in XSI.
echo $ac_n "checking for extended use of const keyword""... $ac_c" 1>&6
-echo "configure:3286: checking for extended use of const keyword" >&5
+echo "configure:3393: checking for extended use of const keyword" >&5
# Check whether --enable-const or --disable-const was given.
if test "${enable_const+set}" = set; then
fi
-### Enable compiling-in rcs id's
-echo $ac_n "checking if RCS identifiers should be compiled-in""... $ac_c" 1>&6
-echo "configure:3309: checking if RCS identifiers should be compiled-in" >&5
+### use option --enable-hashmap to turn on use of hashmap scrolling logic
+echo $ac_n "checking if you want hashmap scrolling-optimization code""... $ac_c" 1>&6
+echo "configure:3416: checking if you want hashmap scrolling-optimization code" >&5
-# 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
+# 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 "$ac_t""$with_hashmap" 1>&6
+test "$with_hashmap" = yes && cat >> confdefs.h <<\EOF
+#define USE_HASHMAP 1
+EOF
+
+
+echo $ac_n "checking if you want \$NCURSES_NO_PADDING code""... $ac_c" 1>&6
+echo "configure:3433: checking if you want \$NCURSES_NO_PADDING code" >&5
+
+# 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 "$ac_t""$with_no_padding" 1>&6
+test "$with_no_padding" = yes && cat >> confdefs.h <<\EOF
+#define NCURSES_NO_PADDING 1
+EOF
+
+
+### use option --enable-sigwinch to turn on use of SIGWINCH logic
+echo $ac_n "checking if you want SIGWINCH handler""... $ac_c" 1>&6
+echo "configure:3451: checking if you want SIGWINCH handler" >&5
+
+# 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 "$ac_t""$with_sigwinch" 1>&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 $ac_n "checking if you want user-definable terminal capabilities like termcap""... $ac_c" 1>&6
+echo "configure:3469: checking if you want user-definable terminal capabilities like termcap" >&5
+
+# 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_rcs_ids=no
+ with_tcap_names=$with_ext_funcs
fi
-echo "$ac_t""$with_rcs_ids" 1>&6
-test "$with_rcs_ids" = yes && cat >> confdefs.h <<\EOF
-#define USE_RCS_IDS 1
-EOF
+echo "$ac_t""$with_tcap_names" 1>&6
+NCURSES_XNAMES=0
+test "$with_tcap_names" = yes && NCURSES_XNAMES=1
###############################################################################
echo $ac_n "checking if you want all experimental code""... $ac_c" 1>&6
-echo "configure:3328: checking if you want all experimental code" >&5
+echo "configure:3487: checking if you want all experimental code" >&5
# Check whether --with-develop or --without-develop was given.
if test "${with_develop+set}" = set; then
echo "$ac_t""$with_develop" 1>&6
-### use option --enable-broken-linker to force on use of broken-linker support
-echo $ac_n "checking if you want broken-linker support code""... $ac_c" 1>&6
-echo "configure:3342: checking if you want broken-linker support code" >&5
+### use option --enable-colorfgbg to turn on use of $COLORFGBG environment
+echo $ac_n "checking if you want experimental colorfgbg code""... $ac_c" 1>&6
+echo "configure:3501: checking if you want experimental colorfgbg code" >&5
-# 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
+# Check whether --enable-hard-tabs or --disable-hard-tabs was given.
+if test "${enable_hard_tabs+set}" = set; then
+ enableval="$enable_hard_tabs"
+ with_colorfgbg=$enableval
else
- with_broken_linker=$BROKEN_LINKER
+ with_colorfgbg=$with_develop
fi
-echo "$ac_t""$with_broken_linker" 1>&6
-test "$with_broken_linker" = yes && cat >> confdefs.h <<\EOF
-#define BROKEN_LINKER 1
+echo "$ac_t""$with_colorfgbg" 1>&6
+test "$with_colorfgbg" = yes && cat >> confdefs.h <<\EOF
+#define USE_COLORFGBG 1
EOF
### use option --enable-hard-tabs to turn on use of hard-tabs optimize
echo $ac_n "checking if you want experimental hard-tabs code""... $ac_c" 1>&6
-echo "configure:3360: checking if you want experimental hard-tabs code" >&5
+echo "configure:3519: checking if you want experimental hard-tabs code" >&5
# Check whether --enable-hard-tabs or --disable-hard-tabs was given.
if test "${enable_hard_tabs+set}" = set; then
EOF
-### use option --enable-hashmap to turn on use of hashmap scrolling logic
-echo $ac_n "checking if you want experimental hashmap code""... $ac_c" 1>&6
-echo "configure:3378: checking if you want experimental hashmap code" >&5
-
-# 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 "$ac_t""$with_hashmap" 1>&6
-test "$with_hashmap" = yes && cat >> confdefs.h <<\EOF
-#define USE_HASHMAP 1
-EOF
-
-
-echo $ac_n "checking if you want experimental no-padding code""... $ac_c" 1>&6
-echo "configure:3395: checking if you want experimental no-padding code" >&5
-
-# 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=yes
-fi
-
-echo "$ac_t""$with_no_padding" 1>&6
-test "$with_no_padding" = yes && cat >> confdefs.h <<\EOF
-#define NCURSES_NO_PADDING 1
-EOF
-
-
echo $ac_n "checking if you want experimental safe-sprintf code""... $ac_c" 1>&6
-echo "configure:3412: checking if you want experimental safe-sprintf code" >&5
+echo "configure:3536: checking if you want experimental safe-sprintf code" >&5
# Check whether --enable-safe-sprintf or --disable-safe-sprintf was given.
if test "${enable_safe_sprintf+set}" = set; then
### 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 $ac_n "checking if you want to experiment without scrolling-hints code""... $ac_c" 1>&6
-echo "configure:3430: checking if you want to experiment without scrolling-hints code" >&5
+echo "configure:3556: checking if you want to experiment without scrolling-hints code" >&5
# 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;
- # when hashmap is used scroll hints are useless
- test $with_hashmap = yes && with_scroll_hints=no
+ with_scroll_hints=yes
fi
echo "$ac_t""$with_scroll_hints" 1>&6
#define USE_SCROLL_HINTS 1
EOF
-
-### use option --enable-tcap-names to allow user to define new capabilities
-echo $ac_n "checking if you want experimental definable names like termcap""... $ac_c" 1>&6
-echo "configure:3450: checking if you want experimental definable names like termcap" >&5
-
-# 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_develop
-fi
-
-echo "$ac_t""$with_tcap_names" 1>&6
-NCURSES_XNAMES=0
-test "$with_tcap_names" = yes && NCURSES_XNAMES=1
-
-
-### use option --enable-sigwinch to turn on use of SIGWINCH logic
-echo $ac_n "checking if you want experimental SIGWINCH handler""... $ac_c" 1>&6
-echo "configure:3467: checking if you want experimental SIGWINCH handler" >&5
-
-# 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=yes
fi
-echo "$ac_t""$with_sigwinch" 1>&6
-test "$with_sigwinch" = yes && cat >> confdefs.h <<\EOF
-#define USE_SIGWINCH 1
-EOF
-
-
### use option --enable-widec to turn on use of wide-character support
echo $ac_n "checking if you want experimental wide-character code""... $ac_c" 1>&6
-echo "configure:3485: checking if you want experimental wide-character code" >&5
+echo "configure:3575: checking if you want experimental wide-character code" >&5
# Check whether --enable-widec or --disable-widec was given.
if test "${enable_widec+set}" = set; then
fi
echo "$ac_t""$with_widec" 1>&6
-test "$with_widec" = yes && cat >> confdefs.h <<\EOF
+if test "$with_widec" = yes ; then
+ LIB_SUFFIX="w${LIB_SUFFIX}"
+ cat >> confdefs.h <<\EOF
#define USE_WIDEC_SUPPORT 1
EOF
+fi
### use option --enable-xmc-glitch to turn on use of magic-cookie optimize
echo $ac_n "checking if you want experimental xmc code""... $ac_c" 1>&6
-echo "configure:3503: checking if you want experimental xmc code" >&5
+echo "configure:3596: checking if you want experimental xmc code" >&5
# Check whether --enable-xmc-glitch or --disable-xmc-glitch was given.
if test "${enable_xmc_glitch+set}" = set; then
if test -n "$GCC"
then
cat > conftest.$ac_ext <<EOF
-#line 3553 "configure"
+#line 3646 "configure"
int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; }
EOF
echo "checking for $CC warning options" 1>&6
-echo "configure:3557: checking for $CC warning options" >&5
+echo "configure:3650: checking for $CC warning options" >&5
cf_save_CFLAGS="$CFLAGS"
EXTRA_CFLAGS="-W -Wall"
cf_warn_CONST=""
Wstrict-prototypes $cf_warn_CONST
do
CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt"
- if { (eval echo configure:3575: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo configure:3668: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
test -n "$verbose" && echo "$ac_t""... -$cf_opt" 1>&6
EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt"
test "$cf_opt" = Wcast-qual && EXTRA_CFLAGS="$EXTRA_CFLAGS -DXTSTRINGDEFINES"
if test -n "$GCC"
then
echo "checking for $CC __attribute__ directives" 1>&6
-echo "configure:3607: checking for $CC __attribute__ directives" >&5
+echo "configure:3700: checking for $CC __attribute__ directives" >&5
cat > conftest.$ac_ext <<EOF
-#line 3609 "configure"
+#line 3702 "configure"
#include "confdefs.h"
#include "conftest.h"
#include "conftest.i"
EOF
;;
esac
- if { (eval echo configure:3647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo configure:3740: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
test -n "$verbose" && echo "$ac_t""... $cf_attribute" 1>&6
cat conftest.h >>confdefs.h
# else
### Checks for libraries.
echo $ac_n "checking for gettimeofday""... $ac_c" 1>&6
-echo "configure:3727: checking for gettimeofday" >&5
+echo "configure:3820: checking for gettimeofday" >&5
if eval "test \"`echo '$''{'ac_cv_func_gettimeofday'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3732 "configure"
+#line 3825 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gettimeofday(); below. */
; return 0; }
EOF
-if { (eval echo configure:3755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3848: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_gettimeofday=yes"
else
echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
-echo "configure:3778: checking for gettimeofday in -lbsd" >&5
+echo "configure:3871: checking for gettimeofday in -lbsd" >&5
ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lbsd $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3786 "configure"
+#line 3879 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
gettimeofday()
; return 0; }
EOF
-if { (eval echo configure:3797: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
-MATH_LIB=""
-echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:3825: checking for sin" >&5
-if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 3830 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char sin(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char sin();
-
-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_sin) || defined (__stub___sin)
-choke me
-#else
-sin();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:3853: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_sin=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_sin=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_func_'sin`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- :
-else
- echo "$ac_t""no" 1>&6
-echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:3871: checking for sin in -lm" >&5
-ac_lib_var=`echo m'_'sin | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
+echo $ac_n "checking if -lm needed for math functions""... $ac_c" 1>&6
+echo "configure:3918: checking if -lm needed for math functions" >&5
+if eval "test \"`echo '$''{'cf_cv_need_libm'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
- ac_save_LIBS="$LIBS"
-LIBS="-lm $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 3879 "configure"
+
+ cat > conftest.$ac_ext <<EOF
+#line 3924 "configure"
#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char sin();
+ #include <stdio.h>
+ #include <math.h>
+
int main() {
-sin()
+double x = rand(); printf("result = %g\n", sin(x))
; return 0; }
EOF
-if { (eval echo configure:3890: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
+ cf_cv_need_libm=no
else
echo "configure: failed program was:" >&5
cat conftest.$ac_ext >&5
rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
+ cf_cv_need_libm=yes
fi
rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- MATH_LIB="-lm"
-else
- echo "$ac_t""no" 1>&6
fi
+echo "$ac_t""$cf_cv_need_libm" 1>&6
+if test "$cf_cv_need_libm" = yes
+then
+MATH_LIB=-lm
fi
### Checks for header files.
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3916: checking for ANSI C header files" >&5
+echo "configure:3956: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3921 "configure"
+#line 3961 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3929: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3969: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 3946 "configure"
+#line 3986 "configure"
#include "confdefs.h"
#include <string.h>
EOF
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 <<EOF
-#line 3964 "configure"
+#line 4004 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
:
else
cat > conftest.$ac_ext <<EOF
-#line 3985 "configure"
+#line 4025 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
exit (0); }
EOF
-if { (eval echo configure:3996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6
-echo "configure:4024: checking for $ac_hdr that defines DIR" >&5
+echo "configure:4064: checking for $ac_hdr that defines DIR" >&5
if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4029 "configure"
+#line 4069 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <$ac_hdr>
DIR *dirp = 0;
; return 0; }
EOF
-if { (eval echo configure:4037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4077: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_header_dirent_$ac_safe=yes"
else
# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix.
if test $ac_header_dirent = dirent.h; then
echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6
-echo "configure:4062: checking for opendir in -ldir" >&5
+echo "configure:4102: checking for opendir in -ldir" >&5
ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-ldir $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4070 "configure"
+#line 4110 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
opendir()
; return 0; }
EOF
-if { (eval echo configure:4081: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4121: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
else
echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6
-echo "configure:4103: checking for opendir in -lx" >&5
+echo "configure:4143: checking for opendir in -lx" >&5
ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lx $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4111 "configure"
+#line 4151 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
opendir()
; return 0; }
EOF
-if { (eval echo configure:4122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4162: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
echo $ac_n "checking for regular-expression headers""... $ac_c" 1>&6
-echo "configure:4146: checking for regular-expression headers" >&5
+echo "configure:4186: checking for regular-expression headers" >&5
if eval "test \"`echo '$''{'cf_cv_regex'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4152 "configure"
+#line 4192 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <regex.h>
; return 0; }
EOF
-if { (eval echo configure:4165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cf_cv_regex="regex.h"
else
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 4174 "configure"
+#line 4214 "configure"
#include "confdefs.h"
#include <regexp.h>
int main() {
; return 0; }
EOF
-if { (eval echo configure:4184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cf_cv_regex="regexp.h"
else
cf_save_LIBS="$LIBS"
LIBS="-lgen $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4195 "configure"
+#line 4235 "configure"
#include "confdefs.h"
#include <regexpr.h>
int main() {
; return 0; }
EOF
-if { (eval echo configure:4205: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4245: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cf_cv_regex="regexpr.h"
else
libc.h \
limits.h \
locale.h \
+poll.h \
sys/bsdtypes.h \
sys/ioctl.h \
sys/param.h \
-poll.h \
+sys/poll.h \
sys/select.h \
-sys/stropts.h \
sys/time.h \
sys/times.h \
termio.h \
termios.h \
ttyent.h \
unistd.h \
-values.h \
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4262: checking for $ac_hdr" >&5
+echo "configure:4301: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4267 "configure"
+#line 4306 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4272: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4311: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
# Note: even non-Posix ISC needs <sys/bsdtypes.h> to declare fd_set
if test "$ISC" = yes ; then
echo $ac_n "checking for main in -lcposix""... $ac_c" 1>&6
-echo "configure:4303: checking for main in -lcposix" >&5
+echo "configure:4342: checking for main in -lcposix" >&5
ac_lib_var=`echo cposix'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-lcposix $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4311 "configure"
+#line 4350 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
fi
echo $ac_n "checking for bzero in -linet""... $ac_c" 1>&6
-echo "configure:4346: checking for bzero in -linet" >&5
+echo "configure:4385: checking for bzero in -linet" >&5
ac_lib_var=`echo inet'_'bzero | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
ac_save_LIBS="$LIBS"
LIBS="-linet $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4354 "configure"
+#line 4393 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
bzero()
; return 0; }
EOF
-if { (eval echo configure:4365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4404: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4388: checking for $ac_hdr" >&5
+echo "configure:4427: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4393 "configure"
+#line 4432 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4398: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4437: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
echo $ac_n "checking if sys/time.h works with sys/select.h""... $ac_c" 1>&6
-echo "configure:4428: checking if sys/time.h works with sys/select.h" >&5
+echo "configure:4467: checking if sys/time.h works with sys/select.h" >&5
if eval "test \"`echo '$''{'cf_cv_sys_time_select'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4434 "configure"
+#line 4473 "configure"
#include "confdefs.h"
#include <sys/types.h>
; return 0; }
EOF
-if { (eval echo configure:4449: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4488: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cf_cv_sys_time_select=yes
else
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4478: checking for working const" >&5
+echo "configure:4517: checking for working const" >&5
if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4483 "configure"
+#line 4522 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:4532: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4571: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
fi
echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:4553: checking for inline" >&5
+echo "configure:4592: checking for inline" >&5
if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
ac_cv_c_inline=no
for ac_kw in inline __inline__ __inline; do
cat > conftest.$ac_ext <<EOF
-#line 4560 "configure"
+#line 4599 "configure"
#include "confdefs.h"
int main() {
} $ac_kw foo() {
; return 0; }
EOF
-if { (eval echo configure:4567: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4606: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_inline=$ac_kw; break
else
echo $ac_n "checking if unsigned literals are legal""... $ac_c" 1>&6
-echo "configure:4599: checking if unsigned literals are legal" >&5
+echo "configure:4638: checking if unsigned literals are legal" >&5
if eval "test \"`echo '$''{'cf_cv_unsigned_literals'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4605 "configure"
+#line 4644 "configure"
#include "confdefs.h"
int main() {
long x = 1L + 1UL + 1U + 1
; return 0; }
EOF
-if { (eval echo configure:4612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4651: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cf_cv_unsigned_literals=yes
else
echo $ac_n "checking for type of chtype""... $ac_c" 1>&6
-echo "configure:4630: checking for type of chtype" >&5
+echo "configure:4669: checking for type of chtype" >&5
if eval "test \"`echo '$''{'cf_cv_typeof_chtype'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cf_cv_typeof_chtype=long
else
cat > conftest.$ac_ext <<EOF
-#line 4639 "configure"
+#line 4678 "configure"
#include "confdefs.h"
#if USE_WIDEC_SUPPORT
}
EOF
-if { (eval echo configure:4685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4724: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
cf_cv_typeof_chtype=`cat cf_test.out`
else
echo $ac_n "checking for number of bits in chtype""... $ac_c" 1>&6
-echo "configure:4718: checking for number of bits in chtype" >&5
+echo "configure:4757: checking for number of bits in chtype" >&5
if eval "test \"`echo '$''{'cf_cv_shift_limit'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cf_cv_shift_limit=32
else
cat > conftest.$ac_ext <<EOF
-#line 4727 "configure"
+#line 4766 "configure"
#include "confdefs.h"
#include <stdio.h>
}
EOF
-if { (eval echo configure:4750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4789: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
cf_cv_shift_limit=`cat cf_test.out`
else
echo $ac_n "checking for width of character-index""... $ac_c" 1>&6
-echo "configure:4770: checking for width of character-index" >&5
+echo "configure:4809: checking for width of character-index" >&5
if eval "test \"`echo '$''{'cf_cv_widec_shift'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
echo $ac_n "checking if external errno is declared""... $ac_c" 1>&6
-echo "configure:4797: checking if external errno is declared" >&5
+echo "configure:4836: checking if external errno is declared" >&5
if eval "test \"`echo '$''{'cf_cv_dcl_errno'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4803 "configure"
+#line 4842 "configure"
#include "confdefs.h"
-#if HAVE_STDLIB_H
+#ifdef HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include <stdio.h>
long x = (long) errno
; return 0; }
EOF
-if { (eval echo configure:4816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4855: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
eval 'cf_cv_dcl_'errno'=yes'
else
# It's possible (for near-UNIX clones) that the data doesn't exist
echo $ac_n "checking if external errno exists""... $ac_c" 1>&6
-echo "configure:4847: checking if external errno exists" >&5
+echo "configure:4886: checking if external errno exists" >&5
if eval "test \"`echo '$''{'cf_cv_have_errno'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4853 "configure"
+#line 4892 "configure"
#include "confdefs.h"
#undef errno
errno = 2
; return 0; }
EOF
-if { (eval echo configure:4863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4902: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval 'cf_cv_have_'errno'=yes'
else
echo $ac_n "checking if data-only library module links""... $ac_c" 1>&6
-echo "configure:4895: checking if data-only library module links" >&5
+echo "configure:4934: checking if data-only library module links" >&5
if eval "test \"`echo '$''{'cf_cv_link_dataonly'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
rm -f conftest.a
cat >conftest.$ac_ext <<EOF
-#line 4902 "configure"
+#line 4941 "configure"
int testdata[3] = { 123, 456, 789 };
EOF
- if { (eval echo configure:4905: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } ; then
+ if { (eval echo configure:4944: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; } ; then
mv conftest.o data.o && \
( $AR $AR_OPTS conftest.a data.o ) 2>&5 1>/dev/null
fi
rm -f conftest.$ac_ext data.o
cat >conftest.$ac_ext <<EOF
-#line 4911 "configure"
+#line 4950 "configure"
int testfunc()
{
#if defined(NeXT)
#endif
}
EOF
- if { (eval echo configure:4924: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ if { (eval echo configure:4963: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
mv conftest.o func.o && \
( $AR $AR_OPTS conftest.a func.o ) 2>&5 1>/dev/null
fi
cf_cv_link_dataonly=unknown
else
cat > conftest.$ac_ext <<EOF
-#line 4936 "configure"
+#line 4975 "configure"
#include "confdefs.h"
int main()
}
EOF
-if { (eval echo configure:4946: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4985: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
cf_cv_link_dataonly=yes
else
echo $ac_n "checking for speed_t""... $ac_c" 1>&6
-echo "configure:4970: checking for speed_t" >&5
+echo "configure:5009: checking for speed_t" >&5
OSPEED_INCLUDES=
cat > conftest.$ac_ext <<EOF
-#line 4973 "configure"
+#line 5012 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
speed_t some_variable = 0
; return 0; }
EOF
-if { (eval echo configure:4980: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
OSPEED_TYPE=speed_t
else
fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 4991 "configure"
+#line 5030 "configure"
#include "confdefs.h"
#include <termios.h>
int main() {
speed_t some_variable = 0
; return 0; }
EOF
-if { (eval echo configure:4998: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5037: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
OSPEED_TYPE=speed_t
OSPEED_INCLUDES="#include <termios.h>"
### Checks for library functions.
-for ac_func in getcwd \
+for ac_func in \
+getcwd \
getttynam \
memccpy \
+mkstemp \
nanosleep \
poll \
remove \
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:5044: checking for $ac_func" >&5
+echo "configure:5085: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5049 "configure"
+#line 5090 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:5072: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5113: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
fi
done
-
-
if test "$with_getcap" = "yes" ; then
echo $ac_n "checking for terminal-capability database functions""... $ac_c" 1>&6
-echo "configure:5101: checking for terminal-capability database functions" >&5
+echo "configure:5140: checking for terminal-capability database functions" >&5
if eval "test \"`echo '$''{'cf_cv_cgetent'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5107 "configure"
+#line 5146 "configure"
#include "confdefs.h"
#include <stdlib.h>
; return 0; }
EOF
-if { (eval echo configure:5122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cf_cv_cgetent=yes
else
echo $ac_n "checking for isascii""... $ac_c" 1>&6
-echo "configure:5145: checking for isascii" >&5
+echo "configure:5184: checking for isascii" >&5
if eval "test \"`echo '$''{'cf_cv_have_isascii'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5151 "configure"
+#line 5190 "configure"
#include "confdefs.h"
#include <ctype.h>
int main() {
int x = isascii(' ')
; return 0; }
EOF
-if { (eval echo configure:5158: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cf_cv_have_isascii=yes
else
if test $ac_cv_func_sigaction = yes; then
echo $ac_n "checking whether sigaction needs _POSIX_SOURCE""... $ac_c" 1>&6
-echo "configure:5179: checking whether sigaction needs _POSIX_SOURCE" >&5
+echo "configure:5218: checking whether sigaction needs _POSIX_SOURCE" >&5
cat > conftest.$ac_ext <<EOF
-#line 5181 "configure"
+#line 5220 "configure"
#include "confdefs.h"
#include <sys/types.h>
struct sigaction act
; return 0; }
EOF
-if { (eval echo configure:5190: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5229: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
sigact_bad=no
else
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 5199 "configure"
+#line 5238 "configure"
#include "confdefs.h"
#define _POSIX_SOURCE
struct sigaction act
; return 0; }
EOF
-if { (eval echo configure:5209: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5248: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
sigact_bad=yes
cat >> confdefs.h <<\EOF
esac
if test $termios_bad = maybe ; then
echo $ac_n "checking whether termios.h needs _POSIX_SOURCE""... $ac_c" 1>&6
-echo "configure:5237: checking whether termios.h needs _POSIX_SOURCE" >&5
+echo "configure:5276: checking whether termios.h needs _POSIX_SOURCE" >&5
cat > conftest.$ac_ext <<EOF
-#line 5239 "configure"
+#line 5278 "configure"
#include "confdefs.h"
#include <termios.h>
int main() {
struct termios foo; int x = foo.c_iflag
; return 0; }
EOF
-if { (eval echo configure:5246: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5285: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
termios_bad=no
else
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 5255 "configure"
+#line 5294 "configure"
#include "confdefs.h"
#define _POSIX_SOURCE
struct termios foo; int x = foo.c_iflag
; return 0; }
EOF
-if { (eval echo configure:5264: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5303: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
termios_bad=unknown
else
echo "configure: warning: cross compiling: assume setvbuf params not reversed" 1>&2
else
echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6
-echo "configure:5289: checking whether setvbuf arguments are reversed" >&5
+echo "configure:5328: checking whether setvbuf arguments are reversed" >&5
if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 5297 "configure"
+#line 5336 "configure"
#include "confdefs.h"
#include <stdio.h>
/* If setvbuf has the reversed format, exit 0. */
exit(0); /* Non-reversed systems segv here. */
}
EOF
-if { (eval echo configure:5311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5350: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_func_setvbuf_reversed=yes
else
fi
echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:5336: checking return type of signal handlers" >&5
+echo "configure:5375: checking return type of signal handlers" >&5
if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5341 "configure"
+#line 5380 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <signal.h>
int i;
; return 0; }
EOF
-if { (eval echo configure:5358: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_type_signal=void
else
echo $ac_n "checking for type sigaction_t""... $ac_c" 1>&6
-echo "configure:5378: checking for type sigaction_t" >&5
+echo "configure:5417: checking for type sigaction_t" >&5
if eval "test \"`echo '$''{'cf_cv_type_sigaction'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5384 "configure"
+#line 5423 "configure"
#include "confdefs.h"
#include <signal.h>
sigaction_t x
; return 0; }
EOF
-if { (eval echo configure:5392: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5431: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cf_cv_type_sigaction=yes
else
echo $ac_n "checking declaration of size-change""... $ac_c" 1>&6
-echo "configure:5412: checking declaration of size-change" >&5
+echo "configure:5451: checking declaration of size-change" >&5
if eval "test \"`echo '$''{'cf_cv_sizechange'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
CFLAGS="$cf_save_CFLAGS"
test -n "$cf_opts" && CFLAGS="$CFLAGS -D$cf_opts"
cat > conftest.$ac_ext <<EOF
-#line 5426 "configure"
+#line 5465 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if HAVE_TERMIOS_H
; return 0; }
EOF
-if { (eval echo configure:5465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5504: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cf_cv_sizechange=yes
else
echo $ac_n "checking for memmove""... $ac_c" 1>&6
-echo "configure:5497: checking for memmove" >&5
+echo "configure:5536: checking for memmove" >&5
if eval "test \"`echo '$''{'ac_cv_func_memmove'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5502 "configure"
+#line 5541 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char memmove(); below. */
; return 0; }
EOF
-if { (eval echo configure:5525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5564: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_memmove=yes"
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for bcopy""... $ac_c" 1>&6
-echo "configure:5544: checking for bcopy" >&5
+echo "configure:5583: checking for bcopy" >&5
if eval "test \"`echo '$''{'ac_cv_func_bcopy'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5549 "configure"
+#line 5588 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char bcopy(); below. */
; return 0; }
EOF
-if { (eval echo configure:5572: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5611: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_bcopy=yes"
else
echo "$ac_t""yes" 1>&6
echo $ac_n "checking if bcopy does overlapping moves""... $ac_c" 1>&6
-echo "configure:5588: checking if bcopy does overlapping moves" >&5
+echo "configure:5627: checking if bcopy does overlapping moves" >&5
if eval "test \"`echo '$''{'cf_cv_good_bcopy'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cf_cv_good_bcopy=unknown
else
cat > conftest.$ac_ext <<EOF
-#line 5597 "configure"
+#line 5636 "configure"
#include "confdefs.h"
int main() {
}
EOF
-if { (eval echo configure:5610: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
cf_cv_good_bcopy=yes
else
fi
+echo $ac_n "checking if poll really works""... $ac_c" 1>&6
+echo "configure:5687: checking if poll really works" >&5
+if eval "test \"`echo '$''{'cf_cv_working_poll'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+if test "$cross_compiling" = yes; then
+ cf_cv_working_poll=unknown
+else
+ cat > conftest.$ac_ext <<EOF
+#line 5696 "configure"
+#include "confdefs.h"
+
+#include <stdio.h>
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#else
+#include <sys/poll.h>
+#endif
+int main() {
+ struct pollfd myfds;
+ int ret;
+
+ myfds.fd = 0;
+ myfds.events = POLLIN;
+
+ ret = poll(&myfds, 1, 100);
+ exit(ret != 0);
+}
+EOF
+if { (eval echo configure:5716: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ cf_cv_working_poll=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ cf_cv_working_poll=no
+fi
+rm -fr conftest*
+fi
+
+fi
+
+echo "$ac_t""$cf_cv_working_poll" 1>&6
+test "$cf_cv_working_poll" = "yes" && cat >> confdefs.h <<\EOF
+#define HAVE_WORKING_POLL 1
+EOF
+
+
+
if test -z "$cf_user_CFLAGS" ; then
CFLAGS=`echo ${CFLAGS} | sed -e 's/-g //' -e 's/-g$//'`
CXXFLAGS=`echo ${CXXFLAGS} | sed -e 's/-g //' -e 's/-g$//'`
echo $ac_n "checking for builtin $CC bool type""... $ac_c" 1>&6
-echo "configure:5654: checking for builtin $CC bool type" >&5
+echo "configure:5744: checking for builtin $CC bool type" >&5
if eval "test \"`echo '$''{'cf_cv_cc_bool_type'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5660 "configure"
+#line 5750 "configure"
#include "confdefs.h"
#include <stdio.h>
bool x = false
; return 0; }
EOF
-if { (eval echo configure:5670: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:5760: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cf_cv_cc_bool_type=1
else
;;
esac
echo $ac_n "checking for library $cf_stdcpp_libname""... $ac_c" 1>&6
-echo "configure:5707: checking for library $cf_stdcpp_libname" >&5
+echo "configure:5797: checking for library $cf_stdcpp_libname" >&5
if eval "test \"`echo '$''{'cf_cv_libstdcpp'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cf_save="$LIBS"
- LIBS="$LIBS -l$cf_stdcpp_libname -lm"
+ LIBS="$LIBS -l$cf_stdcpp_libname"
cat > conftest.$ac_ext <<EOF
-#line 5715 "configure"
+#line 5805 "configure"
#include "confdefs.h"
#include <strstream.h>
char buf[80];
strstreambuf foo(buf, sizeof(buf))
-//destroy foo
; return 0; }
EOF
-if { (eval echo configure:5727: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5816: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cf_cv_libstdcpp=yes
else
esac
if test $ac_cv_prog_gxx = yes; then
echo $ac_n "checking for lib$cf_gpp_libname""... $ac_c" 1>&6
-echo "configure:5762: checking for lib$cf_gpp_libname" >&5
+echo "configure:5851: checking for lib$cf_gpp_libname" >&5
cf_save="$LIBS"
- LIBS="$LIBS -l$cf_gpp_libname -lm"
+ LIBS="$LIBS -l$cf_gpp_libname"
cat > conftest.$ac_ext <<EOF
-#line 5766 "configure"
+#line 5855 "configure"
#include "confdefs.h"
#include <$cf_gpp_libname/builtin.h>
int main() {
-//float foo=abs(1.0);
- two_arg_error_handler_t foo2 = lib_error_handler
+two_arg_error_handler_t foo2 = lib_error_handler
; return 0; }
EOF
-if { (eval echo configure:5776: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5864: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cf_cxx_library=yes
- CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+ CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
if test "$cf_gpp_libname" = cpp ; then
cat >> confdefs.h <<\EOF
#define HAVE_GPP_BUILTIN_H 1
cat conftest.$ac_ext >&5
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 5796 "configure"
+#line 5884 "configure"
#include "confdefs.h"
#include <builtin.h>
int main() {
-//float foo=abs(1.0);
- two_arg_error_handler_t foo2 = lib_error_handler
+two_arg_error_handler_t foo2 = lib_error_handler
; return 0; }
EOF
-if { (eval echo configure:5806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5893: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
cf_cxx_library=yes
- CXXLIBS="$CXXLIBS -l$cf_gpp_libname -lm"
+ CXXLIBS="$CXXLIBS -l$cf_gpp_libname"
cat >> confdefs.h <<\EOF
#define HAVE_BUILTIN_H 1
EOF
;;
esac
echo $ac_n "checking how to run the C++ preprocessor""... $ac_c" 1>&6
-echo "configure:5833: checking how to run the C++ preprocessor" >&5
+echo "configure:5920: checking how to run the C++ preprocessor" >&5
if test -z "$CXXCPP"; then
if eval "test \"`echo '$''{'ac_cv_prog_CXXCPP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
CXXCPP="${CXX-g++} -E"
cat > conftest.$ac_ext <<EOF
-#line 5846 "configure"
+#line 5933 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5938: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5879: checking for $ac_hdr" >&5
+echo "configure:5966: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5884 "configure"
+#line 5971 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5889: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5976: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
echo $ac_n "checking for builtin $CXX bool type""... $ac_c" 1>&6
-echo "configure:5917: checking for builtin $CXX bool type" >&5
+echo "configure:6004: checking for builtin $CXX bool type" >&5
if eval "test \"`echo '$''{'cf_cv_builtin_bool'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5923 "configure"
+#line 6010 "configure"
#include "confdefs.h"
#include <stdio.h>
bool x = false
; return 0; }
EOF
-if { (eval echo configure:5933: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6020: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cf_cv_builtin_bool=1
else
echo $ac_n "checking for size of $CXX bool""... $ac_c" 1>&6
-echo "configure:5953: checking for size of $CXX bool" >&5
+echo "configure:6040: checking for size of $CXX bool" >&5
if eval "test \"`echo '$''{'cf_cv_type_of_bool'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cf_cv_type_of_bool=unknown
else
cat > conftest.$ac_ext <<EOF
-#line 5963 "configure"
+#line 6050 "configure"
#include "confdefs.h"
#ifdef __cplusplus
extern "C" void exit(int);
}
EOF
-if { (eval echo configure:5995: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
cf_cv_type_of_bool=`cat cf_test.out`
else
echo $ac_n "checking for special defines needed for etip.h""... $ac_c" 1>&6
-echo "configure:6019: checking for special defines needed for etip.h" >&5
+echo "configure:6106: checking for special defines needed for etip.h" >&5
cf_save_CXXFLAGS="$CXXFLAGS"
cf_result="none"
for cf_math in "" MATH_H
test -n "$cf_math" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_math}"
test -n "$cf_excp" && CXXFLAGS="$CXXFLAGS -DETIP_NEEDS_${cf_excp}"
cat > conftest.$ac_ext <<EOF
-#line 6030 "configure"
+#line 6117 "configure"
#include "confdefs.h"
#include <etip.h.in>
; return 0; }
EOF
-if { (eval echo configure:6039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:6126: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
test -n "$cf_math" && cat >> confdefs.h <<EOF
if test -n "$CXX" ; then
echo $ac_n "checking if $CXX accepts parameter initialization""... $ac_c" 1>&6
-echo "configure:6066: checking if $CXX accepts parameter initialization" >&5
+echo "configure:6153: checking if $CXX accepts parameter initialization" >&5
if eval "test \"`echo '$''{'cf_cv_cpp_param_init'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cf_cv_cpp_param_init=unknown
else
cat > conftest.$ac_ext <<EOF
-#line 6082 "configure"
+#line 6169 "configure"
#include "confdefs.h"
#ifdef __cplusplus
extern "C" void exit(int);
void main() { }
EOF
-if { (eval echo configure:6103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:6190: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
cf_cv_cpp_param_init=yes
else
# may change.
echo $ac_n "checking for fallback type of bool""... $ac_c" 1>&6
-echo "configure:6145: checking for fallback type of bool" >&5
+echo "configure:6232: checking for fallback type of bool" >&5
case "$host_cpu" in #(vi
i?86) cf_cv_type_of_bool=char ;; #(vi
*) cf_cv_type_of_bool=int ;;
# 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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6161: checking for $ac_word" >&5
+echo "configure:6248: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gnat_exists'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cf_cv_gnat_version=`$cf_ada_make -v 2>&1 | grep '[0-9].[0-9][0-9]*' |\
sed -e 's/[^0-9 \.]//g' | $AWK '{print $1;}'`
case $cf_cv_gnat_version in
- 3.[1-9]*|[4-9].*)
+ 3.1[1-9]*|3.[2-9]*|[4-9].*)
cf_cv_prog_gnat_correct=yes
;;
- *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.10 or better. Disabling Ada95 binding.
+ *) echo Unsupported GNAT version $cf_cv_gnat_version. Required is 3.11 or better. Disabling Ada95 binding.
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 $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:6215: checking for $ac_word" >&5
+echo "configure:6302: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_m4_exists'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
fi
if test "$cf_cv_prog_gnat_correct" = yes; then
echo $ac_n "checking if GNAT works""... $ac_c" 1>&6
-echo "configure:6248: checking if GNAT works" >&5
+echo "configure:6335: checking if GNAT works" >&5
rm -f conftest*
cat >>conftest.ads <<CF_EOF
withval="$with_ada_include"
:
else
- withval="${ADA_INCLUDE-$prefix/lib/gnu-Ada/adainclude}"
+ withval="${ADA_INCLUDE-$prefix/lib/ada/adainclude}"
fi
case ".$withval" in #(vi
./*) #(vi
;;
+.a-zA-Z:\\/*) #(vi OS/2 EMX
+ ;;
.\${*prefix}*) #(vi
eval withval="$withval"
case ".$withval" in #(vi
withval="$with_ada_objects"
:
else
- withval="${ADA_OBJECTS-$prefix/lib/gnu-Ada/adalib}"
+ withval="${ADA_OBJECTS-$prefix/lib/ada/adalib}"
fi
case ".$withval" in #(vi
./*) #(vi
;;
+.a-zA-Z:\\/*) #(vi OS/2 EMX
+ ;;
.\${*prefix}*) #(vi
eval withval="$withval"
case ".$withval" in #(vi
- if test $with_shared = no
- then
- echo "configure: warning: Ada95 applications will not link properly with static libraries" 1>&2
- fi
+# This has been fixed!
+# if test $with_shared = no
+# then
+# AC_MSG_WARN(Ada95 applications will not link properly with static libraries)
+# fi
fi
fi
### Construct the library-subsets, if any, from this set of keywords:
### none, base, ext_funcs, termlib.
echo $ac_n "checking for library subsets""... $ac_c" 1>&6
-echo "configure:6392: checking for library subsets" >&5
+echo "configure:6484: checking for library subsets" >&5
if test "$with_termlib" = yes ; then
LIB_SUBSETS="termlib "
else
test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
echo "$ac_t""$LIB_SUBSETS" 1>&6
+LIB_TRACING=DEBUG
+case "$CFLAGS" in
+*-DTRACE*)
+ LIB_TRACING=all
+ ;;
+esac
+
### Construct the list of include-directories to be generated
CPPFLAGS="$CPPFLAGS -I. -I../include"
+### Build up pieces for makefile rules
+echo $ac_n "checking default library suffix""... $ac_c" 1>&6
+echo "configure:6541: checking default library suffix" >&5
+
+ case $DFT_LWR_MODEL in
+ 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 "$ac_t""$DFT_ARG_SUFFIX" 1>&6
+
+echo $ac_n "checking default library-dependency suffix""... $ac_c" 1>&6
+echo "configure:6553: checking default library-dependency suffix" >&5
+
+
+ case $DFT_LWR_MODEL in
+ normal) DFT_DEP_SUFFIX='.a' ;;
+ debug) DFT_DEP_SUFFIX='_g.a' ;;
+ profile) DFT_DEP_SUFFIX='_p.a' ;;
+ shared)
+ case $cf_cv_system_name in
+ hpux*) DFT_DEP_SUFFIX='.sl' ;;
+ *) DFT_DEP_SUFFIX='.so' ;;
+ esac
+ esac
+ test -n "$LIB_SUFFIX" && DFT_DEP_SUFFIX="${LIB_SUFFIX}${DFT_DEP_SUFFIX}"
+echo "$ac_t""$DFT_DEP_SUFFIX" 1>&6
+
+echo $ac_n "checking default object directory""... $ac_c" 1>&6
+echo "configure:6570: checking default object directory" >&5
+
+ case $DFT_LWR_MODEL in
+ normal) DFT_OBJ_SUBDIR='objects' ;;
+ debug) DFT_OBJ_SUBDIR='obj_g' ;;
+ profile) DFT_OBJ_SUBDIR='obj_p' ;;
+ shared) DFT_OBJ_SUBDIR='obj_s' ;;
+ esac
+echo "$ac_t""$DFT_OBJ_SUBDIR" 1>&6
+
+TINFO_LIST="$SHLIB_LIST"
+test $with_termlib = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo${LIB_SUFFIX}"
+
+echo $ac_n "checking where we will install curses.h""... $ac_c" 1>&6
+echo "configure:6584: checking where we will install curses.h" >&5
+test "$with_overwrite" = no && \
+test "x$includedir" = 'x${prefix}/include' && \
+ includedir='$(prefix)/include/ncurses'${LIB_SUFFIX}
+echo "$ac_t""$includedir" 1>&6
+
+
+
+
+
### Set up low-level terminfo dependencies for makefiles. Note that we
### could override this.
if test "$with_termlib" = yes ; then
- TEST_DEPS="${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
+ TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
TEST_ARGS="-l${TINFO_NAME}${DFT_ARG_SUFFIX}"
fi
PROG_DEPS="$TEST_DEPS"
echo $ac_n "checking for src modules""... $ac_c" 1>&6
-echo "configure:6454: checking for src modules" >&5
+echo "configure:6608: checking for src modules" >&5
# dependencies and linker-arguments for test-programs
-TEST_DEPS="${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
+TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS"
TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS"
# dependencies and linker-arguments for utility-programs
#define HAVE_LIB${cf_have_include} 1
EOF
- TEST_DEPS="${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
+ TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS"
TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS"
fi
fi
test $cf_with_cxx_binding != no && SRC_SUBDIRS="$SRC_SUBDIRS c++"
ADA_SUBDIRS=
-if test "$cf_cv_prog_gnat_correct" = yes && test -d $srcdir/Ada95; then
+if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then
SRC_SUBDIRS="$SRC_SUBDIRS Ada95"
ADA_SUBDIRS="gen src samples"
fi
s%@AR_OPTS@%$AR_OPTS%g
s%@cf_cv_makeflags@%$cf_cv_makeflags%g
s%@INSTALL_PREFIX@%$INSTALL_PREFIX%g
-s%@EXTRA_LIBS@%$EXTRA_LIBS%g
-s%@TINFO_LIST@%$TINFO_LIST%g
-s%@SHLIB_LIST@%$SHLIB_LIST%g
-s%@DFT_OBJ_SUBDIR@%$DFT_OBJ_SUBDIR%g
+s%@cf_list_models@%$cf_list_models%g
s%@DFT_LWR_MODEL@%$DFT_LWR_MODEL%g
s%@DFT_UPR_MODEL@%$DFT_UPR_MODEL%g
-s%@DFT_DEP_SUFFIX@%$DFT_DEP_SUFFIX%g
-s%@DFT_ARG_SUFFIX@%$DFT_ARG_SUFFIX%g
-s%@cf_list_models@%$cf_list_models%g
s%@TINFO_NAME@%$TINFO_NAME%g
s%@LIB_NAME@%$LIB_NAME%g
s%@LIB_PREFIX@%$LIB_PREFIX%g
+s%@LIB_SUFFIX@%$LIB_SUFFIX%g
s%@CC_G_OPT@%$CC_G_OPT%g
s%@CXX_G_OPT@%$CXX_G_OPT%g
s%@LD_MODEL@%$LD_MODEL%g
s%@ADA_INCLUDE@%$ADA_INCLUDE%g
s%@ADA_OBJECTS@%$ADA_OBJECTS%g
s%@ACPPFLAGS@%$ACPPFLAGS%g
+s%@DFT_ARG_SUFFIX@%$DFT_ARG_SUFFIX%g
+s%@DFT_DEP_SUFFIX@%$DFT_DEP_SUFFIX%g
+s%@DFT_OBJ_SUBDIR@%$DFT_OBJ_SUBDIR%g
+s%@EXTRA_LIBS@%$EXTRA_LIBS%g
+s%@TINFO_LIST@%$TINFO_LIST%g
+s%@SHLIB_LIST@%$SHLIB_LIST%g
s%@TEST_DEPS@%$TEST_DEPS%g
s%@TEST_ARGS@%$TEST_ARGS%g
s%@PROG_ARGS@%$PROG_ARGS%g
DFT_LWR_MODEL="$DFT_LWR_MODEL"
LDCONFIG="$LDCONFIG"
LIB_NAME="$LIB_NAME"
+LIB_SUFFIX="$LIB_SUFFIX"
LIB_SUBSETS="$LIB_SUBSETS"
+LIB_TRACING="$LIB_TRACING"
SRC_SUBDIRS="$SRC_SUBDIRS"
TINFO_NAME="$TINFO_NAME"
WITH_ECHO="$with_echo"
cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
cf_cv_system_name="$cf_cv_system_name"
cf_with_cxx_binding="$cf_with_cxx_binding"
+cf_cv_shlib_version="$cf_cv_shlib_version"
target="$target"
case $cf_cv_system_name in
- os2) cf_prefix='' ;;
- *) cf_prefix='lib' ;;
+ os2) LIB_PREFIX='' ;;
+ *) LIB_PREFIX='lib' ;;
esac
- LIB_PREFIX=$cf_prefix
+cf_prefix=$LIB_PREFIX
profile) cf_suffix='_p.a' ;;
shared)
case $cf_cv_system_name in
- openbsd*|freebsd*)
- cf_suffix='.so.$(REL_VERSION)' ;;
- netbsd*)
- if test -f /usr/libexec/ld.elf_so; then
- cf_suffix='.so'
- else
- cf_suffix='.so.$(REL_VERSION)'
- fi
- ;;
hpux*) cf_suffix='.sl' ;;
*) cf_suffix='.so' ;;
esac
esac
-
+ test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}"
+
+ if test $cf_item = shared ; then
+ if test $cf_cv_do_symlinks = yes ; then
+ case "$cf_cv_shlib_version" in #(vi
+ rel) cf_suffix="$cf_suffix"'.$(REL_VERSION)' ;; #(vi
+ abi) cf_suffix="$cf_suffix"'.$(ABI_VERSION)' ;;
+ esac
+ fi
+ fi
cf_libs_to_make="$cf_libs_to_make ../lib/${cf_prefix}${cf_dir}${cf_suffix}"
done
if test $cf_dir = ncurses ; then
- case "$LIB_SUBSETS" in
+ case "$LIB_SUBSETS" in #(vi
termlib+*) #(vi
;;
*) #(vi
profile) cf_suffix='_p.a' ;;
shared)
case $cf_cv_system_name in
- openbsd*|freebsd*)
- cf_suffix='.so.$(REL_VERSION)' ;;
- netbsd*)
- if test -f /usr/libexec/ld.elf_so; then
- cf_suffix='.so'
- else
- cf_suffix='.so.$(REL_VERSION)'
- fi
- ;;
hpux*) cf_suffix='.sl' ;;
*) cf_suffix='.so' ;;
esac
esac
+ test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}"
case $cf_item in
do
$AWK -f $srcdir/mk-1st.awk \
name=$cf_dir \
+ traces=$LIB_TRACING \
MODEL=$CF_ITEM \
model=$cf_subdir \
prefix=$cf_prefix \
suffix=$cf_suffix \
subset=$cf_subset \
+ ShlibVer=$cf_cv_shlib_version \
DoLinks=$cf_cv_do_symlinks \
rmSoLocs=$cf_cv_rm_so_locs \
ldconfig="$LDCONFIG" \
test $cf_dir = ncurses && WITH_OVERWRITE=no
$AWK -f $srcdir/mk-2nd.awk \
name=$cf_dir \
+ traces=$LIB_TRACING \
MODEL=$CF_ITEM \
model=$cf_subdir \
subset=$cf_subset \
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
echo 'lint \' >> Makefile
fi
cat >> Makefile <<CF_EOF
+libs \\
lintlib \\
install.libs \\
uninstall.libs \\
elif test -f $srcdir/$cf_dir/headers; then
cat >> Makefile <<CF_EOF
+libs \\
install.libs \\
uninstall.libs \\
install.includes \\
echo installing \$SRC in \$DST
case \$DST in
/*/include/*)
- TMP=\${TMPDIR-/tmp}/\`basename \$SRC\`
- if test ! -f ../headers.sed ; then
- END=\`basename \$DST\`
- for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
- do
- NAME=\`basename \$i\`
- echo "s/<\$NAME>/<\$END\/\$NAME>/" >> ../headers.sed
- done
- fi
- rm -f \$TMP
- sed -f ../headers.sed \$SRC > \$TMP
- eval \$PRG \$TMP \$DST
- rm -f \$TMP
+ TMPSRC=\${TMPDIR-/tmp}/\`basename \$SRC\`\$\$
+ TMPSED=\${TMPDIR-/tmp}/headers.sed\$\$
+ END=\`basename \$DST\`
+ for i in \`cat \$REF/../*/headers |fgrep -v "#"\`
+ do
+ NAME=\`basename \$i\`
+ echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED
+ done
+ rm -f \$TMPSRC
+ sed -f \$TMPSED \$SRC > \$TMPSRC
+ eval \$PRG \$TMPSRC \$DST/\$SRC
+ rm -f \$TMPSRC \$TMPSED
;;
*)
eval \$PRG \$SRC \$DST
dnl
dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
dnl
-dnl $Id: configure.in,v 1.179 1999/10/24 00:32:42 tom Exp $
+dnl $Id: configure.in,v 1.195 2000/07/05 22:24:29 tom Exp $
dnl Process this file with autoconf to produce a configure script.
-AC_PREREQ(2.12.971222)
-AC_REVISION($Revision: 1.179 $)
+AC_PREREQ(2.12.971230)
+AC_REVISION($Revision: 1.195 $)
AC_INIT(ncurses/base/lib_initscr.c)
AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin)
CXX=""
GXX=""
else
+ pushdef([AC_MSG_ERROR],
+ [AC_MSG_RESULT([You don't have any C++ compiler, too bad]); dnl
+ cf_with_cxx=no; CXX=""; GXX="";])dnl
AC_PROG_CXX
+ popdef([AC_MSG_ERROR])dnl
fi
changequote(,)dnl
if test -n "$GXX" ; then case "`${CXX-g++} --version`" in 1*|2.[0-6]*) GXX=""; CXX=""; ac_cv_prog_gxx=no; cf_cxx_library=no ; echo No: templates do not work;; esac; fi
### 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")
AC_MSG_CHECKING(if you want to build shared libraries)
AC_ARG_WITH(shared,
AC_MSG_RESULT($with_profile)
test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile"
+###############################################################################
+
+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")
+
+TINFO_NAME=tinfo
+AC_SUBST(TINFO_NAME)
+
+LIB_NAME=ncurses
+AC_SUBST(LIB_NAME)
+
+LIB_DIR=../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],
],AC_MSG_WARN(Cannot link with gpm library - read the FAQ))
fi
-TINFO_LIST="$SHLIB_LIST"
-test $with_termlib = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo"
-
-AC_SUBST(EXTRA_LIBS)
-AC_SUBST(TINFO_LIST)
-AC_SUBST(SHLIB_LIST)
-
-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.
-DFT_LWR_MODEL=`echo $cf_list_models | $AWK '{print $1}'`
-CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl
-CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_DEP_SUFFIX)dnl
-CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl
-CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl
-AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj")
-AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal")
-AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL")
-AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a")
-AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("")
-AC_SUBST(cf_list_models)dnl the complete list of models ("normal debug")
-
-TINFO_NAME=tinfo
-AC_SUBST(TINFO_NAME)
-
-LIB_NAME=ncurses
-AC_SUBST(LIB_NAME)
-
-LIB_DIR=../lib
-CF_LIB_PREFIX(cf_prefix)
-LIB_PREFIX=$LIB_DIR/$cf_prefix
-AC_SUBST(LIB_PREFIX)
-
dnl Not all ports of gcc support the -g option
if test X"$CC_G_OPT" = X"" ; then
fi
AC_SUBST(CXX_G_OPT)
+AC_MSG_CHECKING(for default loader flags)
case $DFT_LWR_MODEL in
normal) LD_MODEL='' ;;
debug) LD_MODEL=$CC_G_OPT ;;
shared) LD_MODEL='' ;;
esac
AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg)
+AC_MSG_RESULT($LD_MODEL)
AC_MSG_CHECKING(if rpath option should be used)
AC_ARG_ENABLE(rpath,
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
- test "$with_overwrite" = no && \
- test "x$includedir" = 'x${prefix}/include' && \
- includedir='$(prefix)/include/ncurses'
- ],
+ [with_overwrite=$enableval],
[with_overwrite=yes])
AC_MSG_RESULT($with_overwrite)
-AC_MSG_CHECKING(where we will install curses.h)
-AC_MSG_RESULT($includedir)
AC_MSG_CHECKING(if external terminfo-database is used)
AC_ARG_ENABLE(database,
AC_MSG_RESULT($with_database)
test $with_database != no && AC_DEFINE(USE_DATABASE)
-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)
-test "$with_ext_funcs" = yes && AC_DEFINE(NCURSES_EXT_FUNCS)
-
AC_MSG_CHECKING(for list of fallback descriptions)
AC_ARG_WITH(fallbacks,
[ --with-fallbacks=XXX specify list of fallback terminal descriptions],
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])
+AC_MSG_RESULT($with_broken_linker)
+test "$with_broken_linker" = yes && AC_DEFINE(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,
AC_MSG_RESULT($with_bsdpad)
test "$with_bsdpad" = yes && AC_DEFINE(BSD_TPUTS)
+### 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
+ AC_DEFINE(HAVE_HAS_KEY)
+ AC_DEFINE(HAVE_RESIZETERM)
+ AC_DEFINE(HAVE_USE_DEFAULT_COLORS)
+ AC_DEFINE(HAVE_WRESIZE)
+ AC_DEFINE(NCURSES_EXT_FUNCS)
+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,
fi
AC_SUBST(NCURSES_CONST)
-### 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)
+### 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,
+ [ --enable-hashmap compile with hashmap scrolling-optimization code],
+ [with_hashmap=$enableval],
+ [with_hashmap=yes])
+AC_MSG_RESULT($with_hashmap)
+test "$with_hashmap" = yes && AC_DEFINE(USE_HASHMAP)
+
+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)
+
+### 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)
###############################################################################
CF_HELP_MESSAGE(Experimental Code:)
[with_develop=no])
AC_MSG_RESULT($with_develop)
-### 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])
-AC_MSG_RESULT($with_broken_linker)
-test "$with_broken_linker" = yes && AC_DEFINE(BROKEN_LINKER)
+### use option --enable-colorfgbg to turn on use of $COLORFGBG environment
+AC_MSG_CHECKING(if you want experimental colorfgbg code)
+AC_ARG_ENABLE(hard-tabs,
+ [ --enable-colorfgbg compile with experimental \$COLORFGBG code],
+ [with_colorfgbg=$enableval],
+ [with_colorfgbg=$with_develop])
+AC_MSG_RESULT($with_colorfgbg)
+test "$with_colorfgbg" = yes && AC_DEFINE(USE_COLORFGBG)
### use option --enable-hard-tabs to turn on use of hard-tabs optimize
AC_MSG_CHECKING(if you want experimental hard-tabs code)
AC_MSG_RESULT($with_hardtabs)
test "$with_hardtabs" = yes && AC_DEFINE(USE_HARD_TABS)
-### use option --enable-hashmap to turn on use of hashmap scrolling logic
-AC_MSG_CHECKING(if you want experimental hashmap code)
-AC_ARG_ENABLE(hashmap,
- [ --enable-hashmap compile with experimental hashmap code],
- [with_hashmap=$enableval],
- [with_hashmap=yes])
-AC_MSG_RESULT($with_hashmap)
-test "$with_hashmap" = yes && AC_DEFINE(USE_HASHMAP)
-
-AC_MSG_CHECKING(if you want experimental no-padding code)
-AC_ARG_ENABLE(no-padding,
- [ --enable-no-padding compile with experimental no-padding code],
- [with_no_padding=$enableval],
- [with_no_padding=yes])
-AC_MSG_RESULT($with_no_padding)
-test "$with_no_padding" = yes && AC_DEFINE(NCURSES_NO_PADDING)
-
AC_MSG_CHECKING(if you want experimental safe-sprintf code)
AC_ARG_ENABLE(safe-sprintf,
[ --enable-safe-sprintf compile with experimental safe-sprintf code],
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 hashmap without scroll-hints code],
+ [ --disable-scroll-hints compile without scroll-hints code],
[with_scroll_hints=$enableval],
- [with_scroll_hints=yes;
- # when hashmap is used scroll hints are useless
- test $with_hashmap = yes && with_scroll_hints=no])
+ [with_scroll_hints=yes])
AC_MSG_RESULT($with_scroll_hints)
test "$with_scroll_hints" = yes && AC_DEFINE(USE_SCROLL_HINTS)
-
-### use option --enable-tcap-names to allow user to define new capabilities
-AC_MSG_CHECKING(if you want experimental definable names like termcap)
-AC_ARG_ENABLE(tcap-names,
- [ --enable-tcap-names compile with experimental definable-name code],
- [with_tcap_names=$enableval],
- [with_tcap_names=$with_develop])
-AC_MSG_RESULT($with_tcap_names)
-NCURSES_XNAMES=0
-test "$with_tcap_names" = yes && NCURSES_XNAMES=1
-AC_SUBST(NCURSES_XNAMES)
-
-### use option --enable-sigwinch to turn on use of SIGWINCH logic
-AC_MSG_CHECKING(if you want experimental SIGWINCH handler)
-AC_ARG_ENABLE(sigwinch,
- [ --enable-sigwinch compile with experimental SIGWINCH handler],
- [with_sigwinch=$enableval],
- [with_sigwinch=yes])
-AC_MSG_RESULT($with_sigwinch)
-test "$with_sigwinch" = yes && AC_DEFINE(USE_SIGWINCH)
+fi
### use option --enable-widec to turn on use of wide-character support
AC_MSG_CHECKING(if you want experimental wide-character code)
[with_widec=$enableval],
[with_widec=no])
AC_MSG_RESULT($with_widec)
-test "$with_widec" = yes && AC_DEFINE(USE_WIDEC_SUPPORT)
+if test "$with_widec" = yes ; then
+ LIB_SUFFIX="w${LIB_SUFFIX}"
+ AC_DEFINE(USE_WIDEC_SUPPORT)
+fi
### use option --enable-xmc-glitch to turn on use of magic-cookie optimize
AC_MSG_CHECKING(if you want experimental xmc code)
AC_DEFINE(HAVE_GETTIMEOFDAY)
LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday
-MATH_LIB=""
-AC_CHECK_FUNC(sin,,
- AC_CHECK_LIB(m, sin,[MATH_LIB="-lm"]))
+CF_MATH_LIB(MATH_LIB,sin(x))
AC_SUBST(MATH_LIB)
### Checks for header files.
libc.h \
limits.h \
locale.h \
+poll.h \
sys/bsdtypes.h \
sys/ioctl.h \
sys/param.h \
-poll.h \
+sys/poll.h \
sys/select.h \
-sys/stropts.h \
sys/time.h \
sys/times.h \
termio.h \
termios.h \
ttyent.h \
unistd.h \
-values.h \
)
# check for ISC (this may also define _POSIX_SOURCE)
CF_SPEED_TYPE
### Checks for library functions.
-AC_CHECK_FUNCS( getcwd \
+AC_CHECK_FUNCS( \
+getcwd \
getttynam \
memccpy \
+mkstemp \
nanosleep \
poll \
remove \
vsnprintf \
vsscanf \
)
-
-
if test "$with_getcap" = "yes" ; then
CF_CGETENT
fi
CF_TYPE_SIGACTION
CF_SIZECHANGE
CF_FUNC_MEMMOVE
+CF_FUNC_POLL
dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS
if test -z "$cf_user_CFLAGS" ; then
CF_WITH_PATH(ada-include,
[ --with-ada-include=DIR Ada includes are in DIR],
ADA_INCLUDE,
- PREFIX/lib/gnu-Ada/adainclude,
- [$]prefix/lib/gnu-Ada/adainclude)
+ PREFIX/lib/ada/adainclude,
+ [$]prefix/lib/ada/adainclude)
AC_SUBST(ADA_INCLUDE)
CF_WITH_PATH(ada-objects,
[ --with-ada-objects=DIR Ada objects are in DIR],
ADA_OBJECTS,
- PREFIX/lib/gnu-Ada/adalib,
- [$]prefix/lib/gnu-Ada/adalib)
+ PREFIX/lib/ada/adalib,
+ [$]prefix/lib/ada/adalib)
AC_SUBST(ADA_OBJECTS)
- if test $with_shared = no
- then
- AC_MSG_WARN(Ada95 applications will not link properly with static libraries)
- fi
+# This has been fixed!
+# if test $with_shared = no
+# then
+# AC_MSG_WARN(Ada95 applications will not link properly with static libraries)
+# fi
fi
fi
test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs"
AC_MSG_RESULT($LIB_SUBSETS)
+LIB_TRACING=DEBUG
+case "$CFLAGS" in
+*-DTRACE*)
+ LIB_TRACING=all
+ ;;
+esac
+
### 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_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)
+
+TINFO_LIST="$SHLIB_LIST"
+test $with_termlib = yes && SHLIB_LIST="$SHLIB_LIST -ltinfo${LIB_SUFFIX}"
+
+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)
+
+AC_SUBST(EXTRA_LIBS)
+AC_SUBST(TINFO_LIST)
+AC_SUBST(SHLIB_LIST)
+
### Set up low-level terminfo dependencies for makefiles. Note that we
### could override this.
if test "$with_termlib" = yes ; then
- TEST_DEPS="${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
+ TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_NAME}${DFT_DEP_SUFFIX}"
TEST_ARGS="-l${TINFO_NAME}${DFT_ARG_SUFFIX}"
fi
PROG_DEPS="$TEST_DEPS"
DFT_LWR_MODEL="$DFT_LWR_MODEL"
LDCONFIG="$LDCONFIG"
LIB_NAME="$LIB_NAME"
+LIB_SUFFIX="$LIB_SUFFIX"
LIB_SUBSETS="$LIB_SUBSETS"
+LIB_TRACING="$LIB_TRACING"
SRC_SUBDIRS="$SRC_SUBDIRS"
TINFO_NAME="$TINFO_NAME"
WITH_ECHO="$with_echo"
cf_cv_rm_so_locs="$cf_cv_rm_so_locs"
cf_cv_system_name="$cf_cv_system_name"
cf_with_cxx_binding="$cf_with_cxx_binding"
+cf_cv_shlib_version="$cf_cv_shlib_version"
target="$target"
],sort)dnl
-# $Id: dist.mk,v 1.172 1999/10/23 12:29:39 tom Exp $
+# $Id: dist.mk,v 1.209 2000/07/08 19:43:10 tom Exp $
# Makefile for creating ncurses distributions.
#
# This only needs to be used directly as a makefile by developers, but
# These define the major/minor/patch versions of ncurses.
NCURSES_MAJOR = 5
-NCURSES_MINOR = 0
-NCURSES_PATCH = 19991023
+NCURSES_MINOR = 1
+NCURSES_PATCH = 20000708
# We don't append the patch to the version, since this only applies to releases
VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
DUMP = lynx -dump
DUMP2 = $(DUMP) -nolist
-ALL = ANNOUNCE announce.html misc/ncurses-intro.doc misc/hackguide.doc
+GNATHTML= `type -p gnathtml || type -p gnathtml.pl`
+
+# man2html 3.0.1 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).
+MAN2HTML= man2html -botm=6 -topm=6 -cgiurl '$$title.$$section$$subsection.html'
+
+ALL = ANNOUNCE doc/html/announce.html doc/ncurses-intro.doc doc/hackguide.doc manhtml adahtml
all : $(ALL)
(cd ..; tar cvf ncurses-$(VERSION).tar `sed <ncurses-$(VERSION)/MANIFEST 's/^./ncurses-$(VERSION)/'`; gzip ncurses-$(VERSION).tar)
distclean:
- rm -f $(ALL)
+ rm -f $(ALL) subst.tmp subst.sed MANIFEST.tmp
# Don't mess with announce.html.in unless you have lynx available!
-announce.html: announce.html.in
- sed 's,@VERSION@,$(VERSION),' <announce.html.in >announce.html
+doc/html/announce.html: announce.html.in
+ sed 's,@VERSION@,$(VERSION),' <announce.html.in > $@
+
+ANNOUNCE : doc/html/announce.html
+ $(DUMP) doc/html/announce.html > $@
-ANNOUNCE : announce.html
- $(DUMP) announce.html >ANNOUNCE
+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 > $@
-misc/ncurses-intro.doc: misc/ncurses-intro.html
- $(DUMP2) misc/ncurses-intro.html > misc/ncurses-intro.doc
-misc/hackguide.doc: misc/hackguide.html
- $(DUMP2) misc/hackguide.html > misc/hackguide.doc
+# Note that this rule assumes the manpages were installed - it does not use
+# the copies in the build tree except to get the list of names.
+manhtml: MANIFEST
+ @rm -f doc/html/man/*.html
+ @mkdir -p doc/html/man
+ @rm -f subst.tmp ;
+ @for f in man/*.[0-9]*; do \
+ m=`basename $$f` ;\
+ x=`echo $$m | awk -F. '{print $$2;}'` ;\
+ xu=`echo $$x | dd conv=ucase 2>/dev/null` ;\
+ if [ "$${x}" != "$${xu}" ]; then \
+ echo "s/$${xu}/$${x}/g" >> subst.tmp ;\
+ fi ;\
+ done
+ @sort < subst.tmp | uniq > subst.sed
+ @rm -f subst.tmp
+ @for f in man/*.[0-9]* ; do \
+ m=`basename $$f` ;\
+ g=$${m}.html ;\
+ if [ -f doc/html/$$g ]; then chmod +w doc/html/$$g; fi;\
+ echo "Converting $$m to HTML" ;\
+ man $$f | tr '\255' '-' | $(MAN2HTML) | \
+ sed -f subst.sed |\
+ sed -e 's/"curses.3x.html"/"ncurses.3x.html"/g' \
+ > doc/html/man/$$g ;\
+ done
+ @rm -f subst.sed
+ @sed -e "\%./doc/html/man/%d" < MANIFEST > MANIFEST.tmp
+ @find ./doc/html/man -type f -print >> MANIFEST.tmp
+ @chmod u+w MANIFEST
+ @sort -u < MANIFEST.tmp > MANIFEST
+ @rm -f MANIFEST.tmp
+
+#
+# Please note that this target can only be properly built if the build of the
+# Ada95 subdir has been done. The reason is, that the gnathtml tool uses the
+# .ali files generated by the Ada95 compiler during the build process. These
+# .ali files contain cross referencing information required by gnathtml.
+adahtml: MANIFEST
+ if [ ! -z "$(GNATHTML)" ]; then \
+ (cd ./Ada95/gen ; make html) ;\
+ sed -e "\%./doc/html/ada/%d" < MANIFEST > MANIFEST.tmp ;\
+ find ./doc/html/ada -type f -print >> MANIFEST.tmp ;\
+ sort -u < MANIFEST.tmp > MANIFEST ;\
+ rm -f MANIFEST.tmp ;\
+ fi
# Prepare distribution for version control
vcprepare:
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
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
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.
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
<!DOCTYPE HTML
PUBLIC "-//IETF//DTD HTML 3.0//EN">
+<!--
+ $Id: Ada95.html,v 1.1 2000/03/05 18:21:59 juergen Exp $
+-->
<HTML>
<HEAD>
<TITLE>Ada95 Binding for ncurses</Title>
</HEAD>
-<BODY BGCOLOR="#99ccbb" TEXT="#000000" LINK="#4060b0" VLINK="#000080" ALINK="#ff4040">
+<BODY>
<H1>Ada95 Binding for ncurses</H1>
-The ncurses Ada95 binding is © 1996-1999 by
+The ncurses Ada95 binding is © 1996-2000 by
<A HREF="mailto:juergen.pfeifer@gmx.net">Jürgen Pfeifer</A>.
<P>
<LI>This document describes Version 01.00 of the binding.</LI>
<LI>The functionality is modelled to be compatible with the ncurses
package, a clone of the SVr4 curses model.<BR>
-I did the development on an Intel box running
-<A HREF="http://www.linux.org">Linux</A> 1.3.x, 2.0, 2.2
-ncurses-4.x and the
+I did the development on an Intel box running the latest stable release of
+<A HREF="http://www.linux.org">Linux</A>, ncurses and the most recent released
<A HREF="http://www.gnat.com">GNU Ada Translator</A>
-gnat versions 3.10p to 3.11p. For any older versions of ncurses and gnat
+gnat versions. For any older versions of ncurses and gnat
it is not guaranteed to work.</LI>
<LI>You must have the m4 macroprocessor to build this package.
If you don't have this program, you can get the FSF version
<LI>Ada programs are supposed to be readable. One of my
favourite 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 <A HREF="table.html">table</A>.</LI>
+of the cryptic curses names to the Ada names in this <A HREF="ada/table.html">table</A>.</LI>
<LI>This is not a typical one-2-one interface mapping. It is
close to one-2-one on the functional level. Each (n)curses function
has it's counterpart with a more or less similar formal parameter list
<LI>The *_IO packages are currently output only.</LI>
</UL>
-
<H2>Hierarchy of packages</H2>
<UL>
<LI><A HREF="ada/terminal_interface__ads.htm">Terminal_Interface</A>
--- /dev/null
+<HTML><HEAD><TITLE></TITLE></HEAD>
+<BODY>
+<H2 ALIGN=CENTER>Files</H2>
+<A HREF="files/T.htm">[T]</A>
+</BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>T</TITLE></HEAD>
+<BODY>
+<H2>Files - T</H2>
+<A HREF="../files.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses-aux__adb.htm" TARGET="main">terminal_interface-curses-aux.adb</A>
+<LI><A HREF="../terminal_interface-curses-aux__ads.htm" TARGET="main">terminal_interface-curses-aux.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alpha__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-alpha.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alpha__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-alpha.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alphanumeric__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-alphanumeric.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alphanumeric__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-alphanumeric.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-enumeration-ada.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-enumeration-ada.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-enumeration.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-enumeration.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-intfield__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-intfield.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-intfield__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-intfield.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-ipv4_address__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-ipv4_address.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-ipv4_address.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-numeric__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-numeric.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-numeric__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-numeric.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-regexp__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-regexp.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-regexp__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-regexp.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-user-choice.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-user-choice.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types-user.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types-user.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm" TARGET="main">terminal_interface-curses-forms-field_types.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm" TARGET="main">terminal_interface-curses-forms-field_types.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_user_data__adb.htm" TARGET="main">terminal_interface-curses-forms-field_user_data.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_user_data__ads.htm" TARGET="main">terminal_interface-curses-forms-field_user_data.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms-form_user_data__adb.htm" TARGET="main">terminal_interface-curses-forms-form_user_data.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms-form_user_data__ads.htm" TARGET="main">terminal_interface-curses-forms-form_user_data.ads</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm" TARGET="main">terminal_interface-curses-forms.adb</A>
+<LI><A HREF="../terminal_interface-curses-forms__ads.htm" TARGET="main">terminal_interface-curses-forms.ads</A>
+<LI><A HREF="../terminal_interface-curses-menus-item_user_data__adb.htm" TARGET="main">terminal_interface-curses-menus-item_user_data.adb</A>
+<LI><A HREF="../terminal_interface-curses-menus-item_user_data__ads.htm" TARGET="main">terminal_interface-curses-menus-item_user_data.ads</A>
+<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__adb.htm" TARGET="main">terminal_interface-curses-menus-menu_user_data.adb</A>
+<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__ads.htm" TARGET="main">terminal_interface-curses-menus-menu_user_data.ads</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm" TARGET="main">terminal_interface-curses-menus.adb</A>
+<LI><A HREF="../terminal_interface-curses-menus__ads.htm" TARGET="main">terminal_interface-curses-menus.ads</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm" TARGET="main">terminal_interface-curses-mouse.adb</A>
+<LI><A HREF="../terminal_interface-curses-mouse__ads.htm" TARGET="main">terminal_interface-curses-mouse.ads</A>
+<LI><A HREF="../terminal_interface-curses-panels-user_data__adb.htm" TARGET="main">terminal_interface-curses-panels-user_data.adb</A>
+<LI><A HREF="../terminal_interface-curses-panels-user_data__ads.htm" TARGET="main">terminal_interface-curses-panels-user_data.ads</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm" TARGET="main">terminal_interface-curses-panels.adb</A>
+<LI><A HREF="../terminal_interface-curses-panels__ads.htm" TARGET="main">terminal_interface-curses-panels.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io-aux__adb.htm" TARGET="main">terminal_interface-curses-text_io-aux.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io-aux__ads.htm" TARGET="main">terminal_interface-curses-text_io-aux.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io-complex_io__adb.htm" TARGET="main">terminal_interface-curses-text_io-complex_io.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io-complex_io__ads.htm" TARGET="main">terminal_interface-curses-text_io-complex_io.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io-decimal_io__adb.htm" TARGET="main">terminal_interface-curses-text_io-decimal_io.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io-decimal_io__ads.htm" TARGET="main">terminal_interface-curses-text_io-decimal_io.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io-enumeration_io__adb.htm" TARGET="main">terminal_interface-curses-text_io-enumeration_io.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io-enumeration_io__ads.htm" TARGET="main">terminal_interface-curses-text_io-enumeration_io.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io-fixed_io__adb.htm" TARGET="main">terminal_interface-curses-text_io-fixed_io.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io-fixed_io__ads.htm" TARGET="main">terminal_interface-curses-text_io-fixed_io.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io-float_io__adb.htm" TARGET="main">terminal_interface-curses-text_io-float_io.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io-float_io__ads.htm" TARGET="main">terminal_interface-curses-text_io-float_io.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io-integer_io__adb.htm" TARGET="main">terminal_interface-curses-text_io-integer_io.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io-integer_io__ads.htm" TARGET="main">terminal_interface-curses-text_io-integer_io.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io-modular_io__adb.htm" TARGET="main">terminal_interface-curses-text_io-modular_io.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io-modular_io__ads.htm" TARGET="main">terminal_interface-curses-text_io-modular_io.ads</A>
+<LI><A HREF="../terminal_interface-curses-text_io__adb.htm" TARGET="main">terminal_interface-curses-text_io.adb</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm" TARGET="main">terminal_interface-curses-text_io.ads</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm" TARGET="main">terminal_interface-curses.adb</A>
+<LI><A HREF="../terminal_interface-curses__ads.htm" TARGET="main">terminal_interface-curses.ads</A>
+<LI><A HREF="../terminal_interface__ads.htm" TARGET="main">terminal_interface.ads</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE></TITLE></HEAD>
+<BODY>
+<H2 ALIGN=CENTER>Functions/Procedures</H2>
+<A HREF="funcs/ .htm">[ ]</A>
+<A HREF="funcs/A.htm">[A]</A>
+<A HREF="funcs/B.htm">[B]</A>
+<A HREF="funcs/C.htm">[C]</A>
+<A HREF="funcs/D.htm">[D]</A>
+<A HREF="funcs/E.htm">[E]</A>
+<A HREF="funcs/F.htm">[F]</A>
+<A HREF="funcs/G.htm">[G]</A>
+<A HREF="funcs/H.htm">[H]</A>
+<A HREF="funcs/I.htm">[I]</A>
+<A HREF="funcs/K.htm">[K]</A>
+<A HREF="funcs/L.htm">[L]</A>
+<A HREF="funcs/M.htm">[M]</A>
+<A HREF="funcs/N.htm">[N]</A>
+<A HREF="funcs/O.htm">[O]</A>
+<A HREF="funcs/P.htm">[P]</A>
+<A HREF="funcs/Q.htm">[Q]</A>
+<A HREF="funcs/R.htm">[R]</A>
+<A HREF="funcs/S.htm">[S]</A>
+<A HREF="funcs/T.htm">[T]</A>
+<A HREF="funcs/U.htm">[U]</A>
+<A HREF="funcs/V.htm">[V]</A>
+<A HREF="funcs/W.htm">[W]</A>
+</BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>A</TITLE></HEAD>
+<BODY>
+<H2>Functions - A</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#958_16" TARGET="main">Ahead</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__adb.htm#52_16" TARGET="main">Allocate_Arg</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alpha__ads.htm#41_53" TARGET="main">Alpha</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#41_53" TARGET="main">AlphaNumeric</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#56_12" TARGET="main">ASF</A>
+<LI><A HREF="../terminal_interface-curses-text_io-aux__ads.htm#41_51" TARGET="main">Aux - terminal_interface-curses-text_io-aux.ads:41</A>
+<LI><A HREF="../terminal_interface-curses-text_io-float_io__adb.htm#46_12" TARGET="main">Aux - terminal_interface-curses-text_io-float_io.adb:46</A>
+<LI><A HREF="../terminal_interface-curses-text_io-decimal_io__adb.htm#46_12" TARGET="main">Aux - terminal_interface-curses-text_io-decimal_io.adb:46</A>
+<LI><A HREF="../terminal_interface-curses-text_io-enumeration_io__adb.htm#47_12" TARGET="main">Aux - terminal_interface-curses-text_io-enumeration_io.adb:47</A>
+<LI><A HREF="../terminal_interface-curses-text_io-fixed_io__adb.htm#46_12" TARGET="main">Aux - terminal_interface-curses-text_io-fixed_io.adb:46</A>
+<LI><A HREF="../terminal_interface-curses-text_io-integer_io__adb.htm#46_12" TARGET="main">Aux - terminal_interface-curses-text_io-integer_io.adb:46</A>
+<LI><A HREF="../terminal_interface-curses-text_io-modular_io__adb.htm#46_12" TARGET="main">Aux - terminal_interface-curses-text_io-modular_io.adb:46</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>B</TITLE></HEAD>
+<BODY>
+<H2>Functions - B</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2051_16" TARGET="main">Baud</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#764_16" TARGET="main">Beeper</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#974_16" TARGET="main">Behind</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#64_16" TARGET="main">Bottompanel</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>C</TITLE></HEAD>
+<BODY>
+<H2>Functions - C</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2211_16" TARGET="main">Canchangecolor</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#784_16" TARGET="main">Cbreak</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm#63_13" TARGET="main">Character_Check</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm#43_58" TARGET="main">Choice</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#68_13" TARGET="main">CInt_2_FOS</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#76_13" TARGET="main">CInt_2_FrmOS</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#71_13" TARGET="main">CInt_2_IOS</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#63_13" TARGET="main">CInt_2_MOS</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#971_16" TARGET="main">Clear_Ok</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#98_13" TARGET="main">Col - terminal_interface-curses-text_io.ads:98</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#99_13" TARGET="main">Col - terminal_interface-curses-text_io.ads:99</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2228_16" TARGET="main">Colorcontent</A>
+<LI><A HREF="../terminal_interface-curses-text_io-complex_io__ads.htm#44_17" TARGET="main">Complex_Types</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1282_16" TARGET="main">Copywin</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#773_16" TARGET="main">Count - terminal_interface-curses-forms.adb:773</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#911_16" TARGET="main">Count - terminal_interface-curses-menus.adb:911</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_13" TARGET="main">Create - terminal_interface-curses-forms-field_types-enumeration-ada.ads:48</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_13" TARGET="main">Create - terminal_interface-curses-forms-field_types-enumeration.ads:64</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1039_16" TARGET="main">Current_Fld</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#299_16" TARGET="main">Curr_Item</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2315_16" TARGET="main">Curs_Set</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__ads.htm#149_13" TARGET="main">C_Builtin_Router</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#71_15" TARGET="main">C_E_Array</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#756_16" TARGET="main">C_Fields</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm#80_13" TARGET="main">C_Generic_Choice</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm#81_13" TARGET="main">C_Generic_Type</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#922_16" TARGET="main">C_Mitems</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>D</TITLE></HEAD>
+<BODY>
+<H2>Functions - D</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1999_16" TARGET="main">Defkey</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2247_16" TARGET="main">Def_Prog_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2249_16" TARGET="main">Def_Shell_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2031_16" TARGET="main">Delayoutput</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#155_16" TARGET="main">Del_Panel</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#329_16" TARGET="main">Derwin</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#125_16" TARGET="main">Descname - terminal_interface-curses-menus.adb:125</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#269_16" TARGET="main">Descname - terminal_interface-curses-menus.adb:269</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#277_16" TARGET="main">Descname - terminal_interface-curses-menus.adb:277</A>
+<LI><A HREF="../terminal_interface-curses-text_io-decimal_io__adb.htm#47_12" TARGET="main">DIO</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#128_14" TARGET="main">Dispatch_Event</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1074_16" TARGET="main">Do_Update</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#972_16" TARGET="main">Driver</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#352_16" TARGET="main">Dupwin</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#150_16" TARGET="main">Dup_Field</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#558_16" TARGET="main">Dyn_Info</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>E</TITLE></HEAD>
+<BODY>
+<H2>Functions - E</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#822_16" TARGET="main">Echo</A>
+<LI><A HREF="../terminal_interface-curses-text_io-enumeration_io__adb.htm#48_12" TARGET="main">EIO</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#144_16" TARGET="main">Endwin</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53" TARGET="main">Enumeration</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2059_16" TARGET="main">Erasechar</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>F</TITLE></HEAD>
+<BODY>
+<H2>Functions - F</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#467_16" TARGET="main">Field_Back - terminal_interface-curses-forms.adb:467</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#477_16" TARGET="main">Field_Back - terminal_interface-curses-forms.adb:477</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#254_16" TARGET="main">Field_Buffer - terminal_interface-curses-forms.adb:254</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#265_16" TARGET="main">Field_Buffer - terminal_interface-curses-forms.adb:265</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm#56_13" TARGET="main">Field_Check</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#423_16" TARGET="main">Field_Fore - terminal_interface-curses-forms.adb:423</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#433_16" TARGET="main">Field_Fore - terminal_interface-curses-forms.adb:433</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#212_16" TARGET="main">Field_Just</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#373_16" TARGET="main">Field_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#351_16" TARGET="main">Field_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#348_16" TARGET="main">Field_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#506_16" TARGET="main">Field_Pad</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#292_16" TARGET="main">Field_Status</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_user_data__adb.htm#72_16" TARGET="main">Field_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-text_io-complex_io__adb.htm#45_12" TARGET="main">FIO - terminal_interface-curses-text_io-complex_io.adb:45</A>
+<LI><A HREF="../terminal_interface-curses-text_io-float_io__adb.htm#47_12" TARGET="main">FIO - terminal_interface-curses-text_io-float_io.adb:47</A>
+<LI><A HREF="../terminal_interface-curses-text_io-fixed_io__adb.htm#47_12" TARGET="main">FIXIO</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#774_16" TARGET="main">Flash</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#527_16" TARGET="main">Fld_Info</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#65_14" TARGET="main">Flush - terminal_interface-curses-text_io.ads:65</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#66_14" TARGET="main">Flush - terminal_interface-curses-text_io.ads:66</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2041_16" TARGET="main">Flushinp</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#888_16" TARGET="main">Form_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#866_16" TARGET="main">Form_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#863_16" TARGET="main">Form_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#83_16" TARGET="main">Form_Request_Name - terminal_interface-curses-forms.adb:83</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#91_16" TARGET="main">Form_Request_Name - terminal_interface-curses-forms.adb:91</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#627_16" TARGET="main">Form_Sub</A>
+<LI><A HREF="../terminal_interface-curses-forms-form_user_data__adb.htm#73_16" TARGET="main">Form_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#599_16" TARGET="main">Form_Win</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#64_13" TARGET="main">FOS_2_CInt</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#824_16" TARGET="main">Free - terminal_interface-curses-forms.adb:824</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#957_16" TARGET="main">Free - terminal_interface-curses-menus.adb:957</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#122_17" TARGET="main">Freeargs</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#130_16" TARGET="main">Freeitem</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#132_16" TARGET="main">Free_Field</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#120_17" TARGET="main">Free_Type</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#72_13" TARGET="main">FrmOS_2_CInt</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#995_16" TARGET="main">Frm_Driver</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#55_12" TARGET="main">F_Array</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>G</TITLE></HEAD>
+<BODY>
+<H2>Functions - G</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm#90_13" TARGET="main">Generic_Char_Check</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm#83_13" TARGET="main">Generic_Field_Check</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_13" TARGET="main">Generic_Next</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_13" TARGET="main">Generic_Prev</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#68_16" TARGET="main">Getmouse</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#61_13" TARGET="main">Get_Arg</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1083_16" TARGET="main">Get_Fieldindex</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#58_13" TARGET="main">Get_Fieldtype</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#339_16" TARGET="main">Get_Itemindex</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#531_16" TARGET="main">Get_Menu_Mark - terminal_interface-curses-menus.adb:531</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#539_16" TARGET="main">Get_Menu_Mark - terminal_interface-curses-menus.adb:539</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1069_16" TARGET="main">Get_Page</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#757_16" TARGET="main">Get_Pattern</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#712_16" TARGET="main">Get_Spacing</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#62_13" TARGET="main">Get_Window</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>H</TITLE></HEAD>
+<BODY>
+<H2>Functions - H</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#863_16" TARGET="main">Halfdelay</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2182_16" TARGET="main">Hascolors</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#580_16" TARGET="main">Haskey</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2075_16" TARGET="main">Has_Ic</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2087_16" TARGET="main">Has_Il</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#94_16" TARGET="main">Hidepanel</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>I</TITLE></HEAD>
+<BODY>
+<H2>Functions - I</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#995_16" TARGET="main">IDC_Ok</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#983_16" TARGET="main">IDL_Ok</A>
+<LI><A HREF="../terminal_interface-curses-text_io-integer_io__adb.htm#47_12" TARGET="main">IIO</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1019_16" TARGET="main">Immedok</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2197_16" TARGET="main">Initcolor</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2143_16" TARGET="main">Initpair</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#131_16" TARGET="main">Initscr</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-intfield__ads.htm#41_53" TARGET="main">IntField</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#875_16" TARGET="main">Intrflush</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#67_13" TARGET="main">IOS_2_CInt</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#41_53" TARGET="main">IPV4_Address</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#154_16" TARGET="main">Isendwin</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1118_16" TARGET="main">Is_New</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#127_16" TARGET="main">Itemname - terminal_interface-curses-menus.adb:127</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#252_16" TARGET="main">Itemname - terminal_interface-curses-menus.adb:252</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#260_16" TARGET="main">Itemname - terminal_interface-curses-menus.adb:260</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#859_16" TARGET="main">Item_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#233_16" TARGET="main">Item_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#213_16" TARGET="main">Item_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#210_16" TARGET="main">Item_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#867_16" TARGET="main">Item_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-item_user_data__adb.htm#64_16" TARGET="main">Item_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#167_16" TARGET="main">Item_Val</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#180_16" TARGET="main">Item_Vis</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#53_12" TARGET="main">I_Array</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>K</TITLE></HEAD>
+<BODY>
+<H2>Functions - K</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#95_16" TARGET="main">Keyname</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1985_16" TARGET="main">Keyok</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#853_16" TARGET="main">Keypad</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2067_16" TARGET="main">Killchar</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>L</TITLE></HEAD>
+<BODY>
+<H2>Functions - L</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1007_16" TARGET="main">Leave_Ok</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#101_13" TARGET="main">Line - terminal_interface-curses-text_io.ads:101</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#102_13" TARGET="main">Line - terminal_interface-curses-text_io.ads:102</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#77_13" TARGET="main">Line_Length - terminal_interface-curses-text_io.ads:77</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#78_13" TARGET="main">Line_Length - terminal_interface-curses-text_io.ads:78</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#171_16" TARGET="main">Lnk_Field</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2109_16" TARGET="main">Longname - terminal_interface-curses.adb:2109</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2117_16" TARGET="main">Longname - terminal_interface-curses.adb:2117</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>M</TITLE></HEAD>
+<BODY>
+<H2>Functions - M</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__ads.htm#73_13" TARGET="main">Make_Enumeration_Type</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#607_16" TARGET="main">Menu_Back - terminal_interface-curses-menus.adb:607</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#617_16" TARGET="main">Menu_Back - terminal_interface-curses-menus.adb:617</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#786_16" TARGET="main">Menu_Fmt</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#568_16" TARGET="main">Menu_Fore - terminal_interface-curses-menus.adb:568</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#578_16" TARGET="main">Menu_Fore - terminal_interface-curses-menus.adb:578</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#646_16" TARGET="main">Menu_Grey - terminal_interface-curses-menus.adb:646</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#656_16" TARGET="main">Menu_Grey - terminal_interface-curses-menus.adb:656</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#875_16" TARGET="main">Menu_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#413_16" TARGET="main">Menu_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#393_16" TARGET="main">Menu_Opts_Off</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#390_16" TARGET="main">Menu_Opts_On</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#681_16" TARGET="main">Menu_Pad</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#469_16" TARGET="main">Menu_Sub</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#883_16" TARGET="main">Menu_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__adb.htm#63_16" TARGET="main">Menu_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#445_16" TARGET="main">Menu_Win</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#842_16" TARGET="main">Meta</A>
+<LI><A HREF="../terminal_interface-curses-text_io-modular_io__adb.htm#47_12" TARGET="main">MIO</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#112_16" TARGET="main">MMask</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#59_13" TARGET="main">MOS_2_CInt</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#208_16" TARGET="main">Mouseinterval</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#54_16" TARGET="main">Mouse_Avail</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#785_16" TARGET="main">Move - terminal_interface-curses-forms.adb:785</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#131_16" TARGET="main">Move - terminal_interface-curses-panels.adb:131</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#381_16" TARGET="main">Mvderwin</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#207_16" TARGET="main">mvwaddch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1572_16" TARGET="main">Mvwdelch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#367_16" TARGET="main">Mvwin</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1596_16" TARGET="main">Mvwinch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1621_16" TARGET="main">Mvwinsch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1662_16" TARGET="main">Mvwinsnstr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#915_16" TARGET="main">M_Post - terminal_interface-curses-forms.adb:915</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#353_16" TARGET="main">M_Post - terminal_interface-curses-menus.adb:353</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#642_16" TARGET="main">M_Scale - terminal_interface-curses-forms.adb:642</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#482_16" TARGET="main">M_Scale - terminal_interface-curses-menus.adb:482</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#917_16" TARGET="main">M_Unpost - terminal_interface-curses-forms.adb:917</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#355_16" TARGET="main">M_Unpost - terminal_interface-curses-menus.adb:355</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>N</TITLE></HEAD>
+<BODY>
+<H2>Functions - N</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2328_16" TARGET="main">Napms</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#115_16" TARGET="main">Newfield</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#803_16" TARGET="main">NewForm</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#97_16" TARGET="main">Newitem</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#938_16" TARGET="main">Newmenu</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1419_16" TARGET="main">Newpad</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#50_16" TARGET="main">Newpanel</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#265_16" TARGET="main">Newwin</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#86_14" TARGET="main">New_Line - terminal_interface-curses-text_io.ads:86</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#87_14" TARGET="main">New_Line - terminal_interface-curses-text_io.ads:87</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#89_14" TARGET="main">New_Page - terminal_interface-curses-text_io.ads:89</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#90_14" TARGET="main">New_Page - terminal_interface-curses-text_io.ads:90</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm#60_13" TARGET="main">Next</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#950_16" TARGET="main">NL</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#786_16" TARGET="main">NoCbreak</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#903_16" TARGET="main">Nodelay</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#824_16" TARGET="main">NoEcho</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#952_16" TARGET="main">NoNL</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#805_16" TARGET="main">NoRaw</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#938_16" TARGET="main">Notimeout</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#889_17" TARGET="main">No_Qiflush</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-numeric__ads.htm#41_53" TARGET="main">Numeric</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>O</TITLE></HEAD>
+<BODY>
+<H2>Functions - O</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses-text_io-aux__adb.htm#58_17" TARGET="main">Output</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1323_16" TARGET="main">Overlay</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1311_16" TARGET="main">Overwrite</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>P</TITLE></HEAD>
+<BODY>
+<H2>Functions - P</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#80_13" TARGET="main">Page_Length - terminal_interface-curses-text_io.ads:80</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#81_13" TARGET="main">Page_Length - terminal_interface-curses-text_io.ads:81</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2165_16" TARGET="main">Paircontent</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#143_16" TARGET="main">Panel_Hidden</A>
+<LI><A HREF="../terminal_interface-curses-panels-user_data__adb.htm#65_16" TARGET="main">Panel_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#104_16" TARGET="main">Panel_Win</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1523_16" TARGET="main">Pechochar</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1498_16" TARGET="main">Pnoutrefresh</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#940_16" TARGET="main">Pos_Form_Cursor</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#498_16" TARGET="main">Pos_Menu_Cursor</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1468_16" TARGET="main">Prefresh</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__ads.htm#67_13" TARGET="main">Previous</A>
+<LI><A HREF="../terminal_interface-curses-text_io-complex_io__ads.htm#54_14" TARGET="main">Put - terminal_interface-curses-text_io-complex_io.ads:54</A>
+<LI><A HREF="../terminal_interface-curses-text_io-complex_io__ads.htm#61_14" TARGET="main">Put - terminal_interface-curses-text_io-complex_io.ads:61</A>
+<LI><A HREF="../terminal_interface-curses-text_io-decimal_io__ads.htm#50_14" TARGET="main">Put - terminal_interface-curses-text_io-decimal_io.ads:50</A>
+<LI><A HREF="../terminal_interface-curses-text_io-decimal_io__ads.htm#57_14" TARGET="main">Put - terminal_interface-curses-text_io-decimal_io.ads:57</A>
+<LI><A HREF="../terminal_interface-curses-text_io-enumeration_io__ads.htm#49_14" TARGET="main">Put - terminal_interface-curses-text_io-enumeration_io.ads:49</A>
+<LI><A HREF="../terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14" TARGET="main">Put - terminal_interface-curses-text_io-enumeration_io.ads:55</A>
+<LI><A HREF="../terminal_interface-curses-text_io-fixed_io__ads.htm#50_14" TARGET="main">Put - terminal_interface-curses-text_io-fixed_io.ads:50</A>
+<LI><A HREF="../terminal_interface-curses-text_io-fixed_io__ads.htm#57_14" TARGET="main">Put - terminal_interface-curses-text_io-fixed_io.ads:57</A>
+<LI><A HREF="../terminal_interface-curses-text_io-float_io__ads.htm#50_14" TARGET="main">Put - terminal_interface-curses-text_io-float_io.ads:50</A>
+<LI><A HREF="../terminal_interface-curses-text_io-float_io__ads.htm#57_14" TARGET="main">Put - terminal_interface-curses-text_io-float_io.ads:57</A>
+<LI><A HREF="../terminal_interface-curses-text_io-integer_io__ads.htm#49_14" TARGET="main">Put - terminal_interface-curses-text_io-integer_io.ads:49</A>
+<LI><A HREF="../terminal_interface-curses-text_io-integer_io__ads.htm#55_14" TARGET="main">Put - terminal_interface-curses-text_io-integer_io.ads:55</A>
+<LI><A HREF="../terminal_interface-curses-text_io-modular_io__ads.htm#49_14" TARGET="main">Put - terminal_interface-curses-text_io-modular_io.ads:49</A>
+<LI><A HREF="../terminal_interface-curses-text_io-modular_io__ads.htm#55_14" TARGET="main">Put - terminal_interface-curses-text_io-modular_io.ads:55</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#108_14" TARGET="main">Put - terminal_interface-curses-text_io.ads:108</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#109_14" TARGET="main">Put - terminal_interface-curses-text_io.ads:109</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#115_14" TARGET="main">Put - terminal_interface-curses-text_io.ads:115</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#116_14" TARGET="main">Put - terminal_interface-curses-text_io.ads:116</A>
+<LI><A HREF="../terminal_interface-curses-text_io-aux__ads.htm#47_14" TARGET="main">Put_Buf</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#118_14" TARGET="main">Put_Line - terminal_interface-curses-text_io.ads:118</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#122_14" TARGET="main">Put_Line - terminal_interface-curses-text_io.ads:122</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>Q</TITLE></HEAD>
+<BODY>
+<H2>Functions - Q</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#887_17" TARGET="main">Qiflush</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>R</TITLE></HEAD>
+<BODY>
+<H2>Functions - R</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#803_16" TARGET="main">Raw</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1105_16" TARGET="main">Redrawwin</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-regexp__ads.htm#41_53" TARGET="main">RegExp</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_14" TARGET="main">Release - terminal_interface-curses-forms-field_types-enumeration.ads:77</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1133_17" TARGET="main">Release - terminal_interface-curses-forms.adb:1133</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#994_17" TARGET="main">Release - terminal_interface-curses-menus.adb:994</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__adb.htm#52_17" TARGET="main">Release_String</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#118_16" TARGET="main">Replace_Pan</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#79_16" TARGET="main">Request_Name - terminal_interface-curses-menus.adb:79</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#87_16" TARGET="main">Request_Name - terminal_interface-curses-menus.adb:87</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2293_16" TARGET="main">Resetty</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2265_16" TARGET="main">Reset_Prog_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2267_16" TARGET="main">Reset_Shell_Mode</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2304_16" TARGET="main">Ripoffline</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>S</TITLE></HEAD>
+<BODY>
+<H2>Functions - S</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2283_16" TARGET="main">Savetty</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1031_16" TARGET="main">Scrollok</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#92_14" TARGET="main">Set_Col - terminal_interface-curses-text_io.ads:92</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#93_14" TARGET="main">Set_Col - terminal_interface-curses-text_io.ads:93</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1025_16" TARGET="main">Set_Current_Fld</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#286_16" TARGET="main">Set_Curr_Item</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#447_16" TARGET="main">Set_Field_Back</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#403_16" TARGET="main">Set_Field_Fore</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#664_16" TARGET="main">Set_Field_Init</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#195_16" TARGET="main">Set_Field_Just</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#309_16" TARGET="main">Set_Field_Max</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#329_16" TARGET="main">Set_Field_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#489_16" TARGET="main">Set_Field_Pad</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#680_16" TARGET="main">Set_Field_Term</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alpha__ads.htm#49_14" TARGET="main">Set_Field_Type - terminal_interface-curses-forms-field_types-alpha.ads:49</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_14" TARGET="main">Set_Field_Type - terminal_interface-curses-forms-field_types-alphanumeric.ads:50</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_14" TARGET="main">Set_Field_Type - terminal_interface-curses-forms-field_types-enumeration.ads:84</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-intfield__ads.htm#51_14" TARGET="main">Set_Field_Type - terminal_interface-curses-forms-field_types-intfield.ads:51</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_14" TARGET="main">Set_Field_Type - terminal_interface-curses-forms-field_types-ipv4_address.ads:47</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-numeric__ads.htm#51_14" TARGET="main">Set_Field_Type - terminal_interface-curses-forms-field_types-numeric.ads:51</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-regexp__ads.htm#51_14" TARGET="main">Set_Field_Type - terminal_interface-curses-forms-field_types-regexp.ads:51</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm#70_14" TARGET="main">Set_Field_Type - terminal_interface-curses-forms-field_types-user.ads:70</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_user_data__adb.htm#57_16" TARGET="main">Set_Field_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#230_16" TARGET="main">Set_Fld_Buffer</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#277_16" TARGET="main">Set_Fld_Status</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alpha__adb.htm#54_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-alpha.adb:54</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#54_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-alphanumeric.adb:54</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration__adb.htm#97_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-enumeration.adb:97</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-intfield__adb.htm#54_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-intfield.adb:54</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#54_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-ipv4_address.adb:54</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-numeric__adb.htm#56_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-numeric.adb:56</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__adb.htm#55_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types-user.adb:55</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#151_16" TARGET="main">Set_Fld_Type - terminal_interface-curses-forms-field_types.adb:151</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#696_16" TARGET="main">Set_Form_Init</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#844_16" TARGET="main">Set_Form_Opts</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#612_16" TARGET="main">Set_Form_Sub</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#712_16" TARGET="main">Set_Form_Term</A>
+<LI><A HREF="../terminal_interface-curses-forms-form_user_data__adb.htm#58_16" TARGET="main">Set_Form_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#584_16" TARGET="main">Set_Form_Win</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#732_16" TARGET="main">Set_Frm_Fields</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1055_16" TARGET="main">Set_Frm_Page</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-regexp__adb.htm#54_16" TARGET="main">Set_Ftyp</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#892_16" TARGET="main">Set_Items</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#804_16" TARGET="main">Set_Item_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#193_16" TARGET="main">Set_Item_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#818_16" TARGET="main">Set_Item_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-item_user_data__adb.htm#51_16" TARGET="main">Set_Item_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#154_16" TARGET="main">Set_Item_Val</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#95_14" TARGET="main">Set_Line - terminal_interface-curses-text_io.ads:95</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#96_14" TARGET="main">Set_Line - terminal_interface-curses-text_io.ads:96</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#513_16" TARGET="main">Set_Mark</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#590_16" TARGET="main">Set_Menu_Back</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#767_16" TARGET="main">Set_Menu_Fmt</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#551_16" TARGET="main">Set_Menu_Fore</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#628_16" TARGET="main">Set_Menu_Grey</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#832_16" TARGET="main">Set_Menu_Init</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#373_16" TARGET="main">Set_Menu_Opts</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#666_16" TARGET="main">Set_Menu_Pad</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#456_16" TARGET="main">Set_Menu_Sub</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#846_16" TARGET="main">Set_Menu_Term</A>
+<LI><A HREF="../terminal_interface-curses-menus-menu_user_data__adb.htm#50_16" TARGET="main">Set_Menu_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#432_16" TARGET="main">Set_Menu_Win</A>
+<LI><A HREF="../terminal_interface-curses-forms__adb.htm#1104_16" TARGET="main">Set_Page</A>
+<LI><A HREF="../terminal_interface-curses-panels-user_data__adb.htm#54_16" TARGET="main">Set_Panel_Userptr</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#735_16" TARGET="main">Set_Pattern</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#692_16" TARGET="main">Set_Spacing</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#313_16" TARGET="main">Set_Toprow</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#59_14" TARGET="main">Set_Window</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#84_16" TARGET="main">Showpanel</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1953_16" TARGET="main">Slk_Attr - terminal_interface-curses.adb:1953</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1963_16" TARGET="main">Slk_Attr - terminal_interface-curses.adb:1963</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1917_16" TARGET="main">Slk_Attroff</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1915_16" TARGET="main">Slk_Attron</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1939_16" TARGET="main">Slk_Attrset</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1883_16" TARGET="main">Slk_Clear</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1973_16" TARGET="main">Slk_Color</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1814_16" TARGET="main">Slk_Init</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1867_16" TARGET="main">Slk_Label - terminal_interface-curses.adb:1867</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1875_16" TARGET="main">Slk_Label - terminal_interface-curses.adb:1875</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1856_16" TARGET="main">Slk_Noutrefresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1846_16" TARGET="main">Slk_Refresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1893_16" TARGET="main">Slk_Restore</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1827_16" TARGET="main">Slk_Set</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1903_16" TARGET="main">Slk_Touch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1438_16" TARGET="main">Subpad</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#301_16" TARGET="main">Subwin</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#394_16" TARGET="main">Syncok</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>T</TITLE></HEAD>
+<BODY>
+<H2>Functions - T</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2099_16" TARGET="main">Termattrs</A>
+<LI><A HREF="../terminal_interface__ads.htm#41_9" TARGET="main">Terminal_Interface</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2125_16" TARGET="main">Termname - terminal_interface-curses.adb:2125</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2133_16" TARGET="main">Termname - terminal_interface-curses.adb:2133</A>
+<LI><A HREF="../terminal_interface-curses-text_io__ads.htm#44_35" TARGET="main">Text_IO</A>
+<LI><A HREF="../terminal_interface-curses-panels__adb.htm#74_16" TARGET="main">Toppanel</A>
+<LI><A HREF="../terminal_interface-curses-menus__adb.htm#326_16" TARGET="main">Toprow</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#106_16" TARGET="main">To_Access</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user-choice__adb.htm#49_13" TARGET="main">To_Argument_Access - terminal_interface-curses-forms-field_types-user-choice.adb:49</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__adb.htm#80_13" TARGET="main">To_Argument_Access - terminal_interface-curses-forms-field_types-user.adb:80</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types__adb.htm#55_13" TARGET="main">To_Argument_Access - terminal_interface-curses-forms-field_types.adb:55</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#75_16" TARGET="main">To_Pointer</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2392_16" TARGET="main">Transform</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>U</TITLE></HEAD>
+<BODY>
+<H2>Functions - U</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2015_16" TARGET="main">Unctrl - terminal_interface-curses.adb:2015</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#2023_16" TARGET="main">Unctrl - terminal_interface-curses.adb:2023</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#570_16" TARGET="main">Ungetch</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#183_16" TARGET="main">Ungetmouse</A>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-user__ads.htm#43_53" TARGET="main">User</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>V</TITLE></HEAD>
+<BODY>
+<H2>Functions - V</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#53_13" TARGET="main">Value</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>W</TITLE></HEAD>
+<BODY>
+<H2>Functions - W</H2>
+<A HREF="../funcs.htm" TARGET="_self">[index]</A>
+<UL COMPACT TYPE=DISC>
+<LI><A HREF="../terminal_interface-curses__adb.htm#182_16" TARGET="main">Waddch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#440_16" TARGET="main">Waddchnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#408_16" TARGET="main">Waddnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#668_16" TARGET="main">Wattrget - terminal_interface-curses.adb:668</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#691_16" TARGET="main">Wattrget - terminal_interface-curses.adb:691</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#627_16" TARGET="main">Wattroff</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#624_16" TARGET="main">Wattron</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#652_16" TARGET="main">Wattrset</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1174_17" TARGET="main">WBackground</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#481_16" TARGET="main">Wborder</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1184_16" TARGET="main">WChangeBkgd</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#732_16" TARGET="main">Wchgat</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1142_16" TARGET="main">Wclear</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1152_16" TARGET="main">Wclearbot</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1162_16" TARGET="main">Wcleareol</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1559_16" TARGET="main">Wdelch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#285_16" TARGET="main">Wdelwin</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#239_16" TARGET="main">Wechochar</A>
+<LI><A HREF="../terminal_interface-curses-mouse__adb.htm#194_16" TARGET="main">Wenclose</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1132_16" TARGET="main">Werase</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1195_16" TARGET="main">Wgetbkgd</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#556_16" TARGET="main">Wgetch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1774_16" TARGET="main">Wgetnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#523_16" TARGET="main">Whline</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1585_16" TARGET="main">Winch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1727_16" TARGET="main">Winchnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1684_16" TARGET="main">Winnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1607_16" TARGET="main">Winsch</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1336_16" TARGET="main">Winsdelln</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1640_16" TARGET="main">Winsnstr</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1248_16" TARGET="main">WLineTouched</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#168_16" TARGET="main">Wmove</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1095_16" TARGET="main">Wnoutrefresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1118_16" TARGET="main">Wredrawln</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1084_16" TARGET="main">Wrefresh</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1547_16" TARGET="main">Wscrl</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1061_16" TARGET="main">Wsetscrreg</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#714_16" TARGET="main">Wset_Color</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#915_16" TARGET="main">Wtimeout</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1206_16" TARGET="main">Wtouchln</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#540_16" TARGET="main">Wvline</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#1261_16" TARGET="main">WWinTouched</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#90_13" TARGET="main">W_Get_Byte</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#88_13" TARGET="main">W_Get_Int</A>
+<LI><A HREF="../terminal_interface-curses__adb.htm#89_13" TARGET="main">W_Get_Short</A>
+</UL></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML>
+<HEAD><TITLE>Source Browser</TITLE></HEAD>
+<FRAMESET COLS='250,*'>
+<NOFRAME>
+<H2 ALIGN=CENTER>Files</H2>
+<A HREF="files/T.htm">[T]</A>
+</UL>
+<HR>
+<H2 ALIGN=CENTER>Functions/Procedures</H2>
+<A HREF="funcs/ .htm">[ ]</A>
+<A HREF="funcs/A.htm">[A]</A>
+<A HREF="funcs/B.htm">[B]</A>
+<A HREF="funcs/C.htm">[C]</A>
+<A HREF="funcs/D.htm">[D]</A>
+<A HREF="funcs/E.htm">[E]</A>
+<A HREF="funcs/F.htm">[F]</A>
+<A HREF="funcs/G.htm">[G]</A>
+<A HREF="funcs/H.htm">[H]</A>
+<A HREF="funcs/I.htm">[I]</A>
+<A HREF="funcs/K.htm">[K]</A>
+<A HREF="funcs/L.htm">[L]</A>
+<A HREF="funcs/M.htm">[M]</A>
+<A HREF="funcs/N.htm">[N]</A>
+<A HREF="funcs/O.htm">[O]</A>
+<A HREF="funcs/P.htm">[P]</A>
+<A HREF="funcs/Q.htm">[Q]</A>
+<A HREF="funcs/R.htm">[R]</A>
+<A HREF="funcs/S.htm">[S]</A>
+<A HREF="funcs/T.htm">[T]</A>
+<A HREF="funcs/U.htm">[U]</A>
+<A HREF="funcs/V.htm">[V]</A>
+<A HREF="funcs/W.htm">[W]</A>
+</UL>
+</NOFRAME>
+<FRAMESET ROWS='50%,50%'>
+<FRAME NAME=files SRC=files.htm>
+<FRAME NAME=funcs SRC=funcs.htm>
+</FRAMESET>
+<FRAME NAME=main SRC=main.htm>
+</FRAMESET>
+</HTML>
--- /dev/null
+<HTML><HEAD><TITLE></TITLE></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>
+</UL>
+<HR><H2 ALIGN=CENTER>Functions/Procedures</H2>
+<A HREF="funcs/ .htm">[ ]</A>
+<A HREF="funcs/A.htm">[A]</A>
+<A HREF="funcs/B.htm">[B]</A>
+<A HREF="funcs/C.htm">[C]</A>
+<A HREF="funcs/D.htm">[D]</A>
+<A HREF="funcs/E.htm">[E]</A>
+<A HREF="funcs/F.htm">[F]</A>
+<A HREF="funcs/G.htm">[G]</A>
+<A HREF="funcs/H.htm">[H]</A>
+<A HREF="funcs/I.htm">[I]</A>
+<A HREF="funcs/K.htm">[K]</A>
+<A HREF="funcs/L.htm">[L]</A>
+<A HREF="funcs/M.htm">[M]</A>
+<A HREF="funcs/N.htm">[N]</A>
+<A HREF="funcs/O.htm">[O]</A>
+<A HREF="funcs/P.htm">[P]</A>
+<A HREF="funcs/Q.htm">[Q]</A>
+<A HREF="funcs/R.htm">[R]</A>
+<A HREF="funcs/S.htm">[S]</A>
+<A HREF="funcs/T.htm">[T]</A>
+<A HREF="funcs/U.htm">[U]</A>
+<A HREF="funcs/V.htm">[V]</A>
+<A HREF="funcs/W.htm">[W]</A>
+</UL>
+<HR>
+You should start your browsing with one of these files:
+<UL>
+<LI><A HREF="terminal_interface-curses-aux__ads.htm">terminal_interface-curses-aux.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm">terminal_interface-curses-forms-field_types-alpha.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm">terminal_interface-curses-forms-field_types-alphanumeric.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm">terminal_interface-curses-forms-field_types-enumeration-ada.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm">terminal_interface-curses-forms-field_types-enumeration.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm">terminal_interface-curses-forms-field_types-intfield.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm">terminal_interface-curses-forms-field_types-ipv4_address.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm">terminal_interface-curses-forms-field_types-numeric.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm">terminal_interface-curses-forms-field_types-regexp.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm">terminal_interface-curses-forms-field_types-user-choice.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types-user__ads.htm">terminal_interface-curses-forms-field_types-user.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_types__ads.htm">terminal_interface-curses-forms-field_types.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-field_user_data__ads.htm">terminal_interface-curses-forms-field_user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-forms-form_user_data__ads.htm">terminal_interface-curses-forms-form_user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-forms__ads.htm">terminal_interface-curses-forms.ads</A>
+<LI><A HREF="terminal_interface-curses-menus-item_user_data__ads.htm">terminal_interface-curses-menus-item_user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm">terminal_interface-curses-menus-menu_user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-menus__ads.htm">terminal_interface-curses-menus.ads</A>
+<LI><A HREF="terminal_interface-curses-mouse__ads.htm">terminal_interface-curses-mouse.ads</A>
+<LI><A HREF="terminal_interface-curses-panels-user_data__ads.htm">terminal_interface-curses-panels-user_data.ads</A>
+<LI><A HREF="terminal_interface-curses-panels__ads.htm">terminal_interface-curses-panels.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-aux__ads.htm">terminal_interface-curses-text_io-aux.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-complex_io__ads.htm">terminal_interface-curses-text_io-complex_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm">terminal_interface-curses-text_io-decimal_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm">terminal_interface-curses-text_io-enumeration_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm">terminal_interface-curses-text_io-fixed_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-float_io__ads.htm">terminal_interface-curses-text_io-float_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-integer_io__ads.htm">terminal_interface-curses-text_io-integer_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io-modular_io__ads.htm">terminal_interface-curses-text_io-modular_io.ads</A>
+<LI><A HREF="terminal_interface-curses-text_io__ads.htm">terminal_interface-curses-text_io.ads</A>
+<LI><A HREF="terminal_interface-curses__ads.htm">terminal_interface-curses.ads</A>
+<LI><A HREF="terminal_interface__ads.htm">terminal_interface.ads</A>
+</BODY></HTML>
\ No newline at end of file
--- /dev/null
+<!DOCTYPE HTML
+PUBLIC "-//IETF//DTD HTML 3.0//EN">
+<HTML>
+<HEAD>
+<TITLE>Correspondence between ncurses C and Ada functions</TITLE>
+</HEAD>
+<BODY>
+<H1>Correspondence between ncurses C and Ada functions</H1>
+<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>baudrate()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_128">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_38">Beep</A></TD><TD><A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></TD></TR>
+<TR><TD>bottom_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_3">Bottom</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>box()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_25">Box</A></TD><TD><A HREF="../man/curs_border.3x.html">curs_border.3x</A></TD></TR>
+<TR><TD>can_change_color()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_143">Can_Change_Color</A></TD><TD><A HREF="../man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>cbreak()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_40">Set_Cbreak_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>clearok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_52">Clear_On_Next_Update</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>color_content()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_144">Color_Content</A></TD><TD><A HREF="../man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>copywin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_77">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_150">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_145">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_121">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>delay_output()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_126">Delay_Output</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>delwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_11">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_13">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_59">Update_Screen</A></TD><TD><A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>dup_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_4">Duplicate</A></TD><TD><A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
+<TR><TD>dupwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_14">Duplicate</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>dynamic_field_info()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_26">Dynamic_Info</A></TD><TD><A HREF="../man/form_field_info.3x.html">form_field_info.3x</A></TD></TR>
+<TR><TD>echo()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_42">Set_Echo_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>endwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_4">End_Windows</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
+<TR><TD>erasechar()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_129">Erase_Character</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>field_back()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_21">Background</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>field_back()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_22">Background</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>field_buffer()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_9">Get_Buffer</A></TD><TD><A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
+<TR><TD>field_count()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_43">Field_Count</A></TD><TD><A HREF="../man/form_field.3x.html">form_field.3x</A></TD></TR>
+<TR><TD>field_fore()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_18">Foreground</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>field_fore()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_19">Foreground</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>field_index()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_61">Get_Index</A></TD><TD><A HREF="../man/form_page.3x.html">form_page.3x</A></TD></TR>
+<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()</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>
+<TR><TD>field_type()</TD><TD><A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#AFU_2">Get_Type</A></TD><TD><A HREF="../man/form_field_validation.3x.html">form_field_validation.3x</A></TD></TR>
+<TR><TD>field_userptr</TD><TD><A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="../man/form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
+<TR><TD>field_userptr</TD><TD><A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="../man/form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
+<TR><TD>flash()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_39">Flash_Screen</A></TD><TD><A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></TD></TR>
+<TR><TD>flushinp()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_127">Flush_Input</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<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()</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>
+<TR><TD>form_userptr</TD><TD><A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="../man/form_userptr.3x.html">form_userptr.3x</A></TD></TR>
+<TR><TD>form_userptr</TD><TD><A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="../man/form_userptr.3x.html">form_userptr.3x</A></TD></TR>
+<TR><TD>form_win()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_28">Get_Window</A></TD><TD><A HREF="../man/form_win.3x.html">form_win.3x</A></TD></TR>
+<TR><TD>free_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_3">Delete</A></TD><TD><A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
+<TR><TD>free_form()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_47">Delete</A></TD><TD><A HREF="../man/form_new.3x.html">form_new.3x</A></TD></TR>
+<TR><TD>free_item()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_3">Delete</A></TD><TD><A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></TD></TR>
+<TR><TD>free_menu()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_60">Delete</A></TD><TD><A HREF="../man/menu_new.3x.html">menu_new.3x</A></TD></TR>
+<TR><TD>getbegyx()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_84">Get_Window_Position</A></TD><TD><A HREF="../man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
+<TR><TD>getmaxyx()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_83">Get_Size</A></TD><TD><A HREF="../man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
+<TR><TD>getmouse()</TD><TD><A HREF="terminal_interface-curses-mouse__ads.htm#AFU_2">Get_Mouse</A></TD><TD><A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<TR><TD>getparyx()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_86">Get_Origin_Relative_To_Parent</A></TD><TD><A HREF="../man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
+<TR><TD>getyx()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_85">Get_Cursor_Position</A></TD><TD><A HREF="../man/curs_getyx.3x.html">curs_getyx.3x</A></TD></TR>
+<TR><TD>halfdelay()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_45">Half_Delay</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>has_colors()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_141">Has_Colors</A></TD><TD><A HREF="../man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>has_ic()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_131">Has_Insert_Character</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>has_il()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_132">Has_Insert_Line</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>has_key()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_30">Has_Key</A></TD><TD><A HREF="../man/curs_getch.3x.html">curs_getch.3x</A></TD></TR>
+<TR><TD>hide_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_7">Hide</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>idcok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_54">Use_Insert_Delete_Character</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>idlok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_53">Use_Insert_Delete_Line</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>immedok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_56">Immediate_Update_Mode</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>init_color()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_142">Init_Color</A></TD><TD><A HREF="../man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>init_pair()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_139">Init_Pair</A></TD><TD><A HREF="../man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>initscr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_2">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_3">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_46">Set_Flush_On_Interrupt_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>is_linetouched()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_75">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_76">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_5">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()</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>
+<TR><TD>item_value()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_5">Value</A></TD><TD><A HREF="../man/mitem_value.3x.html">mitem_value.3x</A></TD></TR>
+<TR><TD>item_visible()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_6">Visible</A></TD><TD><A HREF="../man/mitem_visible.3x.html">mitem_visible.3x</A></TD></TR>
+<TR><TD>keyname()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_122">Key_Name</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>keyname()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_123">Key_Name</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>keyok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_120">Enable_Key</A></TD><TD><A HREF="../man/keyok.3x.html">keyok.3x</A></TD></TR>
+<TR><TD>keypad()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_44">Set_KeyPad_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>killchar()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_130">Kill_Character</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>leaveok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_55">Leave_Cursor_After_Update</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>link_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_5">Link</A></TD><TD><A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></TD></TR>
+<TR><TD>longname()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_134">Long_Name</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>longname()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_135">Long_Name</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>menu_back()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_35">Background</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_back()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_36">Background</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_driver()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_61">Driver</A></TD><TD><A HREF="../man/menu_new.3x.html">menu_new.3x</A></TD></TR>
+<TR><TD>menu_fore()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_32">Foreground</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_fore()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_33">Foreground</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_format()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_47">Format</A></TD><TD><A HREF="../man/menu_format.3x.html">menu_format.3x</A></TD></TR>
+<TR><TD>menu_grey()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_38">Grey</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>menu_grey()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_39">Grey</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<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()</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_attribs.3x.html">menu_attribs.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_spacing()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_43">Spacing</A></TD><TD><A HREF="../man/menu_spacing.3x.html">menu_spacing.3x</A></TD></TR>
+<TR><TD>menu_sub()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_26">Get_Sub_Window</A></TD><TD><A HREF="../man/menu_win.3x.html">menu_win.3x</A></TD></TR>
+<TR><TD>menu_term()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_55">Get_Menu_Term_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>menu_userptr</TD><TD><A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="../man/menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
+<TR><TD>menu_userptr</TD><TD><A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="../man/menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
+<TR><TD>menu_win()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_24">Get_Window</A></TD><TD><A HREF="../man/menu_win.3x.html">menu_win.3x</A></TD></TR>
+<TR><TD>meta()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_43">Set_Meta_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>mouseinterval()</TD><TD><A HREF="terminal_interface-curses-mouse__ads.htm#AFU_5">Mouse_Interval</A></TD><TD><A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<TR><TD>mousemask()</TD><TD><A HREF="terminal_interface-curses-mouse__ads.htm#AFU_1">Start_Mouse</A></TD><TD><A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<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_16">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_8">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_23">Add</A></TD><TD><A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
+<TR><TD>mvwaddnstr()</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>mvwchgat()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_37">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_94">Delete_Character</A></TD><TD><A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></TD></TR>
+<TR><TD>mvwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_15">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_96">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_104">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
+<TR><TD>mvwinnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_102">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_98">Insert</A></TD><TD><A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
+<TR><TD>mvwinsnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_100">Insert</A></TD><TD><A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
+<TR><TD>napms()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_151">Nap_Milli_Seconds</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.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>
+<TR><TD>new_form()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_46">New_Form</A></TD><TD><A HREF="../man/form_new.3x.html">form_new.3x</A></TD></TR>
+<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>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_87">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_10">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_51">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_48">Set_NoDelay_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>notimeout()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_50">Set_Escape_Time_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>overlay()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_79">Overlay</A></TD><TD><A HREF="../man/curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
+<TR><TD>overwrite()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_78">Overwrite</A></TD><TD><A HREF="../man/curs_overlay.3x.html">curs_overlay.3x</A></TD></TR>
+<TR><TD>pair_content()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_140">Pair_Content</A></TD><TD><A HREF="../man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>panel_above()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_13">Above</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_below()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_14">Below</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_hidden()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_12">Is_Hidden</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_userptr</TD><TD><A HREF="terminal_interface-curses-panels-user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_userptr</TD><TD><A HREF="terminal_interface-curses-panels-user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_window()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_8">Get_Window</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>panel_window()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_9">Panel_Window</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>pechochar()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_91">Add_Character_To_Pad_And_Echo_It</A></TD><TD><A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
+<TR><TD>pnoutrefresh()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_90">Refresh_Without_Update</A></TD><TD><A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
+<TR><TD>pos_form_cursor()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_53">Position_Cursor</A></TD><TD><A HREF="../man/form_cursor.3x.html">form_cursor.3x</A></TD></TR>
+<TR><TD>pos_menu_cursor()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_28">Position_Cursor</A></TD><TD><A HREF="../man/menu_cursor.3x.html">menu_cursor.3x</A></TD></TR>
+<TR><TD>post_form()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_52">Post</A></TD><TD><A HREF="../man/form_post.3x.html">form_post.3x</A></TD></TR>
+<TR><TD>post_menu()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_18">Post</A></TD><TD><A HREF="../man/menu_post.3x.html">menu_post.3x</A></TD></TR>
+<TR><TD>prefresh()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_89">Refresh</A></TD><TD><A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
+<TR><TD>qiflush()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_47">Set_Queue_Interrupt_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>raw()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_41">Set_Raw_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>redrawwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_62">Redraw</A></TD><TD><A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>replace_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_10">Replace</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<TR><TD>reset_prog_mode()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_146">Reset_Curses_Mode</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>resetty();</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_148">Reset_Terminal_State</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>ripoffline()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_149">Rip_Off_Lines</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>savetty()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_147">Save_Terminal_State</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR>
+<TR><TD>scale_form()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_31">Scale</A></TD><TD><A HREF="../man/form_win.3x.html">form_win.3x</A></TD></TR>
+<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>scrollok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_57">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>
+<TR><TD>set_field_buffer()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_8">Set_Buffer</A></TD><TD><A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
+<TR><TD>set_field_fore()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_17">Set_Foreground</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>set_field_init()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_32">Set_Field_Init_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>set_field_just()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_6">Set_Justification</A></TD><TD><A HREF="../man/form_field_just.3x.html">form_field_just.3x</A></TD></TR>
+<TR><TD>set_field_max()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_12">Set_Maximum_Size</A></TD><TD><A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
+<TR><TD>set_field_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_13">Set_Options</A></TD><TD><A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR>
+<TR><TD>set_field_pad()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_23">Set_Pad_Character</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR>
+<TR><TD>set_field_status()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_10">Set_Status</A></TD><TD><A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR>
+<TR><TD>set_field_term()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_33">Set_Field_Term_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>set_field_type()</TD><TD><A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#AFU_1">Set_Type</A></TD><TD><A HREF="../man/form_fieldtype.3x.html">form_fieldtype.3x</A></TD></TR>
+<TR><TD>set_field_userptr</TD><TD><A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="../man/form_field_userptr.3x.html">form_field_userptr.3x</A></TD></TR>
+<TR><TD>set_form_fields()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_40">Redefine</A></TD><TD><A HREF="../man/form_field.3x.html">form_field.3x</A></TD></TR>
+<TR><TD>set_form_fields()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_41">Set_Fields</A></TD><TD><A HREF="../man/form_field.3x.html">form_field.3x</A></TD></TR>
+<TR><TD>set_form_init()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_34">Set_Form_Init_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>set_form_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_48">Set_Options</A></TD><TD><A HREF="../man/form_opts.3x.html">form_opts.3x</A></TD></TR>
+<TR><TD>set_form_page()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_59">Set_Page</A></TD><TD><A HREF="../man/form_page.3x.html">form_page.3x</A></TD></TR>
+<TR><TD>set_form_sub()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_29">Set_Sub_Window</A></TD><TD><A HREF="../man/form_win.3x.html">form_win.3x</A></TD></TR>
+<TR><TD>set_form_term()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_35">Set_Form_Term_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR>
+<TR><TD>set_form_userptr</TD><TD><A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="../man/form_userptr.3x.html">form_userptr.3x</A></TD></TR>
+<TR><TD>set_form_win()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_27">Set_Window</A></TD><TD><A HREF="../man/form_win.3x.html">form_win.3x</A></TD></TR>
+<TR><TD>set_item_init()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_48">Set_Item_Init_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>set_item_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_7">Set_Options</A></TD><TD><A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR>
+<TR><TD>set_item_term()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_49">Set_Item_Term_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>set_item_userptr</TD><TD><A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR>
+<TR><TD>set_item_value()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_4">Set_Value</A></TD><TD><A HREF="../man/mitem_value.3x.html">mitem_value.3x</A></TD></TR>
+<TR><TD>set_menu_back()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_34">Set_Background</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>set_menu_fore()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_31">Set_Foreground</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>set_menu_format()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_46">Set_Format</A></TD><TD><A HREF="../man/menu_format.3x.html">menu_format.3x</A></TD></TR>
+<TR><TD>set_menu_grey()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_37">Set_Grey</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>set_menu_init()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_50">Set_Menu_Init_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>set_menu_items()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_56">Redefine</A></TD><TD><A HREF="../man/menu_items.3x.html">menu_items.3x</A></TD></TR>
+<TR><TD>set_menu_mark()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_29">Set_Mark</A></TD><TD><A HREF="../man/menu_mark.3x.html">menu_mark.3x</A></TD></TR>
+<TR><TD>set_menu_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_19">Set_Options</A></TD><TD><A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></TD></TR>
+<TR><TD>set_menu_pad()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_40">Set_Pad_Character</A></TD><TD><A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></TD></TR>
+<TR><TD>set_menu_pattern()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_44">Set_Pattern</A></TD><TD><A HREF="../man/menu_pattern.3x.html">menu_pattern.3x</A></TD></TR>
+<TR><TD>set_menu_spacing()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_42">Set_Spacing</A></TD><TD><A HREF="../man/menu_spacing.3x.html">menu_spacing.3x</A></TD></TR>
+<TR><TD>set_menu_sub()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_25">Set_Sub_Window</A></TD><TD><A HREF="../man/menu_win.3x.html">menu_win.3x</A></TD></TR>
+<TR><TD>set_menu_term()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_51">Set_Menu_Term_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR>
+<TR><TD>set_menu_userptr</TD><TD><A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="../man/menu_userptr.3x.html">menu_userptr.3x</A></TD></TR>
+<TR><TD>set_menu_win()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_23">Set_Window</A></TD><TD><A HREF="../man/menu_win.3x.html">menu_win.3x</A></TD></TR>
+<TR><TD>set_new_page()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_62">Set_New_Page</A></TD><TD><A HREF="../man/form_new_page.3x.html">form_new_page.3x</A></TD></TR>
+<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_117">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_118">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_115">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_116">Set_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_112">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_119">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_106">Init_Soft_Label_Keys</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_label()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_110">Get_Soft_Label_Key</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_label()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_111">Get_Soft_Label_Key</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_noutrefresh()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_109">Refresh_Soft_Label_Keys_Without_Update</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_refresh()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_108">Refresh_Soft_Label_Key</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_restore()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_113">Restore_Soft_Label_Keys</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_107">Set_Soft_Label_Key</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>slk_touch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_114">Touch_Soft_Label_Keys</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR>
+<TR><TD>start_color()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_138">Start_Color</A></TD><TD><A HREF="../man/curs_color.3x.html">curs_color.3x</A></TD></TR>
+<TR><TD>stdscr</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_1">Standard_Window</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR>
+<TR><TD>subpad()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_88">Sub_Pad</A></TD><TD><A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></TD></TR>
+<TR><TD>subwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_12">Sub_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>syncok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_19">Set_Synch_Mode</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>termattrs()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_133">Supported_Attributes</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>termname()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_136">Terminal_Name</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>termname()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_137">Terminal_Name</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR>
+<TR><TD>top_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_4">Top</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR>
+<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_73">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_72">Touch</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>unctrl()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_124">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_125">Un_Control</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR>
+<TR><TD>ungetch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_29">Undo_Keystroke</A></TD><TD><A HREF="../man/curs_getch.3x.html">curs_getch.3x</A></TD></TR>
+<TR><TD>ungetmouse()</TD><TD><A HREF="terminal_interface-curses-mouse__ads.htm#AFU_3">Unget_Mouse</A></TD><TD><A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<TR><TD>untouchwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_71">Untouch</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<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>waddch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_7">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_22">Add</A></TD><TD><A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR>
+<TR><TD>waddnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_20">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_33">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_34">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_31">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_32">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_69">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_70">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_68">Set_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_24">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_36">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_65">Clear</A></TD><TD><A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
+<TR><TD>wclrtobot()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_66">Clear_To_End_Of_Screen</A></TD><TD><A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
+<TR><TD>wclrtoeol()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_67">Clear_To_End_Of_Line</A></TD><TD><A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
+<TR><TD>wcolor_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_35">Set_Color</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR>
+<TR><TD>wdelch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_93">Delete_Character</A></TD><TD><A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></TD></TR>
+<TR><TD>wdeleteln()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_81">Delete_Line</A></TD><TD><A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
+<TR><TD>wechochar()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_9">Add_With_Immediate_Echo</A></TD><TD><A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></TD></TR>
+<TR><TD>wenclose()</TD><TD><A HREF="terminal_interface-curses-mouse__ads.htm#AFU_4">Enclosed_In_Window</A></TD><TD><A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></TD></TR>
+<TR><TD>werase()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_64">Erase</A></TD><TD><A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></TD></TR>
+<TR><TD>wgetch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_28">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_105">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_26">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_95">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_103">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR>
+<TR><TD>winnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_101">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_97">Insert</A></TD><TD><A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
+<TR><TD>winsdelln()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_80">Insert_Delete_Lines</A></TD><TD><A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
+<TR><TD>winsertln()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_82">Insert_Line</A></TD><TD><A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR>
+<TR><TD>winsnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_99">Insert</A></TD><TD><A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></TD></TR>
+<TR><TD>wmove()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_6">Move_Cursor</A></TD><TD><A HREF="../man/curs_move.3x.html">curs_move.3x</A></TD></TR>
+<TR><TD>wnoutrefresh()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_61">Refresh_Without_Update</A></TD><TD><A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>wredrawln()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_63">Redraw</A></TD><TD><A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>wrefresh()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_60">Refresh</A></TD><TD><A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR>
+<TR><TD>wscrl()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_92">Scroll</A></TD><TD><A HREF="../man/curs_scroll.3x.html">curs_scroll.3x</A></TD></TR>
+<TR><TD>wsetscrreg()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_58">Set_Scroll_Region</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR>
+<TR><TD>wsyncdown()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_18">Synchronize_Downwards</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>wsyncup()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_17">Synchronize_Upwards</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR>
+<TR><TD>wtimeout()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_49">Set_Timeout_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR>
+<TR><TD>wtouchln()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_74">Change_Line_Status</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR>
+<TR><TD>wvline()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_27">Vertical_Line</A></TD><TD><A HREF="../man/curs_border.3x.html">curs_border.3x</A></TD></TR>
+</TABLE></BODY></HTML>
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-aux.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-aux.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Aux --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A><FONT COLOR=red><A NAME="41_40"></A></FONT> <b>is</b>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- Some helpers</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-aux__ads.htm#116_14">Fill_String</A><FONT COLOR=red><A NAME="44_14"></A></FONT> (<A HREF="terminal_interface-curses-aux__ads.htm#116_27">Cp</A> : <b>in</b> chars_ptr;
+ <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A> : <b>out</b> String)
+ <b>is</b>
+ <FONT COLOR=green><EM>-- Fill the string with the characters referenced by the</EM></FONT>
+ <FONT COLOR=green><EM>-- chars_ptr.</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=red><A NAME="50_7">Len</A></FONT> : Natural;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#116_27">Cp</A> /= Null_Ptr <b>then</b>
+ <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#116_27">Cp</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'Length < <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> <b>then</b>
+ <b>raise</b> Constraint_Error;
+ <b>end</b> <b>if</b>;
+ <b>declare</b>
+ <FONT COLOR=red><A NAME="58_13">S</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A>);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__adb.htm#58_13">S</A> := Value (<A HREF="terminal_interface-curses-aux__ads.htm#116_27">Cp</A>);
+ <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A> (<A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'First .. (<A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> - 1)) := <A HREF="terminal_interface-curses-aux__adb.htm#58_13">S</A> (<A HREF="terminal_interface-curses-aux__adb.htm#58_13">S</A>'<b>Range</b>);
+ <b>end</b>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> := 0;
+ <b>end</b> <b>if</b>;
+
+ <b>if</b> <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A> < <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'Length <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A> ((<A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#50_7">Len</A>) .. <A HREF="terminal_interface-curses-aux__ads.htm#117_27">Str</A>'Last) := (<b>others</b> => ' ');
+ <b>end</b> <b>if</b>;
+
+ <b>end</b> Fill_String;
+
+ <b>function</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A><FONT COLOR=red><A NAME="73_13"></A></FONT> (<A HREF="terminal_interface-curses-aux__ads.htm#121_26">Cp</A> : chars_ptr) <b>return</b> String
+ <b>is</b>
+ <FONT COLOR=red><A NAME="75_7">Len</A></FONT> : Natural;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_26">Cp</A> /= Null_Ptr <b>then</b>
+ <A HREF="terminal_interface-curses-aux__adb.htm#75_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#121_26">Cp</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-aux__adb.htm#75_7">Len</A> = 0 <b>then</b>
+ <b>return</b> "";
+ <b>else</b>
+ <b>declare</b>
+ <FONT COLOR=red><A NAME="83_16">S</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-aux__adb.htm#75_7">Len</A>);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-aux__ads.htm#121_26">Cp</A>, <A HREF="terminal_interface-curses-aux__adb.htm#83_16">S</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-aux__adb.htm#83_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> Fill_String;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A><FONT COLOR=red><A NAME="94_14"></A></FONT> (<A HREF="terminal_interface-curses-aux__ads.htm#96_29">Code</A> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>)
+ <b>is</b>
+ <b>begin</b>
+ <b>case</b> <A HREF="terminal_interface-curses-aux__ads.htm#96_29">Code</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> => <b>null</b>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#81_4">E_System_Error</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#387_4">Eti_System_Error</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#82_4">E_Bad_Argument</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#388_4">Eti_Bad_Argument</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#83_4">E_Posted</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#389_4">Eti_Posted</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#84_4">E_Connected</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#390_4">Eti_Connected</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#85_4">E_Bad_State</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#391_4">Eti_Bad_State</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#86_4">E_No_Room</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#392_4">Eti_No_Room</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#87_4">E_Not_Posted</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#393_4">Eti_Not_Posted</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#88_4">E_Unknown_Command</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#394_4">Eti_Unknown_Command</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#89_4">E_No_Match</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#395_4">Eti_No_Match</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#90_4">E_Not_Selectable</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#396_4">Eti_Not_Selectable</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#91_4">E_Not_Connected</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#397_4">Eti_Not_Connected</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#92_4">E_Request_Denied</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#398_4">Eti_Request_Denied</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#93_4">E_Invalid_Field</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#399_4">Eti_Invalid_Field</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#94_4">E_Current</A> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#400_4">Eti_Current</A>;
+ <b>end</b> <b>case</b>;
+ <b>end</b> Eti_Exception;
+
+<b>end</b> Terminal_Interface.Curses.Aux;
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-aux.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-aux.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Aux --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.13 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- curses binding.</EM></FONT>
+<FONT COLOR=green><EM>-- This module is generated. Please don't change it manually!</EM></FONT>
+<FONT COLOR=green><EM>-- Run the generator instead.</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">System</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="unchconv__ads.htm#22_10">Interfaces</A>.C.Strings; <b>use</b> Interfaces.C.Strings;
+<b>with</b> Unchecked_Conversion;
+
+<b>package</b> Terminal_Interface.Curses.Aux <b>is</b>
+ <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Aux);
+
+ <b>use</b> <b>type</b> Interfaces.C.int;
+
+ <b>subtype</b> <FONT COLOR=red><A NAME="56_12">C_Int</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+ <b>subtype</b> <FONT COLOR=red><A NAME="57_12">C_Short</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.short;
+ <b>subtype</b> <FONT COLOR=red><A NAME="58_12">C_Long_Int</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.long;
+ <b>subtype</b> <FONT COLOR=red><A NAME="59_12">C_Size_T</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.size_t;
+ <b>subtype</b> <FONT COLOR=red><A NAME="60_12">C_UInt</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.unsigned;
+ <b>subtype</b> <FONT COLOR=red><A NAME="61_12">C_ULong</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.unsigned_long;
+ <b>subtype</b> <FONT COLOR=red><A NAME="62_12">C_Char_Ptr</A></FONT> <b>is</b> Interfaces.C.Strings.chars_ptr;
+ <b>type</b> <FONT COLOR=red><A NAME="63_12">C_Void_Ptr</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-aux__ads.htm#60_12">System</A>.Address;
+ <b>type</b> <FONT COLOR=red><A NAME="64_12">C_Chtype</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-aux__ads.htm#60_12">C_ULong</A>;
+ <b>type</b> C_AttrType <b>is</b> <b>new</b> C_ULong;
+
+ <FONT COLOR=green><EM>-- This is how those constants are defined in ncurses. I see them also</EM></FONT>
+ <FONT COLOR=green><EM>-- exactly like this in all ETI implementations I ever tested. So it</EM></FONT>
+ <FONT COLOR=green><EM>-- could be that this is quite general, but please check with your curses.</EM></FONT>
+ <FONT COLOR=green><EM>-- This is critical, because curses sometime mixes boolean returns with</EM></FONT>
+ <FONT COLOR=green><EM>-- returning an error status.</EM></FONT>
+ <FONT COLOR=red><A NAME="72_4">Curses_Ok</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := 0;
+ Curses_Err : <b>constant</b> C_Int := -1;
+
+ <FONT COLOR=red><A NAME="75_4">Curses_True</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := 1;
+ Curses_False : <b>constant</b> C_Int := 0;
+
+ <FONT COLOR=green><EM>-- Eti_Error: type for error codes returned by the menu and form subsystem</EM></FONT>
+ <b>subtype</b> Eti_Error <b>is</b> C_Int <b>range</b> -14 .. 0;
+
+ <FONT COLOR=red><A NAME="81_4">E_Ok</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := 0;
+ <FONT COLOR=red><A NAME="82_4">E_System_Error</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -1;
+ <FONT COLOR=red><A NAME="83_4">E_Bad_Argument</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -2;
+ <FONT COLOR=red><A NAME="84_4">E_Posted</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -3;
+ <FONT COLOR=red><A NAME="85_4">E_Connected</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -4;
+ <FONT COLOR=red><A NAME="86_4">E_Bad_State</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -5;
+ <FONT COLOR=red><A NAME="87_4">E_No_Room</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -6;
+ <FONT COLOR=red><A NAME="88_4">E_Not_Posted</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -7;
+ <FONT COLOR=red><A NAME="89_4">E_Unknown_Command</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -8;
+ <FONT COLOR=red><A NAME="90_4">E_No_Match</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -9;
+ <FONT COLOR=red><A NAME="91_4">E_Not_Selectable</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -10;
+ <FONT COLOR=red><A NAME="92_4">E_Not_Connected</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -11;
+ <FONT COLOR=red><A NAME="93_4">E_Request_Denied</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -12;
+ <FONT COLOR=red><A NAME="94_4">E_Invalid_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := -13;
+ E_Current : <b>constant</b> Eti_Error := -14;
+
+ <b>procedure</b> Eti_Exception (Code : Eti_Error);
+ <FONT COLOR=green><EM>-- Dispatch the error code and raise the appropriate exception</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- Some helpers</EM></FONT>
+ <b>function</b> Chtype_To_AttrChar <b>is</b> <b>new</b>
+ Unchecked_Conversion (Source => <A HREF="terminal_interface-curses__ads.htm#350_9">C_Chtype</A>,
+ <FONT COLOR=red><A NAME="104_13"> </A></FONT> Target => Attributed_Character);
+ <b>function</b> AttrChar_To_Chtype <b>is</b> <b>new</b>
+ Unchecked_Conversion (Source => <A HREF="terminal_interface-curses-aux__ads.htm#63_12">Attributed_Character</A>,
+ Target => C_Chtype);
+
+ <b>function</b> AttrChar_To_AttrType <b>is</b> <b>new</b>
+ Unchecked_Conversion (Source => <A HREF="terminal_interface-curses-aux__ads.htm#64_12">Attributed_Character</A>,
+ Target => C_AttrType);
+
+ <b>function</b> AttrType_To_AttrChar <b>is</b> <b>new</b>
+ Unchecked_Conversion (Source => <A HREF="terminal_interface-curses__ads.htm#350_9">C_AttrType</A>,
+ Target => Attributed_Character);
+
+ <b>procedure</b> Fill_String (<FONT COLOR=red><A NAME="117_27">Cp</A></FONT> : <b>in</b> chars_ptr;
+ Str : <b>out</b> String);
+ <FONT COLOR=green><EM>-- Fill the Str parameter with the string denoted by the chars_ptr</EM></FONT>
+ <FONT COLOR=green><EM>-- C-Style string.</EM></FONT>
+
+ <b>function</b> Fill_String (Cp : chars_ptr) <b>return</b> String;
+ <FONT COLOR=green><EM>-- Same but as function.</EM></FONT>
+
+<b>end</b> Terminal_Interface.Curses.Aux;
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-alpha.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-alpha.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Alpha --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.6 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#41_53">Alpha</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#50_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#44_9">Alpha_Field</A>)
+ <b>is</b>
+ C_Alpha_Field_Type : C_Field_Type;
+ <b>pragma</b> Import (C, C_Alpha_Field_Type, "TYPE_ALPHA");
+
+ <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="54_30">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_30">Fld</A>;
+ Cft : C_Field_Type := C_Alpha_Field_Type;
+ <FONT COLOR=red><A NAME="56_30">Arg1</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#54_16">Set_Fld_Type</A>, "set_field_type");
+
+ <FONT COLOR=red><A NAME="59_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#59_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#54_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#56_30">Arg1</A> => <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#50_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#46_9">Minimum_Field_Width</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#59_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#59_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#50_30">Typ</A>);
+ <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Alpha;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-alpha.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-alpha.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-alpha.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<b>type</b> <FONT COLOR=red><A NAME="44_9">Alpha_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>
<b>with</b> <b>record</b>
- Minimum_Field_Width : Natural := 0;
+ <FONT COLOR=red><A NAME="46_9">Minimum_Field_Width</A></FONT> : Natural := 0;
<b>end</b> <b>record</b>;
- <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="49_14"></A></FONT> (<FONT COLOR=red><A NAME="49_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#44_9">Alpha_Field</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="49_14"></A></FONT> (<FONT COLOR=red><A NAME="49_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="50_30">Typ</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#44_9">Alpha_Field</A>);
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#49_14">Set_Field_Type</A>);
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Alpha;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-alphanumeric.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-alphanumeric.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.6 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#41_53">AlphaNumeric</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#51_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#45_9">AlphaNumeric_Field</A>)
+ <b>is</b>
+ C_AlphaNumeric_Field_Type : C_Field_Type;
+ <b>pragma</b> Import (C, C_AlphaNumeric_Field_Type, "TYPE_ALNUM");
+
+ <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="54_30">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_30">Fld</A>;
+ Cft : C_Field_Type := C_AlphaNumeric_Field_Type;
+ <FONT COLOR=red><A NAME="56_30">Arg1</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#54_16">Set_Fld_Type</A>, "set_field_type");
+
+ <FONT COLOR=red><A NAME="59_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#59_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#54_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#56_30">Arg1</A> => <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#51_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#47_9">Minimum_Field_Width</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#59_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#59_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#51_30">Typ</A>);
+ <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-alphanumeric.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-alphanumeric.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-alphanumeric.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<b>type</b> <FONT COLOR=red><A NAME="45_9">AlphaNumeric_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>
<b>with</b> <b>record</b>
- Minimum_Field_Width : Natural := 0;
+ <FONT COLOR=red><A NAME="47_9">Minimum_Field_Width</A></FONT> : Natural := 0;
<b>end</b> <b>record</b>;
- <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="50_14"></A></FONT> (<FONT COLOR=red><A NAME="50_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#45_9">AlphaNumeric_Field</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="50_14"></A></FONT> (<FONT COLOR=red><A NAME="50_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="51_30">Typ</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#45_9">AlphaNumeric_Field</A>);
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#50_14">Set_Field_Type</A>);
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration-ada.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-enumeration-ada.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.5 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Characters.Handling; <b>use</b> Ada.Characters.Handling;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#44_65">Ada</A> <b>is</b>
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_13">Create</A><FONT COLOR=red><A NAME="45_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_21">Set</A> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_9">Type_Set</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_46">Mixed_Case</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#49_21">Case_Sensitive</A> : Boolean := False;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#50_21">Must_Be_Unique</A> : Boolean := False)
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="50_7">I</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Last) - <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'First) + 1);
+ <FONT COLOR=red><A NAME="51_7">J</A></FONT> : Positive := 1;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">Case_Sensitive</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#49_21">Case_Sensitive</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#50_21">Must_Be_Unique</A>;
+
+ <b>for</b> <FONT COLOR=red><A NAME="56_11">E</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'<b>Range</b> <b>loop</b>
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>) := <b>new</b> String'(<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Image (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#56_11">E</A>)));
+ <FONT COLOR=green><EM>-- The Image attribute defaults to upper case, so we have to handle</EM></FONT>
+ <FONT COLOR=green><EM>-- only the other ones...</EM></FONT>
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_21">Set</A> /= <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_34">Upper_Case</A> <b>then</b>
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>).<b>all</b> := To_Lower (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>).<b>all</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_21">Set</A> = <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_46">Mixed_Case</A> <b>then</b>
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>)(<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>).<b>all</b>'First) :=
+ To_Upper (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A>)(<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>.Names (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_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#51_7">J</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#51_7">J</A> + 1;
+ <b>end</b> <b>loop</b>;
+
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#48_13">Create</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#50_7">I</A>, True);
+ <b>end</b> Create;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#53_13">Value</A><FONT COLOR=red><A NAME="73_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#53_20">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#54_20">Buf</A> : <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>'Value (<A HREF="terminal_interface-curses-forms__ads.htm#371_13">Get_Buffer</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#53_20">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#54_20">Buf</A>));
+ <b>end</b> Value;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration-ada.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration-ada.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-enumeration-ada.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
- <b>type</b> <FONT COLOR=red><A NAME="42_9">T</A></FONT> <b>is</b> (<>);
+ <b>type</b> <FONT COLOR=red><A NAME="42_9">T</A></FONT> <b>is</b> (<>);
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53">Enumeration</A>.<FONT COLOR=red><A NAME="44_65">Ada</A></FONT> <b>is</b>
<b>pragma</b> Preelaborate
(<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#44_65">Ada</A>);
- <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#45_13">Create</A><FONT COLOR=red><A NAME="48_13"></A></FONT> (Set : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_9">Type_Set</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_46">Mixed_Case</A>;
- Case_Sensitive : Boolean := False;
- Must_Be_Unique : Boolean := False)
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#45_13">Create</A><FONT COLOR=red><A NAME="48_13"></A></FONT> (<FONT COLOR=red><A NAME="48_21">Set</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_9">Type_Set</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#50_46">Mixed_Case</A>;
+ <FONT COLOR=red><A NAME="49_21">Case_Sensitive</A></FONT> : Boolean := False;
+ <FONT COLOR=red><A NAME="50_21">Must_Be_Unique</A></FONT> : Boolean := False)
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>;
- <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#73_13">Value</A><FONT COLOR=red><A NAME="53_13"></A></FONT> (<FONT COLOR=red><A NAME="53_20">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Buf : <A HREF="terminal_interface-curses-forms__ads.htm#132_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#132_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>;
- <FONT COLOR=green><EM>-- Translate the content of the fields buffer - indicated by the</EM></FONT>
- <FONT COLOR=green><EM>-- buffer number - into an enumeration value. If the buffer is empty</EM></FONT>
- <FONT COLOR=green><EM>-- or the content is invalid, a Constraint_Error is raises.</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#73_13">Value</A><FONT COLOR=red><A NAME="53_13"></A></FONT> (<FONT COLOR=red><A NAME="53_20">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="54_20">Buf</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#42_9">T</A>;
+ <FONT COLOR=green><EM>-- Translate the content of the fields buffer - indicated by the</EM></FONT>
+ <FONT COLOR=green><EM>-- buffer number - into an enumeration value. If the buffer is empty</EM></FONT>
+ <FONT COLOR=green><EM>-- or the content is invalid, a Constraint_Error is raises.</EM></FONT>
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-enumeration.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.5 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Unchecked_Deallocation;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#43_53">Enumeration</A><FONT COLOR=red><A NAME="46_58"></A></FONT> <b>is</b>
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_13">Create</A><FONT COLOR=red><A NAME="48_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#65_21">Auto_Release_Names</A> : Boolean := False)
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>
+ <b>is</b>
+ <b>procedure</b> <FONT COLOR=red><A NAME="52_17">Release_String</A></FONT> <b>is</b>
+ <b>new</b> Ada.Unchecked_Deallocation (String,
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#47_9">String_Access</A>);
+ <FONT COLOR=red><A NAME="55_7">E</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>;
+ <FONT COLOR=red><A NAME="56_7">L</A></FONT> : <b>constant</b> size_t := 1 + size_t (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_27">C</A>);
+ <FONT COLOR=red><A NAME="57_7">S</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#47_9">String_Access</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">Case_Sensitive</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#58_10">Case_Sensitive</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#59_10">Match_Must_Be_Unique</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">Arr</A> := <b>new</b> chars_ptr_array (size_t (1) .. <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#56_7">L</A>);
+ <b>for</b> <FONT COLOR=red><A NAME="62_11">I</A></FONT> <b>in</b> 1 .. Positive (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#56_7">L</A> - 1) <b>loop</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#62_11">I</A>) = <b>null</b> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> (size_t (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#62_11">I</A>)) := New_String (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#62_11">I</A>).<b>all</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#65_21">Auto_Release_Names</A> <b>then</b>
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#57_7">S</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#57_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#62_11">I</A>);
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#52_17">Release_String</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#57_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#55_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#56_7">L</A>) := Null_Ptr;
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#55_7">E</A>;
+ <b>end</b> Create;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_14">Release</A><FONT COLOR=red><A NAME="76_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_23">Enum</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="78_7">I</A></FONT> : size_t := 0;
+ <FONT COLOR=red><A NAME="79_7">P</A></FONT> : chars_ptr;
+ <b>begin</b>
+ <b>loop</b>
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#79_7">P</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#78_7">I</A>);
+ <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#79_7">P</A> = Null_Ptr;
+ <A HREF="terminal_interface-curses-forms__ads.htm#138_14">Free</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#79_7">P</A>);
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#78_7">I</A>) := Null_Ptr;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#78_7">I</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#78_7">I</A> + 1;
+ <b>end</b> <b>loop</b>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#77_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> := <b>null</b>;
+ <b>end</b> Release;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_14">Set_Field_Type</A><FONT COLOR=red><A NAME="91_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>)
+ <b>is</b>
+ C_Enum_Type : C_Field_Type;
+ <b>pragma</b> Import (C, C_Enum_Type, "TYPE_ENUM");
+
+ <b>function</b> <FONT COLOR=red><A NAME="97_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="97_30">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_30">Fld</A>;
+ Cft : C_Field_Type := C_Enum_Type;
+ <FONT COLOR=red><A NAME="99_30">Arg1</A></FONT> : chars_ptr_array;
+ <FONT COLOR=red><A NAME="100_30">Arg2</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="101_30">Arg3</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#97_16">Set_Fld_Type</A>, "set_field_type");
+
+ <FONT COLOR=red><A NAME="104_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A> = <b>null</b> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#104_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#97_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#99_30">Arg1</A> => <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#95_10">Arr</A>.<b>all</b>,
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#100_30">Arg2</A> => <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#93_10">Case_Sensitive</A>)),
+ <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#101_30">Arg3</A> => <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (Boolean'Pos
+ (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#94_10">Match_Must_Be_Unique</A>)));
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#104_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#104_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#85_30">Typ</A>, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#149_13">C_Choice_Router</A>);
+ <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-enumeration.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-enumeration.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-cstrin__ads.htm#20_22">Strings</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#46_58">Enumeration</A><FONT COLOR=red><A NAME="43_53"></A></FONT> <b>is</b>
<b>pragma</b> Preelaborate
<b>type</b> <FONT COLOR=red><A NAME="47_9">String_Access</A></FONT> <b>is</b> <b>access</b> String;
- <FONT COLOR=green><EM>-- Type_Set is used by the child package Ada</EM></FONT>
+ <FONT COLOR=green><EM>-- Type_Set is used by the child package Ada</EM></FONT>
<b>type</b> <FONT COLOR=red><A NAME="50_9">Type_Set</A></FONT> <b>is</b> (Lower_Case, Upper_Case, Mixed_Case);
- <b>type</b> <FONT COLOR=red><A NAME="52_9">Enum_Array</A></FONT> <b>is</b> <b>array</b> (Positive <b>range</b> <>)
+ <b>type</b> <FONT COLOR=red><A NAME="52_9">Enum_Array</A></FONT> <b>is</b> <b>array</b> (Positive <b>range</b> <>)
<b>of</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#47_9">String_Access</A>;
- <b>type</b> <FONT COLOR=red><A NAME="55_9">Enumeration_Info</A></FONT> (C : Positive) <b>is</b>
+ <b>type</b> <FONT COLOR=red><A NAME="55_9">Enumeration_Info</A></FONT> (<FONT COLOR=red><A NAME="55_27">C</A></FONT> : Positive) <b>is</b>
<b>record</b>
- Names : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#52_9">Enum_Array</A> (1 .. C);
- Case_Sensitive : Boolean := False;
- Match_Must_Be_Unique : Boolean := False;
+ <FONT COLOR=red><A NAME="57_10">Names</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#52_9">Enum_Array</A> (1 .. <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_27">C</A>);
+ <FONT COLOR=red><A NAME="58_10">Case_Sensitive</A></FONT> : Boolean := False;
+ <FONT COLOR=red><A NAME="59_10">Match_Must_Be_Unique</A></FONT> : Boolean := False;
<b>end</b> <b>record</b>;
<b>type</b> <FONT COLOR=red><A NAME="62_9">Enumeration_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b> <b>private</b>;
- <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#48_13">Create</A><FONT COLOR=red><A NAME="64_13"></A></FONT> (Info : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
- Auto_Release_Names : Boolean := False)
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#48_13">Create</A><FONT COLOR=red><A NAME="64_13"></A></FONT> (<FONT COLOR=red><A NAME="64_21">Info</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
+ <FONT COLOR=red><A NAME="65_21">Auto_Release_Names</A></FONT> : Boolean := False)
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>;
- <FONT COLOR=green><EM>-- Make an fieldtype from the info. Enumerations are special, because</EM></FONT>
- <FONT COLOR=green><EM>-- they normally don't copy the enum values into a private store, so</EM></FONT>
- <FONT COLOR=green><EM>-- we have to care for the lifetime of the info we provide.</EM></FONT>
- <FONT COLOR=green><EM>-- The Auto_Release_Names flag may be used to automatically releases</EM></FONT>
- <FONT COLOR=green><EM>-- the strings in the Names array of the Enumeration_Info.</EM></FONT>
+ <FONT COLOR=green><EM>-- Make an fieldtype from the info. Enumerations are special, because</EM></FONT>
+ <FONT COLOR=green><EM>-- they normally don't copy the enum values into a private store, so</EM></FONT>
+ <FONT COLOR=green><EM>-- we have to care for the lifetime of the info we provide.</EM></FONT>
+ <FONT COLOR=green><EM>-- The Auto_Release_Names flag may be used to automatically releases</EM></FONT>
+ <FONT COLOR=green><EM>-- the strings in the Names array of the Enumeration_Info.</EM></FONT>
- <b>function</b> <FONT COLOR=red><A NAME="73_13">Make_Enumeration_Type</A></FONT> (Info : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
- Auto_Release_Names : Boolean := False)
+ <b>function</b> <FONT COLOR=red><A NAME="73_13">Make_Enumeration_Type</A></FONT> (<FONT COLOR=red><A NAME="73_36">Info</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#55_9">Enumeration_Info</A>;
+ <FONT COLOR=red><A NAME="74_36">Auto_Release_Names</A></FONT> : Boolean := False)
<b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A> <b>renames</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#64_13">Create</A>;
- <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#76_14">Release</A><FONT COLOR=red><A NAME="77_14"></A></FONT> (Enum : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>);
- <FONT COLOR=green><EM>-- But we may want to release the field to release the memory allocated</EM></FONT>
- <FONT COLOR=green><EM>-- by it internally. After that the Enumeration field is no longer usable.</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#76_14">Release</A><FONT COLOR=red><A NAME="77_14"></A></FONT> (<FONT COLOR=red><A NAME="77_23">Enum</A></FONT> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>);
+ <FONT COLOR=green><EM>-- But we may want to release the field to release the memory allocated</EM></FONT>
+ <FONT COLOR=green><EM>-- by it internally. After that the Enumeration field is no longer usable.</EM></FONT>
- <FONT COLOR=green><EM>-- The next type defintions are all ncurses extensions. They are typically</EM></FONT>
- <FONT COLOR=green><EM>-- not available in other curses implementations.</EM></FONT>
+ <FONT COLOR=green><EM>-- The next type defintions are all ncurses extensions. They are typically</EM></FONT>
+ <FONT COLOR=green><EM>-- not available in other curses implementations.</EM></FONT>
- <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#91_14">Set_Field_Type</A><FONT COLOR=red><A NAME="84_14"></A></FONT> (<FONT COLOR=red><A NAME="84_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#91_14">Set_Field_Type</A><FONT COLOR=red><A NAME="84_14"></A></FONT> (<FONT COLOR=red><A NAME="84_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="85_30">Typ</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A>);
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#84_14">Set_Field_Type</A>);
<b>private</b>
- <b>type</b> <FONT COLOR=red><A NAME="89_9">CPA_Access</A></FONT> <b>is</b> <b>access</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-cstrin__ads.htm#20_22">Strings</A>.<A HREF="i-cstrin__ads.htm#27_9">chars_ptr_array</A>;
+ <b>type</b> <FONT COLOR=red><A NAME="89_9">CPA_Access</A></FONT> <b>is</b> <b>access</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings.chars_ptr_array;
<b>type</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#62_9">Enumeration_Field</A> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b>
<b>record</b>
- Case_Sensitive : Boolean := False;
- Match_Must_Be_Unique : Boolean := False;
- Arr : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#89_9">CPA_Access</A> := <b>null</b>;
+ <FONT COLOR=red><A NAME="93_10">Case_Sensitive</A></FONT> : Boolean := False;
+ <FONT COLOR=red><A NAME="94_10">Match_Must_Be_Unique</A></FONT> : Boolean := False;
+ <FONT COLOR=red><A NAME="95_10">Arr</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#89_9">CPA_Access</A> := <b>null</b>;
<b>end</b> <b>record</b>;
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-intfield.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-intfield.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.IntField --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.6 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#41_53">IntField</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#44_9">Integer_Field</A>)
+ <b>is</b>
+ C_Integer_Field_Type : C_Field_Type;
+ <b>pragma</b> Import (C, C_Integer_Field_Type, "TYPE_INTEGER");
+
+ <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="54_30">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_30">Fld</A>;
+ Cft : C_Field_Type := C_Integer_Field_Type;
+ <FONT COLOR=red><A NAME="56_30">Arg1</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="57_30">Arg2</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#57_12">C_Long_Int</A>;
+ <FONT COLOR=red><A NAME="58_30">Arg3</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#57_12">C_Long_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#54_16">Set_Fld_Type</A>, "set_field_type");
+
+ <FONT COLOR=red><A NAME="61_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#61_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#54_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#56_30">Arg1</A> => <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#46_10">Precision</A>),
+ <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#57_30">Arg2</A> => <A HREF="terminal_interface-curses-aux__ads.htm#57_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#47_10">Lower_Limit</A>),
+ <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#58_30">Arg3</A> => <A HREF="terminal_interface-curses-aux__ads.htm#57_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#48_10">Upper_Limit</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#61_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#61_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#52_30">Typ</A>);
+ <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.IntField;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-intfield.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-intfield.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-intfield.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<b>type</b> <FONT COLOR=red><A NAME="44_9">Integer_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b>
<b>record</b>
- Precision : Natural;
- Lower_Limit : Integer;
- Upper_Limit : Integer;
+ <FONT COLOR=red><A NAME="46_10">Precision</A></FONT> : Natural;
+ <FONT COLOR=red><A NAME="47_10">Lower_Limit</A></FONT> : Integer;
+ <FONT COLOR=red><A NAME="48_10">Upper_Limit</A></FONT> : Integer;
<b>end</b> <b>record</b>;
- <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<FONT COLOR=red><A NAME="51_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#44_9">Integer_Field</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<FONT COLOR=red><A NAME="51_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="52_30">Typ</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#44_9">Integer_Field</A>);
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#51_14">Set_Field_Type</A>);
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.IntField;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-ipv4_address.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-ipv4_address.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.6 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#41_53">IPV4_Address</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#48_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#45_9">Internet_V4_Address_Field</A>)
+ <b>is</b>
+ C_IPV4_Field_Type : C_Field_Type;
+ <b>pragma</b> Import (C, C_IPV4_Field_Type, "TYPE_IPV4");
+
+ <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="54_30">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_30">Fld</A>;
+ Cft : C_Field_Type := C_IPV4_Field_Type)
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#54_16">Set_Fld_Type</A>, "set_field_type");
+
+ <FONT COLOR=red><A NAME="59_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#59_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#54_16">Set_Fld_Type</A>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#59_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#59_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#48_30">Typ</A>);
+ <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-ipv4_address.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-ipv4_address.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-ipv4_address.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<b>type</b> <FONT COLOR=red><A NAME="45_9">Internet_V4_Address_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b> <b>null</b> <b>record</b>;
- <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="47_14"></A></FONT> (<FONT COLOR=red><A NAME="47_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#45_9">Internet_V4_Address_Field</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="47_14"></A></FONT> (<FONT COLOR=red><A NAME="47_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="48_30">Typ</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#45_9">Internet_V4_Address_Field</A>);
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#47_14">Set_Field_Type</A>);
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-numeric.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-numeric.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Numeric --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.7 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#41_53">Numeric</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_14">Set_Field_Type</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#44_9">Numeric_Field</A>)
+ <b>is</b>
+ <b>type</b> <FONT COLOR=red><A NAME="51_12">Double</A></FONT> <b>is</b> <b>new</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.double;
+
+ C_Numeric_Field_Type : C_Field_Type;
+ <b>pragma</b> Import (C, C_Numeric_Field_Type, "TYPE_NUMERIC");
+
+ <b>function</b> <FONT COLOR=red><A NAME="56_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="56_30">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_30">Fld</A>;
+ Cft : C_Field_Type := C_Numeric_Field_Type;
+ <FONT COLOR=red><A NAME="58_30">Arg1</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="59_30">Arg2</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#51_12">Double</A>;
+ <FONT COLOR=red><A NAME="60_30">Arg3</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#51_12">Double</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#56_16">Set_Fld_Type</A>, "set_field_type");
+
+ <FONT COLOR=red><A NAME="63_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#63_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#56_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#58_30">Arg1</A> => <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#46_10">Precision</A>),
+ <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#59_30">Arg2</A> => <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#51_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#47_10">Lower_Limit</A>),
+ <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#60_30">Arg3</A> => <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#51_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#48_10">Upper_Limit</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#63_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#63_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#52_30">Typ</A>);
+ <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Numeric;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-numeric.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-numeric.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-numeric.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<b>type</b> <FONT COLOR=red><A NAME="44_9">Numeric_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b>
<b>record</b>
- Precision : Natural;
- Lower_Limit : Float;
- Upper_Limit : Float;
+ <FONT COLOR=red><A NAME="46_10">Precision</A></FONT> : Natural;
+ <FONT COLOR=red><A NAME="47_10">Lower_Limit</A></FONT> : Float;
+ <FONT COLOR=red><A NAME="48_10">Upper_Limit</A></FONT> : Float;
<b>end</b> <b>record</b>;
- <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<FONT COLOR=red><A NAME="51_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#44_9">Numeric_Field</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#48_14">Set_Field_Type</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<FONT COLOR=red><A NAME="51_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="52_30">Typ</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#44_9">Numeric_Field</A>);
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#51_14">Set_Field_Type</A>);
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.Numeric;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-regexp.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-regexp.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.RegExp --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.6 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#41_53">RegExp</A><FONT COLOR=red><A NAME="44_58"></A></FONT> <b>is</b>
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_14">Set_Field_Type</A><FONT COLOR=red><A NAME="46_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#52_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#46_9">Regular_Expression_Field</A>)
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+
+ C_Regexp_Field_Type : C_Field_Type;
+ <b>pragma</b> Import (C, C_Regexp_Field_Type, "TYPE_REGEXP");
+
+ <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Ftyp</A></FONT> (<FONT COLOR=red><A NAME="54_26">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_30">Fld</A>;
+ Cft : C_Field_Type := C_Regexp_Field_Type;
+ Arg1 : Char_Ptr) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#54_16">Set_Ftyp</A>, "set_field_type");
+
+ <FONT COLOR=red><A NAME="59_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#48_10">Regular_Expression</A>.<b>all</b>'Length);
+ <FONT COLOR=red><A NAME="60_7">Len</A></FONT> : size_t;
+ <FONT COLOR=red><A NAME="61_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#48_10">Regular_Expression</A>.<b>all</b>, <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#59_7">Txt</A>, <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#60_7">Len</A>);
+ <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#61_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#54_16">Set_Ftyp</A> (Arg1 => <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#59_7">Txt</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#59_7">Txt</A>'First)'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#61_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#61_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#52_30">Typ</A>);
+ <b>end</b> Set_Field_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.RegExp;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-regexp.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-regexp.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-regexp.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<b>type</b> <FONT COLOR=red><A NAME="46_9">Regular_Expression_Field</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b>
<b>record</b>
- Regular_Expression : <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#44_9">String_Access</A>;
+ <FONT COLOR=red><A NAME="48_10">Regular_Expression</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#44_9">String_Access</A>;
<b>end</b> <b>record</b>;
- <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#46_14">Set_Field_Type</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<FONT COLOR=red><A NAME="51_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#46_9">Regular_Expression_Field</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#46_14">Set_Field_Type</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<FONT COLOR=red><A NAME="51_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="52_30">Typ</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#46_9">Regular_Expression_Field</A>);
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#51_14">Set_Field_Type</A>);
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.RegExp;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-user-choice.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-user-choice.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.User.Choice --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Unchecked_Conversion;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.User.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#43_58">Choice</A><FONT COLOR=red><A NAME="45_63"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>function</b> <FONT COLOR=red><A NAME="49_13">To_Argument_Access</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Conversion
+ (System.Address, Argument_Access);
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_13">Generic_Next</A><FONT COLOR=red><A NAME="52_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_27">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#83_27">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="55_7">Result</A></FONT> : Boolean;
+ Udf : User_Defined_Field_Type_With_Choice_Access :=
+ User_Defined_Field_Type_With_Choice_Access
+ (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#49_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#83_27">Usr</A>).Typ);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#55_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#60_13">Next</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_27">Fld</A>, Udf.<b>all</b>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#55_7">Result</A>));
+ <b>end</b> Generic_Next;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_13">Generic_Prev</A><FONT COLOR=red><A NAME="64_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_27">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#90_27">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="67_7">Result</A></FONT> : Boolean;
+ Udf : User_Defined_Field_Type_With_Choice_Access :=
+ User_Defined_Field_Type_With_Choice_Access
+ (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#49_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#90_27">Usr</A>).Typ);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#67_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#67_13">Previous</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_27">Fld</A>, Udf.<b>all</b>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#67_7">Result</A>));
+ <b>end</b> Generic_Prev;
+
+ <FONT COLOR=green><EM>-- -----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#80_13">C_Generic_Choice</A><FONT COLOR=red><A NAME="78_13"></A></FONT> <b>return</b> C_Field_Type
+ <b>is</b>
+ <FONT COLOR=red><A NAME="80_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ T : C_Field_Type;
+ <b>begin</b>
+ <b>if</b> M_Generic_Choice = Null_Field_Type <b>then</b>
+ T := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_13">Generic_Field_Check</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_13">Generic_Char_Check</A>'<b>Access</b>);
+ <b>if</b> T = Null_Field_Type <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#227_13">Set_Fieldtype_Arg</A> (T,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A>'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A>);
+ <b>end</b> <b>if</b>;
+
+ <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#234_13">Set_Fieldtype_Choice</A> (T,
+ <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_13">Generic_Next</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_13">Generic_Prev</A>'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#80_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ M_Generic_Choice := T;
+ <b>end</b> <b>if</b>;
+ <b>pragma</b> Assert (M_Generic_Choice /= Null_Field_Type);
+ <b>return</b> M_Generic_Choice;
+ <b>end</b> C_Generic_Choice;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-user-choice.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-user-choice.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-user-choice.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#43_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#45_63">Choice</A><FONT COLOR=red><A NAME="43_58"></A></FONT> <b>is</b>
<b>pragma</b> Preelaborate
(<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#43_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#43_58">Choice</A>);
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
- <b>subtype</b> <FONT COLOR=red><A NAME="48_12">C_Int</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+ <b>subtype</b> <FONT COLOR=red><A NAME="48_12">C_Int</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
<b>type</b> <FONT COLOR=red><A NAME="50_9">User_Defined_Field_Type_With_Choice</A></FONT> <b>is</b> <b>abstract</b> <b>new</b>
<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A> <b>with</b> <b>null</b> <b>record</b>;
- <FONT COLOR=green><EM>-- This is the root of the mechanism we use to create field types in</EM></FONT>
- <FONT COLOR=green><EM>-- Ada95 that allow the prev/next mechanism. You should your own type</EM></FONT>
- <FONT COLOR=green><EM>-- derive from this one and implement the Field_Check, Character_Check</EM></FONT>
- <FONT COLOR=green><EM>-- Next and Previous functions for your own type.</EM></FONT>
+ <FONT COLOR=green><EM>-- This is the root of the mechanism we use to create field types in</EM></FONT>
+ <FONT COLOR=green><EM>-- Ada95 that allow the prev/next mechanism. You should your own type</EM></FONT>
+ <FONT COLOR=green><EM>-- derive from this one and implement the Field_Check, Character_Check</EM></FONT>
+ <FONT COLOR=green><EM>-- Next and Previous functions for your own type.</EM></FONT>
<b>type</b> User_Defined_Field_Type_With_Choice_Access <b>is</b> <b>access</b> <b>all</b>
<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#50_9">User_Defined_Field_Type_With_Choice</A>'Class;
<b>function</b> <FONT COLOR=red><A NAME="60_13">Next</A></FONT>
- (<FONT COLOR=red><A NAME="61_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#50_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean
+ (<FONT COLOR=red><A NAME="61_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="62_7">Typ</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#50_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean
<b>is</b> <b>abstract</b>;
- <FONT COLOR=green><EM>-- If True is returned, the function successfully generated a next</EM></FONT>
- <FONT COLOR=green><EM>-- value into the fields buffer.</EM></FONT>
+ <FONT COLOR=green><EM>-- If True is returned, the function successfully generated a next</EM></FONT>
+ <FONT COLOR=green><EM>-- value into the fields buffer.</EM></FONT>
<b>function</b> <FONT COLOR=red><A NAME="67_13">Previous</A></FONT>
- (<FONT COLOR=red><A NAME="68_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#50_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean
+ (<FONT COLOR=red><A NAME="68_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="69_7">Typ</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#50_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean
<b>is</b> <b>abstract</b>;
- <FONT COLOR=green><EM>-- If True is returned, the function successfully generated a previous</EM></FONT>
- <FONT COLOR=green><EM>-- value into the fields buffer.</EM></FONT>
+ <FONT COLOR=green><EM>-- If True is returned, the function successfully generated a previous</EM></FONT>
+ <FONT COLOR=green><EM>-- value into the fields buffer.</EM></FONT>
- <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- | Private Part.</EM></FONT>
- <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- | Private Part.</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
<b>private</b>
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
<b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#78_13">C_Generic_Choice</A><FONT COLOR=red><A NAME="80_13"></A></FONT> <b>return</b> C_Field_Type;
- <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#52_13">Generic_Next</A><FONT COLOR=red><A NAME="82_13"></A></FONT> (<FONT COLOR=red><A NAME="82_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- <FONT COLOR=red><A NAME="83_27">Usr</A></FONT> : <A HREF="system__ads.htm#23_9">System</A>.<A HREF="system__ads.htm#49_9">Address</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>;
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#52_13">Generic_Next</A><FONT COLOR=red><A NAME="82_13"></A></FONT> (<FONT COLOR=red><A NAME="82_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="83_27">Usr</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#82_13">Generic_Next</A>);
- <FONT COLOR=green><EM>-- This is the generic next Choice_Function for the low-level fieldtype</EM></FONT>
- <FONT COLOR=green><EM>-- representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
- <FONT COLOR=green><EM>-- the call to the Next implementation for the type.</EM></FONT>
+ <FONT COLOR=green><EM>-- This is the generic next Choice_Function for the low-level fieldtype</EM></FONT>
+ <FONT COLOR=green><EM>-- representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
+ <FONT COLOR=green><EM>-- the call to the Next implementation for the type.</EM></FONT>
- <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#64_13">Generic_Prev</A><FONT COLOR=red><A NAME="89_13"></A></FONT> (<FONT COLOR=red><A NAME="89_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- <FONT COLOR=red><A NAME="90_27">Usr</A></FONT> : <A HREF="system__ads.htm#23_9">System</A>.<A HREF="system__ads.htm#49_9">Address</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>;
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#64_13">Generic_Prev</A><FONT COLOR=red><A NAME="89_13"></A></FONT> (<FONT COLOR=red><A NAME="89_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="90_27">Usr</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#48_12">C_Int</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#89_13">Generic_Prev</A>);
- <FONT COLOR=green><EM>-- This is the generic prev Choice_Function for the low-level fieldtype</EM></FONT>
- <FONT COLOR=green><EM>-- representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
- <FONT COLOR=green><EM>-- the call to the Previous implementation for the type.</EM></FONT>
+ <FONT COLOR=green><EM>-- This is the generic prev Choice_Function for the low-level fieldtype</EM></FONT>
+ <FONT COLOR=green><EM>-- representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
+ <FONT COLOR=green><EM>-- the call to the Previous implementation for the type.</EM></FONT>
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-user.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-user.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types.User --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Unchecked_Conversion;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.Field_Types.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#43_53">User</A><FONT COLOR=red><A NAME="45_58"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#70_14">Set_Field_Type</A><FONT COLOR=red><A NAME="49_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#70_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#71_30">Typ</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>)
+ <b>is</b>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#63_16">Allocate_Arg</A><FONT COLOR=red><A NAME="52_16"></A></FONT> (<FONT COLOR=red><A NAME="52_30">T</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>'Class)
+ <b>return</b> Argument_Access;
+
+ <b>function</b> <FONT COLOR=red><A NAME="55_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="55_30">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#70_30">Fld</A>;
+ Cft : C_Field_Type := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#81_13">C_Generic_Type</A>;
+ Arg1 : Argument_Access)
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#55_16">Set_Fld_Type</A>, "set_field_type");
+
+ <FONT COLOR=red><A NAME="61_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#52_16">Allocate_Arg</A><FONT COLOR=red><A NAME="63_16"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#52_30">T</A> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>'Class)
+ <b>return</b> Argument_Access
+ <b>is</b>
+ Ptr : Field_Type_Access := <b>new</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>'Class'(<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#52_30">T</A>);
+ <b>begin</b>
+ <b>return</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#211_9">Argument</A>'(Usr => System.Null_Address,
+ Typ => Ptr,
+ Cft => Null_Field_Type);
+ <b>end</b> Allocate_Arg;
+
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#61_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#55_16">Set_Fld_Type</A> (Arg1 => <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#52_16">Allocate_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#71_30">Typ</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#61_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#61_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Field_Type;
+
+ <b>function</b> <FONT COLOR=red><A NAME="80_13">To_Argument_Access</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Conversion
+ (System.Address, Argument_Access);
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_13">Generic_Field_Check</A><FONT COLOR=red><A NAME="83_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_34">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#84_34">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="86_7">Result</A></FONT> : Boolean;
+ Udf : User_Defined_Field_Type_Access :=
+ User_Defined_Field_Type_Access (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#80_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#84_34">Usr</A>).Typ);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#86_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#56_13">Field_Check</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_34">Fld</A>, Udf.<b>all</b>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#86_7">Result</A>));
+ <b>end</b> Generic_Field_Check;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_13">Generic_Char_Check</A><FONT COLOR=red><A NAME="94_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_33">Ch</A> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+ <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#91_33">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="97_7">Result</A></FONT> : Boolean;
+ Udf : User_Defined_Field_Type_Access :=
+ User_Defined_Field_Type_Access (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#80_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#91_33">Usr</A>).Typ);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#97_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#63_13">Character_Check</A> (Character'Val (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_33">Ch</A>), Udf.<b>all</b>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#97_7">Result</A>));
+ <b>end</b> Generic_Char_Check;
+
+ <FONT COLOR=green><EM>-- -----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#81_13">C_Generic_Type</A><FONT COLOR=red><A NAME="107_13"></A></FONT> <b>return</b> C_Field_Type
+ <b>is</b>
+ <FONT COLOR=red><A NAME="109_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ T : C_Field_Type;
+ <b>begin</b>
+ <b>if</b> M_Generic_Type = Null_Field_Type <b>then</b>
+ T := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_13">Generic_Field_Check</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_13">Generic_Char_Check</A>'<b>Access</b>);
+ <b>if</b> T = Null_Field_Type <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#109_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#227_13">Set_Fieldtype_Arg</A> (T,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A>'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#109_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#109_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ M_Generic_Type := T;
+ <b>end</b> <b>if</b>;
+ <b>pragma</b> Assert (M_Generic_Type /= Null_Field_Type);
+ <b>return</b> M_Generic_Type;
+ <b>end</b> C_Generic_Type;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.User;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_types-user.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types-user.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types-user.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#45_58">User</A><FONT COLOR=red><A NAME="43_53"></A></FONT> <b>is</b>
<b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#43_53">User</A>);
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
- <b>subtype</b> <FONT COLOR=red><A NAME="46_12">C_Int</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+ <b>subtype</b> <FONT COLOR=red><A NAME="46_12">C_Int</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
<b>type</b> <FONT COLOR=red><A NAME="48_9">User_Defined_Field_Type</A></FONT> <b>is</b> <b>abstract</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A> <b>with</b> <b>null</b> <b>record</b>;
- <FONT COLOR=green><EM>-- This is the root of the mechanism we use to create field types in</EM></FONT>
- <FONT COLOR=green><EM>-- Ada95. You should your own type derive from this one and implement</EM></FONT>
- <FONT COLOR=green><EM>-- the Field_Check and Character_Check functions for your own type.</EM></FONT>
+ <FONT COLOR=green><EM>-- This is the root of the mechanism we use to create field types in</EM></FONT>
+ <FONT COLOR=green><EM>-- Ada95. You should your own type derive from this one and implement</EM></FONT>
+ <FONT COLOR=green><EM>-- the Field_Check and Character_Check functions for your own type.</EM></FONT>
<b>type</b> User_Defined_Field_Type_Access <b>is</b> <b>access</b> <b>all</b>
<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>'Class;
<b>function</b> <FONT COLOR=red><A NAME="56_13">Field_Check</A></FONT>
- (<FONT COLOR=red><A NAME="57_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>) <b>return</b> Boolean
+ (<FONT COLOR=red><A NAME="57_7">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="58_7">Typ</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>) <b>return</b> Boolean
<b>is</b> <b>abstract</b>;
- <FONT COLOR=green><EM>-- If True is returned, the field is considered valid, otherwise it is</EM></FONT>
- <FONT COLOR=green><EM>-- invalid.</EM></FONT>
+ <FONT COLOR=green><EM>-- If True is returned, the field is considered valid, otherwise it is</EM></FONT>
+ <FONT COLOR=green><EM>-- invalid.</EM></FONT>
<b>function</b> <FONT COLOR=red><A NAME="63_13">Character_Check</A></FONT>
- (Ch : Character;
- Typ : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>) <b>return</b> Boolean
+ (<FONT COLOR=red><A NAME="64_7">Ch</A></FONT> : Character;
+ <FONT COLOR=red><A NAME="65_7">Typ</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>) <b>return</b> Boolean
<b>is</b> <b>abstract</b>;
- <FONT COLOR=green><EM>-- If True is returned, the character is considered as valid for the</EM></FONT>
- <FONT COLOR=green><EM>-- field, otherwise as invalid.</EM></FONT>
+ <FONT COLOR=green><EM>-- If True is returned, the character is considered as valid for the</EM></FONT>
+ <FONT COLOR=green><EM>-- field, otherwise as invalid.</EM></FONT>
- <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#49_14">Set_Field_Type</A><FONT COLOR=red><A NAME="70_14"></A></FONT> (<FONT COLOR=red><A NAME="70_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- Typ : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>);
- <FONT COLOR=green><EM>-- This should work for all types derived from User_Defined_Field_Type.</EM></FONT>
- <FONT COLOR=green><EM>-- No need to reimplement it for your derived type.</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#49_14">Set_Field_Type</A><FONT COLOR=red><A NAME="70_14"></A></FONT> (<FONT COLOR=red><A NAME="70_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="71_30">Typ</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#48_9">User_Defined_Field_Type</A>);
+ <FONT COLOR=green><EM>-- This should work for all types derived from User_Defined_Field_Type.</EM></FONT>
+ <FONT COLOR=green><EM>-- No need to reimplement it for your derived type.</EM></FONT>
- <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- | Private Part.</EM></FONT>
- <FONT COLOR=green><EM>-- | Used by the Choice child package.</EM></FONT>
+ <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- | Private Part.</EM></FONT>
+ <FONT COLOR=green><EM>-- | Used by the Choice child package.</EM></FONT>
<b>private</b>
- <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.<A HREF="i-c__ads.htm#20_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>;
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
<b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#107_13">C_Generic_Type</A><FONT COLOR=red><A NAME="81_13"></A></FONT> <b>return</b> C_Field_Type;
- <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#83_13">Generic_Field_Check</A><FONT COLOR=red><A NAME="83_13"></A></FONT> (<FONT COLOR=red><A NAME="83_34">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
- <FONT COLOR=red><A NAME="84_34">Usr</A></FONT> : <A HREF="system__ads.htm#23_9">System</A>.<A HREF="system__ads.htm#49_9">Address</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#83_13">Generic_Field_Check</A><FONT COLOR=red><A NAME="83_13"></A></FONT> (<FONT COLOR=red><A NAME="83_34">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="84_34">Usr</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#83_13">Generic_Field_Check</A>);
- <FONT COLOR=green><EM>-- This is the generic Field_Check_Function for the low-level fieldtype</EM></FONT>
- <FONT COLOR=green><EM>-- representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
- <FONT COLOR=green><EM>-- the call to the Field_Check implementation for the type.</EM></FONT>
+ <FONT COLOR=green><EM>-- This is the generic Field_Check_Function for the low-level fieldtype</EM></FONT>
+ <FONT COLOR=green><EM>-- representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
+ <FONT COLOR=green><EM>-- the call to the Field_Check implementation for the type.</EM></FONT>
- <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#94_13">Generic_Char_Check</A><FONT COLOR=red><A NAME="90_13"></A></FONT> (Ch : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
- <FONT COLOR=red><A NAME="91_33">Usr</A></FONT> : <A HREF="system__ads.htm#23_9">System</A>.<A HREF="system__ads.htm#49_9">Address</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#94_13">Generic_Char_Check</A><FONT COLOR=red><A NAME="90_13"></A></FONT> (<FONT COLOR=red><A NAME="90_33">Ch</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="91_33">Usr</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#46_12">C_Int</A>;
<b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#90_13">Generic_Char_Check</A>);
- <FONT COLOR=green><EM>-- This is the generic Char_Check_Function for the low-level fieldtype</EM></FONT>
- <FONT COLOR=green><EM>-- representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
- <FONT COLOR=green><EM>-- the call to the Character_Check implementation for the type.</EM></FONT>
+ <FONT COLOR=green><EM>-- This is the generic Char_Check_Function for the low-level fieldtype</EM></FONT>
+ <FONT COLOR=green><EM>-- representing all the User_Defined_Field_Type derivates. It routes</EM></FONT>
+ <FONT COLOR=green><EM>-- the call to the Character_Check implementation for the type.</EM></FONT>
<b>end</b> Terminal_Interface.Curses.Forms.Field_Types.User;
</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+<b>with</b> Ada.Unchecked_Deallocation;
+<b>with</b> Ada.Unchecked_Conversion;
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>-- | man page form_fieldtype.3x</EM></FONT>
+<FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#43_41">Field_Types</A><FONT COLOR=red><A NAME="50_46"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+ <b>use</b> <b>type</b> System.Address;
+
+ <b>function</b> <FONT COLOR=red><A NAME="55_13">To_Argument_Access</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Conversion
+ (System.Address, Argument_Access);
+
+ <b>function</b> <FONT COLOR=red><A NAME="58_13">Get_Fieldtype</A></FONT> (<FONT COLOR=red><A NAME="58_28">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> C_Field_Type;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#58_13">Get_Fieldtype</A>, "field_type");
+
+ <b>function</b> <FONT COLOR=red><A NAME="61_13">Get_Arg</A></FONT> (<FONT COLOR=red><A NAME="61_22">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> System.Address;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#61_13">Get_Arg</A>, "field_arg");
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_field_validation.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#79_13">Get_Type</A><FONT COLOR=red><A NAME="70_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#79_23">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> Field_Type_Access
+ <b>is</b>
+ Low_Level : <b>constant</b> C_Field_Type := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#79_23">Fld</A>);
+ Arg : Argument_Access;
+ <b>begin</b>
+ <b>if</b> Low_Level = Null_Field_Type <b>then</b>
+ <b>return</b> <b>null</b>;
+ <b>else</b>
+ <b>if</b> Low_Level = M_Builtin_Router <b>or</b> <b>else</b>
+ Low_Level = M_Generic_Type <b>or</b> <b>else</b>
+ Low_Level = M_Choice_Router <b>or</b> <b>else</b>
+ Low_Level = M_Generic_Choice <b>then</b>
+ Arg := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#61_13">Get_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#79_23">Fld</A>));
+ <b>if</b> Arg = <b>null</b> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ <b>return</b> Arg.Typ;
+ <b>end</b> <b>if</b>;
+ <b>else</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Get_Type;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A><FONT COLOR=red><A NAME="94_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_23">Args</A> : System.Address) <b>return</b> System.Address
+ <b>is</b>
+ <FONT COLOR=green><EM>-- Actually args is a double indirected pointer to the arguments</EM></FONT>
+ <FONT COLOR=green><EM>-- of a C variable argument list. In theory it is now quite</EM></FONT>
+ <FONT COLOR=green><EM>-- complicated to write portable routine that reads the arguments,</EM></FONT>
+ <FONT COLOR=green><EM>-- because one has to know the growth direction of the stack and</EM></FONT>
+ <FONT COLOR=green><EM>-- the sizes of the individual arguments.</EM></FONT>
+ <FONT COLOR=green><EM>-- Fortunately we are only interested in the first argument (#0),</EM></FONT>
+ <FONT COLOR=green><EM>-- we know its size and for the first arg we don't care about</EM></FONT>
+ <FONT COLOR=green><EM>-- into which stack direction we have to proceed. We simply</EM></FONT>
+ <FONT COLOR=green><EM>-- resolve the double indirection and thats it.</EM></FONT>
+ <b>type</b> V <b>is</b> <b>access</b> <b>all</b> System.Address;
+ <b>function</b> <FONT COLOR=red><A NAME="106_16">To_Access</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Conversion (System.Address,
+ V);
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#106_16">To_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#106_16">To_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_23">Args</A>).<b>all</b>).<b>all</b>;
+ <b>end</b> Make_Arg;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A><FONT COLOR=red><A NAME="112_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_23">Usr</A> : 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#167_23">Usr</A>;
+ <b>end</b> Copy_Arg;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A><FONT COLOR=red><A NAME="118_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_24">Usr</A> : <b>in</b> System.Address)
+ <b>is</b>
+ <b>procedure</b> <FONT COLOR=red><A NAME="120_17">Free_Type</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
+ (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>'Class, Field_Type_Access);
+ <b>procedure</b> <FONT COLOR=red><A NAME="122_17">Freeargs</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
+ (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#211_9">Argument</A>, Argument_Access);
+
+ To_Be_Free : Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_24">Usr</A>);
+ Low_Level : C_Field_Type;
+ <b>begin</b>
+ <b>if</b> To_Be_Free /= <b>null</b> <b>then</b>
+ <b>if</b> To_Be_Free.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A> /= System.Null_Address <b>then</b>
+ Low_Level := To_Be_Free.Cft;
+ <b>if</b> Low_Level.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#126_10">Freearg</A> /= <b>null</b> <b>then</b>
+ Low_Level.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#126_10">Freearg</A> (To_Be_Free.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ <b>if</b> To_Be_Free.Typ /= <b>null</b> <b>then</b>
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#120_17">Free_Type</A> (To_Be_Free.Typ);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#122_17">Freeargs</A> (To_Be_Free);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Free_Arg;
+
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_14">Wrap_Builtin</A><FONT COLOR=red><A NAME="143_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#152_28">Typ</A> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>'Class;
+ Cft : C_Field_Type := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#148_13">C_Builtin_Router</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="147_7">Usr_Arg</A></FONT> : System.Address := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#61_13">Get_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A>);
+ Low_Level : <b>constant</b> C_Field_Type := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A>);
+ Arg : Argument_Access;
+ <FONT COLOR=red><A NAME="150_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="151_16">Set_Fld_Type</A></FONT> (<FONT COLOR=red><A NAME="151_30">F</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A>;
+ Cf : C_Field_Type := Cft;
+ Arg1 : Argument_Access) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#151_16">Set_Fld_Type</A>, "set_field_type");
+
+ <b>begin</b>
+ <b>pragma</b> Assert (Low_Level /= Null_Field_Type);
+ <b>if</b> Cft /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#148_13">C_Builtin_Router</A> <b>and</b> <b>then</b> Cft /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#149_13">C_Choice_Router</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ Arg := <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#211_9">Argument</A>'(Usr => System.Null_Address,
+ Typ => <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field_Type</A>'Class'(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#152_28">Typ</A>),
+ Cft => <A HREF="terminal_interface-curses-forms-field_types__adb.htm#58_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#151_28">Fld</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#147_7">Usr_Arg</A> /= System.Null_Address <b>then</b>
+ <b>if</b> Low_Level.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#125_10">Copyarg</A> /= <b>null</b> <b>then</b>
+ Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A> := Low_Level.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#125_10">Copyarg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#147_7">Usr_Arg</A>);
+ <b>else</b>
+ Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#147_7">Usr_Arg</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#150_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#151_16">Set_Fld_Type</A> (Arg1 => Arg);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#150_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#150_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Wrap_Builtin;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_13">Field_Check_Router</A><FONT COLOR=red><A NAME="179_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_33">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#178_33">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>
+ <b>is</b>
+ Arg : <b>constant</b> Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#178_33">Usr</A>);
+ <b>begin</b>
+ <b>pragma</b> Assert (Arg /= <b>null</b> <b>and</b> <b>then</b> Arg.Cft /= Null_Field_Type
+ <b>and</b> <b>then</b> Arg.Typ /= <b>null</b>);
+ <b>if</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#127_10">Fcheck</A> /= <b>null</b> <b>then</b>
+ <b>return</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#127_10">Fcheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_33">Fld</A>, Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+ <b>else</b>
+ <b>return</b> 1;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Field_Check_Router;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_13">Char_Check_Router</A><FONT COLOR=red><A NAME="193_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_32">Ch</A> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#186_32">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>
+ <b>is</b>
+ Arg : <b>constant</b> Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#186_32">Usr</A>);
+ <b>begin</b>
+ <b>pragma</b> Assert (Arg /= <b>null</b> <b>and</b> <b>then</b> Arg.Cft /= Null_Field_Type
+ <b>and</b> <b>then</b> Arg.Typ /= <b>null</b>);
+ <b>if</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#128_10">Ccheck</A> /= <b>null</b> <b>then</b>
+ <b>return</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#128_10">Ccheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_32">Ch</A>, Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+ <b>else</b>
+ <b>return</b> 1;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Char_Check_Router;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_13">Next_Router</A><FONT COLOR=red><A NAME="207_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_26">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#194_26">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>
+ <b>is</b>
+ Arg : <b>constant</b> Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#194_26">Usr</A>);
+ <b>begin</b>
+ <b>pragma</b> Assert (Arg /= <b>null</b> <b>and</b> <b>then</b> Arg.Cft /= Null_Field_Type
+ <b>and</b> <b>then</b> Arg.Typ /= <b>null</b>);
+ <b>if</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#129_10">Next</A> /= <b>null</b> <b>then</b>
+ <b>return</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#129_10">Next</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_26">Fld</A>, Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+ <b>else</b>
+ <b>return</b> 1;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Next_Router;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_13">Prev_Router</A><FONT COLOR=red><A NAME="221_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_26">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#202_26">Usr</A> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12">C_Int</A>
+ <b>is</b>
+ Arg : <b>constant</b> Argument_Access := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#55_13">To_Argument_Access</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#202_26">Usr</A>);
+ <b>begin</b>
+ <b>pragma</b> Assert (Arg /= <b>null</b> <b>and</b> <b>then</b> Arg.Cft /= Null_Field_Type
+ <b>and</b> <b>then</b> Arg.Typ /= <b>null</b>);
+ <b>if</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#129_16">Prev</A> /= <b>null</b> <b>then</b>
+ <b>return</b> Arg.Cft.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#129_16">Prev</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_26">Fld</A>, Arg.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#213_7">Usr</A>);
+ <b>else</b>
+ <b>return</b> 1;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Prev_Router;
+
+ <FONT COLOR=green><EM>-- -----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#148_13">C_Builtin_Router</A><FONT COLOR=red><A NAME="237_13"></A></FONT> <b>return</b> C_Field_Type
+ <b>is</b>
+ <FONT COLOR=red><A NAME="239_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ T : C_Field_Type;
+ <b>begin</b>
+ <b>if</b> M_Builtin_Router = Null_Field_Type <b>then</b>
+ T := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_13">Field_Check_Router</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_13">Char_Check_Router</A>'<b>Access</b>);
+ <b>if</b> T = Null_Field_Type <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#239_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#227_13">Set_Fieldtype_Arg</A> (T,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A>'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#239_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#239_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ M_Builtin_Router := T;
+ <b>end</b> <b>if</b>;
+ <b>pragma</b> Assert (M_Builtin_Router /= Null_Field_Type);
+ <b>return</b> M_Builtin_Router;
+ <b>end</b> C_Builtin_Router;
+
+ <FONT COLOR=green><EM>-- -----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#149_13">C_Choice_Router</A><FONT COLOR=red><A NAME="264_13"></A></FONT> <b>return</b> C_Field_Type
+ <b>is</b>
+ <FONT COLOR=red><A NAME="266_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ T : C_Field_Type;
+ <b>begin</b>
+ <b>if</b> M_Choice_Router = Null_Field_Type <b>then</b>
+ T := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#222_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_13">Field_Check_Router</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_13">Char_Check_Router</A>'<b>Access</b>);
+ <b>if</b> T = Null_Field_Type <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#227_13">Set_Fieldtype_Arg</A> (T,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#162_13">Make_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Copy_Arg</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Free_Arg</A>'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A>);
+ <b>end</b> <b>if</b>;
+
+ <A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#234_13">Set_Fieldtype_Choice</A> (T,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_13">Next_Router</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_13">Prev_Router</A>'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#266_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ M_Choice_Router := T;
+ <b>end</b> <b>if</b>;
+ <b>pragma</b> Assert (M_Choice_Router /= Null_Field_Type);
+ <b>return</b> M_Choice_Router;
+ <b>end</b> C_Choice_Router;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types;
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_types.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_types.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_Types --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Interfaces.C;
+
+<b>package</b> Terminal_Interface.Curses.Forms.Field_Types <b>is</b>
+ <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Forms.Field_Types);
+ <b>use</b> <b>type</b><FONT COLOR=red><A NAME="46_12"> </A></FONT>Interfaces.C.int;
+ <b>subtype</b> C_Int <b>is</b> Interfaces.C.int;
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_fieldtype.3x.html">form_fieldtype.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <b>type</b> Field_Type <b>is</b> <b>abstract</b> <b>tagged</b> <b>null</b> <b>record</b>;
+ <FONT COLOR=green><EM>-- Abstract base type for all field types. A concrete field type</EM></FONT>
+ <FONT COLOR=green><EM>-- is an extension that adds some data elements describing formats or</EM></FONT>
+ <FONT COLOR=green><EM>-- boundary values for the type and validation routines.</EM></FONT>
+ <FONT COLOR=green><EM>-- For the builtin low-level fieldtypes, the validation routines are</EM></FONT>
+ <FONT COLOR=green><EM>-- already defined by the low-level C library.</EM></FONT>
+ <FONT COLOR=green><EM>-- The builtin types like Alpha or AlphaNumeric etc. are defined in</EM></FONT>
+ <FONT COLOR=green><EM>-- child packages of this package. You may use one of them as example</EM></FONT>
+ <FONT COLOR=green><EM>-- how to create you own child packages for low-level field types that</EM></FONT>
+ <FONT COLOR=green><EM>-- you may have already written in C.</EM></FONT>
+
+ <b>type</b> Field_Type_Access <b>is</b> <b>access</b> <b>all</b> Field_Type'Class;
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
+ <b>procedure</b> Set_Field_Type (<FONT COLOR=red><A NAME="67_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field</A>;
+ Fld_Type : <b>in</b> Field_Type) <b>is</b> <b>abstract</b>;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_fieldtype.3x.html">set_field_type()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- But: we hide the vararg mechanism of the C interface. You always</EM></FONT>
+ <FONT COLOR=green><EM>-- have to pass a single Field_Type parameter.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- ---------------------------------------------------------------------</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_validation.3x.html">form_field_validation.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
+ <b>function</b> Get_Type (Fld : <b>in</b> Field) <b>return</b> Field_Type_Access;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_validation.3x.html">field_type()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: field_arg()</EM></FONT>
+ <FONT COLOR=green><EM>-- In Ada95 we can combine these. If you try to retrieve the field type</EM></FONT>
+ <FONT COLOR=green><EM>-- that is not defined as extension of the abstract tagged type above,</EM></FONT>
+ <FONT COLOR=green><EM>-- you will raise a Form_Exception.</EM></FONT>
+ <FONT COLOR=green><EM>-- This is not inlined</EM></FONT>
+
+ <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- | Private Part.</EM></FONT>
+ <FONT COLOR=green><EM>-- | Most of this is used by the implementations of the child packages.</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+<b>private</b>
+ <b>type</b> Makearg_Function <b>is</b> <b>access</b>
+ <b>function</b> (Args : System.Address) <b>return</b> System.Address;
+ <b>pragma</b> Convention (C, Makearg_Function);
+
+ <b>type</b> Copyarg_Function <b>is</b> <b>access</b>
+ <b>function</b> (Usr : System.Address) <b>return</b> System.Address;
+ <b>pragma</b> Convention (C, Copyarg_Function);
+
+ <b>type</b> Freearg_Function <b>is</b> <b>access</b>
+ <b>procedure</b> (Usr : System.Address);
+ <b>pragma</b> Convention (C, Freearg_Function);
+
+ <b>type</b> Field_Check_Function<FONT COLOR=red><A NAME="105_29"> </A></FONT><b>is</b> <b>access</b>
+ <b>function</b> (Fld : Field; Usr : System.Address) <b>return</b> C_Int;
+ <b>pragma</b> Convention (C, Field_Check_Function);
+
+ <b>type</b> Char_Check_Function<FONT COLOR=red><A NAME="109_28"> </A></FONT><b>is</b> <b>access</b>
+ <b>function</b> (Ch : C_Int<A HREF="terminal_interface-curses-forms-field_types__ads.htm#108_9">;</A> Usr : System.Address) <b>return</b> C_Int;
+ <b>pragma</b> Convention (C, Char_Check_Function);
+
+ <b>type</b> Choice_Function <b>is</b> <b>access</b>
+ <b>function</b> (Fld : Field; Usr : System.Address) <b>return</b> C_Int;
+ <b>pragma</b> Convention (C, Choice_Function);
+
+ <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- | This must be in sync with the FIELDTYPE structure in form.h</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>type</b> Low_Level_Field_Type <b>is</b>
+ <b>record</b>
+ <FONT COLOR=red><A NAME="122_10">Status</A></FONT> : <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.short;
+ <FONT COLOR=red><A NAME="123_10">Ref_Count</A></FONT> : Interfaces.C.long;
+ <FONT COLOR=red><A NAME="124_10">Left</A></FONT>, Right : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#92_9">System</A>.Address;
+ <FONT COLOR=red><A NAME="125_10">Makearg</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#96_9">Makearg_Function</A>;
+ <FONT COLOR=red><A NAME="126_10">Copyarg</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#100_9">Copyarg_Function</A>;
+ <FONT COLOR=red><A NAME="127_10">Freearg</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#104_9">Freearg_Function</A>;
+ <FONT COLOR=red><A NAME="128_10">Fcheck</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#108_9">Field_Check_Function</A>;
+ <FONT COLOR=red><A NAME="129_10">Ccheck</A></FONT><FONT COLOR=red><A NAME="129_16"> </A></FONT>: <A HREF="terminal_interface-curses-forms-field_types__ads.htm#112_9">Char_Check_Function</A>;
+ Next, Prev : Choice_Function;
+ <b>end</b> <b>record</b>;
+ <b>pragma</b> Convention (C, Low_Level_Field_Type);
+ <b>type</b> C_Field_Type <b>is</b> <b>access</b> <b>all</b> Low_Level_Field_Type;
+
+ Null_Field_Type : <b>constant</b> C_Field_Type := <b>null</b>;
+
+ <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- | This four low-level fieldtypes are the ones associated with</EM></FONT>
+ <FONT COLOR=green><EM>-- | fieldtypes handled by this binding. Any other low-level fieldtype</EM></FONT>
+ <FONT COLOR=green><EM>-- | will result in a Form_Exception is function Get_Type.</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ M_Generic_Type : C_Field_Type := <b>null</b>;
+ M_Generic_Choice : C_Field_Type := <b>null</b>;
+ M_Builtin_Router : C_Field_Type := <b>null</b>;
+ M_Choice_Router : C_Field_Type := <b>null</b>;
+
+ <FONT COLOR=green><EM>-- Two wrapper functions to access those low-level fieldtypes defined</EM></FONT>
+ <FONT COLOR=green><EM>-- in this package.</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#264_13">C_Builtin_Router</A><FONT COLOR=red><A NAME="149_13"></A></FONT> <b>return</b> C_Field_Type;
+ <b>function</b> C_Choice_Router <b>return</b> C_Field_Type;
+
+ <b>procedure</b> Wrap_Builtin (<FONT COLOR=red><A NAME="152_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#52_9">Field</A>;
+ Typ : Field_Type'Class<A HREF="terminal_interface-curses-forms-field_types__ads.htm#148_13">;</A>
+ Cft : C_Field_Type := C_Builtin_Router);
+ <FONT COLOR=green><EM>-- This procedure has to be called by the Set_Field_Type implementation</EM></FONT>
+ <FONT COLOR=green><EM>-- for builtin low-level fieldtypes to replace it by an Ada95</EM></FONT>
+ <FONT COLOR=green><EM>-- conformant Field_Type object.</EM></FONT>
+ <FONT COLOR=green><EM>-- The parameter Cft must be C_Builtin_Router for regular low-level</EM></FONT>
+ <FONT COLOR=green><EM>-- fieldtypes (like TYP_ALPHA or TYP_ALNUM) and C_Choice_Router for</EM></FONT>
+ <FONT COLOR=green><EM>-- low-level fieldtypes witch choice functions (like TYP_ENUM).</EM></FONT>
+ <FONT COLOR=green><EM>-- Any other value will raise a Form_Exception.</EM></FONT>
+
+ <b>function</b> Make_Arg (Args : System.Address) <b>return</b> System.Address;
+ <b>pragma</b> Convention (C, Make_Arg);
+ <FONT COLOR=green><EM>-- This is the Makearg_Function for the internal low-level types</EM></FONT>
+ <FONT COLOR=green><EM>-- introduced by this binding.</EM></FONT>
+
+ <b>function</b> Copy_Arg (Usr<A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13"> </A>: System.Address) <b>return</b> System.Address;
+ <b>pragma</b> Convention (C, Copy_Arg);
+ <FONT COLOR=green><EM>-- This is the Copyarg_Function for the internal low-level types</EM></FONT>
+ <FONT COLOR=green><EM>-- introduced by this binding.</EM></FONT>
+
+ <b>procedure</b> Free_Arg (Usr : System.Address);
+ <b>pragma</b> Convention (C, Free_Arg);
+ <FONT COLOR=green><EM>-- This is the Freearg_Function for the internal low-level types</EM></FONT>
+ <FONT COLOR=green><EM>-- introduced by this binding.</EM></FONT>
+
+ <b>function</b> Field_Check_Router (<FONT COLOR=red><A NAME="178_33">Fld</A></FONT> : Field;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#177_13"> </A> Usr : System.Address) <b>return</b> C_Int;
+ <b>pragma</b> Convention (C, Field_Check_Router);
+ <FONT COLOR=green><EM>-- This is the Field_Check_Function for the internal low-level types</EM></FONT>
+ <FONT COLOR=green><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
+ <FONT COLOR=green><EM>-- type. It routes the call to the corresponding low-level validation</EM></FONT>
+ <FONT COLOR=green><EM>-- function.</EM></FONT>
+
+ <b>function</b> Char_Check_Router (<FONT COLOR=red><A NAME="186_32">Ch</A></FONT> : C_Int;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#185_13"> </A> Usr : System.Address) <b>return</b> C_Int;
+ <b>pragma</b> Convention (C, Char_Check_Router);
+ <FONT COLOR=green><EM>-- This is the Char_Check_Function for the internal low-level types</EM></FONT>
+ <FONT COLOR=green><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
+ <FONT COLOR=green><EM>-- type. It routes the call to the corresponding low-level validation</EM></FONT>
+ <FONT COLOR=green><EM>-- function.</EM></FONT>
+
+ <b>function</b> Next_Router (<FONT COLOR=red><A NAME="194_26">Fld</A></FONT> : Field;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#193_13">Usr</A> : System.Address) <b>return</b> C_Int;
+ <b>pragma</b> Convention (C, Next_Router);
+ <FONT COLOR=green><EM>-- This is the Choice_Function for the internal low-level types</EM></FONT>
+ <FONT COLOR=green><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
+ <FONT COLOR=green><EM>-- type. It routes the call to the corresponding low-level next_choice</EM></FONT>
+ <FONT COLOR=green><EM>-- function.</EM></FONT>
+
+ <b>function</b> Prev_Router (<FONT COLOR=red><A NAME="202_26">Fld</A></FONT> : Field;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#201_13">Usr</A> : System.Address) <b>return</b> C_Int;
+ <b>pragma</b> Convention (C, Prev_Router);
+ <FONT COLOR=green><EM>-- This is the Choice_Function for the internal low-level types</EM></FONT>
+ <FONT COLOR=green><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></FONT>
+ <FONT COLOR=green><EM>-- type. It routes the call to the corresponding low-level prev_choice</EM></FONT>
+ <FONT COLOR=green><EM>-- function.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- This is the Argument structure maintained by all low-level field types</EM></FONT>
+ <FONT COLOR=green><EM>-- introduced by this binding.</EM></FONT>
+ <b>type</b> Argument <b>is</b> <b>record</b>
+ <FONT COLOR=red><A NAME="213_7">Typ</A></FONT> : Field_Type_Access; <FONT COLOR=green><EM>-- the Field_Type creating this record</EM></FONT>
+ Usr : System.Address; <FONT COLOR=green><EM>-- original arg for builtin low-level types</EM></FONT>
+ Cft : C_Field_Type; <FONT COLOR=green><EM>-- the original low-level type</EM></FONT>
+ <b>end</b> <b>record</b>;
+ <b>type</b> Argument_Access <b>is</b> <b>access</b> <b>all</b> Argument;
+
+ <FONT COLOR=green><EM>-- +----------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- | Some Imports of libform routines to deal with low-level fieldtypes.</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> New_Fieldtype (<FONT COLOR=red><A NAME="223_28">Fcheck</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#108_9">Field_Check_Function</A>;
+ Ccheck : Char_Check_Function)
+ <b>return</b> C_Field_Type;
+ <b>pragma</b> Import (C, New_Fieldtype, "new_fieldtype");
+
+ <b>function</b> Set_Fieldtype_Arg (<FONT COLOR=red><A NAME="228_32">Cft</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#92_9">C_Field_Type</A>;
+ <FONT COLOR=red><A NAME="229_32">Mak</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#96_9">Makearg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#167_13">Make_Arg</A>'<b>Access</b>;
+ <FONT COLOR=red><A NAME="230_32">Cop</A></FONT> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#100_9">Copyarg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#172_14">Copy_Arg</A>'<b>Access</b>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12"> </A> Fre : Freearg_Function := Free_Arg'<b>Access</b>)
+ <b>return</b> C_Int;
+ <b>pragma</b> Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
+
+ <b>function</b> Set_Fieldtype_Choice (<FONT COLOR=red><A NAME="235_35">Cft</A></FONT> : <FONT COLOR=red><A NAME="235_41">C_Field_Type</A></FONT>;
+ <A HREF="terminal_interface-curses-forms-field_types__ads.htm#46_12"> </A> Next, Prev : Choice_Function)
+ <b>return</b> C_Int;
+ <b>pragma</b> Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_Types;
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_user_data.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Field_User_Data --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.10 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>-- | man page form_field_userptr.3x</EM></FONT>
+<FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#45_41">Field_User_Data</A> <b>is</b>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#53_14">Set_User_Data</A><FONT COLOR=red><A NAME="54_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#53_29">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#54_29">Data</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="57_16">Set_Field_Userptr</A></FONT> (<FONT COLOR=red><A NAME="57_35">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="58_35">Usr</A></FONT> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#57_16">Set_Field_Userptr</A>, "set_field_userptr");
+
+ <FONT COLOR=red><A NAME="61_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#57_16">Set_Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#53_29">Fld</A>, <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#54_29">Data</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#61_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#61_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_User_Data;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#64_13">Get_User_Data</A><FONT COLOR=red><A NAME="70_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#64_28">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="72_16">Field_Userptr</A></FONT> (<FONT COLOR=red><A NAME="72_31">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#72_16">Field_Userptr</A>, "field_userptr");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#72_16">Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#64_28">Fld</A>);
+ <b>end</b> Get_User_Data;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#59_14">Get_User_Data</A><FONT COLOR=red><A NAME="78_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#59_29">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#60_29">Data</A> : <b>out</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">User_Access</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#60_29">Data</A> := <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#59_29">Fld</A>);
+ <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Field_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-field_user_data.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-field_user_data.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-field_user_data.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.12 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.13 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
<b>package</b> Terminal_Interface.Curses.Forms.Field_User_Data <b>is</b>
<b>pragma</b> Preelaborate (Terminal_Interface.Curses.Forms.Field_User_Data);
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_userptr.3x.html">form_field_userptr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_userptr.3x.html">form_field_userptr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
- <b>procedure</b> Set_User_Data (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">Field</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
+ <b>procedure</b> Set_User_Data (<FONT COLOR=red><A NAME="54_29">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">Field</A>;
Data : <b>in</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">set_field_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">set_field_userptr</A></EM></FONT>
<b>pragma</b> Inline (Set_User_Data);
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
- <b>procedure</b> Get_User_Data (Fld : <b>in</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">Field</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
+ <b>procedure</b> Get_User_Data (<FONT COLOR=red><A NAME="60_29">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#44_9">Field</A>;
Data : <b>out</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
<b>function</b> Get_User_Data (Fld : <b>in</b> Field) <b>return</b> User_Access;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- Sama as function</EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Sama as function</EM></FONT>
<b>pragma</b> Inline (Get_User_Data);
<b>end</b> Terminal_Interface.Curses.Forms.Field_User_Data;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-form_user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-form_user_data.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms.Form_User_Data --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.10 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>-- | man page form__userptr.3x</EM></FONT>
+<FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Forms.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#45_41">Form_User_Data</A> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#53_14">Set_User_Data</A><FONT COLOR=red><A NAME="55_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#53_29">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#54_29">Data</A> : <b>in</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="58_16">Set_Form_Userptr</A></FONT> (<FONT COLOR=red><A NAME="58_34">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="59_34">Data</A></FONT> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#58_16">Set_Form_Userptr</A>, "set_form_userptr");
+
+ <FONT COLOR=red><A NAME="62_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#58_16">Set_Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#53_29">Frm</A>, <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#54_29">Data</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#62_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#62_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_User_Data;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#64_13">Get_User_Data</A><FONT COLOR=red><A NAME="71_13"></A></FONT> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#64_28">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="73_16">Form_Userptr</A></FONT> (<FONT COLOR=red><A NAME="73_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#73_16">Form_Userptr</A>, "form_userptr");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#73_16">Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#64_28">Frm</A>);
+ <b>end</b> Get_User_Data;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#59_14">Get_User_Data</A><FONT COLOR=red><A NAME="79_14"></A></FONT> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#59_29">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#60_29">Data</A> : <b>out</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">User_Access</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#60_29">Data</A> := <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#59_29">Frm</A>);
+ <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Forms.Form_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-forms-form_user_data.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-forms-form_user_data.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms-form_user_data.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.11 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
<b>package</b> Terminal_Interface.Curses.Forms.Form_User_Data <b>is</b>
<b>pragma</b> Preelaborate (Terminal_Interface.Curses.Forms.Form_User_Data);
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_userptr.3x.html">form_userptr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_userptr.3x.html">form_userptr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
- <b>procedure</b> Set_User_Data (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">Form</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
+ <b>procedure</b> Set_User_Data (<FONT COLOR=red><A NAME="54_29">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">Form</A>;
Data : <b>in</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">set_form_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">set_form_userptr</A></EM></FONT>
<b>pragma</b> Inline (Set_User_Data);
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
- <b>procedure</b> Get_User_Data (Frm : <b>in</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">Form</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
+ <b>procedure</b> Get_User_Data (<FONT COLOR=red><A NAME="60_29">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#44_9">Form</A>;
Data : <b>out</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
<b>function</b> Get_User_Data (Frm : <b>in</b> Form) <b>return</b> User_Access;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
<b>pragma</b> Inline (Get_User_Data);
<b>end</b> Terminal_Interface.Curses.Forms.Form_User_Data;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Forms --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.20 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Unchecked_Deallocation;
+<b>with</b> Ada.Unchecked_Conversion;
+
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers;
+
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-forms__ads.htm#49_35">Forms</A><FONT COLOR=red><A NAME="50_40"></A></FONT> <b>is</b>
+
+ <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+ <b>type</b> <FONT COLOR=red><A NAME="54_9">C_Field_Array</A></FONT> <b>is</b> <b>array</b> (Natural <b>range</b> <>) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <b>package</b> <FONT COLOR=red><A NAME="55_12">F_Array</A></FONT> <b>is</b> <b>new</b>
+ <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>, <A HREF="terminal_interface-curses-forms__adb.htm#54_9">C_Field_Array</A>, <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- subtype chars_ptr is Interfaces.C.Strings.chars_ptr;</EM></FONT>
+
+ <b>function</b> <FONT COLOR=red><A NAME="64_13">FOS_2_CInt</A></FONT> <b>is</b> <b>new</b>
+ Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+
+ <b>function</b> <FONT COLOR=red><A NAME="68_13">CInt_2_FOS</A></FONT> <b>is</b> <b>new</b>
+ Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>,
+ <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>);
+
+ <b>function</b> <FONT COLOR=red><A NAME="72_13">FrmOS_2_CInt</A></FONT> <b>is</b> <b>new</b>
+ Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+
+ <b>function</b> <FONT COLOR=red><A NAME="76_13">CInt_2_FrmOS</A></FONT> <b>is</b> <b>new</b>
+ Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>,
+ <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#279_14">Request_Name</A><FONT COLOR=red><A NAME="80_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#279_28">Key</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#280_28">Name</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="83_16">Form_Request_Name</A></FONT> (<FONT COLOR=red><A NAME="83_35">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#83_16">Form_Request_Name</A>, "form_request_name");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#83_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#279_28">Key</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#280_28">Name</A>);
+ <b>end</b> Request_Name;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#282_14">Request_Name</A><FONT COLOR=red><A NAME="89_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#282_28">Key</A> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A>) <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="91_16">Form_Request_Name</A></FONT> (<FONT COLOR=red><A NAME="91_35">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#91_16">Form_Request_Name</A>, "form_request_name");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#91_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#282_28">Key</A>)));
+ <b>end</b> Request_Name;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_field_new.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#296_13">Create</A><FONT COLOR=red><A NAME="107_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#296_21">Height</A> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#297_21">Width</A> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#298_21">Top</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#299_21">Left</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#300_21">Off_Screen</A> : Natural := 0;
+ <A HREF="terminal_interface-curses-forms__ads.htm#301_21">More_Buffers</A> : <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First)
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="115_16">Newfield</A></FONT> (<FONT COLOR=red><A NAME="115_26">H</A></FONT>, <FONT COLOR=red><A NAME="115_29">W</A></FONT>, <FONT COLOR=red><A NAME="115_32">T</A></FONT>, <FONT COLOR=red><A NAME="115_35">L</A></FONT>, <FONT COLOR=red><A NAME="115_38">O</A></FONT>, <FONT COLOR=red><A NAME="115_41">M</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#115_16">Newfield</A>, "new_field");
+ <FONT COLOR=red><A NAME="117_7">Fld</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#115_16">Newfield</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#296_21">Height</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#297_21">Width</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#298_21">Top</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#299_21">Left</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#300_21">Off_Screen</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#301_21">More_Buffers</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#117_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#117_7">Fld</A>;
+ <b>end</b> Create;
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#318_14">Delete</A><FONT COLOR=red><A NAME="130_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#318_22">Fld</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="132_16">Free_Field</A></FONT> (<FONT COLOR=red><A NAME="132_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#132_16">Free_Field</A>, "free_field");
+
+ <FONT COLOR=red><A NAME="135_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#135_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#132_16">Free_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#318_22">Fld</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#135_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#135_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#318_22">Fld</A> := <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>;
+ <b>end</b> Delete;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#324_13">Duplicate</A><FONT COLOR=red><A NAME="146_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#324_24">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#325_24">Top</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#326_24">Left</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="150_16">Dup_Field</A></FONT> (<FONT COLOR=red><A NAME="150_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="151_27">Top</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="152_27">Left</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#150_16">Dup_Field</A>, "dup_field");
+
+ <FONT COLOR=red><A NAME="155_7">F</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#150_16">Dup_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#324_24">Fld</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#325_24">Top</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#326_24">Left</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#155_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#155_7">F</A>;
+ <b>end</b> Duplicate;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#331_13">Link</A><FONT COLOR=red><A NAME="167_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#331_19">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#332_19">Top</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#333_19">Left</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="171_16">Lnk_Field</A></FONT> (<FONT COLOR=red><A NAME="171_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="172_27">Top</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="173_27">Left</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#171_16">Lnk_Field</A>, "link_field");
+
+ <FONT COLOR=red><A NAME="176_7">F</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#171_16">Lnk_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#331_19">Fld</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#332_19">Top</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#333_19">Left</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#176_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#176_7">F</A>;
+ <b>end</b> Link;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_field_just.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#342_14">Set_Justification</A><FONT COLOR=red><A NAME="192_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#342_33">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#343_33">Just</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#62_9">Field_Justification</A> := <A HREF="terminal_interface-curses-forms__ads.htm#62_33">None</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="195_16">Set_Field_Just</A></FONT> (<FONT COLOR=red><A NAME="195_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="196_32">Just</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#195_16">Set_Field_Just</A>, "set_field_just");
+
+ <FONT COLOR=red><A NAME="199_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> :=
+ <A HREF="terminal_interface-curses-forms__adb.htm#195_16">Set_Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#342_33">Fld</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#62_9">Field_Justification</A>'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#343_33">Just</A>)));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#199_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#199_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Justification;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#348_13">Get_Justification</A><FONT COLOR=red><A NAME="210_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#348_32">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#62_9">Field_Justification</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="212_16">Field_Just</A></FONT> (<FONT COLOR=red><A NAME="212_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#212_16">Field_Just</A>, "field_just");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#62_9">Field_Justification</A>'Val (<A HREF="terminal_interface-curses-forms__adb.htm#212_16">Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#348_32">Fld</A>));
+ <b>end</b> Get_Justification;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_field_buffer.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#357_14">Set_Buffer</A><FONT COLOR=red><A NAME="224_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-forms__ads.htm#358_7">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#359_7">Buffer</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First;
+ <A HREF="terminal_interface-curses-forms__ads.htm#360_7">Str</A> : <b>in</b> String)
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+ <b>function</b> <FONT COLOR=red><A NAME="230_16">Set_Fld_Buffer</A></FONT> (<FONT COLOR=red><A NAME="230_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="231_34">Bufnum</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ S : Char_Ptr)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#230_16">Set_Fld_Buffer</A>, "set_field_buffer");
+
+ <FONT COLOR=red><A NAME="236_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses-forms__ads.htm#360_7">Str</A>'Length);
+ <FONT COLOR=red><A NAME="237_7">Len</A></FONT> : size_t;
+ <FONT COLOR=red><A NAME="238_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses-forms__ads.htm#360_7">Str</A>, <A HREF="terminal_interface-curses-forms__adb.htm#236_7">Txt</A>, <A HREF="terminal_interface-curses-forms__adb.htm#237_7">Len</A>);
+ <A HREF="terminal_interface-curses-forms__adb.htm#238_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#230_16">Set_Fld_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#358_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#359_7">Buffer</A>), <A HREF="terminal_interface-curses-forms__adb.htm#236_7">Txt</A> (<A HREF="terminal_interface-curses-forms__adb.htm#236_7">Txt</A>'First)'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#238_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#238_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Buffer;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#365_14">Get_Buffer</A><FONT COLOR=red><A NAME="249_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-forms__ads.htm#366_7">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#367_7">Buffer</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First;
+ <A HREF="terminal_interface-curses-forms__ads.htm#368_7">Str</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="254_16">Field_Buffer</A></FONT> (<FONT COLOR=red><A NAME="254_30">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="255_30">B</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#254_16">Field_Buffer</A>, "field_buffer");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#254_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#366_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#367_7">Buffer</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#368_7">Str</A>);
+ <b>end</b> Get_Buffer;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#371_13">Get_Buffer</A><FONT COLOR=red><A NAME="261_13"></A></FONT>
+ (<A HREF="terminal_interface-curses-forms__ads.htm#372_7">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#373_7">Buffer</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>'First) <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="265_16">Field_Buffer</A></FONT> (<FONT COLOR=red><A NAME="265_30">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="266_30">B</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#265_16">Field_Buffer</A>, "field_buffer");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#265_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#372_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#373_7">Buffer</A>)));
+ <b>end</b> Get_Buffer;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#379_14">Set_Status</A><FONT COLOR=red><A NAME="274_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#379_26">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#380_26">Status</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="277_16">Set_Fld_Status</A></FONT> (<FONT COLOR=red><A NAME="277_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="278_32">St</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#277_16">Set_Fld_Status</A>, "set_field_status");
+
+ <FONT COLOR=red><A NAME="281_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#277_16">Set_Fld_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#379_26">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#380_26">Status</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#281_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Status;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#385_13">Changed</A><FONT COLOR=red><A NAME="290_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#385_22">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="292_16">Field_Status</A></FONT> (<FONT COLOR=red><A NAME="292_30">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#292_16">Field_Status</A>, "field_status");
+
+ <FONT COLOR=red><A NAME="295_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#292_16">Field_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#385_22">Fld</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#295_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_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> Changed;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#390_14">Set_Maximum_Size</A><FONT COLOR=red><A NAME="306_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#390_32">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#391_32">Max</A> : <b>in</b> Natural := 0)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="309_16">Set_Field_Max</A></FONT> (<FONT COLOR=red><A NAME="309_31">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="310_31">M</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#309_16">Set_Field_Max</A>, "set_max_field");
+
+ <FONT COLOR=red><A NAME="313_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#309_16">Set_Field_Max</A> (<A HREF="terminal_interface-curses-forms__ads.htm#390_32">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#391_32">Max</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#313_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#313_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Maximum_Size;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_field_opts.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#400_14">Set_Options</A><FONT COLOR=red><A NAME="326_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#400_27">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#401_27">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="329_16">Set_Field_Opts</A></FONT> (<FONT COLOR=red><A NAME="329_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="330_32">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#329_16">Set_Field_Opts</A>, "set_field_opts");
+
+ <FONT COLOR=red><A NAME="333_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#64_13">FOS_2_CInt</A> (<A HREF="terminal_interface-curses-forms__ads.htm#401_27">Options</A>);
+ <FONT COLOR=red><A NAME="334_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#334_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#329_16">Set_Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#400_27">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#333_7">Opt</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#334_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#334_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Options;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#406_14">Switch_Options</A><FONT COLOR=red><A NAME="344_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#406_30">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#407_30">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#408_30">On</A> : Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="348_16">Field_Opts_On</A></FONT> (<FONT COLOR=red><A NAME="348_31">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="349_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#348_16">Field_Opts_On</A>, "field_opts_on");
+ <b>function</b> <FONT COLOR=red><A NAME="351_16">Field_Opts_Off</A></FONT> (<FONT COLOR=red><A NAME="351_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="352_32">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#351_16">Field_Opts_Off</A>, "field_opts_off");
+
+ <FONT COLOR=red><A NAME="355_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <FONT COLOR=red><A NAME="356_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#64_13">FOS_2_CInt</A> (<A HREF="terminal_interface-curses-forms__ads.htm#407_30">Options</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#408_30">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#355_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#348_16">Field_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#406_30">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#356_7">Opt</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#355_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#351_16">Field_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#406_30">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#356_7">Opt</A>);
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#355_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#355_7">Err</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Switch_Options;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#414_14">Get_Options</A><FONT COLOR=red><A NAME="370_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#414_27">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#415_27">Options</A> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="373_16">Field_Opts</A></FONT> (<FONT COLOR=red><A NAME="373_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#373_16">Field_Opts</A>, "field_opts");
+
+ <FONT COLOR=red><A NAME="376_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#373_16">Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#414_27">Fld</A>);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#415_27">Options</A> := <A HREF="terminal_interface-curses-forms__adb.htm#68_13">CInt_2_FOS</A> (<A HREF="terminal_interface-curses-forms__adb.htm#376_7">Res</A>);
+ <b>end</b> Get_Options;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#419_13">Get_Options</A><FONT COLOR=red><A NAME="383_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#419_26">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="386_7">Fos</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#419_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#419_26">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#386_7">Fos</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#386_7">Fos</A>;
+ <b>end</b> Get_Options;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_field_attributes.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#429_14">Set_Foreground</A><FONT COLOR=red><A NAME="398_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-forms__ads.htm#430_7">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#431_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#432_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="403_16">Set_Field_Fore</A></FONT> (<FONT COLOR=red><A NAME="403_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="404_32">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#403_16">Set_Field_Fore</A>, "set_field_fore");
+
+ <FONT COLOR=red><A NAME="407_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch => Character'First,
+ Color => <A HREF="terminal_interface-curses-forms__ads.htm#432_7">Color</A>,
+ Attr => <A HREF="terminal_interface-curses-forms__ads.htm#431_7">Fore</A>);
+ <FONT COLOR=red><A NAME="410_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> :=
+ <A HREF="terminal_interface-curses-forms__adb.htm#403_16">Set_Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#430_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-forms__adb.htm#407_7">Ch</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#410_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#410_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Foreground;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#437_14">Foreground</A><FONT COLOR=red><A NAME="420_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#437_26">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#438_26">Fore</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="423_16">Field_Fore</A></FONT> (<FONT COLOR=red><A NAME="423_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#423_16">Field_Fore</A>, "field_fore");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#438_26">Fore</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#423_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#437_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <b>end</b> Foreground;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#442_14">Foreground</A><FONT COLOR=red><A NAME="429_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#442_26">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#443_26">Fore</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#444_26">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="433_16">Field_Fore</A></FONT> (<FONT COLOR=red><A NAME="433_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#433_16">Field_Fore</A>, "field_fore");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#443_26">Fore</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#433_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#442_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#444_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#433_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#442_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+ <b>end</b> Foreground;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#449_14">Set_Background</A><FONT COLOR=red><A NAME="442_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-forms__ads.htm#450_7">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#451_7">Back</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#452_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="447_16">Set_Field_Back</A></FONT> (<FONT COLOR=red><A NAME="447_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="448_32">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#447_16">Set_Field_Back</A>, "set_field_back");
+
+ <FONT COLOR=red><A NAME="451_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch => Character'First,
+ Color => <A HREF="terminal_interface-curses-forms__ads.htm#452_7">Color</A>,
+ Attr => <A HREF="terminal_interface-curses-forms__ads.htm#451_7">Back</A>);
+ <FONT COLOR=red><A NAME="454_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> :=
+ <A HREF="terminal_interface-curses-forms__adb.htm#447_16">Set_Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#450_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-forms__adb.htm#451_7">Ch</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#454_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#454_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Background;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#457_14">Background</A><FONT COLOR=red><A NAME="464_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#457_26">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#458_26">Back</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="467_16">Field_Back</A></FONT> (<FONT COLOR=red><A NAME="467_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#467_16">Field_Back</A>, "field_back");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#458_26">Back</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#467_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#457_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <b>end</b> Background;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#462_14">Background</A><FONT COLOR=red><A NAME="473_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#462_26">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#463_26">Back</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#464_26">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="477_16">Field_Back</A></FONT> (<FONT COLOR=red><A NAME="477_28">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#477_16">Field_Back</A>, "field_back");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#463_26">Back</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#477_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#462_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#464_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-forms__adb.htm#477_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#462_26">Fld</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+ <b>end</b> Background;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#469_14">Set_Pad_Character</A><FONT COLOR=red><A NAME="486_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#469_33">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#470_33">Pad</A> : <b>in</b> Character := <A HREF="terminal_interface-curses-forms__ads.htm#54_4">Space</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="489_16">Set_Field_Pad</A></FONT> (<FONT COLOR=red><A NAME="489_31">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <FONT COLOR=red><A NAME="490_31">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#489_16">Set_Field_Pad</A>, "set_field_pad");
+
+ <FONT COLOR=red><A NAME="493_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#489_16">Set_Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#469_33">Fld</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#470_33">Pad</A>)));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#493_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#493_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Pad_Character;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#475_14">Pad_Character</A><FONT COLOR=red><A NAME="503_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#475_29">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#476_29">Pad</A> : <b>out</b> Character)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="506_16">Field_Pad</A></FONT> (<FONT COLOR=red><A NAME="506_27">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#506_16">Field_Pad</A>, "field_pad");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#476_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-forms__adb.htm#506_16">Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#475_29">Fld</A>));
+ <b>end</b> Pad_Character;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_field_info.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#485_14">Info</A><FONT COLOR=red><A NAME="518_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#485_20">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#486_20">Lines</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#487_20">Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#488_20">First_Row</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#489_20">First_Column</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#490_20">Off_Screen</A> : <b>out</b> Natural;
+ <A HREF="terminal_interface-curses-forms__ads.htm#491_20">Additional_Buffers</A> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A>)
+ <b>is</b>
+ <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="527_16">Fld_Info</A></FONT> (<FONT COLOR=red><A NAME="527_26">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ L, C, Fr, Fc, Os, Ab : C_Int_Access)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#527_16">Fld_Info</A>, "field_info");
+
+ <FONT COLOR=red><A NAME="532_7">L</A></FONT>, <FONT COLOR=red><A NAME="532_10">C</A></FONT>, <FONT COLOR=red><A NAME="532_13">Fr</A></FONT>, <FONT COLOR=red><A NAME="532_17">Fc</A></FONT>, <FONT COLOR=red><A NAME="532_21">Os</A></FONT>, <FONT COLOR=red><A NAME="532_25">Ab</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="533_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#527_16">Fld_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#485_20">Fld</A>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#532_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#532_10">C</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#532_13">Fr</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#532_17">Fc</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#532_21">Os</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#532_25">Ab</A>'<b>Access</b>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#533_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#533_7">Res</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#486_20">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_7">L</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#487_20">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_10">C</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#488_20">First_Row</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_13">Fr</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#489_20">First_Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_17">Fc</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#490_20">Off_Screen</A> := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#532_21">Os</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#491_20">Additional_Buffers</A> := <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Buffer_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#532_25">Ab</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Info;
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#496_14">Dynamic_Info</A><FONT COLOR=red><A NAME="552_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#496_28">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#497_28">Lines</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#498_28">Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#499_28">Max</A> : <b>out</b> Natural)
+ <b>is</b>
+ <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="558_16">Dyn_Info</A></FONT> (<FONT COLOR=red><A NAME="558_26">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>; L, C, M : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#558_16">Dyn_Info</A>, "dynamic_field_info");
+
+ <FONT COLOR=red><A NAME="561_7">L</A></FONT>, <FONT COLOR=red><A NAME="561_10">C</A></FONT>, <FONT COLOR=red><A NAME="561_13">M</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="562_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#558_16">Dyn_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#496_28">Fld</A>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#561_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#561_10">C</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-forms__adb.htm#561_13">M</A>'<b>Access</b>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#562_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#562_7">Res</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#497_28">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#561_7">L</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#498_28">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#561_10">C</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#499_28">Max</A> := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#561_13">M</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Dynamic_Info;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_win.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#508_14">Set_Window</A><FONT COLOR=red><A NAME="581_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#508_26">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#509_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="584_16">Set_Form_Win</A></FONT> (<FONT COLOR=red><A NAME="584_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="585_30">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#584_16">Set_Form_Win</A>, "set_form_win");
+
+ <FONT COLOR=red><A NAME="588_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#584_16">Set_Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#508_26">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#509_26">Win</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#588_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#588_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Window;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#514_13">Get_Window</A><FONT COLOR=red><A NAME="597_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#514_25">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="599_16">Form_Win</A></FONT> (<FONT COLOR=red><A NAME="599_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#599_16">Form_Win</A>, "form_win");
+
+ <FONT COLOR=red><A NAME="602_7">W</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#599_16">Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#514_25">Frm</A>);
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#602_7">W</A>;
+ <b>end</b> Get_Window;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#519_14">Set_Sub_Window</A><FONT COLOR=red><A NAME="609_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#519_30">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#520_30">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="612_16">Set_Form_Sub</A></FONT> (<FONT COLOR=red><A NAME="612_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="613_30">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#612_16">Set_Form_Sub</A>, "set_form_sub");
+
+ <FONT COLOR=red><A NAME="616_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#612_16">Set_Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#519_30">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#520_30">Win</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#616_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#616_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Sub_Window;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#525_13">Get_Sub_Window</A><FONT COLOR=red><A NAME="625_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#525_29">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="627_16">Form_Sub</A></FONT> (<FONT COLOR=red><A NAME="627_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#627_16">Form_Sub</A>, "form_sub");
+
+ <FONT COLOR=red><A NAME="630_7">W</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#627_16">Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#525_29">Frm</A>);
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#630_7">W</A>;
+ <b>end</b> Get_Sub_Window;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#530_14">Scale</A><FONT COLOR=red><A NAME="637_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#530_21">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#531_21">Lines</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#532_21">Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+ <b>is</b>
+ <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="642_16">M_Scale</A></FONT> (<FONT COLOR=red><A NAME="642_25">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>; Yp, Xp : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#642_16">M_Scale</A>, "scale_form");
+
+ <FONT COLOR=red><A NAME="645_7">X</A></FONT>, <FONT COLOR=red><A NAME="645_10">Y</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="646_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#642_16">M_Scale</A> (<A HREF="terminal_interface-curses-forms__ads.htm#530_21">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#645_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#645_7">X</A>'<b>Access</b>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#646_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#646_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#531_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#645_10">Y</A>);
+ <A HREF="terminal_interface-curses-forms__ads.htm#532_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#645_7">X</A>);
+ <b>end</b> Scale;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page menu_hook.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#544_14">Set_Field_Init_Hook</A><FONT COLOR=red><A NAME="661_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#544_35">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#545_35">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="664_16">Set_Field_Init</A></FONT> (<FONT COLOR=red><A NAME="664_32">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="665_32">Proc</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#664_16">Set_Field_Init</A>, "set_field_init");
+
+ <FONT COLOR=red><A NAME="668_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#664_16">Set_Field_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#544_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#545_35">Proc</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#668_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#668_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Field_Init_Hook;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#550_14">Set_Field_Term_Hook</A><FONT COLOR=red><A NAME="677_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#550_35">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#551_35">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="680_16">Set_Field_Term</A></FONT> (<FONT COLOR=red><A NAME="680_32">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="681_32">Proc</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#680_16">Set_Field_Term</A>, "set_field_term");
+
+ <FONT COLOR=red><A NAME="684_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#680_16">Set_Field_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#550_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#551_35">Proc</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#684_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#684_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Field_Term_Hook;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#556_14">Set_Form_Init_Hook</A><FONT COLOR=red><A NAME="693_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#556_34">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#557_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="696_16">Set_Form_Init</A></FONT> (<FONT COLOR=red><A NAME="696_31">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="697_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#696_16">Set_Form_Init</A>, "set_form_init");
+
+ <FONT COLOR=red><A NAME="700_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#696_16">Set_Form_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#556_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#557_34">Proc</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#700_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#700_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Form_Init_Hook;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#562_14">Set_Form_Term_Hook</A><FONT COLOR=red><A NAME="709_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#562_34">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#563_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="712_16">Set_Form_Term</A></FONT> (<FONT COLOR=red><A NAME="712_31">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="713_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#712_16">Set_Form_Term</A>, "set_form_term");
+
+ <FONT COLOR=red><A NAME="716_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#712_16">Set_Form_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#562_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#563_34">Proc</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#716_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#716_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Form_Term_Hook;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_fields.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#592_14">Redefine</A><FONT COLOR=red><A NAME="729_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#592_24">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Field_Array_Access</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="732_16">Set_Frm_Fields</A></FONT> (<FONT COLOR=red><A NAME="732_32">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="733_32">Items</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#732_16">Set_Frm_Fields</A>, "set_form_fields");
+
+ <FONT COLOR=red><A NAME="736_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <b>pragma</b> Assert (Flds (Flds'Last) = Null_Field);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A> (<A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#736_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#732_16">Set_Frm_Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#592_24">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A> (<A HREF="terminal_interface-curses-forms__ads.htm#593_24">Flds</A>'First)'Address);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#736_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#736_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Redefine;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#604_13">Fields</A><FONT COLOR=red><A NAME="751_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#604_21">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#605_21">Index</A> : Positive) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+ <b>is</b>
+ <b>use</b> <A HREF="terminal_interface-curses-forms__adb.htm#55_12">F_Array</A>;
+
+ <b>function</b> <FONT COLOR=red><A NAME="756_16">C_Fields</A></FONT> (<FONT COLOR=red><A NAME="756_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> Pointer;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#756_16">C_Fields</A>, "form_fields");
+
+ P : Pointer := <A HREF="terminal_interface-curses-forms__adb.htm#756_16">C_Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#604_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#605_21">Index</A> <b>not</b> <b>in</b> 1 .. <A HREF="terminal_interface-curses-forms__ads.htm#610_13">Field_Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#604_21">Frm</A>) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#605_21">Index</A>) - 1);
+ <b>return</b> P.<b>all</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Fields;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#610_13">Field_Count</A><FONT COLOR=red><A NAME="771_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#610_26">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> Natural
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="773_16">Count</A></FONT> (<FONT COLOR=red><A NAME="773_23">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#773_16">Count</A>, "field_count");
+ <b>begin</b>
+ <b>return</b> Natural (<A HREF="terminal_interface-curses-forms__adb.htm#773_16">Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#610_26">Frm</A>));
+ <b>end</b> Field_Count;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#615_14">Move</A><FONT COLOR=red><A NAME="781_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#615_20">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#616_20">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#617_20">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="785_16">Move</A></FONT> (<FONT COLOR=red><A NAME="785_22">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>; <FONT COLOR=red><A NAME="785_35">L</A></FONT>, <FONT COLOR=red><A NAME="785_38">C</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#785_16">Move</A>, "move_field");
+
+ <FONT COLOR=red><A NAME="788_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#785_16">Move</A> (<A HREF="terminal_interface-curses-forms__ads.htm#615_20">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#616_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#617_20">Column</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#788_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#788_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Move;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_new.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#626_13">Create</A><FONT COLOR=red><A NAME="801_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A> : <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="803_16">NewForm</A></FONT> (<FONT COLOR=red><A NAME="803_25">Fields</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#803_16">NewForm</A>, "new_form");
+
+ <FONT COLOR=red><A NAME="806_7">M</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <b>begin</b>
+ <b>pragma</b> Assert (Fields (Fields'Last) = Null_Field);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#806_7">M</A> := <A HREF="terminal_interface-curses-forms__adb.htm#803_16">NewForm</A> (<A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#626_21">Fields</A>'First)'Address);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#806_7">M</A> = <A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Form</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#806_7">M</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Create;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#637_14">Delete</A><FONT COLOR=red><A NAME="822_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#637_22">Frm</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="824_16">Free</A></FONT> (<FONT COLOR=red><A NAME="824_22">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#824_16">Free</A>, "free_form");
+
+ <FONT COLOR=red><A NAME="827_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#824_16">Free</A> (<A HREF="terminal_interface-curses-forms__ads.htm#637_22">Frm</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#827_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#827_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#637_22">Frm</A> := <A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Form</A>;
+ <b>end</b> Delete;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_opts.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#647_14">Set_Options</A><FONT COLOR=red><A NAME="841_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#647_27">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#648_27">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="844_16">Set_Form_Opts</A></FONT> (<FONT COLOR=red><A NAME="844_31">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="845_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#844_16">Set_Form_Opts</A>, "set_form_opts");
+
+ <FONT COLOR=red><A NAME="848_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#72_13">FrmOS_2_CInt</A> (<A HREF="terminal_interface-curses-forms__ads.htm#648_27">Options</A>);
+ <FONT COLOR=red><A NAME="849_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#849_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#844_16">Set_Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#647_27">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#848_7">Opt</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#849_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#849_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Options;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#653_14">Switch_Options</A><FONT COLOR=red><A NAME="859_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#653_30">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#654_30">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#655_30">On</A> : Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="863_16">Form_Opts_On</A></FONT> (<FONT COLOR=red><A NAME="863_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="864_30">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#863_16">Form_Opts_On</A>, "form_opts_on");
+ <b>function</b> <FONT COLOR=red><A NAME="866_16">Form_Opts_Off</A></FONT> (<FONT COLOR=red><A NAME="866_31">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <FONT COLOR=red><A NAME="867_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#866_16">Form_Opts_Off</A>, "form_opts_off");
+
+ <FONT COLOR=red><A NAME="870_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <FONT COLOR=red><A NAME="871_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#72_13">FrmOS_2_CInt</A> (<A HREF="terminal_interface-curses-forms__ads.htm#654_30">Options</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#655_30">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#870_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#863_16">Form_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#653_30">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#871_7">Opt</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#870_7">Err</A> := <A HREF="terminal_interface-curses-forms__adb.htm#866_16">Form_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#653_30">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#871_7">Opt</A>);
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#870_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#870_7">Err</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Switch_Options;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#661_14">Get_Options</A><FONT COLOR=red><A NAME="885_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#661_27">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#662_27">Options</A> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="888_16">Form_Opts</A></FONT> (<FONT COLOR=red><A NAME="888_27">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#888_16">Form_Opts</A>, "form_opts");
+
+ <FONT COLOR=red><A NAME="891_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#888_16">Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#661_27">Frm</A>);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#662_27">Options</A> := <A HREF="terminal_interface-curses-forms__adb.htm#76_13">CInt_2_FrmOS</A> (<A HREF="terminal_interface-curses-forms__adb.htm#891_7">Res</A>);
+ <b>end</b> Get_Options;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#666_13">Get_Options</A><FONT COLOR=red><A NAME="898_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#666_26">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A> := <A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="900_7">Fos</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#666_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#666_26">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#900_7">Fos</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#900_7">Fos</A>;
+ <b>end</b> Get_Options;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_post.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#675_14">Post</A><FONT COLOR=red><A NAME="912_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#675_20">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#676_20">Post</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="915_16">M_Post</A></FONT> (<FONT COLOR=red><A NAME="915_24">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#915_16">M_Post</A>, "post_form");
+ <b>function</b> <FONT COLOR=red><A NAME="917_16">M_Unpost</A></FONT> (<FONT COLOR=red><A NAME="917_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#917_16">M_Unpost</A>, "unpost_form");
+
+ <FONT COLOR=red><A NAME="920_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#676_20">Post</A> <b>then</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#920_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#915_16">M_Post</A> (<A HREF="terminal_interface-curses-forms__ads.htm#675_20">Frm</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-forms__adb.htm#920_7">Res</A> := <A HREF="terminal_interface-curses-forms__adb.htm#917_16">M_Unpost</A> (<A HREF="terminal_interface-curses-forms__ads.htm#675_20">Frm</A>);
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#920_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#920_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Post;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_cursor.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#686_14">Position_Cursor</A><FONT COLOR=red><A NAME="938_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#686_31">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="940_16">Pos_Form_Cursor</A></FONT> (<FONT COLOR=red><A NAME="940_33">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#940_16">Pos_Form_Cursor</A>, "pos_form_cursor");
+
+ <FONT COLOR=red><A NAME="943_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#940_16">Pos_Form_Cursor</A> (<A HREF="terminal_interface-curses-forms__ads.htm#686_31">Frm</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#943_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#943_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Position_Cursor;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_data.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#695_13">Data_Ahead</A><FONT COLOR=red><A NAME="956_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#695_25">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="958_16">Ahead</A></FONT> (<FONT COLOR=red><A NAME="958_23">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#958_16">Ahead</A>, "data_ahead");
+
+ <FONT COLOR=red><A NAME="961_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#958_16">Ahead</A> (<A HREF="terminal_interface-curses-forms__ads.htm#695_25">Frm</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#961_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_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> Data_Ahead;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#700_13">Data_Behind</A><FONT COLOR=red><A NAME="972_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#700_26">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="974_16">Behind</A></FONT> (<FONT COLOR=red><A NAME="974_24">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#974_16">Behind</A>, "data_behind");
+
+ <FONT COLOR=red><A NAME="977_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#974_16">Behind</A> (<A HREF="terminal_interface-curses-forms__ads.htm#700_26">Frm</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#977_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_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> Data_Behind;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_driver.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#714_13">Driver</A><FONT COLOR=red><A NAME="992_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#714_21">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#715_21">Key</A> : <A HREF="terminal_interface-curses__ads.htm#67_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#708_9">Driver_Result</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="995_16">Frm_Driver</A></FONT> (<FONT COLOR=red><A NAME="995_28">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>; <FONT COLOR=red><A NAME="995_40">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#995_16">Frm_Driver</A>, "form_driver");
+
+ <FONT COLOR=red><A NAME="998_7">R</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#995_16">Frm_Driver</A> (<A HREF="terminal_interface-curses-forms__ads.htm#714_21">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#715_21">Key</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#88_4">E_Unknown_Command</A> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#710_27">Unknown_Request</A>;
+ <b>elsif</b> <A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#93_4">E_Invalid_Field</A> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#711_27">Invalid_Field</A>;
+ <b>elsif</b> <A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#92_4">E_Request_Denied</A> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#709_27">Request_Denied</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#998_7">R</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#708_27">Form_Ok</A>;
+ <b>end</b> <b>if</b>;
+ <b>else</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#708_27">Form_Ok</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Driver;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_page.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#726_14">Set_Current</A><FONT COLOR=red><A NAME="1022_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#726_27">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#727_27">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1025_16">Set_Current_Fld</A></FONT> (<FONT COLOR=red><A NAME="1025_33">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>; <FONT COLOR=red><A NAME="1025_45">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1025_16">Set_Current_Fld</A>, "set_current_field");
+
+ <FONT COLOR=red><A NAME="1028_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1025_16">Set_Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#726_27">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#727_27">Fld</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1028_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1028_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Current;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#732_13">Current</A><FONT COLOR=red><A NAME="1037_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#732_22">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1039_16">Current_Fld</A></FONT> (<FONT COLOR=red><A NAME="1039_29">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1039_16">Current_Fld</A>, "current_field");
+
+ <FONT COLOR=red><A NAME="1042_7">Fld</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1039_16">Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#732_22">Frm</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1042_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#1042_7">Fld</A>;
+ <b>end</b> Current;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#737_14">Set_Page</A><FONT COLOR=red><A NAME="1052_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#737_24">Frm</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#738_24">Page</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#723_9">Page_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#723_9">Page_Number</A>'First)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1055_16">Set_Frm_Page</A></FONT> (<FONT COLOR=red><A NAME="1055_30">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>; <FONT COLOR=red><A NAME="1055_42">Pg</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1055_16">Set_Frm_Page</A>, "set_form_page");
+
+ <FONT COLOR=red><A NAME="1058_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1055_16">Set_Frm_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#737_24">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#738_24">Page</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1058_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1058_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Page;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#743_13">Page</A><FONT COLOR=red><A NAME="1067_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#743_19">Frm</A> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#723_9">Page_Number</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1069_16">Get_Page</A></FONT> (<FONT COLOR=red><A NAME="1069_26">Frm</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1069_16">Get_Page</A>, "form_page");
+
+ <FONT COLOR=red><A NAME="1072_7">P</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1069_16">Get_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#743_19">Frm</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1072_7">P</A> < 0 <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>else</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#723_9">Page_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1072_7">P</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Page;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#748_13">Get_Index</A><FONT COLOR=red><A NAME="1081_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#748_24">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> Positive
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1083_16">Get_Fieldindex</A></FONT> (<FONT COLOR=red><A NAME="1083_32">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1083_16">Get_Fieldindex</A>, "field_index");
+
+ <FONT COLOR=red><A NAME="1086_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1083_16">Get_Fieldindex</A> (<A HREF="terminal_interface-curses-forms__ads.htm#748_24">Fld</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1086_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#289_4">Form_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-forms__adb.htm#1086_7">Res</A>) + Positive'First);
+ <b>end</b> Get_Index;
+
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | man page form_new_page.3x</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#760_14">Set_New_Page</A><FONT COLOR=red><A NAME="1101_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#760_28">Fld</A> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#761_28">New_Page</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1104_16">Set_Page</A></FONT> (<FONT COLOR=red><A NAME="1104_26">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>; <FONT COLOR=red><A NAME="1104_39">Flg</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1104_16">Set_Page</A>, "set_new_page");
+
+ <FONT COLOR=red><A NAME="1107_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1104_16">Set_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#760_28">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#761_28">New_Page</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1107_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1107_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_New_Page;
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#766_13">Is_New_Page</A><FONT COLOR=red><A NAME="1116_13"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#766_26">Fld</A> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1118_16">Is_New</A></FONT> (<FONT COLOR=red><A NAME="1118_24">Fld</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-forms__adb.htm#1118_16">Is_New</A>, "new_page");
+
+ <FONT COLOR=red><A NAME="1121_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#1118_16">Is_New</A> (<A HREF="terminal_interface-curses-forms__ads.htm#766_26">Fld</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#1121_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_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> Is_New_Page;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-forms__ads.htm#138_14">Free</A><FONT COLOR=red><A NAME="1130_14"></A></FONT> (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Field_Array_Access</A>;
+ <A HREF="terminal_interface-curses-forms__ads.htm#139_20">Free_Fields</A> : <b>in</b> Boolean := False)
+ <b>is</b>
+ <b>procedure</b> <FONT COLOR=red><A NAME="1133_17">Release</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
+ (<A HREF="terminal_interface-curses-forms__ads.htm#133_9">Field_Array</A>, <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Field_Array_Access</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms__ads.htm#139_20">Free_Fields</A> <b>then</b>
+ <b>for</b> <FONT COLOR=red><A NAME="1137_14">I</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A>'First .. (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A>'Last - 1) <b>loop</b>
+ <b>if</b> (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1137_14">I</A>) /= <A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>) <b>then</b>
+ <A HREF="terminal_interface-curses-forms__ads.htm#637_14">Delete</A> (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A> (<A HREF="terminal_interface-curses-forms__adb.htm#1137_14">I</A>));
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>loop</b>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-forms__adb.htm#1133_17">Release</A> (<A HREF="terminal_interface-curses-forms__ads.htm#138_20">FA</A>);
+ <b>end</b> Free;
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#103_13">Default_Field_Options</A><FONT COLOR=red><A NAME="1148_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field_Option_Set</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#666_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#59_4">Null_Field</A>);
+ <b>end</b> Default_Field_Options;
+
+ <b>function</b> <A HREF="terminal_interface-curses-forms__ads.htm#127_13">Default_Form_Options</A><FONT COLOR=red><A NAME="1154_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form_Option_Set</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#666_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Form</A>);
+ <b>end</b> Default_Form_Options;
+
+<b>end</b> Terminal_Interface.Curses.Forms;
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-forms.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-forms.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Form --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.23 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- form binding.</EM></FONT>
+<FONT COLOR=green><EM>-- This module is generated. Please don't change it manually!</EM></FONT>
+<FONT COLOR=green><EM>-- Run the generator instead.</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<b>with</b> System;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Ada</A>.Characters.Latin_1;
+<b>with</b> Interfaces.C;
+
+<b>package</b> Terminal_Interface.Curses.Forms <b>is</b>
+ <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Forms);
+ <b>pragma</b> Linker_Options ("-lform");
+ <b>pragma</b> Linker_Options ("-lncurses");
+
+ Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
+
+ <b>type</b> <FONT COLOR=red><A NAME="57_9">Field</A></FONT> <b>is</b> <b>private</b>;
+ <b>type</b> Form <b>is</b> <b>private</b>;
+
+ <FONT COLOR=red><A NAME="60_4">Null_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A>;
+ Null_Form : <b>constant</b> Form;
+
+ <b>type</b> Field_Justification <b>is</b> (None,
+ Left,
+ Center,
+ Right);
+
+ <b>pragma</b> Warnings (Off);
+ <b>type</b> Field_Option_Set <b>is</b>
+ <b>record</b>
+ <FONT COLOR=red><A NAME="71_10">Visible</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="72_10">Active</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="73_10">Public</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="74_10">Edit</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="75_10">Wrap</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="76_10">Blank</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="77_10">Auto_Skip</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="78_10">Null_Ok</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="79_10">Pass_Ok</A></FONT> : Boolean;
+ Static : Boolean;
+ <b>end</b> <b>record</b><A HREF="terminal_interface-curses-forms__ads.htm#68_9">;</A>
+ <b>pragma</b> Pack (Field_Option_Set);
+ <b>pragma</b> Convention (C, Field_Option_Set);
+
+ <b>for</b> Field_Option_Set <b>use</b>
+ <b>record</b>
+ Visible <b>at</b> 0 <b>range</b> 0 .. 0;
+ Active <b>at</b> 0 <b>range</b> 1 .. 1;
+ Public <b>at</b> 0 <b>range</b> 2 .. 2;
+ Edit <b>at</b> 0 <b>range</b> 3 .. 3;
+ Wrap <b>at</b> 0 <b>range</b> 4 .. 4;
+ Blank <b>at</b> 0 <b>range</b> 5 .. 5;
+ Auto_Skip <b>at</b> 0 <b>range</b> 6 .. 6;
+ Null_Ok <b>at</b> 0 <b>range</b> 7 .. 7;
+ Pass_Ok <b>at</b> 0 <b>range</b> 8 .. 8;
+ Static <b>at</b> 0 <b>range</b> 9 .. 9;
+ <b>end</b> <b>record</b>;
+ <b>for</b> Field_Option_Set'Size <b>use</b> 32;
+ <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
+ <FONT COLOR=green><EM>-- different on your system.Dnl</EM></FONT>
+
+ <b>pragma</b> Warnings (On);
+
+ <b>function</b> Default_Field_Options <b>return</b> Field_Option_Set;
+ <FONT COLOR=green><EM>-- The initial defaults for the field options.</EM></FONT>
+ <b>pragma</b> Inline (Default_Field_Options);
+
+ <b>pragma</b> Warnings (Off);
+ <b>type</b> Form_Option_Set <b>is</b>
+ <b>record</b>
+ <FONT COLOR=red><A NAME="111_10">NL_Overload</A></FONT> : Boolean;
+ BS_Overload : Boolean;
+ <b>end</b> <b>record</b><A HREF="terminal_interface-curses-forms__ads.htm#108_9">;</A>
+ <b>pragma</b> Pack (Form_Option_Set);
+ <b>pragma</b> Convention (C, Form_Option_Set);
+
+ <b>for</b> Form_Option_Set <b>use</b>
+ <b>record</b>
+ NL_Overload <b>at</b> 0 <b>range</b> 0 .. 0;
+ BS_Overload <b>at</b> 0 <b>range</b> 1 .. 1;
+ <b>end</b> <b>record</b>;
+ <b>for</b> Form_Option_Set'Size <b>use</b> 32;
+ <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
+ <FONT COLOR=green><EM>-- different on your system.Dnl</EM></FONT>
+
+ <b>pragma</b> Warnings (On);
+
+ <b>function</b> Default_Form_Options <b>return</b> Form_Option_Set;
+ <FONT COLOR=green><EM>-- The initial defaults for the form options.</EM></FONT>
+ <b>pragma</b> Inline (Default_Form_Options);
+
+ <b>type</b> Buffer_Number <b>is</b> <b>new</b> Natural;
+
+ <b>type</b> Field_Array <b>is</b> <b>array</b> (Positive <b>range</b> <>) <b>of</b> <b>aliased</b> Field;
+ <b>pragma</b> Convention (C, Field_Array);
+
+ <b>type</b> Field_Array_Access <b>is</b> <b>access</b> Field_Array;
+
+ <b>procedure</b> Free (<FONT COLOR=red><A NAME="139_20">FA</A></FONT> : <b>in</b> <b>out</b> Field_Array_Access;
+ Free_Fields : <b>in</b> Boolean := False);
+ <FONT COLOR=green><EM>-- Release the memory for an allocated field array</EM></FONT>
+ <FONT COLOR=green><EM>-- If Free_Fields is True, call Delete() for all the fields in</EM></FONT>
+ <FONT COLOR=green><EM>-- the array.</EM></FONT>
+
+ <b>subtype</b> Form_Request_Code <b>is</b> Key_Code <b>range</b> (Key_Max + 1) .. (Key_Max + 57);
+
+ <FONT COLOR=green><EM>-- The prefix F_ stands for "Form Request"</EM></FONT>
+ <FONT COLOR=red><A NAME="148_4">F_Next_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 1;
+ <FONT COLOR=red><A NAME="149_4">F_Previous_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 2;
+ <FONT COLOR=red><A NAME="150_4">F_First_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 3;
+ F_Last_Page : <b>constant</b> Form_Request_Code := Key_Max + 4;
+
+ <FONT COLOR=red><A NAME="153_4">F_Next_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 5;
+ <FONT COLOR=red><A NAME="154_4">F_Previous_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 6;
+ <FONT COLOR=red><A NAME="155_4">F_First_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 7;
+ <FONT COLOR=red><A NAME="156_4">F_Last_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 8;
+ <FONT COLOR=red><A NAME="157_4">F_Sorted_Next_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 9;
+ <FONT COLOR=red><A NAME="158_4">F_Sorted_Previous_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 10;
+ <FONT COLOR=red><A NAME="159_4">F_Sorted_First_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 11;
+ <FONT COLOR=red><A NAME="160_4">F_Sorted_Last_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 12;
+ <FONT COLOR=red><A NAME="161_4">F_Left_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 13;
+ <FONT COLOR=red><A NAME="162_4">F_Right_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 14;
+ <FONT COLOR=red><A NAME="163_4">F_Up_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 15;
+ F_Down_Field : <b>constant</b> Form_Request_Code := Key_Max + 16;
+
+ <FONT COLOR=red><A NAME="166_4">F_Next_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 17;
+ <FONT COLOR=red><A NAME="167_4">F_Previous_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 18;
+ <FONT COLOR=red><A NAME="168_4">F_Next_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 19;
+ <FONT COLOR=red><A NAME="169_4">F_Previous_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 20;
+ <FONT COLOR=red><A NAME="170_4">F_Next_Word</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 21;
+ <FONT COLOR=red><A NAME="171_4">F_Previous_Word</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 22;
+ <FONT COLOR=red><A NAME="172_4">F_Begin_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 23;
+ <FONT COLOR=red><A NAME="173_4">F_End_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 24;
+ <FONT COLOR=red><A NAME="174_4">F_Begin_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 25;
+ <FONT COLOR=red><A NAME="175_4">F_End_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 26;
+ <FONT COLOR=red><A NAME="176_4">F_Left_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 27;
+ <FONT COLOR=red><A NAME="177_4">F_Right_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 28;
+ <FONT COLOR=red><A NAME="178_4">F_Up_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 29;
+ F_Down_Char : <b>constant</b> Form_Request_Code := Key_Max + 30;
+
+ <FONT COLOR=red><A NAME="181_4">F_New_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 31;
+ <FONT COLOR=red><A NAME="182_4">F_Insert_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 32;
+ <FONT COLOR=red><A NAME="183_4">F_Insert_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 33;
+ <FONT COLOR=red><A NAME="184_4">F_Delete_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 34;
+ <FONT COLOR=red><A NAME="185_4">F_Delete_Previous</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 35;
+ <FONT COLOR=red><A NAME="186_4">F_Delete_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 36;
+ <FONT COLOR=red><A NAME="187_4">F_Delete_Word</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 37;
+ <FONT COLOR=red><A NAME="188_4">F_Clear_EOL</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 38;
+ <FONT COLOR=red><A NAME="189_4">F_Clear_EOF</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 39;
+ <FONT COLOR=red><A NAME="190_4">F_Clear_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 40;
+ <FONT COLOR=red><A NAME="191_4">F_Overlay_Mode</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 41;
+ F_Insert_Mode : <b>constant</b> Form_Request_Code := Key_Max + 42;
+
+ <FONT COLOR=green><EM>-- Vertical Scrolling</EM></FONT>
+ <FONT COLOR=red><A NAME="195_4">F_ScrollForward_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 43;
+ <FONT COLOR=red><A NAME="196_4">F_ScrollBackward_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 44;
+ <FONT COLOR=red><A NAME="197_4">F_ScrollForward_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 45;
+ <FONT COLOR=red><A NAME="198_4">F_ScrollBackward_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 46;
+ <FONT COLOR=red><A NAME="199_4">F_ScrollForward_HalfPage</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 47;
+ F_ScrollBackward_HalfPage : <b>constant</b> Form_Request_Code := Key_Max + 48;
+
+ <FONT COLOR=green><EM>-- Horizontal Scrolling</EM></FONT>
+ <FONT COLOR=red><A NAME="203_4">F_HScrollForward_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 49;
+ <FONT COLOR=red><A NAME="204_4">F_HScrollBackward_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 50;
+ <FONT COLOR=red><A NAME="205_4">F_HScrollForward_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 51;
+ <FONT COLOR=red><A NAME="206_4">F_HScrollBackward_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 52;
+ <FONT COLOR=red><A NAME="207_4">F_HScrollForward_HalfLine</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 53;
+ F_HScrollBackward_HalfLine : <b>constant</b> Form_Request_Code := Key_Max + 54;
+
+ <FONT COLOR=red><A NAME="210_4">F_Validate_Field</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 55;
+ <FONT COLOR=red><A NAME="211_4">F_Next_Choice</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 56;
+ F_Previous_Choice : <b>constant</b> Form_Request_Code := Key_Max + 57;
+
+ <FONT COLOR=green><EM>-- For those who like the old 'C' style request names</EM></FONT>
+ <FONT COLOR=red><A NAME="215_4">REQ_NEXT_PAGE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#148_4">F_Next_Page</A>;
+ <FONT COLOR=red><A NAME="216_4">REQ_PREV_PAGE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#149_4">F_Previous_Page</A>;
+ <FONT COLOR=red><A NAME="217_4">REQ_FIRST_PAGE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#150_4">F_First_Page</A>;
+ REQ_LAST_PAGE : Form_Request_Code <b>renames</b> F_Last_Page;
+
+ <FONT COLOR=red><A NAME="220_4">REQ_NEXT_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#153_4">F_Next_Field</A>;
+ <FONT COLOR=red><A NAME="221_4">REQ_PREV_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#154_4">F_Previous_Field</A>;
+ <FONT COLOR=red><A NAME="222_4">REQ_FIRST_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#155_4">F_First_Field</A>;
+ <FONT COLOR=red><A NAME="223_4">REQ_LAST_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#156_4">F_Last_Field</A>;
+ <FONT COLOR=red><A NAME="224_4">REQ_SNEXT_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#157_4">F_Sorted_Next_Field</A>;
+ <FONT COLOR=red><A NAME="225_4">REQ_SPREV_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#158_4">F_Sorted_Previous_Field</A>;
+ <FONT COLOR=red><A NAME="226_4">REQ_SFIRST_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#159_4">F_Sorted_First_Field</A>;
+ <FONT COLOR=red><A NAME="227_4">REQ_SLAST_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#160_4">F_Sorted_Last_Field</A>;
+ <FONT COLOR=red><A NAME="228_4">REQ_LEFT_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#161_4">F_Left_Field</A>;
+ <FONT COLOR=red><A NAME="229_4">REQ_RIGHT_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#162_4">F_Right_Field</A>;
+ <FONT COLOR=red><A NAME="230_4">REQ_UP_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#163_4">F_Up_Field</A>;
+ REQ_DOWN_FIELD : Form_Request_Code <b>renames</b> F_Down_Field;
+
+ <FONT COLOR=red><A NAME="233_4">REQ_NEXT_CHAR</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#166_4">F_Next_Char</A>;
+ <FONT COLOR=red><A NAME="234_4">REQ_PREV_CHAR</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#167_4">F_Previous_Char</A>;
+ <FONT COLOR=red><A NAME="235_4">REQ_NEXT_LINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#168_4">F_Next_Line</A>;
+ <FONT COLOR=red><A NAME="236_4">REQ_PREV_LINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#169_4">F_Previous_Line</A>;
+ <FONT COLOR=red><A NAME="237_4">REQ_NEXT_WORD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#170_4">F_Next_Word</A>;
+ <FONT COLOR=red><A NAME="238_4">REQ_PREV_WORD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#171_4">F_Previous_Word</A>;
+ <FONT COLOR=red><A NAME="239_4">REQ_BEG_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#172_4">F_Begin_Field</A>;
+ <FONT COLOR=red><A NAME="240_4">REQ_END_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#173_4">F_End_Field</A>;
+ <FONT COLOR=red><A NAME="241_4">REQ_BEG_LINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#174_4">F_Begin_Line</A>;
+ <FONT COLOR=red><A NAME="242_4">REQ_END_LINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#175_4">F_End_Line</A>;
+ <FONT COLOR=red><A NAME="243_4">REQ_LEFT_CHAR</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#176_4">F_Left_Char</A>;
+ <FONT COLOR=red><A NAME="244_4">REQ_RIGHT_CHAR</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#177_4">F_Right_Char</A>;
+ <FONT COLOR=red><A NAME="245_4">REQ_UP_CHAR</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#178_4">F_Up_Char</A>;
+ REQ_DOWN_CHAR : Form_Request_Code <b>renames</b> F_Down_Char;
+
+ <FONT COLOR=red><A NAME="248_4">REQ_NEW_LINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#181_4">F_New_Line</A>;
+ <FONT COLOR=red><A NAME="249_4">REQ_INS_CHAR</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#182_4">F_Insert_Char</A>;
+ <FONT COLOR=red><A NAME="250_4">REQ_INS_LINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#183_4">F_Insert_Line</A>;
+ <FONT COLOR=red><A NAME="251_4">REQ_DEL_CHAR</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#184_4">F_Delete_Char</A>;
+ <FONT COLOR=red><A NAME="252_4">REQ_DEL_PREV</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#185_4">F_Delete_Previous</A>;
+ <FONT COLOR=red><A NAME="253_4">REQ_DEL_LINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#186_4">F_Delete_Line</A>;
+ <FONT COLOR=red><A NAME="254_4">REQ_DEL_WORD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#187_4">F_Delete_Word</A>;
+ <FONT COLOR=red><A NAME="255_4">REQ_CLR_EOL</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#188_4">F_Clear_EOL</A>;
+ <FONT COLOR=red><A NAME="256_4">REQ_CLR_EOF</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#189_4">F_Clear_EOF</A>;
+ <FONT COLOR=red><A NAME="257_4">REQ_CLR_FIELD</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#190_4">F_Clear_Field</A>;
+ <FONT COLOR=red><A NAME="258_4">REQ_OVL_MODE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#191_4">F_Overlay_Mode</A>;
+ REQ_INS_MODE : Form_Request_Code <b>renames</b> F_Insert_Mode;
+
+ <FONT COLOR=red><A NAME="261_4">REQ_SCR_FLINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#195_4">F_ScrollForward_Line</A>;
+ <FONT COLOR=red><A NAME="262_4">REQ_SCR_BLINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#196_4">F_ScrollBackward_Line</A>;
+ <FONT COLOR=red><A NAME="263_4">REQ_SCR_FPAGE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#197_4">F_ScrollForward_Page</A>;
+ <FONT COLOR=red><A NAME="264_4">REQ_SCR_BPAGE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#198_4">F_ScrollBackward_Page</A>;
+ <FONT COLOR=red><A NAME="265_4">REQ_SCR_FHPAGE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#199_4">F_ScrollForward_HalfPage</A>;
+ REQ_SCR_BHPAGE : Form_Request_Code <b>renames</b> F_ScrollBackward_HalfPage;
+
+ <FONT COLOR=red><A NAME="268_4">REQ_SCR_FCHAR</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#203_4">F_HScrollForward_Char</A>;
+ <FONT COLOR=red><A NAME="269_4">REQ_SCR_BCHAR</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#204_4">F_HScrollBackward_Char</A>;
+ <FONT COLOR=red><A NAME="270_4">REQ_SCR_HFLINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#205_4">F_HScrollForward_Line</A>;
+ <FONT COLOR=red><A NAME="271_4">REQ_SCR_HBLINE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#206_4">F_HScrollBackward_Line</A>;
+ <FONT COLOR=red><A NAME="272_4">REQ_SCR_HFHALF</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#207_4">F_HScrollForward_HalfLine</A>;
+ REQ_SCR_HBHALF : Form_Request_Code <b>renames</b> F_HScrollBackward_HalfLine;
+
+ <FONT COLOR=red><A NAME="275_4">REQ_VALIDATION</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#210_4">F_Validate_Field</A>;
+ <FONT COLOR=red><A NAME="276_4">REQ_NEXT_CHOICE</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#211_4">F_Next_Choice</A>;
+ REQ_PREV_CHOICE : Form_Request_Code <b>renames</b> F_Previous_Choice;
+
+
+ <b>procedure</b> Request_Name (<FONT COLOR=red><A NAME="280_28">Key</A></FONT> : <b>in</b> Form_Request_Code;
+ Name : <b>out</b> String);
+
+ <b>function</b> Request_Name (Key : Form_Request_Code) <b>return</b> String;
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <b>pragma</b> Inline (Request_Name);
+
+ <FONT COLOR=green><EM>------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Exceptions --</EM></FONT>
+ <FONT COLOR=green><EM>------------------</EM></FONT>
+ Form_Exception : <b>exception</b>;
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
+ <b>function</b> Create (<FONT COLOR=red><A NAME="297_21">Height</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="298_21">Width</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+ <FONT COLOR=red><A NAME="299_21">Top</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="300_21">Left</A></FONT> : Column_Position;
+ <FONT COLOR=red><A NAME="301_21">Off_Screen</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Natural</A> := 0;
+ More_Buffers : Buffer_Number := Buffer_Number'First)
+ <b>return</b> Field;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- An overloaded Create is defined later. Pragma Inline appears there.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
+ <b>function</b> New_Field (<FONT COLOR=red><A NAME="308_24">Height</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="309_24">Width</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+ <FONT COLOR=red><A NAME="310_24">Top</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="311_24">Left</A></FONT> : Column_Position;
+ <FONT COLOR=red><A NAME="312_24">Off_Screen</A></FONT> : <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Natural</A> := 0;
+ More_Buffers : Buffer_Number := Buffer_Number'First)
+ <b>return</b> Field <b>renames</b> Create;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></FONT>
+ <b>pragma</b> Inline (New_Field);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
+ <b>procedure</b> Delete (Fld : <b>in</b> <b>out</b> Field);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">free_field()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Reset Fld to Null_Field</EM></FONT>
+ <FONT COLOR=green><EM>-- An overloaded Delete is defined later. Pragma Inline appears there.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_4"#2|</EM></FONT>
+ <b>function</b> Duplicate (<FONT COLOR=red><A NAME="325_24">Fld</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Field</A>;
+ <FONT COLOR=red><A NAME="326_24">Top</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Left : Column_Position) <b>return</b> Field;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">dup_field()</A></EM></FONT>
+ <b>pragma</b> Inline (Duplicate);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_5"#2|</EM></FONT>
+ <b>function</b> Link (<FONT COLOR=red><A NAME="332_19">Fld</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Field</A>;
+ <FONT COLOR=red><A NAME="333_19">Top</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Left : Column_Position) <b>return</b> Field;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">link_field()</A></EM></FONT>
+ <b>pragma</b> Inline (Link);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_just.3x.html">form_field_just.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_6"#2|</EM></FONT>
+ <b>procedure</b> Set_Justification (<FONT COLOR=red><A NAME="343_33">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#62_9">Field</A>;
+ Just : <b>in</b> Field_Justification := None);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_just.3x.html">set_field_just()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Justification);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_7"#2|</EM></FONT>
+ <b>function</b> Get_Justification (Fld : Field) <b>return</b> Field_Justification;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_just.3x.html">field_just()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Justification);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_8"#2|</EM></FONT>
+ <b>procedure</b> Set_Buffer
+ (<FONT COLOR=red><A NAME="359_7">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Field</A>;
+ <FONT COLOR=red><A NAME="360_7">Buffer</A></FONT> : <b>in</b> Buffer_Number := Buffer_Number'First;
+ Str : <b>in</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_buffer()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Not inlined</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_9"#2|</EM></FONT>
+ <b>procedure</b> Get_Buffer
+ (<FONT COLOR=red><A NAME="367_7">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Field</A>;
+ <FONT COLOR=red><A NAME="368_7">Buffer</A></FONT> : <b>in</b> Buffer_Number := Buffer_Number'First;
+ Str : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></FONT>
+
+ <b>function</b> Get_Buffer
+ (<FONT COLOR=red><A NAME="373_7">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Field</A>;
+ Buffer : <b>in</b> Buffer_Number := Buffer_Number'First) <b>return</b> String;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same but as function</EM></FONT>
+ <b>pragma</b> Inline (Get_Buffer);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_10"#2|</EM></FONT>
+ <b>procedure</b> Set_Status (<FONT COLOR=red><A NAME="380_26">Fld</A></FONT> : <b>in</b> Field;
+ Status : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_status()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Status);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_11"#2|</EM></FONT>
+ <b>function</b> Changed (Fld : Field) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_status()</A></EM></FONT>
+ <b>pragma</b> Inline (Changed);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_12"#2|</EM></FONT>
+ <b>procedure</b> Set_Maximum_Size (<FONT COLOR=red><A NAME="391_32">Fld</A></FONT> : <b>in</b> Field;
+ Max : <b>in</b> Natural := 0);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_max()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Maximum_Size);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_13"#2|</EM></FONT>
+ <b>procedure</b> Set_Options (<FONT COLOR=red><A NAME="401_27">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field</A>;
+ Options : <b>in</b> Field_Option_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">set_field_opts()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_14"#2|</EM></FONT>
+ <b>procedure</b> Switch_Options (<FONT COLOR=red><A NAME="407_30">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field</A>;
+ <FONT COLOR=red><A NAME="408_30">Options</A></FONT> : <b>in</b> Field_Option_Set;
+ On : Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts_on()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: field_opts_off()</EM></FONT>
+ <FONT COLOR=green><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_15"#2|</EM></FONT>
+ <b>procedure</b> Get_Options (<FONT COLOR=red><A NAME="415_27">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#68_9">Field</A>;
+ Options : <b>out</b> Field_Option_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_16"#2|</EM></FONT>
+ <b>function</b> Get_Options (Fld : Field := Null_Field)
+ <b>return</b> Field_Option_Set;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_17"#2|</EM></FONT>
+ <b>procedure</b> Set_Foreground
+ (<FONT COLOR=red><A NAME="431_7">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+ <FONT COLOR=red><A NAME="432_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A> := Normal_Video;
+ Color : <b>in</b> Color_Pair := Color_Pair'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_fore()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Foreground);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_18"#2|</EM></FONT>
+ <b>procedure</b> Foreground (<FONT COLOR=red><A NAME="438_26">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+ Fore : <b>out</b> Character_Attribute_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_19"#2|</EM></FONT>
+ <b>procedure</b> Foreground (<FONT COLOR=red><A NAME="443_26">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+ <FONT COLOR=red><A NAME="444_26">Fore</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A>;
+ Color : <b>out</b> Color_Pair);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></FONT>
+ <b>pragma</b> Inline (Foreground);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_20"#2|</EM></FONT>
+ <b>procedure</b> Set_Background
+ (<FONT COLOR=red><A NAME="451_7">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+ <FONT COLOR=red><A NAME="452_7">Back</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A> := Normal_Video;
+ Color : <b>in</b> Color_Pair := Color_Pair'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_back()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Background);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_21"#2|</EM></FONT>
+ <b>procedure</b> Background (<FONT COLOR=red><A NAME="458_26">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+ Back : <b>out</b> Character_Attribute_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_22"#2|</EM></FONT>
+ <b>procedure</b> Background (<FONT COLOR=red><A NAME="463_26">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Field</A>;
+ <FONT COLOR=red><A NAME="464_26">Back</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A>;
+ Color : <b>out</b> Color_Pair);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></FONT>
+ <b>pragma</b> Inline (Background);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_23"#2|</EM></FONT>
+ <b>procedure</b> Set_Pad_Character (<FONT COLOR=red><A NAME="470_33">Fld</A></FONT> : <b>in</b> Field;
+ Pad : <b>in</b> Character := Space);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_pad()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Pad_Character);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_24"#2|</EM></FONT>
+ <b>procedure</b> Pad_Character (<FONT COLOR=red><A NAME="476_29">Fld</A></FONT> : <b>in</b> Field;
+ Pad : <b>out</b> Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_pad()</A></EM></FONT>
+ <b>pragma</b> Inline (Pad_Character);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field_info.3x.html">form_field_info.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_25"#2|</EM></FONT>
+ <b>procedure</b> Info (<FONT COLOR=red><A NAME="486_20">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Field</A>;
+ <FONT COLOR=red><A NAME="487_20">Lines</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="488_20">Columns</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+ <FONT COLOR=red><A NAME="489_20">First_Row</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="490_20">First_Column</A></FONT> : <b>out</b> Column_Position;
+ <FONT COLOR=red><A NAME="491_20">Off_Screen</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#131_9">Natural</A>;
+ Additional_Buffers : <b>out</b> Buffer_Number);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_info.3x.html">field_info()</A></EM></FONT>
+ <b>pragma</b> Inline (Info);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_26"#2|</EM></FONT>
+ <b>procedure</b> Dynamic_Info (<FONT COLOR=red><A NAME="497_28">Fld</A></FONT> : <b>in</b> Field;
+ <FONT COLOR=red><A NAME="498_28">Lines</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="499_28">Columns</A></FONT> : <b>out</b> Column_Count;
+ Max : <b>out</b> Natural);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field_info.3x.html">dynamic_field_info()</A></EM></FONT>
+ <b>pragma</b> Inline (Dynamic_Info);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_win.3x.html">form_win.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_27"#2|</EM></FONT>
+ <b>procedure</b> Set_Window (<FONT COLOR=red><A NAME="509_26">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Form</A>;
+ Win : <b>in</b> Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">set_form_win()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_28"#2|</EM></FONT>
+ <b>function</b> Get_Window (Frm : Form) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">form_win()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_29"#2|</EM></FONT>
+ <b>procedure</b> Set_Sub_Window (<FONT COLOR=red><A NAME="520_30">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Form</A>;
+ Win : <b>in</b> Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">set_form_sub()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Sub_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_30"#2|</EM></FONT>
+ <b>function</b> Get_Sub_Window (Frm : Form) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">form_sub()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Sub_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_31"#2|</EM></FONT>
+ <b>procedure</b> Scale (<FONT COLOR=red><A NAME="531_21">Frm</A></FONT> : <b>in</b> Form;
+ <FONT COLOR=red><A NAME="532_21">Lines</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ Columns : <b>out</b> Column_Count);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_win.3x.html">scale_form()</A></EM></FONT>
+ <b>pragma</b> Inline (Scale);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_hook.3x.html">form_hook.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <b>type</b> Form_Hook_Function <b>is</b> <b>access</b> <b>procedure</b> (Frm : <b>in</b> Form);
+ <b>pragma</b> Convention (C, Form_Hook_Function);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_32"#2|</EM></FONT>
+ <b>procedure</b> Set_Field_Init_Hook (<FONT COLOR=red><A NAME="545_35">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form</A>;
+ Proc : <b>in</b> Form_Hook_Function);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_field_init()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Field_Init_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_33"#2|</EM></FONT>
+ <b>procedure</b> Set_Field_Term_Hook (<FONT COLOR=red><A NAME="551_35">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form</A>;
+ Proc : <b>in</b> Form_Hook_Function);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_field_term()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Field_Term_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_34"#2|</EM></FONT>
+ <b>procedure</b> Set_Form_Init_Hook (<FONT COLOR=red><A NAME="557_34">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form</A>;
+ Proc : <b>in</b> Form_Hook_Function);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_form_init()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Form_Init_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_35"#2|</EM></FONT>
+ <b>procedure</b> Set_Form_Term_Hook (<FONT COLOR=red><A NAME="563_34">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#540_9">Form</A>;
+ Proc : <b>in</b> Form_Hook_Function);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_form_term()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Form_Term_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_36"#2|</EM></FONT>
+ <b>function</b> Get_Field_Init_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">field_init()</A></EM></FONT>
+ <b>pragma</b> Import (C, Get_Field_Init_Hook, "field_init");
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_37"#2|</EM></FONT>
+ <b>function</b> Get_Field_Term_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">field_term()</A></EM></FONT>
+ <b>pragma</b> Import (C, Get_Field_Term_Hook, "field_term");
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_38"#2|</EM></FONT>
+ <b>function</b> Get_Form_Init_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">form_init()</A></EM></FONT>
+ <b>pragma</b> Import (C, Get_Form_Init_Hook, "form_init");
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_39"#2|</EM></FONT>
+ <b>function</b> Get_Form_Term_Hook (Frm : Form) <b>return</b> Form_Hook_Function;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_hook.3x.html">form_term()</A></EM></FONT>
+ <b>pragma</b> Import (C, Get_Form_Term_Hook, "form_term");
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_field.3x.html">form_field.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_40"#2|</EM></FONT>
+ <b>procedure</b> Redefine (<FONT COLOR=red><A NAME="593_24">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Form</A>;
+ Flds : <b>in</b> Field_Array_Access);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></FONT>
+ <b>pragma</b> Inline (Redefine);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_41"#2|</EM></FONT>
+ <b>procedure</b> Set_Fields (<FONT COLOR=red><A NAME="599_26">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#136_9">Form</A>;
+ Flds : <b>in</b> Field_Array_Access) <b>renames</b> Redefine;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Fields);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_42"#2|</EM></FONT>
+ <b>function</b> Fields (<FONT COLOR=red><A NAME="605_21">Frm</A></FONT> : Form;
+ Index : Positive) <b>return</b> Field;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">form_fields()</A></EM></FONT>
+ <b>pragma</b> Inline (Fields);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_43"#2|</EM></FONT>
+ <b>function</b> Field_Count (Frm : Form) <b>return</b> Natural;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">field_count()</A></EM></FONT>
+ <b>pragma</b> Inline (Field_Count);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_44"#2|</EM></FONT>
+ <b>procedure</b> Move (<FONT COLOR=red><A NAME="616_20">Fld</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Field</A>;
+ <FONT COLOR=red><A NAME="617_20">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Column : <b>in</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_field.3x.html">move_field()</A></EM></FONT>
+ <b>pragma</b> Inline (Move);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_new.3x.html">form_new.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_45"#2|</EM></FONT>
+ <b>function</b> Create (Fields : Field_Array_Access) <b>return</b> Form;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></FONT>
+ <b>pragma</b> Inline (Create);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_46"#2|</EM></FONT>
+ <b>function</b> New_Form (Fields : Field_Array_Access) <b>return</b> Form
+ <b>renames</b> Create;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></FONT>
+ <b>pragma</b> Inline (New_Form);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_47"#2|</EM></FONT>
+ <b>procedure</b> Delete (Frm : <b>in</b> <b>out</b> Form);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new.3x.html">free_form()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Reset Frm to Null_Form</EM></FONT>
+ <b>pragma</b> Inline (Delete);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_opts.3x.html">form_opts.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_48"#2|</EM></FONT>
+ <b>procedure</b> Set_Options (<FONT COLOR=red><A NAME="648_27">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form</A>;
+ Options : <b>in</b> Form_Option_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_opts.3x.html">set_form_opts()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Options);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_49"#2|</EM></FONT>
+ <b>procedure</b> Switch_Options (<FONT COLOR=red><A NAME="654_30">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form</A>;
+ <FONT COLOR=red><A NAME="655_30">Options</A></FONT> : <b>in</b> Form_Option_Set;
+ On : Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts_on()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: form_opts_off()</EM></FONT>
+ <b>pragma</b> Inline (Switch_Options);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_50"#2|</EM></FONT>
+ <b>procedure</b> Get_Options (<FONT COLOR=red><A NAME="662_27">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#108_9">Form</A>;
+ Options : <b>out</b> Form_Option_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_51"#2|</EM></FONT>
+ <b>function</b> Get_Options (Frm : Form := Null_Form) <b>return</b> Form_Option_Set;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Options);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_post.3x.html">form_post.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_52"#2|</EM></FONT>
+ <b>procedure</b> Post (<FONT COLOR=red><A NAME="676_20">Frm</A></FONT> : <b>in</b> Form;
+ Post : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_post.3x.html">post_form()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: unpost_form()</EM></FONT>
+ <b>pragma</b> Inline (Post);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_cursor.3x.html">form_cursor.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_53"#2|</EM></FONT>
+ <b>procedure</b> Position_Cursor (Frm : Form);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_cursor.3x.html">pos_form_cursor()</A></EM></FONT>
+ <b>pragma</b> Inline (Position_Cursor);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_data.3x.html">form_data.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_54"#2|</EM></FONT>
+ <b>function</b> Data_Ahead (Frm : Form) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_data.3x.html">data_ahead()</A></EM></FONT>
+ <b>pragma</b> Inline (Data_Ahead);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_55"#2|</EM></FONT>
+ <b>function</b> Data_Behind (Frm : Form) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_data.3x.html">data_behind()</A></EM></FONT>
+ <b>pragma</b> Inline (Data_Behind);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_driver.3x.html">form_driver.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <b>type</b> Driver_Result <b>is</b> (<FONT COLOR=red><A NAME="709_27">Form_Ok</A></FONT>,
+ <FONT COLOR=red><A NAME="710_27">Request_Denied</A></FONT>,
+ <FONT COLOR=red><A NAME="711_27">Unknown_Request</A></FONT>,
+ Invalid_Field);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_56"#2|</EM></FONT>
+ <b>function</b> Driver (<FONT COLOR=red><A NAME="715_21">Frm</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#67_9">Form</A>;
+ Key : Key_Code) <b>return</b> Driver_Result;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_driver.3x.html">form_driver()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Driver not inlined</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_page.3x.html">form_page.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <b>type</b> Page_Number <b>is</b> <b>new</b> Natural;
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_57"#2|</EM></FONT>
+ <b>procedure</b> Set_Current (<FONT COLOR=red><A NAME="727_27">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#56_9">Form</A>;
+ Fld : <b>in</b> Field);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">set_current_field()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Current);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_58"#2|</EM></FONT>
+ <b>function</b> Current (Frm : <b>in</b> Form) <b>return</b> Field;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">current_field()</A></EM></FONT>
+ <b>pragma</b> Inline (Current);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_59"#2|</EM></FONT>
+ <b>procedure</b> Set_Page (<FONT COLOR=red><A NAME="738_24">Frm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#723_9">Form</A>;
+ Page : <b>in</b> Page_Number := Page_Number'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">set_form_page()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Page);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_60"#2|</EM></FONT>
+ <b>function</b> Page (Frm : Form) <b>return</b> Page_Number;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">form_page()</A></EM></FONT>
+ <b>pragma</b> Inline (Page);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_61"#2|</EM></FONT>
+ <b>function</b> Get_Index (Fld : Field) <b>return</b> Positive;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_page.3x.html">field_index()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Please note that in this binding we start the numbering of fields</EM></FONT>
+ <FONT COLOR=green><EM>-- with 1. So this is number is one more than you get from the low</EM></FONT>
+ <FONT COLOR=green><EM>-- level call.</EM></FONT>
+ <b>pragma</b> Inline (Get_Index);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/form_new_page.3x.html">form_new_page.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_62"#2|</EM></FONT>
+ <b>procedure</b> Set_New_Page (<FONT COLOR=red><A NAME="761_28">Fld</A></FONT> : <b>in</b> Field;
+ New_Page : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new_page.3x.html">set_new_page()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_New_Page);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_63"#2|</EM></FONT>
+ <b>function</b> Is_New_Page (Fld : Field) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/form_new_page.3x.html">new_page()</A></EM></FONT>
+ <b>pragma</b> Inline (Is_New_Page);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>private</b>
+ <b>type</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+ <b>type</b> Form <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+
+ <A HREF="terminal_interface-curses-forms__ads.htm#60_4">Null_Field</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#57_9">Field</A> := 0;
+ Null_Form : <b>constant</b> Form := 0;
+
+<b>end</b> Terminal_Interface.Curses.Forms;
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-menus-item_user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus-item_user_data.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Menus.Item_User_Data --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Menus.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#45_41">Item_User_Data</A> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#57_14">Set_User_Data</A><FONT COLOR=red><A NAME="48_14"></A></FONT> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#57_29">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#58_29">Data</A> : <b>in</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="51_16">Set_Item_Userptr</A></FONT> (<FONT COLOR=red><A NAME="51_34">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <FONT COLOR=red><A NAME="52_34">Addr</A></FONT> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#51_16">Set_Item_Userptr</A>, "set_item_userptr");
+
+ <FONT COLOR=red><A NAME="55_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#51_16">Set_Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#57_29">Itm</A>, <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#58_29">Data</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#55_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#55_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_User_Data;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#68_13">Get_User_Data</A><FONT COLOR=red><A NAME="62_13"></A></FONT> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#68_28">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="64_16">Item_Userptr</A></FONT> (<FONT COLOR=red><A NAME="64_30">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#64_16">Item_Userptr</A>, "item_userptr");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#64_16">Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#68_28">Itm</A>);
+ <b>end</b> Get_User_Data;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#63_14">Get_User_Data</A><FONT COLOR=red><A NAME="70_14"></A></FONT> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#63_29">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#64_29">Data</A> : <b>out</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">User_Access</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#64_29">Data</A> := <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#68_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#63_29">Itm</A>);
+ <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Menus.Item_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-menus-item_user_data.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-menus-item_user_data.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus-item_user_data.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.11 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
<b>package</b> Terminal_Interface.Curses.Menus.Item_User_Data <b>is</b>
<b>pragma</b> Preelaborate (Terminal_Interface.Curses.Menus.Item_User_Data);
- <FONT COLOR=green><EM>-- The binding uses the same user pointer for menu items</EM></FONT>
- <FONT COLOR=green><EM>-- as the low level C implementation. So you can safely</EM></FONT>
- <FONT COLOR=green><EM>-- read or write the user pointer also with the C routines</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- The binding uses the same user pointer for menu items</EM></FONT>
+ <FONT COLOR=green><EM>-- as the low level C implementation. So you can safely</EM></FONT>
+ <FONT COLOR=green><EM>-- read or write the user pointer also with the C routines</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
- <b>procedure</b> Set_User_Data (Itm : <b>in</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">Item</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
+ <b>procedure</b> Set_User_Data (<FONT COLOR=red><A NAME="58_29">Itm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">Item</A>;
Data : <b>in</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">set_item_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">set_item_userptr</A></EM></FONT>
<b>pragma</b> Inline (Set_User_Data);
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
- <b>procedure</b> Get_User_Data (Itm : <b>in</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">Item</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
+ <b>procedure</b> Get_User_Data (<FONT COLOR=red><A NAME="64_29">Itm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#44_9">Item</A>;
Data : <b>out</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
<b>function</b> Get_User_Data (Itm : <b>in</b> Item) <b>return</b> User_Access;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
<b>pragma</b> Inline (Get_User_Data);
<b>end</b> Terminal_Interface.Curses.Menus.Item_User_Data;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-menus-menu_user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus-menu_user_data.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Menus.Menu_User_Data --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.10 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Menus.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#45_41">Menu_User_Data</A> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#53_14">Set_User_Data</A><FONT COLOR=red><A NAME="47_14"></A></FONT> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#53_29">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#54_29">Data</A> : <b>in</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="50_16">Set_Menu_Userptr</A></FONT> (<FONT COLOR=red><A NAME="50_34">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="51_34">Data</A></FONT> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#50_16">Set_Menu_Userptr</A>, "set_menu_userptr");
+
+ <FONT COLOR=red><A NAME="54_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#50_16">Set_Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#53_29">Men</A>, <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#54_29">Data</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#54_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#54_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_User_Data;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#64_13">Get_User_Data</A><FONT COLOR=red><A NAME="61_13"></A></FONT> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#64_28">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="63_16">Menu_Userptr</A></FONT> (<FONT COLOR=red><A NAME="63_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#63_16">Menu_Userptr</A>, "menu_userptr");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#63_16">Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#64_28">Men</A>);
+ <b>end</b> Get_User_Data;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#59_14">Get_User_Data</A><FONT COLOR=red><A NAME="69_14"></A></FONT> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#59_29">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#60_29">Data</A> : <b>out</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">User_Access</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#60_29">Data</A> := <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#59_29">Men</A>);
+ <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Menus.Menu_User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-menus-menu_user_data.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-menus-menu_user_data.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus-menu_user_data.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.11 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
<b>package</b> Terminal_Interface.Curses.Menus.Menu_User_Data <b>is</b>
<b>pragma</b> Preelaborate (Terminal_Interface.Curses.Menus.Menu_User_Data);
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_userptr.3x.html">menu_userptr.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_userptr.3x.html">menu_userptr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
- <b>procedure</b> Set_User_Data (Men : <b>in</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">Menu</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
+ <b>procedure</b> Set_User_Data (<FONT COLOR=red><A NAME="54_29">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">Menu</A>;
Data : <b>in</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">set_menu_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">set_menu_userptr</A></EM></FONT>
<b>pragma</b> Inline (Set_User_Data);
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
- <b>procedure</b> Get_User_Data (Men : <b>in</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">Menu</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
+ <b>procedure</b> Get_User_Data (<FONT COLOR=red><A NAME="60_29">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#44_9">Menu</A>;
Data : <b>out</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
<b>function</b> Get_User_Data (Men : <b>in</b> Menu) <b>return</b> User_Access;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
<b>pragma</b> Inline (Get_User_Data);
<b>end</b> Terminal_Interface.Curses.Menus.Menu_User_Data;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-menus.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Menus --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.20 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Unchecked_Deallocation;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers;
+
+<b>with</b> Ada.Unchecked_Conversion;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-menus__ads.htm#49_35">Menus</A><FONT COLOR=red><A NAME="50_40"></A></FONT> <b>is</b>
+
+ <b>type</b> <FONT COLOR=red><A NAME="52_9">C_Item_Array</A></FONT> <b>is</b> <b>array</b> (Natural <b>range</b> <>) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <b>package</b> <FONT COLOR=red><A NAME="53_12">I_Array</A></FONT> <b>is</b> <b>new</b>
+ <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>, <A HREF="terminal_interface-curses-menus__adb.htm#52_9">C_Item_Array</A>, <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>);
+
+ <b>use</b> <b>type</b> System.Bit_Order;
+ <b>subtype</b> <FONT COLOR=red><A NAME="57_12">chars_ptr</A></FONT> <b>is</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings.chars_ptr;
+
+ <b>function</b> <FONT COLOR=red><A NAME="59_13">MOS_2_CInt</A></FONT> <b>is</b> <b>new</b>
+ Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+
+ <b>function</b> <FONT COLOR=red><A NAME="63_13">CInt_2_MOS</A></FONT> <b>is</b> <b>new</b>
+ Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>,
+ <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>);
+
+ <b>function</b> <FONT COLOR=red><A NAME="67_13">IOS_2_CInt</A></FONT> <b>is</b> <b>new</b>
+ Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+
+ <b>function</b> <FONT COLOR=red><A NAME="71_13">CInt_2_IOS</A></FONT> <b>is</b> <b>new</b>
+ Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>,
+ <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#106_14">Request_Name</A><FONT COLOR=red><A NAME="76_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#106_28">Key</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#107_28">Name</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="79_16">Request_Name</A></FONT> (<FONT COLOR=red><A NAME="79_30">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#79_16">Request_Name</A>, "menu_request_name");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#79_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#106_28">Key</A>)), <A HREF="terminal_interface-curses-menus__ads.htm#107_28">Name</A>);
+ <b>end</b> Request_Name;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#109_14">Request_Name</A><FONT COLOR=red><A NAME="85_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#109_28">Key</A> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A>) <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="87_16">Request_Name</A></FONT> (<FONT COLOR=red><A NAME="87_30">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#87_16">Request_Name</A>, "menu_request_name");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#87_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#109_28">Key</A>)));
+ <b>end</b> Request_Name;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#193_13">Create</A><FONT COLOR=red><A NAME="93_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#193_21">Name</A> : String;
+ <A HREF="terminal_interface-curses-menus__ads.htm#194_21">Description</A> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+ <b>function</b> <FONT COLOR=red><A NAME="97_16">Newitem</A></FONT> (Name, Desc : Char_Ptr) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#97_16">Newitem</A>, "new_item");
+
+ <b>type</b> <FONT COLOR=red><A NAME="100_12">Name_String</A></FONT> <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#193_21">Name</A>'Length);
+ <b>type</b> <FONT COLOR=red><A NAME="101_12">Name_String_Ptr</A></FONT> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-menus__adb.htm#100_12">Name_String</A>;
+ <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#101_12">Name_String_Ptr</A>);
+
+ <b>type</b> <FONT COLOR=red><A NAME="104_12">Desc_String</A></FONT> <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#194_21">Description</A>'Length);
+ <b>type</b> <FONT COLOR=red><A NAME="105_12">Desc_String_Ptr</A></FONT> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-menus__adb.htm#104_12">Desc_String</A>;
+ <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#105_12">Desc_String_Ptr</A>);
+
+ <FONT COLOR=red><A NAME="108_7">Name_Str</A></FONT> : <A HREF="terminal_interface-curses-menus__adb.htm#101_12">Name_String_Ptr</A> := <b>new</b> <A HREF="terminal_interface-curses-menus__adb.htm#100_12">Name_String</A>;
+ <FONT COLOR=red><A NAME="109_7">Desc_Str</A></FONT> : <A HREF="terminal_interface-curses-menus__adb.htm#105_12">Desc_String_Ptr</A> := <b>new</b> <A HREF="terminal_interface-curses-menus__adb.htm#104_12">Desc_String</A>;
+ <FONT COLOR=red><A NAME="110_7">Name_Len</A></FONT>, <FONT COLOR=red><A NAME="110_17">Desc_Len</A></FONT> : size_t;
+ <FONT COLOR=red><A NAME="111_7">Result</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses-menus__ads.htm#193_21">Name</A>, <A HREF="terminal_interface-curses-menus__adb.htm#108_7">Name_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#110_7">Name_Len</A>);
+ To_C (<A HREF="terminal_interface-curses-menus__ads.htm#194_21">Description</A>, <A HREF="terminal_interface-curses-menus__adb.htm#109_7">Desc_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#110_17">Desc_Len</A>);
+ <A HREF="terminal_interface-curses-menus__adb.htm#111_7">Result</A> := <A HREF="terminal_interface-curses-menus__adb.htm#97_16">Newitem</A> (<A HREF="terminal_interface-curses-menus__adb.htm#108_7">Name_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#108_7">Name_Str</A>.<b>all</b>'First)'<b>Access</b>,
+ <A HREF="terminal_interface-curses-menus__adb.htm#109_7">Desc_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#109_7">Desc_Str</A>.<b>all</b>'First)'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#111_7">Result</A> = <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#387_4">Eti_System_Error</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#111_7">Result</A>;
+ <b>end</b> Create;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#205_14">Delete</A><FONT COLOR=red><A NAME="123_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="125_16">Descname</A></FONT> (<FONT COLOR=red><A NAME="125_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#125_16">Descname</A>, "item_description");
+ <b>function</b> <FONT COLOR=red><A NAME="127_16">Itemname</A></FONT> (<FONT COLOR=red><A NAME="127_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#127_16">Itemname</A>, "item_name");
+
+ <b>function</b> <FONT COLOR=red><A NAME="130_16">Freeitem</A></FONT> (<FONT COLOR=red><A NAME="130_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#130_16">Freeitem</A>, "free_item");
+
+ <FONT COLOR=red><A NAME="133_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <FONT COLOR=red><A NAME="134_7">Ptr</A></FONT> : <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#125_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A> /= Null_Ptr <b>then</b>
+ <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#127_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A> /= Null_Ptr <b>then</b>
+ <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#134_7">Ptr</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-menus__adb.htm#133_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#130_16">Freeitem</A> (<A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#133_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#133_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#205_22">Itm</A> := <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>;
+ <b>end</b> Delete;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#214_14">Set_Value</A><FONT COLOR=red><A NAME="151_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#214_25">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#215_25">Value</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="154_16">Set_Item_Val</A></FONT> (<FONT COLOR=red><A NAME="154_30">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <FONT COLOR=red><A NAME="155_30">Val</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#154_16">Set_Item_Val</A>, "set_item_value");
+
+ <FONT COLOR=red><A NAME="158_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#154_16">Set_Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#214_25">Itm</A>, Boolean'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#215_25">Value</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#158_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#158_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Value;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#220_13">Value</A><FONT COLOR=red><A NAME="165_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#220_20">Itm</A> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="167_16">Item_Val</A></FONT> (<FONT COLOR=red><A NAME="167_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#167_16">Item_Val</A>, "item_value");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#167_16">Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#220_20">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#75_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> Value;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#229_13">Visible</A><FONT COLOR=red><A NAME="178_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#229_22">Itm</A> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="180_16">Item_Vis</A></FONT> (<FONT COLOR=red><A NAME="180_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#180_16">Item_Vis</A>, "item_visible");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#180_16">Item_Vis</A> (<A HREF="terminal_interface-curses-menus__ads.htm#229_22">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#75_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> Visible;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#238_14">Set_Options</A><FONT COLOR=red><A NAME="190_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#238_27">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#239_27">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="193_16">Set_Item_Opts</A></FONT> (<FONT COLOR=red><A NAME="193_31">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <FONT COLOR=red><A NAME="194_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#193_16">Set_Item_Opts</A>, "set_item_opts");
+
+ <FONT COLOR=red><A NAME="197_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#67_13">IOS_2_CInt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#239_27">Options</A>);
+ <FONT COLOR=red><A NAME="198_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#198_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#193_16">Set_Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#238_27">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#197_7">Opt</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#198_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#198_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Options;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#244_14">Switch_Options</A><FONT COLOR=red><A NAME="206_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#244_30">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#245_30">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#246_30">On</A> : Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="210_16">Item_Opts_On</A></FONT> (<FONT COLOR=red><A NAME="210_30">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <FONT COLOR=red><A NAME="211_30">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#210_16">Item_Opts_On</A>, "item_opts_on");
+ <b>function</b> <FONT COLOR=red><A NAME="213_16">Item_Opts_Off</A></FONT> (<FONT COLOR=red><A NAME="213_31">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <FONT COLOR=red><A NAME="214_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#213_16">Item_Opts_Off</A>, "item_opts_off");
+
+ <FONT COLOR=red><A NAME="217_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#67_13">IOS_2_CInt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#245_30">Options</A>);
+ <FONT COLOR=red><A NAME="218_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#246_30">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#218_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#210_16">Item_Opts_On</A> (<A HREF="terminal_interface-curses-menus__ads.htm#244_30">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#217_7">Opt</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#218_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#213_16">Item_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#244_30">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#217_7">Opt</A>);
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#218_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#218_7">Err</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Switch_Options;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#253_14">Get_Options</A><FONT COLOR=red><A NAME="230_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#253_27">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#254_27">Options</A> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="233_16">Item_Opts</A></FONT> (<FONT COLOR=red><A NAME="233_27">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#233_16">Item_Opts</A>, "item_opts");
+
+ <FONT COLOR=red><A NAME="236_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#233_16">Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#253_27">Itm</A>);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#254_27">Options</A> := <A HREF="terminal_interface-curses-menus__adb.htm#71_13">CInt_2_IOS</A> (<A HREF="terminal_interface-curses-menus__adb.htm#236_7">Res</A>);
+ <b>end</b> Get_Options;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#258_13">Get_Options</A><FONT COLOR=red><A NAME="241_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#258_26">Itm</A> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A> := <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="243_7">Ios</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#258_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#258_26">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#243_7">Ios</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#243_7">Ios</A>;
+ <b>end</b> Get_Options;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#267_14">Name</A><FONT COLOR=red><A NAME="249_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#267_20">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#268_20">Name</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="252_16">Itemname</A></FONT> (<FONT COLOR=red><A NAME="252_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#252_16">Itemname</A>, "item_name");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#252_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#267_20">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#268_20">Name</A>);
+ <b>end</b> Name;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#270_14">Name</A><FONT COLOR=red><A NAME="258_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#270_20">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="260_16">Itemname</A></FONT> (<FONT COLOR=red><A NAME="260_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#260_16">Itemname</A>, "item_name");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#260_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#270_20">Itm</A>));
+ <b>end</b> Name;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#276_14">Description</A><FONT COLOR=red><A NAME="266_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#276_27">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#277_27">Description</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="269_16">Descname</A></FONT> (<FONT COLOR=red><A NAME="269_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#269_16">Descname</A>, "item_description");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#269_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#276_27">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#277_27">Description</A>);
+ <b>end</b> Description;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#280_14">Description</A><FONT COLOR=red><A NAME="275_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#280_27">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="277_16">Descname</A></FONT> (<FONT COLOR=red><A NAME="277_26">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#277_16">Descname</A>, "item_description");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#277_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#280_27">Itm</A>));
+ <b>end</b> Description;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#290_14">Set_Current</A><FONT COLOR=red><A NAME="283_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#290_27">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#291_27">Itm</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="286_16">Set_Curr_Item</A></FONT> (<FONT COLOR=red><A NAME="286_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="287_31">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#286_16">Set_Curr_Item</A>, "set_current_item");
+
+ <FONT COLOR=red><A NAME="290_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#286_16">Set_Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#290_27">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#291_27">Itm</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#290_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#290_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Current;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#296_13">Current</A><FONT COLOR=red><A NAME="297_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#296_22">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="299_16">Curr_Item</A></FONT> (<FONT COLOR=red><A NAME="299_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#299_16">Curr_Item</A>, "current_item");
+
+ <FONT COLOR=red><A NAME="302_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A> := <A HREF="terminal_interface-curses-menus__adb.htm#299_16">Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#296_22">Men</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#302_7">Res</A> = <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#302_7">Res</A>;
+ <b>end</b> Current;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#301_14">Set_Top_Row</A><FONT COLOR=red><A NAME="310_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#301_27">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#302_27">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="313_16">Set_Toprow</A></FONT> (<FONT COLOR=red><A NAME="313_28">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="314_28">Line</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#313_16">Set_Toprow</A>, "set_top_row");
+
+ <FONT COLOR=red><A NAME="317_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#313_16">Set_Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#301_27">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#302_27">Line</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#317_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#317_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Top_Row;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#307_13">Top_Row</A><FONT COLOR=red><A NAME="324_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#307_22">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="326_16">Toprow</A></FONT> (<FONT COLOR=red><A NAME="326_24">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#326_16">Toprow</A>, "top_row");
+
+ <FONT COLOR=red><A NAME="329_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#326_16">Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#307_22">Men</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#329_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#329_7">Res</A>);
+ <b>end</b> Top_Row;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#312_13">Get_Index</A><FONT COLOR=red><A NAME="337_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#312_24">Itm</A> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> Positive
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="339_16">Get_Itemindex</A></FONT> (<FONT COLOR=red><A NAME="339_31">Itm</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#339_16">Get_Itemindex</A>, "item_index");
+
+ <FONT COLOR=red><A NAME="342_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#339_16">Get_Itemindex</A> (<A HREF="terminal_interface-curses-menus__ads.htm#312_24">Itm</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#342_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-menus__adb.htm#342_7">Res</A>) + Positive'First);
+ <b>end</b> Get_Index;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#324_14">Post</A><FONT COLOR=red><A NAME="350_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#324_20">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#325_20">Post</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="353_16">M_Post</A></FONT> (<FONT COLOR=red><A NAME="353_24">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#353_16">M_Post</A>, "post_menu");
+ <b>function</b> <FONT COLOR=red><A NAME="355_16">M_Unpost</A></FONT> (<FONT COLOR=red><A NAME="355_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#355_16">M_Unpost</A>, "unpost_menu");
+
+ <FONT COLOR=red><A NAME="358_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#325_20">Post</A> <b>then</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#358_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#353_16">M_Post</A> (<A HREF="terminal_interface-curses-menus__ads.htm#324_20">Men</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#358_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#355_16">M_Unpost</A> (<A HREF="terminal_interface-curses-menus__ads.htm#324_20">Men</A>);
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#358_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#358_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Post;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#335_14">Set_Options</A><FONT COLOR=red><A NAME="370_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#335_27">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#336_27">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="373_16">Set_Menu_Opts</A></FONT> (<FONT COLOR=red><A NAME="373_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="374_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#373_16">Set_Menu_Opts</A>, "set_menu_opts");
+
+ <FONT COLOR=red><A NAME="377_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#59_13">MOS_2_CInt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#336_27">Options</A>);
+ <FONT COLOR=red><A NAME="378_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#378_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#373_16">Set_Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#335_27">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#377_7">Opt</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#378_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#378_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Options;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#341_14">Switch_Options</A><FONT COLOR=red><A NAME="386_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#341_30">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#342_30">Options</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#343_30">On</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="390_16">Menu_Opts_On</A></FONT> (<FONT COLOR=red><A NAME="390_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="391_30">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#390_16">Menu_Opts_On</A>, "menu_opts_on");
+ <b>function</b> <FONT COLOR=red><A NAME="393_16">Menu_Opts_Off</A></FONT> (<FONT COLOR=red><A NAME="393_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="394_31">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#393_16">Menu_Opts_Off</A>, "menu_opts_off");
+
+ <FONT COLOR=red><A NAME="397_7">Opt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#59_13">MOS_2_CInt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#342_30">Options</A>);
+ <FONT COLOR=red><A NAME="398_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#343_30">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#398_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#390_16">Menu_Opts_On</A> (<A HREF="terminal_interface-curses-menus__ads.htm#341_30">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#397_7">Opt</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#398_7">Err</A> := <A HREF="terminal_interface-curses-menus__adb.htm#393_16">Menu_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#341_30">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#397_7">Opt</A>);
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#398_7">Err</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#398_7">Err</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Switch_Options;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#349_14">Get_Options</A><FONT COLOR=red><A NAME="410_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#349_27">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#350_27">Options</A> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="413_16">Menu_Opts</A></FONT> (<FONT COLOR=red><A NAME="413_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#413_16">Menu_Opts</A>, "menu_opts");
+
+ <FONT COLOR=red><A NAME="416_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#413_16">Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#349_27">Men</A>);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#350_27">Options</A> := <A HREF="terminal_interface-curses-menus__adb.htm#63_13">CInt_2_MOS</A> (<A HREF="terminal_interface-curses-menus__adb.htm#416_7">Res</A>);
+ <b>end</b> Get_Options;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#354_13">Get_Options</A><FONT COLOR=red><A NAME="421_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#354_26">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A> := <A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="423_7">Mos</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#354_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#354_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#423_7">Mos</A>);
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#423_7">Mos</A>;
+ <b>end</b> Get_Options;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#363_14">Set_Window</A><FONT COLOR=red><A NAME="429_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#363_26">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#364_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="432_16">Set_Menu_Win</A></FONT> (<FONT COLOR=red><A NAME="432_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="433_30">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#432_16">Set_Menu_Win</A>, "set_menu_win");
+
+ <FONT COLOR=red><A NAME="436_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#432_16">Set_Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#363_26">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#364_26">Win</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#436_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#436_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Window;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#369_13">Get_Window</A><FONT COLOR=red><A NAME="443_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#369_25">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="445_16">Menu_Win</A></FONT> (<FONT COLOR=red><A NAME="445_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#445_16">Menu_Win</A>, "menu_win");
+
+ <FONT COLOR=red><A NAME="448_7">W</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#445_16">Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#369_25">Men</A>);
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#448_7">W</A>;
+ <b>end</b> Get_Window;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#374_14">Set_Sub_Window</A><FONT COLOR=red><A NAME="453_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#374_30">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#375_30">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="456_16">Set_Menu_Sub</A></FONT> (<FONT COLOR=red><A NAME="456_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="457_30">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#456_16">Set_Menu_Sub</A>, "set_menu_sub");
+
+ <FONT COLOR=red><A NAME="460_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#456_16">Set_Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#374_30">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#375_30">Win</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#460_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#460_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Sub_Window;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#380_13">Get_Sub_Window</A><FONT COLOR=red><A NAME="467_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#380_29">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="469_16">Menu_Sub</A></FONT> (<FONT COLOR=red><A NAME="469_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#469_16">Menu_Sub</A>, "menu_sub");
+
+ <FONT COLOR=red><A NAME="472_7">W</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#469_16">Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#380_29">Men</A>);
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#472_7">W</A>;
+ <b>end</b> Get_Sub_Window;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#385_14">Scale</A><FONT COLOR=red><A NAME="477_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#385_21">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#386_21">Lines</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#387_21">Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+ <b>is</b>
+ <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="482_16">M_Scale</A></FONT> (<FONT COLOR=red><A NAME="482_25">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ Yp, Xp : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#482_16">M_Scale</A>, "scale_menu");
+
+ <FONT COLOR=red><A NAME="486_7">X</A></FONT>, <FONT COLOR=red><A NAME="486_10">Y</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="487_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#482_16">M_Scale</A> (<A HREF="terminal_interface-curses-menus__ads.htm#385_21">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#486_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#486_7">X</A>'<b>Access</b>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#487_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#487_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#386_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#486_10">Y</A>);
+ <A HREF="terminal_interface-curses-menus__ads.htm#387_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#486_7">X</A>);
+ <b>end</b> Scale;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#396_14">Position_Cursor</A><FONT COLOR=red><A NAME="496_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#396_31">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="498_16">Pos_Menu_Cursor</A></FONT> (<FONT COLOR=red><A NAME="498_33">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#498_16">Pos_Menu_Cursor</A>, "pos_menu_cursor");
+
+ <FONT COLOR=red><A NAME="501_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#498_16">Pos_Menu_Cursor</A> (<A HREF="terminal_interface-curses-menus__ads.htm#396_31">Men</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#501_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#501_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Position_Cursor;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#405_14">Set_Mark</A><FONT COLOR=red><A NAME="509_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#405_24">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#406_24">Mark</A> : <b>in</b> String)
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+ <b>function</b> <FONT COLOR=red><A NAME="513_16">Set_Mark</A></FONT> (<FONT COLOR=red><A NAME="513_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ Mark : Char_Ptr) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#513_16">Set_Mark</A>, "set_menu_mark");
+
+ <FONT COLOR=red><A NAME="517_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#406_24">Mark</A>'Length);
+ <FONT COLOR=red><A NAME="518_7">Len</A></FONT> : size_t;
+ <FONT COLOR=red><A NAME="519_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses-menus__ads.htm#406_24">Mark</A>, <A HREF="terminal_interface-curses-menus__adb.htm#517_7">Txt</A>, <A HREF="terminal_interface-curses-menus__adb.htm#518_7">Len</A>);
+ <A HREF="terminal_interface-curses-menus__adb.htm#519_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#513_16">Set_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#405_24">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#517_7">Txt</A> (<A HREF="terminal_interface-curses-menus__adb.htm#517_7">Txt</A>'First)'<b>Access</b>);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#519_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#519_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Mark;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#411_14">Mark</A><FONT COLOR=red><A NAME="528_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#411_20">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#412_20">Mark</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="531_16">Get_Menu_Mark</A></FONT> (<FONT COLOR=red><A NAME="531_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#531_16">Get_Menu_Mark</A>, "menu_mark");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#531_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#411_20">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#412_20">Mark</A>);
+ <b>end</b> Mark;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#415_14">Mark</A><FONT COLOR=red><A NAME="537_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#415_20">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="539_16">Get_Menu_Mark</A></FONT> (<FONT COLOR=red><A NAME="539_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#539_16">Get_Menu_Mark</A>, "menu_mark");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#539_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#415_20">Men</A>));
+ <b>end</b> Mark;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#425_14">Set_Foreground</A><FONT COLOR=red><A NAME="546_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-menus__ads.htm#426_7">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#427_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#428_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="551_16">Set_Menu_Fore</A></FONT> (<FONT COLOR=red><A NAME="551_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="552_31">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#551_16">Set_Menu_Fore</A>, "set_menu_fore");
+
+ <FONT COLOR=red><A NAME="555_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch => Character'First,
+ Color => <A HREF="terminal_interface-curses-menus__ads.htm#428_7">Color</A>,
+ Attr => <A HREF="terminal_interface-curses-menus__ads.htm#427_7">Fore</A>);
+ <FONT COLOR=red><A NAME="558_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#551_16">Set_Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#426_7">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-menus__adb.htm#555_7">Ch</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#558_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#558_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Foreground;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#433_14">Foreground</A><FONT COLOR=red><A NAME="565_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#433_26">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#434_26">Fore</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="568_16">Menu_Fore</A></FONT> (<FONT COLOR=red><A NAME="568_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#568_16">Menu_Fore</A>, "menu_fore");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#434_26">Fore</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#568_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#433_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <b>end</b> Foreground;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#438_14">Foreground</A><FONT COLOR=red><A NAME="574_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#438_26">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#439_26">Fore</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#440_26">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="578_16">Menu_Fore</A></FONT> (<FONT COLOR=red><A NAME="578_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#578_16">Menu_Fore</A>, "menu_fore");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#439_26">Fore</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#578_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#438_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#440_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#578_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#438_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+ <b>end</b> Foreground;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#445_14">Set_Background</A><FONT COLOR=red><A NAME="585_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-menus__ads.htm#446_7">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#447_7">Back</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#448_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="590_16">Set_Menu_Back</A></FONT> (<FONT COLOR=red><A NAME="590_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="591_31">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#590_16">Set_Menu_Back</A>, "set_menu_back");
+
+ <FONT COLOR=red><A NAME="594_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch => Character'First,
+ Color => <A HREF="terminal_interface-curses-menus__ads.htm#448_7">Color</A>,
+ Attr => <A HREF="terminal_interface-curses-menus__ads.htm#447_7">Back</A>);
+ <FONT COLOR=red><A NAME="597_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#590_16">Set_Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#446_7">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-menus__adb.htm#594_7">Ch</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#597_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#597_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Background;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#453_14">Background</A><FONT COLOR=red><A NAME="604_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#453_26">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#454_26">Back</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="607_16">Menu_Back</A></FONT> (<FONT COLOR=red><A NAME="607_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#607_16">Menu_Back</A>, "menu_back");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#454_26">Back</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#607_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#453_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <b>end</b> Background;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#458_14">Background</A><FONT COLOR=red><A NAME="613_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#458_26">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#459_26">Back</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#460_26">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="617_16">Menu_Back</A></FONT> (<FONT COLOR=red><A NAME="617_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#617_16">Menu_Back</A>, "menu_back");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#459_26">Back</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#617_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#458_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#460_26">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#617_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#458_26">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+ <b>end</b> Background;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#465_14">Set_Grey</A><FONT COLOR=red><A NAME="624_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#466_7">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#467_7">Grey</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#468_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="628_16">Set_Menu_Grey</A></FONT> (<FONT COLOR=red><A NAME="628_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="629_31">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#628_16">Set_Menu_Grey</A>, "set_menu_grey");
+
+ <FONT COLOR=red><A NAME="632_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch => Character'First,
+ Color => <A HREF="terminal_interface-curses-menus__ads.htm#468_7">Color</A>,
+ Attr => <A HREF="terminal_interface-curses-menus__ads.htm#467_7">Grey</A>);
+
+ <FONT COLOR=red><A NAME="636_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#628_16">Set_Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#466_7">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses-menus__adb.htm#632_7">Ch</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#636_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#636_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Grey;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#473_14">Grey</A><FONT COLOR=red><A NAME="643_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#473_20">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#474_20">Grey</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="646_16">Menu_Grey</A></FONT> (<FONT COLOR=red><A NAME="646_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#646_16">Menu_Grey</A>, "menu_grey");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#474_20">Grey</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#646_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#473_20">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <b>end</b> Grey;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#478_14">Grey</A><FONT COLOR=red><A NAME="652_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#479_7">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#480_7">Grey</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#481_7">Color</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="656_16">Menu_Grey</A></FONT> (<FONT COLOR=red><A NAME="656_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#656_16">Menu_Grey</A>, "menu_grey");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#480_7">Grey</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#656_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#479_7">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#481_7">Color</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses-menus__adb.htm#656_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#479_7">Men</A>)).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+ <b>end</b> Grey;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#486_14">Set_Pad_Character</A><FONT COLOR=red><A NAME="663_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#486_33">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#487_33">Pad</A> : <b>in</b> Character := <A HREF="terminal_interface-curses-menus__ads.htm#54_4">Space</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="666_16">Set_Menu_Pad</A></FONT> (<FONT COLOR=red><A NAME="666_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="667_30">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#666_16">Set_Menu_Pad</A>, "set_menu_pad");
+
+ <FONT COLOR=red><A NAME="670_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#666_16">Set_Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#486_33">Men</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#487_33">Pad</A>)));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#670_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#670_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Pad_Character;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#492_14">Pad_Character</A><FONT COLOR=red><A NAME="678_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#492_29">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#493_29">Pad</A> : <b>out</b> Character)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="681_16">Menu_Pad</A></FONT> (<FONT COLOR=red><A NAME="681_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#681_16">Menu_Pad</A>, "menu_pad");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#493_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-menus__adb.htm#681_16">Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#492_29">Men</A>));
+ <b>end</b> Pad_Character;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#502_14">Set_Spacing</A><FONT COLOR=red><A NAME="687_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#502_27">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#503_27">Descr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> := 0;
+ <A HREF="terminal_interface-curses-menus__ads.htm#504_27">Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> := 0;
+ <A HREF="terminal_interface-curses-menus__ads.htm#505_27">Col</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> := 0)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="692_16">Set_Spacing</A></FONT> (<FONT COLOR=red><A NAME="692_29">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="693_29">D</A></FONT>, <FONT COLOR=red><A NAME="693_32">R</A></FONT>, <FONT COLOR=red><A NAME="693_35">C</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#692_16">Set_Spacing</A>, "set_menu_spacing");
+
+ <FONT COLOR=red><A NAME="696_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#692_16">Set_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#502_27">Men</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#503_27">Descr</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#504_27">Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#505_27">Col</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#696_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#696_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Spacing;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#510_14">Spacing</A><FONT COLOR=red><A NAME="706_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#510_23">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#511_23">Descr</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#512_23">Row</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#513_23">Col</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="712_16">Get_Spacing</A></FONT> (<FONT COLOR=red><A NAME="712_29">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ D, R, C : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#712_16">Get_Spacing</A>, "menu_spacing");
+
+ <FONT COLOR=red><A NAME="716_7">D</A></FONT>, <FONT COLOR=red><A NAME="716_10">R</A></FONT>, <FONT COLOR=red><A NAME="716_13">C</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="717_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#712_16">Get_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#510_23">Men</A>,
+ <A HREF="terminal_interface-curses-menus__adb.htm#716_7">D</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-menus__adb.htm#716_10">R</A>'<b>Access</b>,
+ <A HREF="terminal_interface-curses-menus__adb.htm#716_13">C</A>'<b>Access</b>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#717_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#717_7">Res</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#511_23">Descr</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#716_7">D</A>);
+ <A HREF="terminal_interface-curses-menus__ads.htm#512_23">Row</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#716_10">R</A>);
+ <A HREF="terminal_interface-curses-menus__ads.htm#513_23">Col</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#716_13">C</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Spacing;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#522_13">Set_Pattern</A><FONT COLOR=red><A NAME="731_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#522_26">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#523_26">Text</A> : String) <b>return</b> Boolean
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+ <b>function</b> <FONT COLOR=red><A NAME="735_16">Set_Pattern</A></FONT> (<FONT COLOR=red><A NAME="735_29">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ Pattern : Char_Ptr) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#735_16">Set_Pattern</A>, "set_menu_pattern");
+
+ <FONT COLOR=red><A NAME="739_7">S</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#523_26">Text</A>'Length);
+ <FONT COLOR=red><A NAME="740_7">L</A></FONT> : size_t;
+ <FONT COLOR=red><A NAME="741_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses-menus__ads.htm#523_26">Text</A>, <A HREF="terminal_interface-curses-menus__adb.htm#739_7">S</A>, <A HREF="terminal_interface-curses-menus__adb.htm#740_7">L</A>);
+ <A HREF="terminal_interface-curses-menus__adb.htm#741_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#735_16">Set_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#522_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#739_7">S</A> (<A HREF="terminal_interface-curses-menus__adb.htm#739_7">S</A>'First)'<b>Access</b>);
+ <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#741_7">Res</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#89_4">E_No_Match</A> => <b>return</b> False;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> => <b>return</b> True;
+ <b>when</b> <b>others</b> =>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#741_7">Res</A>);
+ <b>return</b> False;
+ <b>end</b> <b>case</b>;
+ <b>end</b> Set_Pattern;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#529_14">Pattern</A><FONT COLOR=red><A NAME="754_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#529_23">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#530_23">Text</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="757_16">Get_Pattern</A></FONT> (<FONT COLOR=red><A NAME="757_29">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#57_12">chars_ptr</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#757_16">Get_Pattern</A>, "menu_pattern");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#757_16">Get_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#529_23">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#530_23">Text</A>);
+ <b>end</b> Pattern;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#539_14">Set_Format</A><FONT COLOR=red><A NAME="763_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#539_26">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#540_26">Lines</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#541_26">Columns</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="767_16">Set_Menu_Fmt</A></FONT> (<FONT COLOR=red><A NAME="767_30">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="768_30">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="769_30">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#767_16">Set_Menu_Fmt</A>, "set_menu_format");
+
+ <FONT COLOR=red><A NAME="772_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#767_16">Set_Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#539_26">Men</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#540_26">Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#541_26">Columns</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#772_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#772_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Format;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#546_14">Format</A><FONT COLOR=red><A NAME="781_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#546_22">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#547_22">Lines</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#548_22">Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+ <b>is</b>
+ <b>type</b> C_Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="786_16">Menu_Fmt</A></FONT> (<FONT COLOR=red><A NAME="786_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ Y, X : C_Int_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#786_16">Menu_Fmt</A>, "menu_format");
+
+ <FONT COLOR=red><A NAME="790_7">L</A></FONT>, <FONT COLOR=red><A NAME="790_10">C</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="791_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#786_16">Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#546_22">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#790_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#790_10">C</A>'<b>Access</b>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#791_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#791_7">Res</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#547_22">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#790_7">L</A>);
+ <A HREF="terminal_interface-curses-menus__ads.htm#548_22">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#790_10">C</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Format;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#560_14">Set_Item_Init_Hook</A><FONT COLOR=red><A NAME="801_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#560_34">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#561_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="804_16">Set_Item_Init</A></FONT> (<FONT COLOR=red><A NAME="804_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="805_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#804_16">Set_Item_Init</A>, "set_item_init");
+
+ <FONT COLOR=red><A NAME="808_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#804_16">Set_Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#560_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#561_34">Proc</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#808_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#808_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Item_Init_Hook;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#566_14">Set_Item_Term_Hook</A><FONT COLOR=red><A NAME="815_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#566_34">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#567_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="818_16">Set_Item_Term</A></FONT> (<FONT COLOR=red><A NAME="818_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="819_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#818_16">Set_Item_Term</A>, "set_item_term");
+
+ <FONT COLOR=red><A NAME="822_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#818_16">Set_Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#566_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#567_34">Proc</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#822_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#822_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Item_Term_Hook;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#572_14">Set_Menu_Init_Hook</A><FONT COLOR=red><A NAME="829_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#572_34">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#573_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="832_16">Set_Menu_Init</A></FONT> (<FONT COLOR=red><A NAME="832_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="833_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#832_16">Set_Menu_Init</A>, "set_menu_init");
+
+ <FONT COLOR=red><A NAME="836_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#832_16">Set_Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#572_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#573_34">Proc</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#836_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#836_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Menu_Init_Hook;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#578_14">Set_Menu_Term_Hook</A><FONT COLOR=red><A NAME="843_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#578_34">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#579_34">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="846_16">Set_Menu_Term</A></FONT> (<FONT COLOR=red><A NAME="846_31">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="847_31">Proc</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#846_16">Set_Menu_Term</A>, "set_menu_term");
+
+ <FONT COLOR=red><A NAME="850_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#846_16">Set_Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#578_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#579_34">Proc</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#850_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#850_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Menu_Term_Hook;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#584_13">Get_Item_Init_Hook</A><FONT COLOR=red><A NAME="857_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#584_33">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="859_16">Item_Init</A></FONT> (<FONT COLOR=red><A NAME="859_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#859_16">Item_Init</A>, "item_init");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#859_16">Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#584_33">Men</A>);
+ <b>end</b> Get_Item_Init_Hook;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#589_13">Get_Item_Term_Hook</A><FONT COLOR=red><A NAME="865_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#589_33">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="867_16">Item_Term</A></FONT> (<FONT COLOR=red><A NAME="867_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#867_16">Item_Term</A>, "item_term");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#867_16">Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#589_33">Men</A>);
+ <b>end</b> Get_Item_Term_Hook;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#594_13">Get_Menu_Init_Hook</A><FONT COLOR=red><A NAME="873_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#594_33">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="875_16">Menu_Init</A></FONT> (<FONT COLOR=red><A NAME="875_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#875_16">Menu_Init</A>, "menu_init");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#875_16">Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#594_33">Men</A>);
+ <b>end</b> Get_Menu_Init_Hook;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#599_13">Get_Menu_Term_Hook</A><FONT COLOR=red><A NAME="881_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#599_33">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="883_16">Menu_Term</A></FONT> (<FONT COLOR=red><A NAME="883_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu_Hook_Function</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#883_16">Menu_Term</A>, "menu_term");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#883_16">Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#599_33">Men</A>);
+ <b>end</b> Get_Menu_Term_Hook;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#608_14">Redefine</A><FONT COLOR=red><A NAME="889_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#608_24">Men</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#609_24">Items</A> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Item_Array_Access</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="892_16">Set_Items</A></FONT> (<FONT COLOR=red><A NAME="892_27">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="893_27">Items</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#892_16">Set_Items</A>, "set_menu_items");
+
+ <FONT COLOR=red><A NAME="896_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A>;
+ <b>begin</b>
+ <b>pragma</b> Assert (Items (Items'Last) = Null_Item);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#609_24">Items</A> (<A HREF="terminal_interface-curses-menus__ads.htm#609_24">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#896_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#892_16">Set_Items</A> (<A HREF="terminal_interface-curses-menus__ads.htm#608_24">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#609_24">Items</A>.<b>all</b>'Address);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#896_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#896_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Redefine;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#624_13">Item_Count</A><FONT COLOR=red><A NAME="909_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#624_25">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> Natural
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="911_16">Count</A></FONT> (<FONT COLOR=red><A NAME="911_23">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#911_16">Count</A>, "item_count");
+ <b>begin</b>
+ <b>return</b> Natural (<A HREF="terminal_interface-curses-menus__adb.htm#911_16">Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#624_25">Men</A>));
+ <b>end</b> Item_Count;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#618_13">Items</A><FONT COLOR=red><A NAME="917_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#618_20">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#619_20">Index</A> : Positive) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Item</A>
+ <b>is</b>
+ <b>use</b> <A HREF="terminal_interface-curses-menus__adb.htm#53_12">I_Array</A>;
+
+ <b>function</b> <FONT COLOR=red><A NAME="922_16">C_Mitems</A></FONT> (<FONT COLOR=red><A NAME="922_26">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> Pointer;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#922_16">C_Mitems</A>, "menu_items");
+
+ P : Pointer := <A HREF="terminal_interface-curses-menus__adb.htm#922_16">C_Mitems</A> (<A HREF="terminal_interface-curses-menus__ads.htm#618_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#619_20">Index</A> <b>not</b> <b>in</b> 1 .. <A HREF="terminal_interface-curses-menus__ads.htm#624_13">Item_Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#618_20">Men</A>) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+ <b>else</b>
+ P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#619_20">Index</A>) - 1);
+ <b>return</b> P.<b>all</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Items;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#633_13">Create</A><FONT COLOR=red><A NAME="936_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#633_21">Items</A> : <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="938_16">Newmenu</A></FONT> (<FONT COLOR=red><A NAME="938_25">Items</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#938_16">Newmenu</A>, "new_menu");
+
+ <FONT COLOR=red><A NAME="941_7">M</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <b>begin</b>
+ <b>pragma</b> Assert (Items (Items'Last) = Null_Item);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#633_21">Items</A> (<A HREF="terminal_interface-curses-menus__ads.htm#633_21">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-menus__adb.htm#941_7">M</A> := <A HREF="terminal_interface-curses-menus__adb.htm#938_16">Newmenu</A> (<A HREF="terminal_interface-curses-menus__ads.htm#633_21">Items</A>.<b>all</b>'Address);
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#941_7">M</A> = <A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Menu</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#116_4">Menu_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#941_7">M</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Create;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#640_14">Delete</A><FONT COLOR=red><A NAME="955_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#640_22">Men</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="957_16">Free</A></FONT> (<FONT COLOR=red><A NAME="957_22">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#957_16">Free</A>, "free_menu");
+
+ <FONT COLOR=red><A NAME="960_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#957_16">Free</A> (<A HREF="terminal_interface-curses-menus__ads.htm#640_22">Men</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#960_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#960_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#640_22">Men</A> := <A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Menu</A>;
+ <b>end</b> Delete;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#655_13">Driver</A><FONT COLOR=red><A NAME="969_13"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#655_21">Men</A> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#656_21">Key</A> : <A HREF="terminal_interface-curses__ads.htm#67_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#649_9">Driver_Result</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="972_16">Driver</A></FONT> (<FONT COLOR=red><A NAME="972_24">Men</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Menu</A>;
+ <FONT COLOR=red><A NAME="973_24">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-menus__adb.htm#972_16">Driver</A>, "menu_driver");
+
+ <FONT COLOR=red><A NAME="976_7">R</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#78_12">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#972_16">Driver</A> (<A HREF="terminal_interface-curses-menus__ads.htm#655_21">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#656_21">Key</A>));
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#976_7">R</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#80_4">E_Ok</A> <b>then</b>
+ <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#976_7">R</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#88_4">E_Unknown_Command</A> => <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#651_27">Unknown_Request</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#89_4">E_No_Match</A> => <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#652_27">No_Match</A>;
+ <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#92_4">E_Request_Denied</A> |
+ <A HREF="terminal_interface-curses-aux__ads.htm#90_4">E_Not_Selectable</A> => <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#650_27">Request_Denied</A>;
+ <b>when</b> <b>others</b> =>
+ <A HREF="terminal_interface-curses-aux__ads.htm#96_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#976_7">R</A>);
+ <b>end</b> <b>case</b>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#649_27">Menu_Ok</A>;
+ <b>end</b> Driver;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-menus__ads.htm#182_14">Free</A><FONT COLOR=red><A NAME="991_14"></A></FONT> (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Item_Array_Access</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#183_20">Free_Items</A> : <b>in</b> Boolean := False)
+ <b>is</b>
+ <b>procedure</b> <FONT COLOR=red><A NAME="994_17">Release</A></FONT> <b>is</b> <b>new</b> Ada.Unchecked_Deallocation
+ (<A HREF="terminal_interface-curses-menus__ads.htm#177_9">Item_Array</A>, <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Item_Array_Access</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-menus__ads.htm#183_20">Free_Items</A> <b>then</b>
+ <b>for</b> <FONT COLOR=red><A NAME="998_14">I</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A>'First .. (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A>'Last - 1) <b>loop</b>
+ <b>if</b> (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A> (<A HREF="terminal_interface-curses-menus__adb.htm#998_14">I</A>) /= <A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>) <b>then</b>
+ <A HREF="terminal_interface-curses-menus__ads.htm#640_14">Delete</A> (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A> (<A HREF="terminal_interface-curses-menus__adb.htm#998_14">I</A>));
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>loop</b>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-menus__adb.htm#994_17">Release</A> (<A HREF="terminal_interface-curses-menus__ads.htm#182_20">IA</A>);
+ <b>end</b> Free;
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#147_13">Default_Menu_Options</A><FONT COLOR=red><A NAME="1008_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu_Option_Set</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#354_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Menu</A>);
+ <b>end</b> Default_Menu_Options;
+
+ <b>function</b> <A HREF="terminal_interface-curses-menus__ads.htm#170_13">Default_Item_Options</A><FONT COLOR=red><A NAME="1014_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item_Option_Set</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#354_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#62_4">Null_Item</A>);
+ <b>end</b> Default_Item_Options;
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+
+<b>end</b> Terminal_Interface.Curses.Menus;
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-menus.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-menus.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Menu --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.20 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- menu binding.</EM></FONT>
+<FONT COLOR=green><EM>-- This module is generated. Please don't change it manually!</EM></FONT>
+<FONT COLOR=green><EM>-- Run the generator instead.</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">System</A>;
+<b>with</b> Interfaces.C;
+<b>with</b> Ada.Characters.Latin_1;
+
+<b>package</b> Terminal_Interface.Curses.Menus <b>is</b>
+ <b>pragma</b> Preelaborate (Terminal_Interface.Curses.Menus);
+ <b>pragma</b> Linker_Options ("-lmenu");
+ <b>pragma</b> Linker_Options ("-lncurses");
+
+ Space : Character <b>renames</b> Ada.Characters.Latin_1.Space;
+
+ <b>type</b> <FONT COLOR=red><A NAME="57_9">Item</A></FONT> <b>is</b> <b>private</b>;
+ <b>type</b> Menu <b>is</b> <b>private</b>;
+
+ <FONT COLOR=green><EM>---------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Interface constants --</EM></FONT>
+ <FONT COLOR=green><EM>---------------------------</EM></FONT>
+ <FONT COLOR=red><A NAME="63_4">Null_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Item</A>;
+ Null_Menu : <b>constant</b> Menu;
+
+ <b>subtype</b> Menu_Request_Code <b>is</b> Key_Code
+ <b>range</b> (Key_Max + 1) .. (Key_Max + 17);
+
+ <FONT COLOR=green><EM>-- The prefix M_ stands for "Menu Request"</EM></FONT>
+ <FONT COLOR=red><A NAME="70_4">M_Left_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 1;
+ <FONT COLOR=red><A NAME="71_4">M_Right_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 2;
+ <FONT COLOR=red><A NAME="72_4">M_Up_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 3;
+ <FONT COLOR=red><A NAME="73_4">M_Down_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 4;
+ <FONT COLOR=red><A NAME="74_4">M_ScrollUp_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 5;
+ <FONT COLOR=red><A NAME="75_4">M_ScrollDown_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 6;
+ <FONT COLOR=red><A NAME="76_4">M_ScrollDown_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 7;
+ <FONT COLOR=red><A NAME="77_4">M_ScrollUp_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 8;
+ <FONT COLOR=red><A NAME="78_4">M_First_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 9;
+ <FONT COLOR=red><A NAME="79_4">M_Last_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 10;
+ <FONT COLOR=red><A NAME="80_4">M_Next_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 11;
+ <FONT COLOR=red><A NAME="81_4">M_Previous_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 12;
+ <FONT COLOR=red><A NAME="82_4">M_Toggle_Item</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 13;
+ <FONT COLOR=red><A NAME="83_4">M_Clear_Pattern</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 14;
+ <FONT COLOR=red><A NAME="84_4">M_Back_Pattern</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 15;
+ <FONT COLOR=red><A NAME="85_4">M_Next_Match</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#205_4">Key_Max</A> + 16;
+ M_Previous_Match : <b>constant</b> Menu_Request_Code := Key_Max + 17;
+
+ <FONT COLOR=green><EM>-- For those who like the old 'C' names for the request codes</EM></FONT>
+ <FONT COLOR=red><A NAME="89_4">REQ_LEFT_ITEM</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#70_4">M_Left_Item</A>;
+ <FONT COLOR=red><A NAME="90_4">REQ_RIGHT_ITEM</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#71_4">M_Right_Item</A>;
+ <FONT COLOR=red><A NAME="91_4">REQ_UP_ITEM</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#72_4">M_Up_Item</A>;
+ <FONT COLOR=red><A NAME="92_4">REQ_DOWN_ITEM</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#73_4">M_Down_Item</A>;
+ <FONT COLOR=red><A NAME="93_4">REQ_SCR_ULINE</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#74_4">M_ScrollUp_Line</A>;
+ <FONT COLOR=red><A NAME="94_4">REQ_SCR_DLINE</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#75_4">M_ScrollDown_Line</A>;
+ <FONT COLOR=red><A NAME="95_4">REQ_SCR_DPAGE</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#76_4">M_ScrollDown_Page</A>;
+ <FONT COLOR=red><A NAME="96_4">REQ_SCR_UPAGE</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#77_4">M_ScrollUp_Page</A>;
+ <FONT COLOR=red><A NAME="97_4">REQ_FIRST_ITEM</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#78_4">M_First_Item</A>;
+ <FONT COLOR=red><A NAME="98_4">REQ_LAST_ITEM</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#79_4">M_Last_Item</A>;
+ <FONT COLOR=red><A NAME="99_4">REQ_NEXT_ITEM</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#80_4">M_Next_Item</A>;
+ <FONT COLOR=red><A NAME="100_4">REQ_PREV_ITEM</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#81_4">M_Previous_Item</A>;
+ <FONT COLOR=red><A NAME="101_4">REQ_TOGGLE_ITEM</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#82_4">M_Toggle_Item</A>;
+ <FONT COLOR=red><A NAME="102_4">REQ_CLEAR_PATTERN</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#83_4">M_Clear_Pattern</A>;
+ <FONT COLOR=red><A NAME="103_4">REQ_BACK_PATTERN</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#84_4">M_Back_Pattern</A>;
+ <FONT COLOR=red><A NAME="104_4">REQ_NEXT_MATCH</A></FONT> : <A HREF="terminal_interface-curses-menus__ads.htm#65_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#85_4">M_Next_Match</A>;
+ REQ_PREV_MATCH : Menu_Request_Code <b>renames</b> M_Previous_Match;
+
+ <b>procedure</b> Request_Name (<FONT COLOR=red><A NAME="107_28">Key</A></FONT> : <b>in</b> Menu_Request_Code;
+ Name : <b>out</b> String);
+
+ <b>function</b> Request_Name (Key : Menu_Request_Code) <b>return</b> String;
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+
+ <FONT COLOR=green><EM>------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Exceptions --</EM></FONT>
+ <FONT COLOR=green><EM>------------------</EM></FONT>
+
+ Menu_Exception : <b>exception</b>;
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- Menu options</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <b>pragma</b> Warnings (Off);
+ <b>type</b> Menu_Option_Set <b>is</b>
+ <b>record</b>
+ <FONT COLOR=red><A NAME="124_10">One_Valued</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="125_10">Show_Descriptions</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="126_10">Row_Major_Order</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="127_10">Ignore_Case</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="128_10">Show_Matches</A></FONT> : Boolean;
+ Non_Cyclic : Boolean;
+ <b>end</b> <b>record</b><A HREF="terminal_interface-curses-menus__ads.htm#121_9">;</A>
+ <b>pragma</b> Pack (Menu_Option_Set);
+ <b>pragma</b> Convention (C, Menu_Option_Set);
+
+ <b>for</b> Menu_Option_Set <b>use</b>
+ <b>record</b>
+ One_Valued <b>at</b> 0 <b>range</b> 0 .. 0;
+ Show_Descriptions <b>at</b> 0 <b>range</b> 1 .. 1;
+ Row_Major_Order <b>at</b> 0 <b>range</b> 2 .. 2;
+ Ignore_Case <b>at</b> 0 <b>range</b> 3 .. 3;
+ Show_Matches <b>at</b> 0 <b>range</b> 4 .. 4;
+ Non_Cyclic <b>at</b> 0 <b>range</b> 5 .. 5;
+ <b>end</b> <b>record</b>;
+ <b>for</b> Menu_Option_Set'Size <b>use</b> 32;
+ <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
+ <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
+ <b>pragma</b> Warnings (On);
+
+ <b>function</b> Default_Menu_Options <b>return</b> Menu_Option_Set;
+ <FONT COLOR=green><EM>-- Initial default options for a menu.</EM></FONT>
+ <b>pragma</b> Inline (Default_Menu_Options);
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- Item options</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <b>pragma</b> Warnings (Off);
+ <b>type</b> Item_Option_Set <b>is</b>
+ <b>record</b>
+ Selectable : Boolean;
+ <b>end</b> <b>record</b><A HREF="terminal_interface-curses-menus__ads.htm#154_9">;</A>
+ <b>pragma</b> Pack (Item_Option_Set);
+ <b>pragma</b> Convention (C, Item_Option_Set);
+
+ <b>for</b> Item_Option_Set <b>use</b>
+ <b>record</b>
+ Selectable <b>at</b> 0 <b>range</b> 0 .. 0;
+ <b>end</b> <b>record</b>;
+ <b>for</b> Item_Option_Set'Size <b>use</b> 32;
+ <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
+ <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
+ <b>pragma</b> Warnings (On);
+
+ <b>function</b> Default_Item_Options <b>return</b> Item_Option_Set;
+ <FONT COLOR=green><EM>-- Initial default options for an item.</EM></FONT>
+ <b>pragma</b> Inline (Default_Item_Options);
+
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- Item Array</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <b>type</b> Item_Array <b>is</b> <b>array</b> (Positive <b>range</b> <>) <b>of</b> <b>aliased</b> Item;
+ <b>pragma</b> Convention (C, Item_Array);
+
+ <b>type</b> Item_Array_Access <b>is</b> <b>access</b> Item_Array;
+
+ <b>procedure</b> Free (<FONT COLOR=red><A NAME="183_20">IA</A></FONT> : <b>in</b> <b>out</b> Item_Array_Access;
+ Free_Items : Boolean := False);
+ <FONT COLOR=green><EM>-- Release the memory for an allocated item array</EM></FONT>
+ <FONT COLOR=green><EM>-- If Free_Items is True, call Delete() for all the items in</EM></FONT>
+ <FONT COLOR=green><EM>-- the array.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
+ <b>function</b> Create (<FONT COLOR=red><A NAME="194_21">Name</A></FONT> : String;
+ Description : String := "") <b>return</b> Item;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Not inlined.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
+ <b>function</b> New_Item (<FONT COLOR=red><A NAME="200_23">Name</A></FONT> : String;
+ <A HREF="terminal_interface-curses-menus__ads.htm#193_13"> </A> Description : String := "") <b>return</b> Item
+ <b>renames</b> Create;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
+ <b>procedure</b> Delete (Itm : <b>in</b> <b>out</b> Item);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">free_item()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Resets Itm to Null_Item</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_value.3x.html">mitem_value.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_4"#2|</EM></FONT>
+ <b>procedure</b> Set_Value (<FONT COLOR=red><A NAME="215_25">Itm</A></FONT> : <b>in</b> Item;
+ Value : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_value.3x.html">set_item_value()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Value);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_5"#2|</EM></FONT>
+ <b>function</b> Value (Itm : Item) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_value.3x.html">item_value()</A></EM></FONT>
+ <b>pragma</b> Inline (Value);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_visible.3x.html">mitem_visible.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_6"#2|</EM></FONT>
+ <b>function</b> Visible (Itm : Item) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_visible.3x.html">item_visible()</A></EM></FONT>
+ <b>pragma</b> Inline (Visible);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_7"#2|</EM></FONT>
+ <b>procedure</b> Set_Options (<FONT COLOR=red><A NAME="239_27">Itm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item</A>;
+ Options : <b>in</b> Item_Option_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">set_item_opts()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- An overloaded Set_Options is defined later. Pragma Inline appears there</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_8"#2|</EM></FONT>
+ <b>procedure</b> Switch_Options (<FONT COLOR=red><A NAME="245_30">Itm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item</A>;
+ <FONT COLOR=red><A NAME="246_30">Options</A></FONT> : <b>in</b> Item_Option_Set;
+ On : Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts_on()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: item_opts_off()</EM></FONT>
+ <FONT COLOR=green><EM>-- An overloaded Switch_Options is defined later.</EM></FONT>
+ <FONT COLOR=green><EM>-- Pragma Inline appears there</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_9"#2|</EM></FONT>
+ <b>procedure</b> Get_Options (<FONT COLOR=red><A NAME="254_27">Itm</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#154_9">Item</A>;
+ Options : <b>out</b> Item_Option_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_10"#2|</EM></FONT>
+ <b>function</b> Get_Options (Itm : Item := Null_Item) <b>return</b> Item_Option_Set;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- An overloaded Get_Options is defined later. Pragma Inline appears there</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_name.3x.html">mitem_name.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_11"#2|</EM></FONT>
+ <b>procedure</b> Name (<FONT COLOR=red><A NAME="268_20">Itm</A></FONT> : <b>in</b> Item;
+ Name : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></FONT>
+ <b>function</b> Name (Itm : Item) <b>return</b> String;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Implemented as function</EM></FONT>
+ <b>pragma</b> Inline (Name);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_12"#2|</EM></FONT>
+ <b>procedure</b> Description (<FONT COLOR=red><A NAME="277_27">Itm</A></FONT> : <b>in</b> Item;
+ Description : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></FONT>
+
+ <b>function</b> Description (Itm : Item) <b>return</b> String;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Implemented as function</EM></FONT>
+ <b>pragma</b> Inline (Description);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_13"#2|</EM></FONT>
+ <b>procedure</b> Set_Current (<FONT COLOR=red><A NAME="291_27">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#56_9">Menu</A>;
+ Itm : <b>in</b> Item);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">set_current_item()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Current);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_14"#2|</EM></FONT>
+ <b>function</b> Current (Men : Menu) <b>return</b> Item;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">current_item()</A></EM></FONT>
+ <b>pragma</b> Inline (Current);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_15"#2|</EM></FONT>
+ <b>procedure</b> Set_Top_Row (<FONT COLOR=red><A NAME="302_27">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Menu</A>;
+ Line : <b>in</b> Line_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">set_top_row()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Top_Row);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_16"#2|</EM></FONT>
+ <b>function</b> Top_Row (Men : Menu) <b>return</b> Line_Position;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">top_row()</A></EM></FONT>
+ <b>pragma</b> Inline (Top_Row);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_17"#2|</EM></FONT>
+ <b>function</b> Get_Index (Itm : Item) <b>return</b> Positive;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">item_index()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Please note that in this binding we start the numbering of items</EM></FONT>
+ <FONT COLOR=green><EM>-- with 1. So this is number is one more than you get from the low</EM></FONT>
+ <FONT COLOR=green><EM>-- level call.</EM></FONT>
+ <b>pragma</b> Inline (Get_Index);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_post.3x.html">menu_post.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_18"#2|</EM></FONT>
+ <b>procedure</b> Post (<FONT COLOR=red><A NAME="325_20">Men</A></FONT> : <b>in</b> Menu;
+ Post : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_post.3x.html">post_menu()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: unpost_menu()</EM></FONT>
+ <b>pragma</b> Inline (Post);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_19"#2|</EM></FONT>
+ <b>procedure</b> Set_Options (<FONT COLOR=red><A NAME="336_27">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu</A>;
+ Options : <b>in</b> Menu_Option_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">set_menu_opts()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Options);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_20"#2|</EM></FONT>
+ <b>procedure</b> Switch_Options (<FONT COLOR=red><A NAME="342_30">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu</A>;
+ <FONT COLOR=red><A NAME="343_30">Options</A></FONT> : <b>in</b> Menu_Option_Set;
+ On : Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts_on()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: menu_opts_off()</EM></FONT>
+ <b>pragma</b> Inline (Switch_Options);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_21"#2|</EM></FONT>
+ <b>procedure</b> Get_Options (<FONT COLOR=red><A NAME="350_27">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#121_9">Menu</A>;
+ Options : <b>out</b> Menu_Option_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_22"#2|</EM></FONT>
+ <b>function</b> Get_Options (Men : Menu := Null_Menu) <b>return</b> Menu_Option_Set;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Options);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_win.3x.html">menu_win.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_23"#2|</EM></FONT>
+ <b>procedure</b> Set_Window (<FONT COLOR=red><A NAME="364_26">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Menu</A>;
+ Win : <b>in</b> Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">set_menu_win()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_24"#2|</EM></FONT>
+ <b>function</b> Get_Window (Men : Menu) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">menu_win()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_25"#2|</EM></FONT>
+ <b>procedure</b> Set_Sub_Window (<FONT COLOR=red><A NAME="375_30">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Menu</A>;
+ Win : <b>in</b> Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">set_menu_sub()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Sub_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_26"#2|</EM></FONT>
+ <b>function</b> Get_Sub_Window (Men : Menu) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">menu_sub()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Sub_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_27"#2|</EM></FONT>
+ <b>procedure</b> Scale (<FONT COLOR=red><A NAME="386_21">Men</A></FONT> : <b>in</b> Menu;
+ <FONT COLOR=red><A NAME="387_21">Lines</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ Columns : <b>out</b> Column_Count);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_win.3x.html">scale_menu()</A></EM></FONT>
+ <b>pragma</b> Inline (Scale);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_cursor.3x.html">menu_cursor.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_28"#2|</EM></FONT>
+ <b>procedure</b> Position_Cursor (Men : Menu);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_cursor.3x.html">pos_menu_cursor()</A></EM></FONT>
+ <b>pragma</b> Inline (Position_Cursor);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_mark.3x.html">menu_mark.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_29"#2|</EM></FONT>
+ <b>procedure</b> Set_Mark (<FONT COLOR=red><A NAME="406_24">Men</A></FONT> : <b>in</b> Menu;
+ Mark : <b>in</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">set_menu_mark()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Mark);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_30"#2|</EM></FONT>
+ <b>procedure</b> Mark (<FONT COLOR=red><A NAME="412_20">Men</A></FONT> : <b>in</b> Menu;
+ Mark : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></FONT>
+
+ <b>function</b> Mark (Men : Menu) <b>return</b> String;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Implemented as function</EM></FONT>
+ <b>pragma</b> Inline (Mark);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_attribs.3x.html">menu_attribs.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_31"#2|</EM></FONT>
+ <b>procedure</b> Set_Foreground
+ (<FONT COLOR=red><A NAME="427_7">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+ <FONT COLOR=red><A NAME="428_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A> := Normal_Video;
+ Color : <b>in</b> Color_Pair := Color_Pair'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_fore()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Foreground);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_32"#2|</EM></FONT>
+ <b>procedure</b> Foreground (<FONT COLOR=red><A NAME="434_26">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+ Fore : <b>out</b> Character_Attribute_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_fore()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_33"#2|</EM></FONT>
+ <b>procedure</b> Foreground (<FONT COLOR=red><A NAME="439_26">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+ <FONT COLOR=red><A NAME="440_26">Fore</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A>;
+ Color : <b>out</b> Color_Pair);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_fore()</A></EM></FONT>
+ <b>pragma</b> Inline (Foreground);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_34"#2|</EM></FONT>
+ <b>procedure</b> Set_Background
+ (<FONT COLOR=red><A NAME="447_7">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+ <FONT COLOR=red><A NAME="448_7">Back</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A> := Normal_Video;
+ Color : <b>in</b> Color_Pair := Color_Pair'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_back()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Background);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_35"#2|</EM></FONT>
+ <b>procedure</b> Background (<FONT COLOR=red><A NAME="454_26">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+ Back : <b>out</b> Character_Attribute_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_back()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_36"#2|</EM></FONT>
+
+ <b>procedure</b> Background (<FONT COLOR=red><A NAME="459_26">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+ <FONT COLOR=red><A NAME="460_26">Back</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A>;
+ Color : <b>out</b> Color_Pair);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_back()</A></EM></FONT>
+ <b>pragma</b> Inline (Background);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_37"#2|</EM></FONT>
+ <b>procedure</b> Set_Grey
+ (<FONT COLOR=red><A NAME="467_7">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+ <FONT COLOR=red><A NAME="468_7">Grey</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A> := Normal_Video;
+ Color : <b>in</b> Color_Pair := Color_Pair'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_grey()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Grey);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_38"#2|</EM></FONT>
+ <b>procedure</b> Grey (<FONT COLOR=red><A NAME="474_20">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+ Grey : <b>out</b> Character_Attribute_Set);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_grey()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_39"#2|</EM></FONT>
+ <b>procedure</b> Grey
+ (<FONT COLOR=red><A NAME="480_7">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Menu</A>;
+ <FONT COLOR=red><A NAME="481_7">Grey</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A>;
+ Color : <b>out</b> Color_Pair);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_grey()</A></EM></FONT>
+ <b>pragma</b> Inline (Grey);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_40"#2|</EM></FONT>
+ <b>procedure</b> Set_Pad_Character (<FONT COLOR=red><A NAME="487_33">Men</A></FONT> : <b>in</b> Menu;
+ Pad : <b>in</b> Character := Space);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">set_menu_pad()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Pad_Character);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_41"#2|</EM></FONT>
+ <b>procedure</b> Pad_Character (<FONT COLOR=red><A NAME="493_29">Men</A></FONT> : <b>in</b> Menu;
+ Pad : <b>out</b> Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_attribs.3x.html">menu_pad()</A></EM></FONT>
+ <b>pragma</b> Inline (Pad_Character);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_spacing.3x.html">menu_spacing.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_42"#2|</EM></FONT>
+ <b>procedure</b> Set_Spacing (<FONT COLOR=red><A NAME="503_27">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Menu</A>;
+ <FONT COLOR=red><A NAME="504_27">Descr</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A> := 0;
+ <FONT COLOR=red><A NAME="505_27">Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A> := 0;
+ Col : <b>in</b> Column_Position := 0);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_spacing.3x.html">set_menu_spacing()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Spacing);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_43"#2|</EM></FONT>
+ <b>procedure</b> Spacing (<FONT COLOR=red><A NAME="511_23">Men</A></FONT> : <b>in</b> Menu;
+ <FONT COLOR=red><A NAME="512_23">Descr</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="513_23">Row</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Col : <b>out</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_spacing.3x.html">menu_spacing()</A></EM></FONT>
+ <b>pragma</b> Inline (Spacing);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_pattern.3x.html">menu_pattern.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_44"#2|</EM></FONT>
+ <b>function</b> Set_Pattern (<FONT COLOR=red><A NAME="523_26">Men</A></FONT> : Menu;
+ Text : String) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_pattern.3x.html">set_menu_pattern()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Return TRUE if the pattern matches, FALSE otherwise</EM></FONT>
+ <b>pragma</b> Inline (Set_Pattern);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_45"#2|</EM></FONT>
+ <b>procedure</b> Pattern (<FONT COLOR=red><A NAME="530_23">Men</A></FONT> : <b>in</b> Menu;
+ Text : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_pattern.3x.html">menu_pattern()</A></EM></FONT>
+ <b>pragma</b> Inline (Pattern);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_format.3x.html">menu_format.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_46"#2|</EM></FONT>
+ <b>procedure</b> Set_Format (<FONT COLOR=red><A NAME="540_26">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Menu</A>;
+ <FONT COLOR=red><A NAME="541_26">Lines</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ Columns : <b>in</b> Column_Count);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_format.3x.html">set_menu_format()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Format);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_47"#2|</EM></FONT>
+ <b>procedure</b> Format (<FONT COLOR=red><A NAME="547_22">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Menu</A>;
+ <FONT COLOR=red><A NAME="548_22">Lines</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ Columns : <b>out</b> Column_Count);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_format.3x.html">menu_format()</A></EM></FONT>
+ <b>pragma</b> Inline (Format);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <b>type</b> Menu_Hook_Function <b>is</b> <b>access</b> <b>procedure</b> (Men : <b>in</b> Menu);
+ <b>pragma</b> Convention (C, Menu_Hook_Function);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_48"#2|</EM></FONT>
+ <b>procedure</b> Set_Item_Init_Hook (<FONT COLOR=red><A NAME="561_34">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu</A>;
+ Proc : <b>in</b> Menu_Hook_Function);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_item_init()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Item_Init_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_49"#2|</EM></FONT>
+ <b>procedure</b> Set_Item_Term_Hook (<FONT COLOR=red><A NAME="567_34">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu</A>;
+ Proc : <b>in</b> Menu_Hook_Function);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_item_term()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Item_Term_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_50"#2|</EM></FONT>
+ <b>procedure</b> Set_Menu_Init_Hook (<FONT COLOR=red><A NAME="573_34">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu</A>;
+ Proc : <b>in</b> Menu_Hook_Function);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_menu_init()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Menu_Init_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_51"#2|</EM></FONT>
+ <b>procedure</b> Set_Menu_Term_Hook (<FONT COLOR=red><A NAME="579_34">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#556_9">Menu</A>;
+ Proc : <b>in</b> Menu_Hook_Function);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_menu_term()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Menu_Term_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_52"#2|</EM></FONT>
+ <b>function</b> Get_Item_Init_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">item_init()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Item_Init_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_53"#2|</EM></FONT>
+ <b>function</b> Get_Item_Term_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">item_term()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Item_Term_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_54"#2|</EM></FONT>
+ <b>function</b> Get_Menu_Init_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">menu_init()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Menu_Init_Hook);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_55"#2|</EM></FONT>
+ <b>function</b> Get_Menu_Term_Hook (Men : Menu) <b>return</b> Menu_Hook_Function;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">menu_term()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Menu_Term_Hook);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_items.3x.html">menu_items.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_56"#2|</EM></FONT>
+ <b>procedure</b> Redefine (<FONT COLOR=red><A NAME="609_24">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Menu</A>;
+ Items : <b>in</b> Item_Array_Access);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_items.3x.html">set_menu_items()</A></EM></FONT>
+ <b>pragma</b> Inline (Redefine);
+
+ <b>procedure</b> Set_Items (<FONT COLOR=red><A NAME="614_25">Men</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#180_9">Menu</A>;
+ <A HREF="terminal_interface-curses-menus__ads.htm#613_14"> </A> Items : <b>in</b> Item_Array_Access) <b>renames</b> Redefine;
+ <b>pragma</b> Inline (Set_Items);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_57"#2|</EM></FONT>
+ <b>function</b> Items (<FONT COLOR=red><A NAME="619_20">Men</A></FONT> : Menu;
+ Index : Positive) <b>return</b> Item;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_items.3x.html">menu_items()</A></EM></FONT>
+ <b>pragma</b> Inline (Items);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_58"#2|</EM></FONT>
+ <b>function</b> Item_Count (Men : Menu) <b>return</b> Natural;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_items.3x.html">item_count()</A></EM></FONT>
+ <b>pragma</b> Inline (Item_Count);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_new.3x.html">menu_new.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_59"#2|</EM></FONT>
+ <b>function</b> Create (Items : Item_Array_Access) <b>return</b> Menu;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_new.3x.html">new_menu()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Not inlined</EM></FONT>
+
+ <b>function</b> New_Menu (Items : Item_Array_Access) <b>return</b> Menu <b>renames</b> Create;
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_60"#2|</EM></FONT>
+ <b>procedure</b> Delete (Men : <b>in</b> <b>out</b> Menu);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_new.3x.html">free_menu()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Reset Men to Null_Menu</EM></FONT>
+ <FONT COLOR=green><EM>-- Not inlined</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/menu_new.3x.html">menu_new.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <b>type</b> Driver_Result <b>is</b> (<FONT COLOR=red><A NAME="650_27">Menu_Ok</A></FONT>,
+ <FONT COLOR=red><A NAME="651_27">Request_Denied</A></FONT>,
+ <FONT COLOR=red><A NAME="652_27">Unknown_Request</A></FONT>,
+ No_Match);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_61"#2|</EM></FONT>
+ <b>function</b> Driver (<FONT COLOR=red><A NAME="656_21">Men</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#67_9">Menu</A>;
+ Key : Key_Code) <b>return</b> Driver_Result;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/menu_new.3x.html">menu_driver()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Driver is not inlined</EM></FONT>
+
+<FONT COLOR=green><EM>-------------------------------------------------------------------------------</EM></FONT>
+<b>private</b>
+ <b>type</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Item</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+ <b>type</b> Menu <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+
+ <A HREF="terminal_interface-curses-menus__ads.htm#63_4">Null_Item</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#57_9">Item</A> := 0;
+ Null_Menu : <b>constant</b> Menu := 0;
+
+<b>end</b> Terminal_Interface.Curses.Menus;
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-mouse.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-mouse.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Mouse --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.16 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> System;
+
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-mouse__ads.htm#47_35">Mouse</A><FONT COLOR=red><A NAME="47_40"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> System.Bit_Order;
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#91_13">Has_Mouse</A><FONT COLOR=red><A NAME="52_13"></A></FONT> <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="54_16">Mouse_Avail</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#54_16">Mouse_Avail</A>, "_nc_has_mouse");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#737_13">Has_Key</A> (<A HREF="terminal_interface-curses__ads.htm#202_4">Key_Mouse</A>) <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-mouse__adb.htm#54_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> Has_Mouse;
+
+ <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#124_13">Get_Mouse</A><FONT COLOR=red><A NAME="64_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>
+ <b>is</b>
+ <b>type</b> Event_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>;
+
+ <b>function</b> <FONT COLOR=red><A NAME="68_16">Getmouse</A></FONT> (Ev : Event_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#68_16">Getmouse</A>, "getmouse");
+
+ <FONT COLOR=red><A NAME="71_7">Event</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#68_16">Getmouse</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#71_7">Event</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#71_7">Event</A>;
+ <b>end</b> Get_Mouse;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#94_14">Register_Reportable_Event</A><FONT COLOR=red><A NAME="79_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#95_7">Button</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#96_7">State</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="83_7">Button_Nr</A></FONT> : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#95_7">Button</A>);
+ <FONT COLOR=red><A NAME="84_7">State_Nr</A></FONT> : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#96_7">State</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#95_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#70_12">Modifier_Keys</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-mouse__ads.htm#96_7">State</A> /= <A HREF="terminal_interface-curses-mouse__ads.htm#73_26">Pressed</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>else</b>
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#95_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#69_12">Real_Buttons</A> <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A> <b>or</b> ((2 ** (6 * <A HREF="terminal_interface-curses-mouse__adb.htm#83_7">Button_Nr</A>)) ** <A HREF="terminal_interface-curses-mouse__adb.htm#84_7">State_Nr</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#97_7">Mask</A> <b>or</b> (<A HREF="terminal_interface-curses-mouse__ads.htm#206_4">BUTTON_CTRL</A> ** (<A HREF="terminal_interface-curses-mouse__adb.htm#83_7">Button_Nr</A> - 4));
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Register_Reportable_Event;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#103_14">Register_Reportable_Events</A><FONT COLOR=red><A NAME="97_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#104_7">Button</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#105_7">State</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#78_9">Button_States</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#106_7">Mask</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>)
+ <b>is</b>
+ <b>begin</b>
+ <b>for</b> <FONT COLOR=red><A NAME="102_11">S</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#78_9">Button_States</A>'<b>Range</b> <b>loop</b>
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#105_7">State</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#102_11">S</A>) <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__ads.htm#94_14">Register_Reportable_Event</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#104_7">Button</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#102_11">S</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#106_7">Mask</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>loop</b>;
+ <b>end</b> Register_Reportable_Events;
+
+ <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#114_13">Start_Mouse</A><FONT COLOR=red><A NAME="109_13"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#114_26">Mask</A> : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#59_4">All_Events</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="112_16">MMask</A></FONT> (<FONT COLOR=red><A NAME="112_23">M</A></FONT> : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+ O : <b>access</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>) <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#112_16">MMask</A>, "mousemask");
+ <FONT COLOR=red><A NAME="115_7">R</A></FONT> : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+ <FONT COLOR=red><A NAME="116_7">Old</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#115_7">R</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#112_16">MMask</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#114_26">Mask</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#116_7">Old</A>'<b>Access</b>);
+ <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#116_7">Old</A>;
+ <b>end</b> Start_Mouse;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#119_14">End_Mouse</A><FONT COLOR=red><A NAME="122_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#119_25">Mask</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#58_4">No_Events</A>)
+ <b>is</b>
+ <b>begin</b>
+ <b>null</b>;
+ <b>end</b> End_Mouse;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-mouse__adb.htm#132_14">Dispatch_Event</A><FONT COLOR=red><A NAME="128_14"></A></FONT> (<FONT COLOR=red><A NAME="128_30">Mask</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+ <FONT COLOR=red><A NAME="129_30">Button</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+ <FONT COLOR=red><A NAME="130_30">State</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-mouse__adb.htm#128_14">Dispatch_Event</A><FONT COLOR=red><A NAME="132_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+ <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+ <A HREF="terminal_interface-curses-mouse__adb.htm#130_30">State</A> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>) <b>is</b>
+ <FONT COLOR=red><A NAME="135_7">L</A></FONT> : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#67_26">Alt</A>; <FONT COLOR=green><EM>-- preset to non real button;</EM></FONT>
+ <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#210_4">BUTTON1_EVENTS</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#61_26">Left</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#211_4">BUTTON2_EVENTS</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#62_26">Middle</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#212_4">BUTTON3_EVENTS</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#63_26">Right</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#213_4">BUTTON4_EVENTS</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#64_26">Button4</A>;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#69_12">Real_Buttons</A> <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#135_7">L</A> := 2 ** (6 * <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A>));
+ <b>for</b> <FONT COLOR=red><A NAME="149_14">I</A></FONT> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>'<b>Range</b> <b>loop</b>
+ <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__adb.htm#135_7">L</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#130_30">State</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#149_14">I</A>;
+ <b>exit</b>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-mouse__adb.htm#135_7">L</A> := 2 * <A HREF="terminal_interface-curses-mouse__adb.htm#135_7">L</A>;
+ <b>end</b> <b>loop</b>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#130_30">State</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#73_26">Pressed</A>;
+ <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#206_4">BUTTON_CTRL</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#65_26">Control</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#207_4">BUTTON_SHIFT</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#66_26">Shift</A>;
+ <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#128_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#208_4">BUTTON_ALT</A>) /= 0 <b>then</b>
+ <A HREF="terminal_interface-curses-mouse__adb.htm#129_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#67_26">Alt</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Dispatch_Event;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#128_14">Get_Event</A><FONT COLOR=red><A NAME="168_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#128_25">Event</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#129_25">Y</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#130_25">X</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#131_25">Button</A> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#132_25">State</A> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Button_State</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="174_7">Mask</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#128_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#163_10">Bstate</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-mouse__ads.htm#130_25">X</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#128_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#161_10">X</A>);
+ <A HREF="terminal_interface-curses-mouse__ads.htm#129_25">Y</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#128_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#161_13">Y</A>);
+ <A HREF="terminal_interface-curses-mouse__adb.htm#128_14">Dispatch_Event</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#174_7">Mask</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#131_25">Button</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#132_25">State</A>);
+ <b>end</b> Get_Event;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-mouse__ads.htm#138_14">Unget_Mouse</A><FONT COLOR=red><A NAME="181_14"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#138_27">Event</A> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="183_16">Ungetmouse</A></FONT> (<FONT COLOR=red><A NAME="183_28">Ev</A></FONT> : <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#183_16">Ungetmouse</A>, "ungetmouse");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#183_16">Ungetmouse</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#138_27">Event</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Unget_Mouse;
+
+ <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#143_13">Enclosed_In_Window</A><FONT COLOR=red><A NAME="191_13"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#143_33">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#144_33">Event</A> : <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Mouse_Event</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="194_16">Wenclose</A></FONT> (<FONT COLOR=red><A NAME="194_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="194_40">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>; <FONT COLOR=red><A NAME="194_51">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#194_16">Wenclose</A>, "wenclose");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#194_16">Wenclose</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#143_33">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#144_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#161_13">Y</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#144_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#161_10">X</A>))
+ = <A HREF="terminal_interface-curses__ads.htm#1736_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> Enclosed_In_Window;
+
+ <b>function</b> <A HREF="terminal_interface-curses-mouse__ads.htm#150_13">Mouse_Interval</A><FONT COLOR=red><A NAME="206_13"></A></FONT> (<A HREF="terminal_interface-curses-mouse__ads.htm#150_29">Msec</A> : Natural := 200) <b>return</b> Natural
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="208_16">Mouseinterval</A></FONT> (<FONT COLOR=red><A NAME="208_31">Msec</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-mouse__adb.htm#208_16">Mouseinterval</A>, "mouseinterval");
+ <b>begin</b>
+ <b>return</b> Natural (<A HREF="terminal_interface-curses-mouse__adb.htm#208_16">Mouseinterval</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#150_29">Msec</A>)));
+ <b>end</b> Mouse_Interval;
+
+<b>end</b> Terminal_Interface.Curses.Mouse;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-mouse.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-mouse.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-mouse.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.18 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.19 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<FONT COLOR=green><EM>-- mouse binding.</EM></FONT>
<FONT COLOR=green><EM>-- This module is generated. Please don't change it manually!</EM></FONT>
<b>package</b> Terminal_Interface.Curses.Mouse <b>is</b>
<b>pragma</b> Preelaborate (Terminal_Interface.Curses.Mouse);
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- Please note, that in ncurses-1.9.9e documentation mouse support</EM></FONT>
- <FONT COLOR=green><EM>-- is still marked as experimental. So also this binding will change</EM></FONT>
- <FONT COLOR=green><EM>-- if the ncurses methods change.</EM></FONT>
- <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- Please note, that in ncurses-1.9.9e documentation mouse support</EM></FONT>
+ <FONT COLOR=green><EM>-- is still marked as experimental. So also this binding will change</EM></FONT>
+ <FONT COLOR=green><EM>-- if the ncurses methods change.</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
<b>type</b> Event_Mask <b>is</b> <b>private</b>;
<FONT COLOR=red><A NAME="59_4">No_Events</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A>;
All_Events : <b>constant</b> Event_Mask;
- <b>type</b> Mouse_Button <b>is</b> (<FONT COLOR=red><A NAME="62_26">Left</A></FONT>, <FONT COLOR=green><EM>-- aka: Button 1</EM></FONT>
- <FONT COLOR=red><A NAME="63_26">Middle</A></FONT>, <FONT COLOR=green><EM>-- aka: Button 2</EM></FONT>
- <FONT COLOR=red><A NAME="64_26">Right</A></FONT>, <FONT COLOR=green><EM>-- aka: Button 3</EM></FONT>
- <FONT COLOR=red><A NAME="65_26">Button4</A></FONT>, <FONT COLOR=green><EM>-- aka: Button 4</EM></FONT>
- <FONT COLOR=red><A NAME="66_26">Control</A></FONT>, <FONT COLOR=green><EM>-- Control Key</EM></FONT>
- <FONT COLOR=red><A NAME="67_26">Shift</A></FONT>, <FONT COLOR=green><EM>-- Shift Key</EM></FONT>
- Alt); <FONT COLOR=green><EM>-- ALT Key</EM></FONT>
+ <b>type</b> Mouse_Button <b>is</b> (<FONT COLOR=red><A NAME="62_26">Left</A></FONT>, <FONT COLOR=green><EM>-- aka: Button 1</EM></FONT>
+ <FONT COLOR=red><A NAME="63_26">Middle</A></FONT>, <FONT COLOR=green><EM>-- aka: Button 2</EM></FONT>
+ <FONT COLOR=red><A NAME="64_26">Right</A></FONT>, <FONT COLOR=green><EM>-- aka: Button 3</EM></FONT>
+ <FONT COLOR=red><A NAME="65_26">Button4</A></FONT>, <FONT COLOR=green><EM>-- aka: Button 4</EM></FONT>
+ <FONT COLOR=red><A NAME="66_26">Control</A></FONT>, <FONT COLOR=green><EM>-- Control Key</EM></FONT>
+ <FONT COLOR=red><A NAME="67_26">Shift</A></FONT>, <FONT COLOR=green><EM>-- Shift Key</EM></FONT>
+ Alt); <FONT COLOR=green><EM>-- ALT Key</EM></FONT>
<b>subtype</b> <FONT COLOR=red><A NAME="70_12">Real_Buttons</A></FONT> <b>is</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Mouse_Button</A> <b>range</b> <A HREF="terminal_interface-curses-mouse__ads.htm#65_26">Left</A> .. Button4;
<b>subtype</b> Modifier_Keys <b>is</b> Mouse_Button <b>range</b> Control .. Alt;
<b>type</b> Button_States <b>is</b> <b>array</b> (Button_State) <b>of</b> Boolean;
<b>pragma</b> Pack (Button_States);
- All_Clicks : <b>constant</b> Button_States := (Clicked .. Triple_Clicked => True,
- <A HREF="terminal_interface-curses-mouse__ads.htm#78_9"> </A> <b>others</b> => False);
- All_States : <b>constant</b> Button_States := (<b>others</b> => True);
+ All_Clicks : <b>constant</b> Button_States := (Clicked .. Triple_Clicked => True,
+ <FONT COLOR=red><A NAME="83_4"> </A></FONT> <A HREF="terminal_interface-curses-mouse__ads.htm#78_9"> </A> <b>others</b> => False);
+ All_States : <b>constant</b> Button_States := (<b>others</b> => True);
<b>type</b> Mouse_Event <b>is</b> <b>private</b>;
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
<b>function</b> Has_Mouse <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- Return true if a mouse device is supported, false otherwise.</EM></FONT>
+ <FONT COLOR=green><EM>-- Return true if a mouse device is supported, false otherwise.</EM></FONT>
<b>procedure</b> Register_Reportable_Event
- (Button : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Mouse_Button</A>;
+ (<FONT COLOR=red><A NAME="96_7">Button</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Mouse_Button</A>;
<FONT COLOR=red><A NAME="97_7">State</A></FONT> : <b>in</b> Button_State;
Mask : <b>in</b> <b>out</b> Event_Mask);
- <FONT COLOR=green><EM>-- Stores the event described by the button and the state in the mask.</EM></FONT>
- <FONT COLOR=green><EM>-- Before you call this the first time, you should init the mask</EM></FONT>
- <FONT COLOR=green><EM>-- with the Empty_Mask constant</EM></FONT>
+ <FONT COLOR=green><EM>-- Stores the event described by the button and the state in the mask.</EM></FONT>
+ <FONT COLOR=green><EM>-- Before you call this the first time, you should init the mask</EM></FONT>
+ <FONT COLOR=green><EM>-- with the Empty_Mask constant</EM></FONT>
<b>pragma</b> Inline (Register_Reportable_Event);
<b>procedure</b> Register_Reportable_Events
- (Button : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#78_9">Mouse_Button</A>;
+ (<FONT COLOR=red><A NAME="105_7">Button</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#78_9">Mouse_Button</A>;
<FONT COLOR=red><A NAME="106_7">State</A></FONT> : <b>in</b> Button_States;
Mask : <b>in</b> <b>out</b> Event_Mask);
- <FONT COLOR=green><EM>-- Register all events described by the Button and the State bitmap.</EM></FONT>
- <FONT COLOR=green><EM>-- Before you call this the first time, you should init the mask</EM></FONT>
- <FONT COLOR=green><EM>-- with the Empty_Mask constant</EM></FONT>
+ <FONT COLOR=green><EM>-- Register all events described by the Button and the State bitmap.</EM></FONT>
+ <FONT COLOR=green><EM>-- Before you call this the first time, you should init the mask</EM></FONT>
+ <FONT COLOR=green><EM>-- with the Empty_Mask constant</EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
- <FONT COLOR=green><EM>-- There is one difference to mousmask(): we return the value of the</EM></FONT>
- <FONT COLOR=green><EM>-- old mask, that means the event mask value before this call.</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
+ <FONT COLOR=green><EM>-- There is one difference to mousmask(): we return the value of the</EM></FONT>
+ <FONT COLOR=green><EM>-- old mask, that means the event mask value before this call.</EM></FONT>
<b>function</b> Start_Mouse (Mask : <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := All_Events)
<b>return</b> Event_Mask;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">mousemask()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">mousemask()</A></EM></FONT>
<b>pragma</b> Inline (Start_Mouse);
<b>procedure</b> End_Mouse (Mask : <b>in</b> Event_Mask := No_Events);
- <FONT COLOR=green><EM>-- Terminates the mouse, restores the specified event mask</EM></FONT>
+ <FONT COLOR=green><EM>-- Terminates the mouse, restores the specified event mask</EM></FONT>
<b>pragma</b> Inline (End_Mouse);
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
<b>function</b> Get_Mouse <b>return</b> Mouse_Event;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">getmouse()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">getmouse()</A></EM></FONT>
<b>pragma</b> Inline (Get_Mouse);
- <b>procedure</b> Get_Event (Event : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Mouse_Event</A>;
- Y : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
- X : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Column_Position</A>;
- Button : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Mouse_Button</A>;
+ <b>procedure</b> Get_Event (<FONT COLOR=red><A NAME="129_25">Event</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Mouse_Event</A>;
+ <FONT COLOR=red><A NAME="130_25">Y</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="131_25">X</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#61_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="132_25">Button</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#72_9">Mouse_Button</A>;
State : <b>out</b> Button_State);
- <FONT COLOR=green><EM>-- !!! Warning: X and Y are screen coordinates. Due to ripped of lines they</EM></FONT>
- <FONT COLOR=green><EM>-- may not be identical to window coordinates.</EM></FONT>
+ <FONT COLOR=green><EM>-- !!! Warning: X and Y are screen coordinates. Due to ripped of lines they</EM></FONT>
+ <FONT COLOR=green><EM>-- may not be identical to window coordinates.</EM></FONT>
<b>pragma</b> Inline (Get_Event);
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
<b>procedure</b> Unget_Mouse (Event : <b>in</b> Mouse_Event);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">ungetmouse()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">ungetmouse()</A></EM></FONT>
<b>pragma</b> Inline (Unget_Mouse);
- <FONT COLOR=green><EM>-- <A NAME="AFU_4">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_4"#2|</EM></FONT>
<b>function</b> Enclosed_In_Window (<FONT COLOR=red><A NAME="144_33">Win</A></FONT> : <A HREF="terminal_interface-curses-mouse__ads.htm#85_9">Window</A> := Standard_Window;
Event : Mouse_Event) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">wenclose()</A></EM></FONT>
- <FONT COLOR=green><EM>-- But : use event instead of screen coordinates.</EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">wenclose()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- But : use event instead of screen coordinates.</EM></FONT>
<b>pragma</b> Inline (Enclosed_In_Window);
- <FONT COLOR=green><EM>-- <A NAME="AFU_5">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_5"#2|</EM></FONT>
<b>function</b> Mouse_Interval (Msec : Natural := 200) <b>return</b> Natural;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">mouseinterval()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">mouseinterval()</A></EM></FONT>
<b>pragma</b> Inline (Mouse_Interval);
<b>private</b>
<b>type</b> Mouse_Event <b>is</b>
<b>record</b>
- Id : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm>3_9">Interfaces</A>.<A HREF="i-c__ads.htm>0_20">C</A>.<A HREF="i-c__ads.htm#36_9">short</A>'First) ..
- Integer (<A HREF="interfac__ads.htm>3_9">Interfaces</A>.<A HREF="i-c__ads.htm>0_20">C</A>.<A HREF="i-c__ads.htm#35_9">short</A>'Last);
- X, Y, Z : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm>3_9">Interfaces</A>.<A HREF="i-c__ads.htm>0_20">C</A>.<A HREF="i-c__ads.htm#35_9">int</A>'First) ..
+ Id : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.short'First) ..
+ <FONT COLOR=red><A NAME="161_10"> </A></FONT> <FONT COLOR=red><A NAME="161_13"> </A></FONT> <FONT COLOR=red><A NAME="161_16"> </A></FONT> Integer (<A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.short'Last);
+ X, Y, Z : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int'First) ..
<FONT COLOR=red><A NAME="163_10"> </A></FONT> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9"> </A> Integer (Interfaces.C.int'Last);
Bstate : Event_Mask;
<b>end</b> <b>record</b>;
Z <b>at</b> 0 <b>range</b> 96 .. 127;
Bstate <b>at</b> 0 <b>range</b> 128 .. 159;
<b>end</b> <b>record</b>;
- <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
- <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
+ <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
+ <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
Generation_Bit_Order : <b>constant</b> System.Bit_Order := System.Low_Order_First;
- <FONT COLOR=green><EM>-- This constant may be different on your system.</EM></FONT>
+ <FONT COLOR=green><EM>-- This constant may be different on your system.</EM></FONT>
<FONT COLOR=red><A NAME="183_4">BUTTON1_RELEASED</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000001#;
<FONT COLOR=red><A NAME="184_4">BUTTON1_PRESSED</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := 8#00000000002#;
BUTTON4_EVENTS : <b>constant</b> Event_Mask := 8#00077000000#;
- <A HREF="terminal_interface-curses-mouse__ads.htm#59_4">No_Events</A> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm>09_4">0</A>;
+ <A HREF="terminal_interface-curses-mouse__ads.htm#59_4">No_Events</A> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#209_4">0</A>;
All_Events : <b>constant</b> Event_Mask := ALL_MOUSE_EVENTS;
<b>end</b> Terminal_Interface.Curses.Mouse;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-panels-user_data.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-panels-user_data.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Panels.User_Data --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+<b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#43_35">Panels</A>;
+<b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#43_35">Panels</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Panels.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#45_42">User_Data</A> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#53_14">Set_User_Data</A><FONT COLOR=red><A NAME="51_14"></A></FONT> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#53_29">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+ Data : <b>in</b> User_Access)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="54_16">Set_Panel_Userptr</A></FONT> (<FONT COLOR=red><A NAME="54_35">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+ Addr : User_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels-user_data__adb.htm#54_16">Set_Panel_Userptr</A>, "set_panel_userptr");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels-user_data__adb.htm#54_16">Set_Panel_Userptr</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#53_29">Pan</A>, Data) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_User_Data;
+
+ <b>function</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#64_13">Get_User_Data</A><FONT COLOR=red><A NAME="63_13"></A></FONT> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#64_28">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> User_Access
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="65_16">Panel_Userptr</A></FONT> (<FONT COLOR=red><A NAME="65_31">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> User_Access;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels-user_data__adb.htm#65_16">Panel_Userptr</A>, "panel_userptr");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__adb.htm#65_16">Panel_Userptr</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#64_28">Pan</A>);
+ <b>end</b> Get_User_Data;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#59_14">Get_User_Data</A><FONT COLOR=red><A NAME="71_14"></A></FONT> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#59_29">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+ Data : <b>out</b> User_Access)
+ <b>is</b>
+ <b>begin</b>
+ Data := <A HREF="terminal_interface-curses-panels-user_data__ads.htm#64_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#59_29">Pan</A>);
+ <b>end</b> Get_User_Data;
+
+<b>end</b> Terminal_Interface.Curses.Panels.User_Data;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-panels-user_data.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-panels-user_data.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-panels-user_data.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.11 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.12 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
<b>package</b> Terminal_Interface.Curses.Panels.User_Data<A HREF="terminal_interface-curses-panels__ads.htm#43_35"> </A><b>is</b>
<b>pragma</b> Preelaborate (Terminal_Interface.Curses.Panels.User_Data);
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
<b>procedure</b> Set_User_Data (Pan : <b>in</b> Panel;
Data : <b>in</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">set_panel_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">set_panel_userptr</A></EM></FONT>
<b>pragma</b> Inline (Set_User_Data);
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
<b>procedure</b> Get_User_Data (Pan : <b>in</b> Panel;
Data : <b>out</b> User_Access);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
<b>function</b> Get_User_Data (Pan : <b>in</b> Panel) <b>return</b> User_Access;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></FONT>
- <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
<b>pragma</b> Inline (Get_User_Data);
<b>end</b> Terminal_Interface.Curses.Panels.User_Data;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-panels.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-panels.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Panels --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-panels__ads.htm#43_35">Panels</A><FONT COLOR=red><A NAME="44_40"></A></FONT> <b>is</b>
+
+ <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.int;
+
+ <b>function</b> <A HREF="terminal_interface-curses-panels__ads.htm#66_13">Create</A><FONT COLOR=red><A NAME="48_13"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#66_21">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="50_16">Newpanel</A></FONT> (<FONT COLOR=red><A NAME="50_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#50_16">Newpanel</A>, "new_panel");
+
+ <FONT COLOR=red><A NAME="53_7">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-panels__adb.htm#53_7">Pan</A> := <A HREF="terminal_interface-curses-panels__adb.htm#50_16">Newpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#66_21">Win</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#53_7">Pan</A> = <A HREF="terminal_interface-curses-panels__ads.htm#53_4">Null_Panel</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-panels__adb.htm#53_7">Pan</A>;
+ <b>end</b> Create;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#76_14">Bottom</A><FONT COLOR=red><A NAME="62_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#76_22">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="64_16">Bottompanel</A></FONT> (<FONT COLOR=red><A NAME="64_29">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#64_16">Bottompanel</A>, "bottom_panel");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#64_16">Bottompanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#76_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Bottom;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#81_14">Top</A><FONT COLOR=red><A NAME="72_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#81_19">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="74_16">Toppanel</A></FONT> (<FONT COLOR=red><A NAME="74_26">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#74_16">Toppanel</A>, "top_panel");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#74_16">Toppanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#81_19">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Top;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#86_14">Show</A><FONT COLOR=red><A NAME="82_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#86_20">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="84_16">Showpanel</A></FONT> (<FONT COLOR=red><A NAME="84_27">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#84_16">Showpanel</A>, "show_panel");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#84_16">Showpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#86_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Show;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#96_14">Hide</A><FONT COLOR=red><A NAME="92_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#96_20">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="94_16">Hidepanel</A></FONT> (<FONT COLOR=red><A NAME="94_27">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#94_16">Hidepanel</A>, "hide_panel");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#94_16">Hidepanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#96_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Hide;
+
+ <b>function</b> <A HREF="terminal_interface-curses-panels__ads.htm#101_13">Get_Window</A><FONT COLOR=red><A NAME="102_13"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#101_25">Pan</A> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="104_16">Panel_Win</A></FONT> (<FONT COLOR=red><A NAME="104_27">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#104_16">Panel_Win</A>, "panel_window");
+
+ <FONT COLOR=red><A NAME="107_7">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses-panels__adb.htm#104_16">Panel_Win</A> (<A HREF="terminal_interface-curses-panels__ads.htm#101_25">Pan</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#107_7">Win</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-panels__adb.htm#107_7">Win</A>;
+ <b>end</b> Get_Window;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#110_14">Replace</A><FONT COLOR=red><A NAME="115_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#110_23">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+ <A HREF="terminal_interface-curses-panels__ads.htm#111_23">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="118_16">Replace_Pan</A></FONT> (<FONT COLOR=red><A NAME="118_29">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+ <FONT COLOR=red><A NAME="119_29">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#118_16">Replace_Pan</A>, "replace_panel");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#118_16">Replace_Pan</A> (<A HREF="terminal_interface-curses-panels__ads.htm#110_23">Pan</A>, <A HREF="terminal_interface-curses-panels__ads.htm#111_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Replace;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#116_14">Move</A><FONT COLOR=red><A NAME="127_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#116_20">Pan</A> : <b>in</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+ <A HREF="terminal_interface-curses-panels__ads.htm#117_20">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses-panels__ads.htm#118_20">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="131_16">Move</A></FONT> (<FONT COLOR=red><A NAME="131_22">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>;
+ <FONT COLOR=red><A NAME="132_22">Line</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="133_22">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#131_16">Move</A>, "move_panel");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#131_16">Move</A> (<A HREF="terminal_interface-curses-panels__ads.htm#116_20">Pan</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#117_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#118_20">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Move;
+
+ <b>function</b> <A HREF="terminal_interface-curses-panels__ads.htm#123_13">Is_Hidden</A><FONT COLOR=red><A NAME="141_13"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#123_24">Pan</A> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="143_16">Panel_Hidden</A></FONT> (<FONT COLOR=red><A NAME="143_30">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#143_16">Panel_Hidden</A>, "panel_hidden");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#143_16">Panel_Hidden</A> (<A HREF="terminal_interface-curses-panels__ads.htm#123_24">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#75_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> Is_Hidden;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-panels__ads.htm#138_14">Delete</A><FONT COLOR=red><A NAME="153_14"></A></FONT> (<A HREF="terminal_interface-curses-panels__ads.htm#138_22">Pan</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="155_16">Del_Panel</A></FONT> (<FONT COLOR=red><A NAME="155_27">Pan</A></FONT> : <A HREF="terminal_interface-curses-panels__ads.htm#48_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-panels__adb.htm#155_16">Del_Panel</A>, "del_panel");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#155_16">Del_Panel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#138_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#59_4">Panel_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-panels__ads.htm#138_22">Pan</A> := <A HREF="terminal_interface-curses-panels__ads.htm#53_4">Null_Panel</A>;
+ <b>end</b> Delete;
+
+<b>end</b> Terminal_Interface.Curses.Panels;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-panels.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-panels.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-panels.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- @Revision: 1.13 @</EM></FONT>
-<FONT COLOR=green><EM>-- Binding Version 00.93</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.15 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>with</b> System;
<b>package</b> Terminal_Interface.Curses.Panels <b>is</b>
<b>pragma</b> Preelaborate (Terminal_Interface.Curses.Panels);
<b>pragma</b> Linker_Options ("-lpanel");
- <b>pragma</b> Linker_Options ("-lAdaCurses");
<b>pragma</b> Linker_Options ("-lncurses");
<b>type</b> Panel <b>is</b> <b>private</b>;
- <FONT COLOR=green><EM>---------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Interface constants --</EM></FONT>
- <FONT COLOR=green><EM>---------------------------</EM></FONT>
+ <FONT COLOR=green><EM>---------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Interface constants --</EM></FONT>
+ <FONT COLOR=green><EM>---------------------------</EM></FONT>
Null_Panel : <b>constant</b> Panel;
- <FONT COLOR=green><EM>-------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Exceptions --</EM></FONT>
- <FONT COLOR=green><EM>-------------------</EM></FONT>
+ <FONT COLOR=green><EM>-------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Exceptions --</EM></FONT>
+ <FONT COLOR=green><EM>-------------------</EM></FONT>
Panel_Exception : <b>exception</b>;
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></FONT>
- <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
- <FONT COLOR=green><EM>-- <A NAME="AFU_1">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
<b>function</b> Create (Win : Window) <b>return</b> Panel;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></FONT>
<b>pragma</b> Inline (Create);
- <FONT COLOR=green><EM>-- <A NAME="AFU_2">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
<b>function</b> New_Panel (Win : Window) <b>return</b> Panel <b>renames</b> Create;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></FONT>
<b>pragma</b> Inline (New_Panel);
- <FONT COLOR=green><EM>-- <A NAME="AFU_3">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
<b>procedure</b> Bottom (Pan : <b>in</b> Panel);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">bottom_panel()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">bottom_panel()</A></EM></FONT>
<b>pragma</b> Inline (Bottom);
- <FONT COLOR=green><EM>-- <A NAME="AFU_4">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_4"#2|</EM></FONT>
<b>procedure</b> Top (Pan : <b>in</b> Panel);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">top_panel()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">top_panel()</A></EM></FONT>
<b>pragma</b> Inline (Top);
- <FONT COLOR=green><EM>-- <A NAME="AFU_5">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_5"#2|</EM></FONT>
<b>procedure</b> Show (Pan : <b>in</b> Panel);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">show_panel()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">show_panel()</A></EM></FONT>
<b>pragma</b> Inline (Show);
- <FONT COLOR=green><EM>-- <A NAME="AFU_6">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_6"#2|</EM></FONT>
<b>procedure</b> Update_Panels;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">update_panels()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">update_panels()</A></EM></FONT>
<b>pragma</b> Import (C, Update_Panels, "update_panels");
- <FONT COLOR=green><EM>-- <A NAME="AFU_7">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_7"#2|</EM></FONT>
<b>procedure</b> Hide (Pan : <b>in</b> Panel);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">hide_panel()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">hide_panel()</A></EM></FONT>
<b>pragma</b> Inline (Hide);
- <FONT COLOR=green><EM>-- <A NAME="AFU_8">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_8"#2|</EM></FONT>
<b>function</b> Get_Window (Pan : Panel) <b>return</b> Window;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_window()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_window()</A></EM></FONT>
<b>pragma</b> Inline (Get_Window);
- <FONT COLOR=green><EM>-- <A NAME="AFU_9">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_9"#2|</EM></FONT>
<b>function</b> Panel_Window (Pan : Panel) <b>return</b> Window <b>renames</b> Get_Window;
<b>pragma</b> Inline (Panel_Window);
- <FONT COLOR=green><EM>-- <A NAME="AFU_10">|</EM></FONT>
- <b>procedure</b> Replace (<FONT COLOR=red><A NAME="112_23">Pan</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Panel</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_10"#2|</EM></FONT>
+ <b>procedure</b> Replace (<FONT COLOR=red><A NAME="111_23">Pan</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Panel</A>;
Win : <b>in</b> Window);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">replace_panel()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">replace_panel()</A></EM></FONT>
<b>pragma</b> Inline (Replace);
- <FONT COLOR=green><EM>-- <A NAME="AFU_11">|</EM></FONT>
- <b>procedure</b> Move (Pan : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Panel</A>;
- Line : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#61_9">Line_Position</A>;
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_11"#2|</EM></FONT>
+ <b>procedure</b> Move (<FONT COLOR=red><A NAME="117_20">Pan</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Panel</A>;
+ <FONT COLOR=red><A NAME="118_20">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
Column : <b>in</b> Column_Position);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">move_panel()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">move_panel()</A></EM></FONT>
<b>pragma</b> Inline (Move);
- <FONT COLOR=green><EM>-- <A NAME="AFU_12">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_12"#2|</EM></FONT>
<b>function</b> Is_Hidden (Pan : Panel) <b>return</b> Boolean;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_hidden()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_hidden()</A></EM></FONT>
<b>pragma</b> Inline (Is_Hidden);
- <FONT COLOR=green><EM>-- <A NAME="AFU_13">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_13"#2|</EM></FONT>
<b>function</b> Above (Pan : Panel) <b>return</b> Panel;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_above()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_above()</A></EM></FONT>
<b>pragma</b> Import (C, Above, "panel_above");
- <FONT COLOR=green><EM>-- <A NAME="AFU_14">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_14"#2|</EM></FONT>
<b>function</b> Below (Pan : Panel) <b>return</b> Panel;
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_below()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_below()</A></EM></FONT>
<b>pragma</b> Import (C, Below, "panel_below");
- <FONT COLOR=green><EM>-- <A NAME="AFU_15">|</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_15"#2|</EM></FONT>
<b>procedure</b> Delete (Pan : <b>in</b> <b>out</b> Panel);
- <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">del_panel()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/panel.3x.html">del_panel()</A></EM></FONT>
<b>pragma</b> Inline (Delete);
- <b>private</b>
+<b>private</b>
<b>type</b> Panel <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
Null_Panel : <b>constant</b> Panel := 0;
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-aux.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-aux.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO.Aux --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A><FONT COLOR=red><A NAME="41_48"></A></FONT> <b>is</b>
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A><FONT COLOR=red><A NAME="43_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A> : <b>in</b> String;
+ <A HREF="terminal_interface-curses-text_io-aux__ads.htm#50_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>;
+ <A HREF="terminal_interface-curses-text_io-aux__ads.htm#51_7">Signal</A> : <b>in</b> Boolean := True;
+ <A HREF="terminal_interface-curses-text_io-aux__ads.htm#52_7">Ljust</A> : <b>in</b> Boolean := False)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="50_7">L</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>;
+ <FONT COLOR=red><A NAME="51_7">Len</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>;
+ <FONT COLOR=red><A NAME="52_7">W</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#50_7">Width</A>;
+ <FONT COLOR=red><A NAME="53_7">LC</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="54_7">CC</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <FONT COLOR=red><A NAME="55_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="56_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#60_17">Output</A><FONT COLOR=red><A NAME="58_17"></A></FONT> (<FONT COLOR=red><A NAME="58_25">From</A></FONT>, <FONT COLOR=red><A NAME="58_31">To</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_17">Output</A><FONT COLOR=red><A NAME="60_17"></A></FONT> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_25">From</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_31">To</A> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>)
+ <b>is</b>
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> > 0 <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> = 0 <b>then</b>
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> > <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> <b>then</b>
+ <FONT COLOR=green><EM>-- LRM A10.6 (7) says this</EM></FONT>
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>;
+ <b>end</b> <b>if</b>;
+
+ <b>pragma</b> Assert (Len <= W);
+ <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#53_7">LC</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#54_7">CC</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>) > <A HREF="terminal_interface-curses-text_io-aux__adb.htm#54_7">CC</A> <b>then</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#51_7">Signal</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_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#51_7">Len</A> < <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> <b>and</b> <b>then</b> <b>not</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#52_7">Ljust</A> <b>then</b>
+ <b>declare</b>
+ <FONT COLOR=red><A NAME="83_22">Filler</A></FONT> : <b>constant</b> String (1 .. (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> - <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>))
+ := (<b>others</b> => ' ');
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#83_22">Filler</A>);
+ <b>end</b>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#55_7">Y</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#56_7">X</A>);
+ <b>if</b> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#56_7">X</A> + <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>)) > <A HREF="terminal_interface-curses-text_io-aux__adb.htm#54_7">CC</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>);
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_25">From</A> .. <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_31">To</A>));
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> < <A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#52_7">Ljust</A> <b>then</b>
+ <b>declare</b>
+ <FONT COLOR=red><A NAME="96_22">Filler</A></FONT> : <b>constant</b> String (1 .. (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#52_7">W</A> - <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>))
+ := (<b>others</b> => ' ');
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#48_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#96_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> Output;
+
+ <b>begin</b>
+ <b>pragma</b> Assert (Win /= Null_Window);
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#52_7">Ljust</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> := 1;
+ <b>for</b> <FONT COLOR=red><A NAME="110_14">I</A></FONT> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length <b>loop</b>
+ <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A>) = ' ';
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> + 1;
+ <b>end</b> <b>loop</b>;
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> - 1;
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_17">Output</A> (1, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A>);
+ <b>else</b> <FONT COLOR=green><EM>-- input buffer is not left justified</EM></FONT>
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length;
+ <b>for</b> <FONT COLOR=red><A NAME="118_14">I</A></FONT> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length <b>loop</b>
+ <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A>) = ' ';
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> - 1;
+ <b>end</b> <b>loop</b>;
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#51_7">Len</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length - <A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A>;
+ <A HREF="terminal_interface-curses-text_io-aux__adb.htm#58_17">Output</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#50_7">L</A> + 1, <A HREF="terminal_interface-curses-text_io-aux__ads.htm#49_7">Buf</A>'Length);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Put_Buf;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Aux;
+
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-aux.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-aux.ads </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO.Aux --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.10 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>private</b> <b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__adb.htm#41_48">Aux</A><FONT COLOR=red><A NAME="41_51"></A></FONT> <b>is</b>
+ <FONT COLOR=green><EM>-- pragma Preelaborate (Aux);</EM></FONT>
+
+ <FONT COLOR=green><EM>-- This routine is called from the Text_IO output routines for numeric</EM></FONT>
+ <FONT COLOR=green><EM>-- and enumeration types.</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#43_14">Put_Buf</A><FONT COLOR=red><A NAME="47_14"></A></FONT>
+ (<FONT COLOR=red><A NAME="48_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=green><EM>-- The output window</EM></FONT>
+ <FONT COLOR=red><A NAME="49_7">Buf</A></FONT> : <b>in</b> String; <FONT COLOR=green><EM>-- The buffer containing the text</EM></FONT>
+ <FONT COLOR=red><A NAME="50_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>; <FONT COLOR=green><EM>-- The width of the output field</EM></FONT>
+ <FONT COLOR=red><A NAME="51_7">Signal</A></FONT> : <b>in</b> Boolean := True; <FONT COLOR=green><EM>-- If true, we raise Layout_Error</EM></FONT>
+ <FONT COLOR=red><A NAME="52_7">Ljust</A></FONT> : <b>in</b> Boolean := False); <FONT COLOR=green><EM>-- The Buf is left justified</EM></FONT>
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Aux;
+
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-complex_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-complex_io.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO.Complex_IO --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#44_43">Float_IO</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#46_43">Complex_IO</A> <b>is</b>
+
+ <b>package</b> <FONT COLOR=red><A NAME="45_12">FIO</A></FONT> <b>is</b> <b>new</b>
+ <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#44_43">Float_IO</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#44_17">Complex_Types</A>.Real'Base);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#54_14">Put</A><FONT COLOR=red><A NAME="48_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#56_7">Item</A> : <b>in</b> Complex;
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#57_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#50_4">Default_Fore</A>;
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#58_7">Aft</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#51_4">Default_Aft</A>;
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#59_7">Exp</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#52_4">Default_Exp</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#54_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, '(');
+ <A HREF="terminal_interface-curses-text_io-complex_io__adb.htm#45_12">FIO</A>.Put (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#56_7">Item</A>.Re, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#57_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#58_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#59_7">Exp</A>);
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#54_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, ',');
+ <A HREF="terminal_interface-curses-text_io-complex_io__adb.htm#45_12">FIO</A>.Put (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#56_7">Item</A>.Im, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#57_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#58_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#59_7">Exp</A>);
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#54_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#55_7">Win</A>, ')');
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#61_14">Put</A><FONT COLOR=red><A NAME="63_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#62_7">Item</A> : <b>in</b> Complex;
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#63_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#50_4">Default_Fore</A>;
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#64_7">Aft</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#51_4">Default_Aft</A>;
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#65_7">Exp</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#52_4">Default_Exp</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#61_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#62_7">Item</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#63_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#64_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#65_7">Exp</A>);
+ <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Complex_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-text_io-complex_io.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-complex_io.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-complex_io.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<b>with</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-numeri__ads.htm#19_13">Numerics</A>.<A HREF="a-ngcoty__ads.htm#43_22">Generic_Complex_Types</A>;
+<b>with</b> Ada.Numerics.Generic_Complex_Types;
<b>generic</b>
- <b>with</b> <b>package</b> <FONT COLOR=red><A NAME="44_17">Complex_Types</A></FONT> <b>is</b> <b>new</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-numeri__ads.htm#19_13">Numerics</A>.<A HREF="a-ngcoty__ads.htm#43_22">Generic_Complex_Types</A> (<>);
+ <b>with</b> <b>package</b> <FONT COLOR=red><A NAME="44_17">Complex_Types</A></FONT> <b>is</b> <b>new</b> Ada.Numerics.Generic_Complex_Types (<>);
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="46_43">Complex_IO</A></FONT> <b>is</b>
<b>use</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#44_17">Complex_Types</A>;
- Default_Fore : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 2;
- Default_Aft : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="a-ngcoty__ads.htm#41_9">Real</A>'<b>Digits</b> - 1;
- Default_Exp : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 3;
+ <FONT COLOR=red><A NAME="50_4">Default_Fore</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 2;
+ <FONT COLOR=red><A NAME="51_4">Default_Aft</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Real'<b>Digits</b> - 1;
+ <FONT COLOR=red><A NAME="52_4">Default_Exp</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 3;
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-complex_io__adb.htm#48_14">Put</A><FONT COLOR=red><A NAME="54_14"></A></FONT>
- (<FONT COLOR=red><A NAME="55_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Item : <b>in</b> <A HREF="a-ngcoty__ads.htm#47_9">Complex</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
- Aft : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
- Exp : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+ (<FONT COLOR=red><A NAME="55_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="56_7">Item</A></FONT> : <b>in</b> Complex;
+ <FONT COLOR=red><A NAME="57_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#50_4">Default_Fore</A>;
+ <FONT COLOR=red><A NAME="58_7">Aft</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#51_4">Default_Aft</A>;
+ <FONT COLOR=red><A NAME="59_7">Exp</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#52_4">Default_Exp</A>);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-complex_io__adb.htm#63_14">Put</A><FONT COLOR=red><A NAME="61_14"></A></FONT>
- (Item : <b>in</b> <A HREF="a-ngcoty__ads.htm#47_9">Complex</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
- Aft : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
- Exp : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+ (<FONT COLOR=red><A NAME="62_7">Item</A></FONT> : <b>in</b> Complex;
+ <FONT COLOR=red><A NAME="63_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#50_4">Default_Fore</A>;
+ <FONT COLOR=red><A NAME="64_7">Aft</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#51_4">Default_Aft</A>;
+ <FONT COLOR=red><A NAME="65_7">Exp</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#52_4">Default_Exp</A>);
<b>private</b>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#61_14">Put</A>);
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-decimal_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-decimal_io.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO.Decimal_IO --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Text_IO;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#44_43">Decimal_IO</A> <b>is</b>
+
+ <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+ <b>package</b> <FONT COLOR=red><A NAME="47_12">DIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Decimal_IO (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#50_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#51_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#52_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#53_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#46_4">Default_Fore</A>;
+ <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#54_7">Aft</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#47_4">Default_Aft</A>;
+ <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#55_7">Exp</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#48_4">Default_Exp</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="56_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+ <FONT COLOR=red><A NAME="57_7">Len</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#53_7">Fore</A> + 1 + <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#54_7">Aft</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#55_7">Exp</A> > 0 <b>then</b>
+ <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#57_7">Len</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#57_7">Len</A> + 1 + <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#55_7">Exp</A>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#47_12">DIO</A>.Put (<A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#52_7">Item</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#54_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#55_7">Exp</A>);
+ <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#51_7">Win</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#57_7">Len</A>, False);
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#57_14">Put</A><FONT COLOR=red><A NAME="66_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#58_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#59_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#46_4">Default_Fore</A>;
+ <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#60_7">Aft</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#47_4">Default_Aft</A>;
+ <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#61_7">Exp</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#48_4">Default_Exp</A>) <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#57_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#58_7">Item</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#59_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#60_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#61_7">Exp</A>);
+ <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Decimal_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-text_io-decimal_io.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-decimal_io.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-decimal_io.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
- <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>delta</b> <> <b>digits</b> <>;
+ <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>delta</b> <> <b>digits</b> <>;
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Decimal_IO</A></FONT> <b>is</b>
- Default_Fore : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>'Fore;
- Default_Aft : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>'Aft;
- Default_Exp : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
+ <FONT COLOR=red><A NAME="46_4">Default_Fore</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>'Fore;
+ <FONT COLOR=red><A NAME="47_4">Default_Aft</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>'Aft;
+ <FONT COLOR=red><A NAME="48_4">Default_Exp</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="50_14"></A></FONT>
- (<FONT COLOR=red><A NAME="51_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
- Aft : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
- Exp : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+ (<FONT COLOR=red><A NAME="51_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="52_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="53_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#46_4">Default_Fore</A>;
+ <FONT COLOR=red><A NAME="54_7">Aft</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#47_4">Default_Aft</A>;
+ <FONT COLOR=red><A NAME="55_7">Exp</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#48_4">Default_Exp</A>);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#66_14">Put</A><FONT COLOR=red><A NAME="57_14"></A></FONT>
- (Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
- Aft : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
- Exp : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+ (<FONT COLOR=red><A NAME="58_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="59_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#46_4">Default_Fore</A>;
+ <FONT COLOR=red><A NAME="60_7">Aft</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#47_4">Default_Aft</A>;
+ <FONT COLOR=red><A NAME="61_7">Exp</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#48_4">Default_Exp</A>);
<b>private</b>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#57_14">Put</A>);
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-enumeration_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-enumeration_io.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO.Enumeration_IO --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<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#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#44_43">Enumeration_IO</A> <b>is</b>
+
+ <b>package</b> <FONT COLOR=red><A NAME="47_12">Aux</A></FONT> <b>renames</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+ <b>package</b> <FONT COLOR=red><A NAME="48_12">EIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Enumeration_IO (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#49_14">Put</A><FONT COLOR=red><A NAME="50_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#50_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#51_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#52_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#46_4">Default_Width</A>;
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#53_7">Set</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#47_4">Default_Setting</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="56_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+ <FONT COLOR=red><A NAME="57_7">Tset</A></FONT> : Ada.Text_IO.Type_Set;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#53_7">Set</A> /= <A HREF="terminal_interface-curses-text_io__ads.htm#53_46">Mixed_Case</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#57_7">Tset</A> := Ada.Text_IO.Type_Set'Val (<A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A>'Pos (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#53_7">Set</A>));
+ <b>else</b>
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#57_7">Tset</A> := Ada.Text_IO.Lower_Case;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#48_12">EIO</A>.Put (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#51_7">Item</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#57_7">Tset</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#53_7">Set</A> = <A HREF="terminal_interface-curses-text_io__ads.htm#53_46">Mixed_Case</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A>'First) := To_Upper (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A>'First));
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#47_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#52_7">Width</A>, True, True);
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14">Put</A><FONT COLOR=red><A NAME="71_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#56_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#57_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#46_4">Default_Width</A>;
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#58_7">Set</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#47_4">Default_Setting</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#56_7">Item</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#57_7">Width</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#58_7">Set</A>);
+ <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Enumeration_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-text_io-enumeration_io.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-enumeration_io.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-enumeration_io.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
- <b>type</b> <FONT COLOR=red><A NAME="42_9">Enum</A></FONT> <b>is</b> (<>);
+ <b>type</b> <FONT COLOR=red><A NAME="42_9">Enum</A></FONT> <b>is</b> (<>);
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Enumeration_IO</A></FONT> <b>is</b>
- Default_Width : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
- Default_Setting : <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#53_46">Mixed_Case</A>;
+ <FONT COLOR=red><A NAME="46_4">Default_Width</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
+ <FONT COLOR=red><A NAME="47_4">Default_Setting</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#53_46">Mixed_Case</A>;
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#50_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
- (<FONT COLOR=red><A NAME="50_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
- Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
- Set : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := Default_Setting);
+ (<FONT COLOR=red><A NAME="50_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="51_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+ <FONT COLOR=red><A NAME="52_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#46_4">Default_Width</A>;
+ <FONT COLOR=red><A NAME="53_7">Set</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#47_4">Default_Setting</A>);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#71_14">Put</A><FONT COLOR=red><A NAME="55_14"></A></FONT>
- (Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
- Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
- Set : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := Default_Setting);
+ (<FONT COLOR=red><A NAME="56_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#42_9">Enum</A>;
+ <FONT COLOR=red><A NAME="57_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#46_4">Default_Width</A>;
+ <FONT COLOR=red><A NAME="58_7">Set</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#53_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#47_4">Default_Setting</A>);
<b>private</b>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#55_14">Put</A>);
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-fixed_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-fixed_io.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO.Fixed_IO --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Text_IO;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#44_43">Fixed_IO</A> <b>is</b>
+
+ <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+ <b>package</b> <FONT COLOR=red><A NAME="47_12">FIXIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Fixed_IO (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#50_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#51_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#52_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#53_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#46_4">Default_Fore</A>;
+ <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#54_7">Aft</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#47_4">Default_Aft</A>;
+ <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#55_7">Exp</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#48_4">Default_Exp</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="56_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+ <FONT COLOR=red><A NAME="57_7">Len</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#53_7">Fore</A> + 1 + <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#54_7">Aft</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#55_7">Exp</A> > 0 <b>then</b>
+ <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#57_7">Len</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#57_7">Len</A> + 1 + <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#55_7">Exp</A>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#47_12">FIXIO</A>.Put (<A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#52_7">Item</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#54_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#55_7">Exp</A>);
+ <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#51_7">Win</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#57_7">Len</A>, False);
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#57_14">Put</A><FONT COLOR=red><A NAME="66_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#58_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#59_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#46_4">Default_Fore</A>;
+ <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#60_7">Aft</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#47_4">Default_Aft</A>;
+ <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#61_7">Exp</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#48_4">Default_Exp</A>) <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#57_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#58_7">Item</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#59_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#60_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#61_7">Exp</A>);
+ <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Fixed_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-text_io-fixed_io.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-fixed_io.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-fixed_io.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
- <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>delta</b> <>;
+ <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>delta</b> <>;
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Fixed_IO</A></FONT> <b>is</b>
- Default_Fore : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>'Fore;
- Default_Aft : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>'Aft;
- Default_Exp : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
+ <FONT COLOR=red><A NAME="46_4">Default_Fore</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>'Fore;
+ <FONT COLOR=red><A NAME="47_4">Default_Aft</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>'Aft;
+ <FONT COLOR=red><A NAME="48_4">Default_Exp</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 0;
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="50_14"></A></FONT>
- (<FONT COLOR=red><A NAME="51_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
- Aft : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
- Exp : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+ (<FONT COLOR=red><A NAME="51_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="52_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="53_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#46_4">Default_Fore</A>;
+ <FONT COLOR=red><A NAME="54_7">Aft</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#47_4">Default_Aft</A>;
+ <FONT COLOR=red><A NAME="55_7">Exp</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#48_4">Default_Exp</A>);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#66_14">Put</A><FONT COLOR=red><A NAME="57_14"></A></FONT>
- (Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
- Aft : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
- Exp : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+ (<FONT COLOR=red><A NAME="58_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="59_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#46_4">Default_Fore</A>;
+ <FONT COLOR=red><A NAME="60_7">Aft</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#47_4">Default_Aft</A>;
+ <FONT COLOR=red><A NAME="61_7">Exp</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#48_4">Default_Exp</A>);
<b>private</b>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#57_14">Put</A>);
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-float_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-float_io.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO.Float_IO --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Text_IO;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#44_43">Float_IO</A> <b>is</b>
+
+ <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+ <b>package</b> <FONT COLOR=red><A NAME="47_12">FIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Float_IO (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#50_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#51_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#52_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#53_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#46_4">Default_Fore</A>;
+ <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#54_7">Aft</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#47_4">Default_Aft</A>;
+ <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#55_7">Exp</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#48_4">Default_Exp</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="56_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+ <FONT COLOR=red><A NAME="57_7">Len</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#53_7">Fore</A> + 1 + <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#54_7">Aft</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#55_7">Exp</A> > 0 <b>then</b>
+ <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#57_7">Len</A> := <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#57_7">Len</A> + 1 + <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#55_7">Exp</A>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#47_12">FIO</A>.Put (<A HREF="terminal_interface-curses-text_io-float_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#52_7">Item</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#54_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#55_7">Exp</A>);
+ <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#51_7">Win</A>, <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#57_7">Len</A>, False);
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#57_14">Put</A><FONT COLOR=red><A NAME="66_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#58_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#59_7">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#46_4">Default_Fore</A>;
+ <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#60_7">Aft</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#47_4">Default_Aft</A>;
+ <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#61_7">Exp</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#48_4">Default_Exp</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#57_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#58_7">Item</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#59_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#60_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#61_7">Exp</A>);
+ <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Float_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-text_io-float_io.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-float_io.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-float_io.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
- <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>digits</b> <>;
+ <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>digits</b> <>;
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Float_IO</A></FONT> <b>is</b>
- Default_Fore : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 2;
- Default_Aft : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>'<b>Digits</b> - 1;
- Default_Exp : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 3;
+ <FONT COLOR=red><A NAME="46_4">Default_Fore</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 2;
+ <FONT COLOR=red><A NAME="47_4">Default_Aft</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>'<b>Digits</b> - 1;
+ <FONT COLOR=red><A NAME="48_4">Default_Exp</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := 3;
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="50_14"></A></FONT>
- (<FONT COLOR=red><A NAME="51_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
- Aft : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
- Exp : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+ (<FONT COLOR=red><A NAME="51_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="52_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="53_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#46_4">Default_Fore</A>;
+ <FONT COLOR=red><A NAME="54_7">Aft</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#47_4">Default_Aft</A>;
+ <FONT COLOR=red><A NAME="55_7">Exp</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#48_4">Default_Exp</A>);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#66_14">Put</A><FONT COLOR=red><A NAME="57_14"></A></FONT>
- (Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
- Fore : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Fore;
- Aft : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Aft;
- Exp : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Exp);
+ (<FONT COLOR=red><A NAME="58_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="59_7">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#46_4">Default_Fore</A>;
+ <FONT COLOR=red><A NAME="60_7">Aft</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#47_4">Default_Aft</A>;
+ <FONT COLOR=red><A NAME="61_7">Exp</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#48_4">Default_Exp</A>);
<b>private</b>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#57_14">Put</A>);
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-integer_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-integer_io.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO.Integer_IO --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Text_IO;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#44_43">Integer_IO</A> <b>is</b>
+
+ <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+ <b>package</b> <FONT COLOR=red><A NAME="47_12">IIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Integer_IO (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#49_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#50_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#51_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#52_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#46_4">Default_Width</A>;
+ <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#53_7">Base</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#47_4">Default_Base</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="55_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#47_12">IIO</A>.Put (<A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#55_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#51_7">Item</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#53_7">Base</A>);
+ <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#55_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#52_7">Width</A>);
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#55_14">Put</A><FONT COLOR=red><A NAME="61_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#56_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#57_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#46_4">Default_Width</A>;
+ <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#58_7">Base</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#47_4">Default_Base</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#55_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#56_7">Item</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#57_7">Width</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#58_7">Base</A>);
+ <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Integer_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-text_io-integer_io.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-integer_io.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-integer_io.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
- <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>range</b> <>;
+ <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>range</b> <>;
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Integer_IO</A></FONT> <b>is</b>
- Default_Width : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>'Width;
- Default_Base : <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := 10;
+ <FONT COLOR=red><A NAME="46_4">Default_Width</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>'Width;
+ <FONT COLOR=red><A NAME="47_4">Default_Base</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := 10;
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
- (<FONT COLOR=red><A NAME="50_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
- Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
- Base : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := Default_Base);
+ (<FONT COLOR=red><A NAME="50_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="51_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="52_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#46_4">Default_Width</A>;
+ <FONT COLOR=red><A NAME="53_7">Base</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#47_4">Default_Base</A>);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#61_14">Put</A><FONT COLOR=red><A NAME="55_14"></A></FONT>
- (Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
- Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
- Base : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := Default_Base);
+ (<FONT COLOR=red><A NAME="56_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="57_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#46_4">Default_Width</A>;
+ <FONT COLOR=red><A NAME="58_7">Base</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#47_4">Default_Base</A>);
<b>private</b>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#55_14">Put</A>);
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-modular_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-modular_io.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO.Modular_IO --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.8 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> Ada.Text_IO;
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+
+<b>package</b> <b>body</b> Terminal_Interface.Curses.Text_IO.<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#44_43">Modular_IO</A> <b>is</b>
+
+ <b>package</b> <FONT COLOR=red><A NAME="46_12">Aux</A></FONT> <b>renames</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#41_51">Aux</A>;
+ <b>package</b> <FONT COLOR=red><A NAME="47_12">MIO</A></FONT> <b>is</b> <b>new</b> Ada.Text_IO.Modular_IO (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#49_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#50_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#51_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#52_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#46_4">Default_Width</A>;
+ <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#53_7">Base</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#47_4">Default_Base</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="55_7">Buf</A></FONT> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A>'Last);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#47_12">MIO</A>.Put (<A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#55_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#51_7">Item</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#53_7">Base</A>);
+ <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#46_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#47_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#55_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#52_7">Width</A>);
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#55_14">Put</A><FONT COLOR=red><A NAME="61_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#56_7">Item</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+ <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#57_7">Width</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#46_4">Default_Width</A>;
+ <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#58_7">Base</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#47_4">Default_Base</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#55_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#56_7">Item</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#57_7">Width</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#58_7">Base</A>);
+ <b>end</b> Put;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO.Modular_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-text_io-modular_io.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io-modular_io.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io-modular_io.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.9 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>generic</b>
- <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>mod</b> <>;
+ <b>type</b> <FONT COLOR=red><A NAME="42_9">Num</A></FONT> <b>is</b> <b>mod</b> <>;
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A>.<FONT COLOR=red><A NAME="44_43">Modular_IO</A></FONT> <b>is</b>
- Default_Width : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>'Width;
- Default_Base : <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := 10;
+ <FONT COLOR=red><A NAME="46_4">Default_Width</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>'Width;
+ <FONT COLOR=red><A NAME="47_4">Default_Base</A></FONT> : <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := 10;
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#49_14">Put</A><FONT COLOR=red><A NAME="49_14"></A></FONT>
- (<FONT COLOR=red><A NAME="50_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
- Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
- Base : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := Default_Base);
+ (<FONT COLOR=red><A NAME="50_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="51_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="52_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#46_4">Default_Width</A>;
+ <FONT COLOR=red><A NAME="53_7">Base</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#47_4">Default_Base</A>);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#61_14">Put</A><FONT COLOR=red><A NAME="55_14"></A></FONT>
- (Item : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
- Width : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := Default_Width;
- Base : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := Default_Base);
+ (<FONT COLOR=red><A NAME="56_7">Item</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#42_9">Num</A>;
+ <FONT COLOR=red><A NAME="57_7">Width</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#50_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#46_4">Default_Width</A>;
+ <FONT COLOR=red><A NAME="58_7">Base</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#51_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#47_4">Default_Base</A>);
<b>private</b>
<b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#55_14">Put</A>);
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses.Text_IO --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.11 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>package</b> <b>body</b> Terminal_Interface.Curses.<A HREF="terminal_interface-curses-text_io__ads.htm#44_35">Text_IO</A><FONT COLOR=red><A NAME="41_40"></A></FONT> <b>is</b>
+
+ <FONT COLOR=red><A NAME="43_4">Default_Window</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A>;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#59_14">Set_Window</A><FONT COLOR=red><A NAME="45_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#59_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__adb.htm#43_4">Default_Window</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#59_26">Win</A>;
+ <b>end</b> Set_Window;
+
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A><FONT COLOR=red><A NAME="51_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#43_4">Default_Window</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <b>else</b>
+ <b>return</b> <A HREF="terminal_interface-curses-text_io__adb.htm#43_4">Default_Window</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Get_Window;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#65_14">Flush</A><FONT COLOR=red><A NAME="62_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#65_21">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1212_14">Refresh</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#65_21">Win</A>);
+ <b>end</b> Flush;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#66_14">Flush</A><FONT COLOR=red><A NAME="68_14"></A></FONT>
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#66_14">Flush</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+ <b>end</b> Flush;
+
+ <FONT COLOR=green><EM>--------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Specification of line and page lengths --</EM></FONT>
+ <FONT COLOR=green><EM>--------------------------------------------</EM></FONT>
+
+ <FONT COLOR=green><EM>-- There are no set routines in this package. I assume, that you allocate</EM></FONT>
+ <FONT COLOR=green><EM>-- the window with an appropriate size.</EM></FONT>
+ <FONT COLOR=green><EM>-- A scroll-window is interpreted as an page with unbounded page length,</EM></FONT>
+ <FONT COLOR=green><EM>-- i.e. it returns the conventional 0 as page length.</EM></FONT>
+
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#77_13">Line_Length</A><FONT COLOR=red><A NAME="83_13"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#77_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="85_7">N_Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="86_7">N_Cols</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#77_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#85_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#86_7">N_Cols</A>);
+ <b>if</b> Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#86_7">N_Cols</A>) > Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_4">Layout_Error</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#86_7">N_Cols</A>);
+ <b>end</b> Line_Length;
+
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#78_13">Line_Length</A><FONT COLOR=red><A NAME="95_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#78_13">Line_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+ <b>end</b> Line_Length;
+
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#80_13">Page_Length</A><FONT COLOR=red><A NAME="101_13"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#80_26">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="103_7">N_Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="104_7">N_Cols</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#967_13">Scrolling_Allowed</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#80_26">Win</A>) <b>then</b>
+ <b>return</b> 0;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#80_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#103_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#104_7">N_Cols</A>);
+ <b>if</b> Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#103_7">N_Lines</A>) > Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_4">Layout_Error</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#103_7">N_Lines</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Page_Length;
+
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A><FONT COLOR=red><A NAME="117_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+ <b>end</b> Page_Length;
+
+ <FONT COLOR=green><EM>------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Column, Line, and Page Control --</EM></FONT>
+ <FONT COLOR=green><EM>------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#86_14">New_Line</A><FONT COLOR=red><A NAME="126_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <A HREF="terminal_interface-curses-text_io__ads.htm#86_41">Spacing</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="128_7">P_Size</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__ads.htm#86_41">Spacing</A> <b>not</b> <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> <b>then</b>
+ <b>raise</b> Constraint_Error;
+ <b>end</b> <b>if</b>;
+
+ <b>for</b> <FONT COLOR=red><A NAME="134_11">I</A></FONT> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#86_41">Spacing</A> <b>loop</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#128_7">P_Size</A> > 0 <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-text_io__ads.htm#102_13">Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A>) >= <A HREF="terminal_interface-curses-text_io__adb.htm#128_7">P_Size</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A>);
+ <b>else</b>
+ <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#86_24">Win</A>, Ascii.LF);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>loop</b>;
+ <b>end</b> New_Line;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A><FONT COLOR=red><A NAME="143_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#87_24">Spacing</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#87_24">Spacing</A>);
+ <b>end</b> New_Line;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#89_14">New_Page</A><FONT COLOR=red><A NAME="149_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#89_24">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1022_14">Clear</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#89_24">Win</A>);
+ <b>end</b> New_Page;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A><FONT COLOR=red><A NAME="155_14"></A></FONT>
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+ <b>end</b> New_Page;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#92_14">Set_Col</A><FONT COLOR=red><A NAME="161_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#92_23">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <A HREF="terminal_interface-curses-text_io__ads.htm#92_41">To</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="163_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="164_7">X1</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="165_7">X2</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="166_7">N</A></FONT> : Natural;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__ads.htm#92_41">To</A> <b>not</b> <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> <b>then</b>
+ <b>raise</b> Constraint_Error;
+ <b>end</b> <b>if</b>;
+
+ <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#92_23">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#163_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A>);
+ <A HREF="terminal_interface-curses-text_io__adb.htm#166_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#92_41">To</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#166_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#166_7">N</A> - 1;
+ <A HREF="terminal_interface-curses-text_io__adb.htm#165_7">X2</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#166_7">N</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A> > <A HREF="terminal_interface-curses-text_io__adb.htm#165_7">X2</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#92_23">Win</A>, 1);
+ <A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A> := 0;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A> < <A HREF="terminal_interface-curses-text_io__adb.htm#165_7">X2</A> <b>then</b>
+ <b>declare</b>
+ <FONT COLOR=red><A NAME="181_13">Filler</A></FONT> : <b>constant</b> String (Integer (<A HREF="terminal_interface-curses-text_io__adb.htm#164_7">X1</A>) .. (Integer (<A HREF="terminal_interface-curses-text_io__adb.htm#165_7">X2</A>) - 1))
+ := (<b>others</b> => ' ');
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#92_23">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#181_13">Filler</A>);
+ <b>end</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Col;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#93_14">Set_Col</A><FONT COLOR=red><A NAME="189_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#93_23">To</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#93_14">Set_Col</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#93_23">To</A>);
+ <b>end</b> Set_Col;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#95_14">Set_Line</A><FONT COLOR=red><A NAME="195_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#95_24">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <A HREF="terminal_interface-curses-text_io__ads.htm#95_41">To</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="197_7">Y1</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="198_7">Y2</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="199_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="200_7">N</A></FONT> : Natural;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__ads.htm#95_41">To</A> <b>not</b> <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> <b>then</b>
+ <b>raise</b> Constraint_Error;
+ <b>end</b> <b>if</b>;
+
+ <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#95_24">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#199_7">X</A>);
+ <A HREF="terminal_interface-curses-text_io__adb.htm#200_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#95_41">To</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#200_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#200_7">N</A> - 1;
+ <A HREF="terminal_interface-curses-text_io__adb.htm#198_7">Y2</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#200_7">N</A>);
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#198_7">Y2</A> < <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#95_24">Win</A>);
+ <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A> := 0;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A> < <A HREF="terminal_interface-curses-text_io__adb.htm#198_7">Y2</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#95_24">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#198_7">Y2</A> - <A HREF="terminal_interface-curses-text_io__adb.htm#197_7">Y1</A>));
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Line;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#96_14">Set_Line</A><FONT COLOR=red><A NAME="218_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#96_24">To</A> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#96_14">Set_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#96_24">To</A>);
+ <b>end</b> Set_Line;
+
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#98_13">Col</A><FONT COLOR=red><A NAME="224_13"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#98_18">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="226_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="227_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="228_7">N</A></FONT> : Natural;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#98_18">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#226_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#227_7">X</A>);
+ <A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#227_7">X</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A> + 1;
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A> > Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_4">Layout_Error</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#228_7">N</A>);
+ <b>end</b> Col;
+
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#99_13">Col</A><FONT COLOR=red><A NAME="238_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#99_13">Col</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+ <b>end</b> Col;
+
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#101_13">Line</A><FONT COLOR=red><A NAME="244_13"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#101_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="246_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="247_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="248_7">N</A></FONT> : Natural;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#101_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#246_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#247_7">X</A>);
+ <A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#246_7">Y</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A> + 1;
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A> > Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last) <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#134_4">Layout_Error</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#248_7">N</A>);
+ <b>end</b> Line;
+
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__ads.htm#102_13">Line</A><FONT COLOR=red><A NAME="258_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#102_13">Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>);
+ <b>end</b> Line;
+
+ <FONT COLOR=green><EM>-----------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Characters Output --</EM></FONT>
+ <FONT COLOR=green><EM>-----------------------</EM></FONT>
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#108_14">Put</A><FONT COLOR=red><A NAME="268_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <A HREF="terminal_interface-curses-text_io__ads.htm#108_37">Item</A> : <b>in</b> Character)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="270_7">P_Size</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>);
+ <FONT COLOR=red><A NAME="271_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="272_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="273_7">L</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="274_7">C</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#270_7">P_Size</A> > 0 <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#271_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#272_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#273_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#274_7">C</A>);
+ <b>if</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#271_7">Y</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#273_7">L</A> <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#272_7">X</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#274_7">C</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#108_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#108_37">Item</A>);
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#109_14">Put</A><FONT COLOR=red><A NAME="286_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#109_19">Item</A> : <b>in</b> Character)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#109_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#109_19">Item</A>);
+ <b>end</b> Put;
+
+ <FONT COLOR=green><EM>--------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Strings-Output --</EM></FONT>
+ <FONT COLOR=green><EM>--------------------</EM></FONT>
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#115_14">Put</A><FONT COLOR=red><A NAME="296_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <A HREF="terminal_interface-curses-text_io__ads.htm#115_37">Item</A> : <b>in</b> String)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="298_7">P_Size</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>);
+ <FONT COLOR=red><A NAME="299_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="300_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="301_7">L</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="302_7">C</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#298_7">P_Size</A> > 0 <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#299_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#300_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#301_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#302_7">C</A>);
+ <b>if</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#299_7">Y</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#301_7">L</A> <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#300_7">X</A> + 1 + <A HREF="terminal_interface-curses-text_io__ads.htm#115_37">Item</A>'Length) >= <A HREF="terminal_interface-curses-text_io__adb.htm#302_7">C</A> <b>then</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#115_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#115_37">Item</A>);
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A><FONT COLOR=red><A NAME="314_14"></A></FONT> (<A HREF="terminal_interface-curses-text_io__ads.htm#116_19">Item</A> : <b>in</b> String)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#116_19">Item</A>);
+ <b>end</b> Put;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#118_14">Put_Line</A><FONT COLOR=red><A NAME="320_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io__ads.htm#119_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses-text_io__ads.htm#120_7">Item</A> : <b>in</b> String)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#116_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#119_7">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#120_7">Item</A>);
+ <A HREF="terminal_interface-curses-text_io__ads.htm#87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#119_7">Win</A>, 1);
+ <b>end</b> Put_Line;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__ads.htm#122_14">Put_Line</A><FONT COLOR=red><A NAME="329_14"></A></FONT>
+ (<A HREF="terminal_interface-curses-text_io__ads.htm#123_7">Item</A> : <b>in</b> String)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-text_io__ads.htm#122_14">Put_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#62_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#123_7">Item</A>);
+ <b>end</b> Put_Line;
+
+<b>end</b> Terminal_Interface.Curses.Text_IO;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface-curses-text_io.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface-curses-text_io.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses-text_io.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> (<A HREF="mailto:juergen.pfeifer@gmx.net">juergen.pfeifer@gmx.net</A>) 1996 --</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
<FONT COLOR=green><EM>-- @Revision: 1.11 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<b>with</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-textio__ads.htm#51_13">Text_IO</A>;
-<b>with</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>;
+<b>with</b> Ada.Text_IO;
+<b>with</b> Ada.IO_Exceptions;
<b>package</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__adb.htm#41_40">Text_IO</A><FONT COLOR=red><A NAME="44_35"></A></FONT> <b>is</b>
- <b>use</b> <b>type</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-textio__ads.htm#51_13">Text_IO</A>.<A HREF="a-textio__ads.htm#66_9">Count</A>;
- <b>subtype</b> <FONT COLOR=red><A NAME="47_12">Count</A></FONT> <b>is</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-textio__ads.htm#51_13">Text_IO</A>.<A HREF="a-textio__ads.htm#66_9">Count</A>;
+ <b>use</b> <b>type</b> Ada.Text_IO.Count;
+ <b>subtype</b> <FONT COLOR=red><A NAME="47_12">Count</A></FONT> <b>is</b> Ada.Text_IO.Count;
<b>subtype</b> <FONT COLOR=red><A NAME="48_12">Positive_Count</A></FONT> <b>is</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A> <b>range</b> 1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>'Last;
- <b>subtype</b> <FONT COLOR=red><A NAME="50_12">Field</A></FONT> <b>is</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-textio__ads.htm#51_13">Text_IO</A>.<A HREF="a-textio__ads.htm#76_12">Field</A>;
+ <b>subtype</b> <FONT COLOR=red><A NAME="50_12">Field</A></FONT> <b>is</b> Ada.Text_IO.Field;
<b>subtype</b> <FONT COLOR=red><A NAME="51_12">Number_Base</A></FONT> <b>is</b> Integer <b>range</b> 2 .. 16;
<b>type</b> <FONT COLOR=red><A NAME="53_9">Type_Set</A></FONT> <b>is</b> (Lower_Case, Upper_Case, Mixed_Case);
- <FONT COLOR=green><EM>-- For most of the routines you will see a version without a Window</EM></FONT>
- <FONT COLOR=green><EM>-- type parameter. They will operate on a default window, which can</EM></FONT>
- <FONT COLOR=green><EM>-- be set by the user. It is initially equal to Standard_Window.</EM></FONT>
+ <FONT COLOR=green><EM>-- For most of the routines you will see a version without a Window</EM></FONT>
+ <FONT COLOR=green><EM>-- type parameter. They will operate on a default window, which can</EM></FONT>
+ <FONT COLOR=green><EM>-- be set by the user. It is initially equal to Standard_Window.</EM></FONT>
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#45_14">Set_Window</A><FONT COLOR=red><A NAME="59_14"></A></FONT> (<FONT COLOR=red><A NAME="59_26">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>);
- <FONT COLOR=green><EM>-- Set Win as the default window</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#45_14">Set_Window</A><FONT COLOR=red><A NAME="59_14"></A></FONT> (<FONT COLOR=red><A NAME="59_26">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>);
+ <FONT COLOR=green><EM>-- Set Win as the default window</EM></FONT>
- <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#51_13">Get_Window</A><FONT COLOR=red><A NAME="62_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- <FONT COLOR=green><EM>-- Get the current default window</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#51_13">Get_Window</A><FONT COLOR=red><A NAME="62_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=green><EM>-- Get the current default window</EM></FONT>
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#62_14">Flush</A><FONT COLOR=red><A NAME="65_14"></A></FONT> (<FONT COLOR=red><A NAME="65_21">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#62_14">Flush</A><FONT COLOR=red><A NAME="65_14"></A></FONT> (<FONT COLOR=red><A NAME="65_21">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#68_14">Flush</A><FONT COLOR=red><A NAME="66_14"></A></FONT>;
- <FONT COLOR=green><EM>--------------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Specification of line and page lengths --</EM></FONT>
- <FONT COLOR=green><EM>--------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>--------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Specification of line and page lengths --</EM></FONT>
+ <FONT COLOR=green><EM>--------------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- There are no set routines in this package. I assume, that you allocate</EM></FONT>
- <FONT COLOR=green><EM>-- the window with an appropriate size.</EM></FONT>
- <FONT COLOR=green><EM>-- A scroll-window is interpreted as an page with unbounded page length,</EM></FONT>
- <FONT COLOR=green><EM>-- i.e. it returns the conventional 0 as page length.</EM></FONT>
+ <FONT COLOR=green><EM>-- There are no set routines in this package. I assume, that you allocate</EM></FONT>
+ <FONT COLOR=green><EM>-- the window with an appropriate size.</EM></FONT>
+ <FONT COLOR=green><EM>-- A scroll-window is interpreted as an page with unbounded page length,</EM></FONT>
+ <FONT COLOR=green><EM>-- i.e. it returns the conventional 0 as page length.</EM></FONT>
- <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#83_13">Line_Length</A><FONT COLOR=red><A NAME="77_13"></A></FONT> (<FONT COLOR=red><A NAME="77_26">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#83_13">Line_Length</A><FONT COLOR=red><A NAME="77_13"></A></FONT> (<FONT COLOR=red><A NAME="77_26">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
<b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#95_13">Line_Length</A><FONT COLOR=red><A NAME="78_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
- <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#101_13">Page_Length</A><FONT COLOR=red><A NAME="80_13"></A></FONT> (<FONT COLOR=red><A NAME="80_26">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#101_13">Page_Length</A><FONT COLOR=red><A NAME="80_13"></A></FONT> (<FONT COLOR=red><A NAME="80_26">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
<b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#117_13">Page_Length</A><FONT COLOR=red><A NAME="81_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#47_12">Count</A>;
- <FONT COLOR=green><EM>------------------------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Column, Line, and Page Control --</EM></FONT>
- <FONT COLOR=green><EM>------------------------------------</EM></FONT>
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#126_14">New_Line</A><FONT COLOR=red><A NAME="86_14"></A></FONT> (<FONT COLOR=red><A NAME="86_24">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>; Spacing : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1);
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#143_14">New_Line</A><FONT COLOR=red><A NAME="87_14"></A></FONT> (Spacing : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1);
+ <FONT COLOR=green><EM>------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Column, Line, and Page Control --</EM></FONT>
+ <FONT COLOR=green><EM>------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#126_14">New_Line</A><FONT COLOR=red><A NAME="86_14"></A></FONT> (<FONT COLOR=red><A NAME="86_24">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="86_41">Spacing</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#143_14">New_Line</A><FONT COLOR=red><A NAME="87_14"></A></FONT> (<FONT COLOR=red><A NAME="87_24">Spacing</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A> := 1);
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#149_14">New_Page</A><FONT COLOR=red><A NAME="89_14"></A></FONT> (<FONT COLOR=red><A NAME="89_24">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#149_14">New_Page</A><FONT COLOR=red><A NAME="89_14"></A></FONT> (<FONT COLOR=red><A NAME="89_24">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#155_14">New_Page</A><FONT COLOR=red><A NAME="90_14"></A></FONT>;
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#161_14">Set_Col</A><FONT COLOR=red><A NAME="92_14"></A></FONT> (<FONT COLOR=red><A NAME="92_23">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>; To : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#189_14">Set_Col</A><FONT COLOR=red><A NAME="93_14"></A></FONT> (To : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#161_14">Set_Col</A><FONT COLOR=red><A NAME="92_14"></A></FONT> (<FONT COLOR=red><A NAME="92_23">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="92_41">To</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#189_14">Set_Col</A><FONT COLOR=red><A NAME="93_14"></A></FONT> (<FONT COLOR=red><A NAME="93_23">To</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#195_14">Set_Line</A><FONT COLOR=red><A NAME="95_14"></A></FONT> (<FONT COLOR=red><A NAME="95_24">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>; To : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#218_14">Set_Line</A><FONT COLOR=red><A NAME="96_14"></A></FONT> (To : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#195_14">Set_Line</A><FONT COLOR=red><A NAME="95_14"></A></FONT> (<FONT COLOR=red><A NAME="95_24">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="95_41">To</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#218_14">Set_Line</A><FONT COLOR=red><A NAME="96_14"></A></FONT> (<FONT COLOR=red><A NAME="96_24">To</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>);
- <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#224_13">Col</A><FONT COLOR=red><A NAME="98_13"></A></FONT> (<FONT COLOR=red><A NAME="98_18">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#224_13">Col</A><FONT COLOR=red><A NAME="98_13"></A></FONT> (<FONT COLOR=red><A NAME="98_18">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
<b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#238_13">Col</A><FONT COLOR=red><A NAME="99_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
- <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#244_13">Line</A><FONT COLOR=red><A NAME="101_13"></A></FONT> (<FONT COLOR=red><A NAME="101_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
+ <b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#244_13">Line</A><FONT COLOR=red><A NAME="101_13"></A></FONT> (<FONT COLOR=red><A NAME="101_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
<b>function</b> <A HREF="terminal_interface-curses-text_io__adb.htm#258_13">Line</A><FONT COLOR=red><A NAME="102_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#48_12">Positive_Count</A>;
- <FONT COLOR=green><EM>-----------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Characters-Output --</EM></FONT>
- <FONT COLOR=green><EM>-----------------------</EM></FONT>
+ <FONT COLOR=green><EM>-----------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Characters-Output --</EM></FONT>
+ <FONT COLOR=green><EM>-----------------------</EM></FONT>
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#268_14">Put</A><FONT COLOR=red><A NAME="108_14"></A></FONT> (<FONT COLOR=red><A NAME="108_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>; Item : <b>in</b> Character);
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#286_14">Put</A><FONT COLOR=red><A NAME="109_14"></A></FONT> (Item : <b>in</b> Character);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#268_14">Put</A><FONT COLOR=red><A NAME="108_14"></A></FONT> (<FONT COLOR=red><A NAME="108_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="108_37">Item</A></FONT> : <b>in</b> Character);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#286_14">Put</A><FONT COLOR=red><A NAME="109_14"></A></FONT> (<FONT COLOR=red><A NAME="109_19">Item</A></FONT> : <b>in</b> Character);
- <FONT COLOR=green><EM>--------------------</EM></FONT>
- <FONT COLOR=green><EM>-- Strings-Output --</EM></FONT>
- <FONT COLOR=green><EM>--------------------</EM></FONT>
+ <FONT COLOR=green><EM>--------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Strings-Output --</EM></FONT>
+ <FONT COLOR=green><EM>--------------------</EM></FONT>
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#296_14">Put</A><FONT COLOR=red><A NAME="115_14"></A></FONT> (<FONT COLOR=red><A NAME="115_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>; Item : <b>in</b> String);
- <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#314_14">Put</A><FONT COLOR=red><A NAME="116_14"></A></FONT> (Item : <b>in</b> String);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#296_14">Put</A><FONT COLOR=red><A NAME="115_14"></A></FONT> (<FONT COLOR=red><A NAME="115_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="115_37">Item</A></FONT> : <b>in</b> String);
+ <b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#314_14">Put</A><FONT COLOR=red><A NAME="116_14"></A></FONT> (<FONT COLOR=red><A NAME="116_19">Item</A></FONT> : <b>in</b> String);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#320_14">Put_Line</A><FONT COLOR=red><A NAME="118_14"></A></FONT>
- (<FONT COLOR=red><A NAME="119_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#57_9">Window</A>;
- Item : <b>in</b> String);
+ (<FONT COLOR=red><A NAME="119_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="120_7">Item</A></FONT> : <b>in</b> String);
<b>procedure</b> <A HREF="terminal_interface-curses-text_io__adb.htm#329_14">Put_Line</A><FONT COLOR=red><A NAME="122_14"></A></FONT>
- (Item : <b>in</b> String);
-
- <FONT COLOR=green><EM>-- Exceptions</EM></FONT>
-
- <FONT COLOR=red><A NAME="127_4">Status_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#21_4">Status_Error</A>;
- <FONT COLOR=red><A NAME="128_4">Mode_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#22_4">Mode_Error</A>;
- <FONT COLOR=red><A NAME="129_4">Name_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#23_4">Name_Error</A>;
- <FONT COLOR=red><A NAME="130_4">Use_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#24_4">Use_Error</A>;
- <FONT COLOR=red><A NAME="131_4">Device_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#25_4">Device_Error</A>;
- <FONT COLOR=red><A NAME="132_4">End_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#26_4">End_Error</A>;
- <FONT COLOR=red><A NAME="133_4">Data_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#27_4">Data_Error</A>;
- <FONT COLOR=red><A NAME="134_4">Layout_Error</A></FONT> : <b>exception</b> <b>renames</b> <A HREF="ada__ads.htm#18_9">Ada</A>.<A HREF="a-ioexce__ads.htm#18_13">IO_Exceptions</A>.<A HREF="a-ioexce__ads.htm#28_4">Layout_Error</A>;
+ (<FONT COLOR=red><A NAME="123_7">Item</A></FONT> : <b>in</b> String);
+
+ <FONT COLOR=green><EM>-- Exceptions</EM></FONT>
+
+ <FONT COLOR=red><A NAME="127_4">Status_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Status_Error;
+ <FONT COLOR=red><A NAME="128_4">Mode_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Mode_Error;
+ <FONT COLOR=red><A NAME="129_4">Name_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Name_Error;
+ <FONT COLOR=red><A NAME="130_4">Use_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Use_Error;
+ <FONT COLOR=red><A NAME="131_4">Device_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Device_Error;
+ <FONT COLOR=red><A NAME="132_4">End_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.End_Error;
+ <FONT COLOR=red><A NAME="133_4">Data_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Data_Error;
+ <FONT COLOR=red><A NAME="134_4">Layout_Error</A></FONT> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Layout_Error;
<b>end</b> Terminal_Interface.Curses.Text_IO;
</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses.adb</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses.adb </H1></DIV><HR>
+<PRE>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- B O D Y --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.25 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<b>with</b> System;
+
+<b>with</b> <A HREF="terminal_interface__ads.htm#41_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Strings;
+<b>with</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers;
+<b>with</b> Ada.Characters.Handling; <b>use</b> Ada.Characters.Handling;
+<b>with</b> Ada.Strings.Fixed;
+<b>with</b> Ada.Unchecked_Conversion;
+
+<b>package</b> <b>body</b> Terminal_Interface.<A HREF="terminal_interface-curses__ads.htm#48_28">Curses</A><FONT COLOR=red><A NAME="51_33"></A></FONT> <b>is</b>
+
+ <b>use</b> <A HREF="terminal_interface-curses-aux__ads.htm#50_35">Aux</A>;
+ <b>use</b> <b>type</b> System.Bit_Order;
+
+ <b>package</b> <FONT COLOR=red><A NAME="56_12">ASF</A></FONT> <b>renames</b> Ada.Strings.Fixed;
+
+ <b>type</b> <FONT COLOR=red><A NAME="58_9">chtype_array</A></FONT> <b>is</b> <b>array</b> (size_t <b>range</b> <>)
+ <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+ <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses__adb.htm#58_9">chtype_array</A>);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>generic</b>
+ <b>type</b> <FONT COLOR=red><A NAME="64_12">Element</A></FONT> <b>is</b> (<>);
+ <b>function</b> <FONT COLOR=red><A NAME="65_13">W_Get_Element</A></FONT> (<FONT COLOR=red><A NAME="65_28">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="66_28">Offset</A></FONT> : <b>in</b> Natural) <b>return</b> <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A>;
+
+ <b>function</b> <A HREF="terminal_interface-curses__adb.htm#65_13">W_Get_Element</A> (<FONT COLOR=red><A NAME="68_28">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="69_28">Offset</A></FONT> : <b>in</b> Natural) <b>return</b> <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A> <b>is</b>
+ <b>type</b> <FONT COLOR=red><A NAME="70_12">E_Array</A></FONT> <b>is</b> <b>array</b> (Natural <b>range</b> <>) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A>;
+ <b>package</b> <FONT COLOR=red><A NAME="71_15">C_E_Array</A></FONT> <b>is</b> <b>new</b>
+ <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A>, <A HREF="terminal_interface-curses__adb.htm#70_12">E_Array</A>, <A HREF="terminal_interface-curses__adb.htm#64_12">Element</A>'Val (0));
+ <b>use</b> <A HREF="terminal_interface-curses__adb.htm#71_15">C_E_Array</A>;
+
+ <b>function</b> <FONT COLOR=red><A NAME="75_16">To_Pointer</A></FONT> <b>is</b> <b>new</b>
+ Ada.Unchecked_Conversion (<A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>, Pointer);
+
+ P : Pointer := <A HREF="terminal_interface-curses__adb.htm#75_16">To_Pointer</A> (<A HREF="terminal_interface-curses__adb.htm#65_28">Win</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#65_28">Win</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>else</b>
+ P := P + ptrdiff_t (<A HREF="terminal_interface-curses__adb.htm#66_28">Offset</A>);
+ <b>return</b> P.<b>all</b>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> W_Get_Element;
+
+ <b>function</b> <FONT COLOR=red><A NAME="88_13">W_Get_Int</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses__adb.htm#65_13">W_Get_Element</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>);
+ <b>function</b> <FONT COLOR=red><A NAME="89_13">W_Get_Short</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses__adb.htm#65_13">W_Get_Element</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>);
+ <b>function</b> <FONT COLOR=red><A NAME="90_13">W_Get_Byte</A></FONT> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses__adb.htm#65_13">W_Get_Element</A> (<A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.unsigned_char);
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1510_13">Key_Name</A><FONT COLOR=red><A NAME="93_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1510_23">Key</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>) <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="95_16">Keyname</A></FONT> (<FONT COLOR=red><A NAME="95_25">K</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#95_16">Keyname</A>, "keyname");
+
+ <FONT COLOR=red><A NAME="98_7">Ch</A></FONT> : Character;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#1510_23">Key</A> <= Character'Pos (Character'Last) <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A> := Character'Val (<A HREF="terminal_interface-curses__ads.htm#1510_23">Key</A>);
+ <b>if</b> Is_Control (<A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A>) <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1521_13">Un_Control</A> (<A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch => <A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A>,
+ Color => <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+ <b>elsif</b> Is_Graphic (<A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A>) <b>then</b>
+ <b>declare</b>
+ <FONT COLOR=red><A NAME="108_16">S</A></FONT> : String (1 .. 1);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#108_16">S</A> (1) := <A HREF="terminal_interface-curses__adb.htm#98_7">Ch</A>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#108_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#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#95_16">Keyname</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1510_23">Key</A>)));
+ <b>end</b> <b>if</b>;
+ <b>end</b> Key_Name;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1504_14">Key_Name</A><FONT COLOR=red><A NAME="121_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1504_24">Key</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1505_24">Name</A> : <b>out</b> String)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#56_12">ASF</A>.Move (<A HREF="terminal_interface-curses__ads.htm#1510_13">Key_Name</A> (<A HREF="terminal_interface-curses__ads.htm#1504_24">Key</A>), <A HREF="terminal_interface-curses__ads.htm#1505_24">Name</A>);
+ <b>end</b> Key_Name;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#478_14">Init_Screen</A><FONT COLOR=red><A NAME="129_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="131_16">Initscr</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#131_16">Initscr</A>, "initscr");
+
+ <FONT COLOR=red><A NAME="134_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#134_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#131_16">Initscr</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#134_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Init_Screen;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#487_14">End_Windows</A><FONT COLOR=red><A NAME="142_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="144_16">Endwin</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#144_16">Endwin</A>, "endwin");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#144_16">Endwin</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> End_Windows;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#494_13">Is_End_Window</A><FONT COLOR=red><A NAME="152_13"></A></FONT> <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="154_16">Isendwin</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#154_16">Isendwin</A>, "isendwin");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#154_16">Isendwin</A> = <A HREF="terminal_interface-curses__ads.htm#1736_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> Is_End_Window;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A><FONT COLOR=red><A NAME="164_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#503_27">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#504_27">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#505_27">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="168_16">Wmove</A></FONT> (<FONT COLOR=red><A NAME="168_23">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="169_23">Line</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="170_23">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>
+ ) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#168_16">Wmove</A>, "wmove");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#168_16">Wmove</A> (<A HREF="terminal_interface-curses__ads.htm#503_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#504_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#505_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Move_Cursor;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#514_14">Add</A><FONT COLOR=red><A NAME="179_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#514_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#515_19">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="182_16">Waddch</A></FONT> (<FONT COLOR=red><A NAME="182_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="183_24">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#182_16">Waddch</A>, "waddch");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#182_16">Waddch</A> (<A HREF="terminal_interface-curses__ads.htm#514_19">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#515_19">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Add;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#518_14">Add</A><FONT COLOR=red><A NAME="191_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#518_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#519_19">Ch</A> : <b>in</b> Character)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#518_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#518_19">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch => <A HREF="terminal_interface-curses__ads.htm#519_19">Ch</A>,
+ Color => <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+ <b>end</b> Add;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#524_14">Add</A><FONT COLOR=red><A NAME="201_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#525_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#526_7">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#527_7">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#528_7">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="207_16">mvwaddch</A></FONT> (<FONT COLOR=red><A NAME="207_26">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="208_26">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="209_26">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="210_26">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#207_16">mvwaddch</A>, "mvwaddch");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#207_16">mvwaddch</A> (<A HREF="terminal_interface-curses__ads.htm#525_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#526_7">Line</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#527_7">Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#528_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Add;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#531_14">Add</A><FONT COLOR=red><A NAME="220_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#532_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#533_7">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#534_7">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#535_7">Ch</A> : <b>in</b> Character)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#531_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#532_7">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#533_7">Line</A>,
+ <A HREF="terminal_interface-curses__ads.htm#534_7">Column</A>,
+ <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch => <A HREF="terminal_interface-curses__ads.htm#535_7">Ch</A>,
+ Color => <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+ <b>end</b> Add;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#540_14">Add_With_Immediate_Echo</A><FONT COLOR=red><A NAME="235_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#541_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#542_7">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="239_16">Wechochar</A></FONT> (<FONT COLOR=red><A NAME="239_27">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="240_27">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#239_16">Wechochar</A>, "wechochar");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#239_16">Wechochar</A> (<A HREF="terminal_interface-curses__ads.htm#541_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#542_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Add_With_Immediate_Echo;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#545_14">Add_With_Immediate_Echo</A><FONT COLOR=red><A NAME="248_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#546_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#547_7">Ch</A> : <b>in</b> Character)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#545_14">Add_With_Immediate_Echo</A>
+ (<A HREF="terminal_interface-curses__ads.htm#546_7">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch => <A HREF="terminal_interface-curses__ads.htm#547_7">Ch</A>,
+ Color => <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+ <b>end</b> Add_With_Immediate_Echo;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#556_13">Create</A><FONT COLOR=red><A NAME="260_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#557_7">Number_Of_Lines</A> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#558_7">Number_Of_Columns</A> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#559_7">First_Line_Position</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#560_7">First_Column_Position</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="265_16">Newwin</A></FONT> (<FONT COLOR=red><A NAME="265_24">Number_Of_Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="266_24">Number_Of_Columns</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="267_24">First_Line_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="268_24">First_Column_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#265_16">Newwin</A>, "newwin");
+
+ <FONT COLOR=red><A NAME="271_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#271_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#265_16">Newwin</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#557_7">Number_Of_Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#558_7">Number_Of_Columns</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#559_7">First_Line_Position</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#560_7">First_Column_Position</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#271_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#271_7">W</A>;
+ <b>end</b> Create;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#573_14">Delete</A><FONT COLOR=red><A NAME="283_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#573_22">Win</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="285_16">Wdelwin</A></FONT> (<FONT COLOR=red><A NAME="285_25">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#285_16">Wdelwin</A>, "delwin");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#285_16">Wdelwin</A> (<A HREF="terminal_interface-curses__ads.htm#573_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses__ads.htm#573_22">Win</A> := <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A>;
+ <b>end</b> Delete;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#579_13">Sub_Window</A><FONT COLOR=red><A NAME="294_13"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#580_7">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#581_7">Number_Of_Lines</A> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#582_7">Number_Of_Columns</A> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#583_7">First_Line_Position</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#584_7">First_Column_Position</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="301_16">Subwin</A></FONT>
+ (<FONT COLOR=red><A NAME="302_10">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="303_10">Number_Of_Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="304_10">Number_Of_Columns</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="305_10">First_Line_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="306_10">First_Column_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#301_16">Subwin</A>, "subwin");
+
+ <FONT COLOR=red><A NAME="309_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#309_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#301_16">Subwin</A> (<A HREF="terminal_interface-curses__ads.htm#580_7">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#581_7">Number_Of_Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#582_7">Number_Of_Columns</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#583_7">First_Line_Position</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#584_7">First_Column_Position</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#309_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#309_7">W</A>;
+ <b>end</b> Sub_Window;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#589_13">Derived_Window</A><FONT COLOR=red><A NAME="322_13"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#590_7">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#591_7">Number_Of_Lines</A> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#592_7">Number_Of_Columns</A> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#593_7">First_Line_Position</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#594_7">First_Column_Position</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="329_16">Derwin</A></FONT>
+ (<FONT COLOR=red><A NAME="330_10">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="331_10">Number_Of_Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="332_10">Number_Of_Columns</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="333_10">First_Line_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="334_10">First_Column_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#329_16">Derwin</A>, "derwin");
+
+ <FONT COLOR=red><A NAME="337_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#337_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#329_16">Derwin</A> (<A HREF="terminal_interface-curses__ads.htm#590_7">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#591_7">Number_Of_Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#592_7">Number_Of_Columns</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#593_7">First_Line_Position</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#594_7">First_Column_Position</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#337_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#337_7">W</A>;
+ <b>end</b> Derived_Window;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#599_13">Duplicate</A><FONT COLOR=red><A NAME="350_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#599_24">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="352_16">Dupwin</A></FONT> (<FONT COLOR=red><A NAME="352_24">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#352_16">Dupwin</A>, "dupwin");
+
+ <FONT COLOR=red><A NAME="355_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__adb.htm#352_16">Dupwin</A> (<A HREF="terminal_interface-curses__ads.htm#599_24">Win</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#355_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#355_7">W</A>;
+ <b>end</b> Duplicate;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#604_14">Move_Window</A><FONT COLOR=red><A NAME="363_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#604_27">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#605_27">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#606_27">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="367_16">Mvwin</A></FONT> (<FONT COLOR=red><A NAME="367_23">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="368_23">Line</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="369_23">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#367_16">Mvwin</A>, "mvwin");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#367_16">Mvwin</A> (<A HREF="terminal_interface-curses__ads.htm#604_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#605_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#606_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Move_Window;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#611_14">Move_Derived_Window</A><FONT COLOR=red><A NAME="377_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#611_35">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#612_35">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#613_35">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="381_16">Mvderwin</A></FONT> (<FONT COLOR=red><A NAME="381_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="382_26">Line</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="383_26">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#381_16">Mvderwin</A>, "mvderwin");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#381_16">Mvderwin</A> (<A HREF="terminal_interface-curses__ads.htm#611_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#612_35">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#613_35">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Move_Derived_Window;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#628_14">Set_Synch_Mode</A><FONT COLOR=red><A NAME="391_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#628_30">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#629_30">Mode</A> : <b>in</b> Boolean := False)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="394_16">Syncok</A></FONT> (<FONT COLOR=red><A NAME="394_24">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="395_24">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#394_16">Syncok</A>, "syncok");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#394_16">Syncok</A> (<A HREF="terminal_interface-curses__ads.htm#628_30">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#629_30">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Synch_Mode;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#638_14">Add</A><FONT COLOR=red><A NAME="403_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#638_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#639_19">Str</A> : <b>in</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#640_19">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+ <b>function</b> <FONT COLOR=red><A NAME="408_16">Waddnstr</A></FONT> (<FONT COLOR=red><A NAME="408_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ Str : Char_Ptr;
+ <FONT COLOR=red><A NAME="410_26">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#408_16">Waddnstr</A>, "waddnstr");
+
+ <FONT COLOR=red><A NAME="413_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#639_19">Str</A>'Length);
+ <FONT COLOR=red><A NAME="414_7">Length</A></FONT> : size_t;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses__ads.htm#639_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#413_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#414_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#408_16">Waddnstr</A> (<A HREF="terminal_interface-curses__ads.htm#638_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#413_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#413_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#640_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Add;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#645_14">Add</A><FONT COLOR=red><A NAME="422_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#645_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#646_19">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#647_19">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#648_19">Str</A> : <b>in</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#649_19">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#645_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#646_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#647_19">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#645_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#645_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#648_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#649_19">Len</A>);
+ <b>end</b> Add;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#658_14">Add</A><FONT COLOR=red><A NAME="434_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#658_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#659_19">Str</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Attributed_String</A>;
+ <A HREF="terminal_interface-curses__ads.htm#660_19">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>type</b> Chtype_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="440_16">Waddchnstr</A></FONT> (<FONT COLOR=red><A NAME="440_28">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ Str : Chtype_Ptr;
+ <FONT COLOR=red><A NAME="442_28">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#440_16">Waddchnstr</A>, "waddchnstr");
+
+ <FONT COLOR=red><A NAME="445_7">Txt</A></FONT> : <A HREF="terminal_interface-curses__adb.htm#58_9">chtype_array</A> (0 .. <A HREF="terminal_interface-curses__ads.htm#659_19">Str</A>'Length);
+ <b>begin</b>
+ <b>for</b> <FONT COLOR=red><A NAME="447_11">Length</A></FONT> <b>in</b> 1 .. size_t (<A HREF="terminal_interface-curses__ads.htm#659_19">Str</A>'Length) <b>loop</b>
+ <A HREF="terminal_interface-curses__adb.htm#445_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#447_11">Length</A> - 1) := <A HREF="terminal_interface-curses__ads.htm#659_19">Str</A> (Natural (<A HREF="terminal_interface-curses__adb.htm#447_11">Length</A>));
+ <b>end</b> <b>loop</b>;
+ <A HREF="terminal_interface-curses__adb.htm#445_7">Txt</A> (<A HREF="terminal_interface-curses__ads.htm#659_19">Str</A>'Length) := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#440_16">Waddchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#658_19">Win</A>,
+ <A HREF="terminal_interface-curses__adb.htm#445_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#445_7">Txt</A>'First)'<b>Access</b>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#660_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Add;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A><FONT COLOR=red><A NAME="458_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#665_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#666_19">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#667_19">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#668_19">Str</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Attributed_String</A>;
+ <A HREF="terminal_interface-curses__ads.htm#669_19">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#665_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#666_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#667_19">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#665_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#665_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#668_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#669_19">Len</A>);
+ <b>end</b> Add;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#679_14">Border</A><FONT COLOR=red><A NAME="470_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#680_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#681_7">Left_Side_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#682_7">Right_Side_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#683_7">Top_Side_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#684_7">Bottom_Side_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#685_7">Upper_Left_Corner_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#686_7">Upper_Right_Corner_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#687_7">Lower_Left_Corner_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#688_7">Lower_Right_Corner_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="481_16">Wborder</A></FONT> (<FONT COLOR=red><A NAME="481_25">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="482_25">LS</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <FONT COLOR=red><A NAME="483_25">RS</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <FONT COLOR=red><A NAME="484_25">TS</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <FONT COLOR=red><A NAME="485_25">BS</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <FONT COLOR=red><A NAME="486_25">ULC</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <FONT COLOR=red><A NAME="487_25">URC</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <FONT COLOR=red><A NAME="488_25">LLC</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <FONT COLOR=red><A NAME="489_25">LRC</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#481_16">Wborder</A>, "wborder");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#481_16">Wborder</A> (<A HREF="terminal_interface-curses__ads.htm#680_7">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#681_7">Left_Side_Symbol</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#682_7">Right_Side_Symbol</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#683_7">Top_Side_Symbol</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#684_7">Bottom_Side_Symbol</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#685_7">Upper_Left_Corner_Symbol</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#686_7">Upper_Right_Corner_Symbol</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#687_7">Lower_Left_Corner_Symbol</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#688_7">Lower_Right_Corner_Symbol</A>)
+ ) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A>
+ <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Border;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#694_14">Box</A><FONT COLOR=red><A NAME="507_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#695_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#696_7">Vertical_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#697_7">Horizontal_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#679_14">Border</A> (<A HREF="terminal_interface-curses__ads.htm#695_7">Win</A>,
+ <A HREF="terminal_interface-curses__ads.htm#696_7">Vertical_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#696_7">Vertical_Symbol</A>,
+ <A HREF="terminal_interface-curses__ads.htm#697_7">Horizontal_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#697_7">Horizontal_Symbol</A>);
+ <b>end</b> Box;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#702_14">Horizontal_Line</A><FONT COLOR=red><A NAME="518_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#703_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#704_7">Line_Size</A> : <b>in</b> Natural;
+ <A HREF="terminal_interface-curses__ads.htm#705_7">Line_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="523_16">Whline</A></FONT> (<FONT COLOR=red><A NAME="523_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="524_24">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <FONT COLOR=red><A NAME="525_24">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#523_16">Whline</A>, "whline");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#523_16">Whline</A> (<A HREF="terminal_interface-curses__ads.htm#703_7">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#705_7">Line_Symbol</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#704_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Horizontal_Line;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#710_14">Vertical_Line</A><FONT COLOR=red><A NAME="535_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#711_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#712_7">Line_Size</A> : <b>in</b> Natural;
+ <A HREF="terminal_interface-curses__ads.htm#713_7">Line_Symbol</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="540_16">Wvline</A></FONT> (<FONT COLOR=red><A NAME="540_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="541_24">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <FONT COLOR=red><A NAME="542_24">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#540_16">Wvline</A>, "wvline");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#540_16">Wvline</A> (<A HREF="terminal_interface-curses__ads.htm#711_7">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#713_7">Line_Symbol</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#712_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Vertical_Line;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#722_13">Get_Keystroke</A><FONT COLOR=red><A NAME="553_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#722_28">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="556_16">Wgetch</A></FONT> (<FONT COLOR=red><A NAME="556_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#556_16">Wgetch</A>, "wgetch");
+
+ <FONT COLOR=red><A NAME="559_7">C</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#556_16">Wgetch</A> (<A HREF="terminal_interface-curses__ads.htm#722_28">Win</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#559_7">C</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#86_4">Key_None</A>;
+ <b>else</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A> (<A HREF="terminal_interface-curses__adb.htm#559_7">C</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Get_Keystroke;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#732_14">Undo_Keystroke</A><FONT COLOR=red><A NAME="568_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#732_30">Key</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="570_16">Ungetch</A></FONT> (<FONT COLOR=red><A NAME="570_25">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#570_16">Ungetch</A>, "ungetch");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#570_16">Ungetch</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#732_30">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Undo_Keystroke;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#737_13">Has_Key</A><FONT COLOR=red><A NAME="578_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#737_22">Key</A> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="580_16">Haskey</A></FONT> (<FONT COLOR=red><A NAME="580_24">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#580_16">Haskey</A>, "has_key");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#580_16">Haskey</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#737_22">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#75_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> Has_Key;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#744_13">Is_Function_Key</A><FONT COLOR=red><A NAME="590_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#744_30">Key</A> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A>) <b>return</b> Boolean
+ <b>is</b>
+ <FONT COLOR=red><A NAME="592_7">L</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#96_4">Key_F0</A>) +
+ Natural (<A HREF="terminal_interface-curses__ads.htm#748_12">Function_Key_Number</A>'Last));
+ <b>begin</b>
+ <b>if</b> (<A HREF="terminal_interface-curses__ads.htm#744_30">Key</A> >= <A HREF="terminal_interface-curses__ads.htm#96_4">Key_F0</A>) <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses__ads.htm#744_30">Key</A> <= <A HREF="terminal_interface-curses__adb.htm#592_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> Is_Function_Key;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#751_13">Function_Key</A><FONT COLOR=red><A NAME="602_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#751_27">Key</A> : <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#748_12">Function_Key_Number</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#744_13">Is_Function_Key</A> (<A HREF="terminal_interface-curses__ads.htm#751_27">Key</A>) <b>then</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#748_12">Function_Key_Number</A> (<A HREF="terminal_interface-curses__ads.htm#751_27">Key</A> - <A HREF="terminal_interface-curses__ads.htm#96_4">Key_F0</A>);
+ <b>else</b>
+ <b>raise</b> Constraint_Error;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Function_Key;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#756_13">Function_Key_Code</A><FONT COLOR=red><A NAME="613_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#756_32">Key</A> : <A HREF="terminal_interface-curses__ads.htm#748_12">Function_Key_Number</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A>
+ <b>is</b>
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#71_12">Real_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#96_4">Key_F0</A>) + Natural (<A HREF="terminal_interface-curses__ads.htm#756_32">Key</A>));
+ <b>end</b> Function_Key_Code;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#765_14">Switch_Character_Attribute</A><FONT COLOR=red><A NAME="619_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#766_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#767_7">Attr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses__ads.htm#768_7">On</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="624_16">Wattron</A></FONT> (<FONT COLOR=red><A NAME="624_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="625_25">C_Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#624_16">Wattron</A>, "wattr_on");
+ <b>function</b> <FONT COLOR=red><A NAME="627_16">Wattroff</A></FONT> (<FONT COLOR=red><A NAME="627_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="628_26">C_Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#627_16">Wattroff</A>, "wattr_off");
+ <FONT COLOR=green><EM>-- In Ada we use the On Boolean to control whether or not we want to</EM></FONT>
+ <FONT COLOR=green><EM>-- switch on or off the attributes in the set.</EM></FONT>
+ <FONT COLOR=red><A NAME="632_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="633_7">AC</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch => Character'First,
+ Color => <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#767_7">Attr</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#768_7">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#632_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#624_16">Wattron</A> (<A HREF="terminal_interface-curses__ads.htm#766_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#108_13">AttrChar_To_AttrType</A> (<A HREF="terminal_interface-curses__adb.htm#633_7">AC</A>));
+ <b>else</b>
+ <A HREF="terminal_interface-curses__adb.htm#632_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#627_16">Wattroff</A> (<A HREF="terminal_interface-curses__ads.htm#766_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#108_13">AttrChar_To_AttrType</A> (<A HREF="terminal_interface-curses__adb.htm#633_7">AC</A>));
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#632_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Switch_Character_Attribute;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#773_14">Set_Character_Attributes</A><FONT COLOR=red><A NAME="647_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#774_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#775_7">Attr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses__ads.htm#776_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="652_16">Wattrset</A></FONT> (<FONT COLOR=red><A NAME="652_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="653_26">C_Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#652_16">Wattrset</A>, "wattrset"); <FONT COLOR=green><EM>-- ??? wattr_set</EM></FONT>
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#652_16">Wattrset</A> (<A HREF="terminal_interface-curses__ads.htm#774_7">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#108_13">AttrChar_To_AttrType</A> (<A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'
+ (Ch => Character'First,
+ Color => <A HREF="terminal_interface-curses__ads.htm#776_7">Color</A>,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#775_7">Attr</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Character_Attributes;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#781_13">Get_Character_Attribute</A><FONT COLOR=red><A NAME="665_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#782_7">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="668_16">Wattrget</A></FONT> (<FONT COLOR=red><A NAME="668_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ Atr : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+ Col : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="671_26">Opt</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#668_16">Wattrget</A>, "wattr_get");
+
+ <FONT COLOR=red><A NAME="674_7">Attr</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+ <FONT COLOR=red><A NAME="675_7">Col</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="676_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#668_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#782_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#674_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#675_7">Col</A>'<b>Access</b>,
+ System.Null_Address);
+ <FONT COLOR=red><A NAME="678_7">Ch</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#676_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#71_4">Curses_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#678_7">Ch</A> := <A HREF="terminal_interface-curses-aux__ads.htm#112_13">AttrType_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#674_7">Attr</A>);
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#678_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <b>else</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Get_Character_Attribute;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#786_13">Get_Character_Attribute</A><FONT COLOR=red><A NAME="688_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#787_7">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="691_16">Wattrget</A></FONT> (<FONT COLOR=red><A NAME="691_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ Atr : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+ Col : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="694_26">Opt</A></FONT> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#691_16">Wattrget</A>, "wattr_get");
+
+ <FONT COLOR=red><A NAME="697_7">Attr</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+ <FONT COLOR=red><A NAME="698_7">Col</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="699_7">Res</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#691_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#787_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#697_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#698_7">Col</A>'<b>Access</b>,
+ System.Null_Address);
+ <FONT COLOR=red><A NAME="701_7">Ch</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#699_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#71_4">Curses_Ok</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#701_7">Ch</A> := <A HREF="terminal_interface-curses-aux__ads.htm#112_13">AttrType_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#697_7">Attr</A>);
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#701_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+ <b>else</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Get_Character_Attribute;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#792_14">Set_Color</A><FONT COLOR=red><A NAME="711_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#792_25">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#793_25">Pair</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="714_16">Wset_Color</A></FONT> (<FONT COLOR=red><A NAME="714_28">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="715_28">Color</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="716_28">Opts</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#62_12">C_Void_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#714_16">Wset_Color</A>, "wcolor_set");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#714_16">Wset_Color</A> (<A HREF="terminal_interface-curses__ads.htm#792_25">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#793_25">Pair</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#62_12">C_Void_Ptr</A> (System.Null_Address)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Color;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#798_14">Change_Attributes</A><FONT COLOR=red><A NAME="726_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#799_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#800_7">Count</A> : <b>in</b> Integer := -1;
+ <A HREF="terminal_interface-curses__ads.htm#801_7">Attr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses__ads.htm#802_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="732_16">Wchgat</A></FONT> (<FONT COLOR=red><A NAME="732_24">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="733_24">Cnt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="734_24">Attr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#64_12">C_AttrType</A>;
+ <FONT COLOR=red><A NAME="735_24">Color</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="736_24">Opts</A></FONT> : System.Address := System.Null_Address)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#732_16">Wchgat</A>, "wchgat");
+
+ <FONT COLOR=red><A NAME="740_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> :=
+ (Ch => Character'First, Color => <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First, Attr => <A HREF="terminal_interface-curses__ads.htm#801_7">Attr</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#732_16">Wchgat</A> (<A HREF="terminal_interface-curses__ads.htm#799_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#800_7">Count</A>), <A HREF="terminal_interface-curses-aux__ads.htm#108_13">AttrChar_To_AttrType</A> (<A HREF="terminal_interface-curses__adb.htm#740_7">Ch</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#802_7">Color</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Change_Attributes;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#806_14">Change_Attributes</A><FONT COLOR=red><A NAME="749_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#807_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#808_7">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>'First;
+ <A HREF="terminal_interface-curses__ads.htm#809_7">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>'First;
+ <A HREF="terminal_interface-curses__ads.htm#810_7">Count</A> : <b>in</b> Integer := -1;
+ <A HREF="terminal_interface-curses__ads.htm#811_7">Attr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses__ads.htm#812_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#807_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#808_7">Line</A>, <A HREF="terminal_interface-curses__ads.htm#809_7">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#806_14">Change_Attributes</A> (<A HREF="terminal_interface-curses__ads.htm#807_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#810_7">Count</A>, <A HREF="terminal_interface-curses__ads.htm#811_7">Attr</A>, <A HREF="terminal_interface-curses__ads.htm#812_7">Color</A>);
+ <b>end</b> Change_Attributes;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#821_14">Beep</A><FONT COLOR=red><A NAME="762_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="764_16">Beeper</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#764_16">Beeper</A>, "beep");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#764_16">Beeper</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Beep;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#826_14">Flash_Screen</A><FONT COLOR=red><A NAME="772_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="774_16">Flash</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#774_16">Flash</A>, "flash");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#774_16">Flash</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Flash_Screen;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#837_14">Set_Cbreak_Mode</A><FONT COLOR=red><A NAME="782_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#837_31">SwitchOn</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="784_16">Cbreak</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#784_16">Cbreak</A>, "cbreak");
+ <b>function</b> <FONT COLOR=red><A NAME="786_16">NoCbreak</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#786_16">NoCbreak</A>, "nocbreak");
+
+ <FONT COLOR=red><A NAME="789_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#837_31">SwitchOn</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#789_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#784_16">Cbreak</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__adb.htm#789_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#786_16">NoCbreak</A>;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#789_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Cbreak_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#843_14">Set_Raw_Mode</A><FONT COLOR=red><A NAME="801_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#843_28">SwitchOn</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="803_16">Raw</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#803_16">Raw</A>, "raw");
+ <b>function</b> <FONT COLOR=red><A NAME="805_16">NoRaw</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#805_16">NoRaw</A>, "noraw");
+
+ <FONT COLOR=red><A NAME="808_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#843_28">SwitchOn</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#808_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#803_16">Raw</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__adb.htm#808_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#805_16">NoRaw</A>;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#808_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Raw_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#849_14">Set_Echo_Mode</A><FONT COLOR=red><A NAME="820_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#849_29">SwitchOn</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="822_16">Echo</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#822_16">Echo</A>, "echo");
+ <b>function</b> <FONT COLOR=red><A NAME="824_16">NoEcho</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#824_16">NoEcho</A>, "noecho");
+
+ <FONT COLOR=red><A NAME="827_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#849_29">SwitchOn</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#827_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#822_16">Echo</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__adb.htm#827_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#824_16">NoEcho</A>;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#827_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Echo_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#855_14">Set_Meta_Mode</A><FONT COLOR=red><A NAME="839_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#855_29">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#856_29">SwitchOn</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="842_16">Meta</A></FONT> (<FONT COLOR=red><A NAME="842_22">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="842_34">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#842_16">Meta</A>, "meta");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#842_16">Meta</A> (<A HREF="terminal_interface-curses__ads.htm#855_29">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#856_29">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Meta_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#861_14">Set_KeyPad_Mode</A><FONT COLOR=red><A NAME="850_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#861_31">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#862_31">SwitchOn</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="853_16">Keypad</A></FONT> (<FONT COLOR=red><A NAME="853_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="853_36">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#853_16">Keypad</A>, "keypad");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#853_16">Keypad</A> (<A HREF="terminal_interface-curses__ads.htm#861_31">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#862_31">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_KeyPad_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#869_14">Half_Delay</A><FONT COLOR=red><A NAME="861_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#869_26">Amount</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#866_9">Half_Delay_Amount</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="863_16">Halfdelay</A></FONT> (<FONT COLOR=red><A NAME="863_27">Amount</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#863_16">Halfdelay</A>, "halfdelay");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#863_16">Halfdelay</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#869_26">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Half_Delay;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#874_14">Set_Flush_On_Interrupt_Mode</A><FONT COLOR=red><A NAME="871_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#875_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#876_7">Mode</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="875_16">Intrflush</A></FONT> (<FONT COLOR=red><A NAME="875_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="875_41">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#875_16">Intrflush</A>, "intrflush");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#875_16">Intrflush</A> (<A HREF="terminal_interface-curses__ads.htm#875_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#876_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Flush_On_Interrupt_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#881_14">Set_Queue_Interrupt_Mode</A><FONT COLOR=red><A NAME="883_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#882_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#883_7">Flush</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>procedure</b> <FONT COLOR=red><A NAME="887_17">Qiflush</A></FONT>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#887_17">Qiflush</A>, "qiflush");
+ <b>procedure</b> <FONT COLOR=red><A NAME="889_17">No_Qiflush</A></FONT>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#889_17">No_Qiflush</A>, "noqiflush");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#883_7">Flush</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#887_17">Qiflush</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__adb.htm#889_17">No_Qiflush</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Queue_Interrupt_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#889_14">Set_NoDelay_Mode</A><FONT COLOR=red><A NAME="899_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#890_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#891_7">Mode</A> : <b>in</b> Boolean := False)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="903_16">Nodelay</A></FONT> (<FONT COLOR=red><A NAME="903_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="903_39">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#903_16">Nodelay</A>, "nodelay");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#903_16">Nodelay</A> (<A HREF="terminal_interface-curses__ads.htm#890_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#891_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_NoDelay_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#898_14">Set_Timeout_Mode</A><FONT COLOR=red><A NAME="911_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#898_32">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#899_32">Mode</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#895_9">Timeout_Mode</A>;
+ <A HREF="terminal_interface-curses__ads.htm#900_32">Amount</A> : <b>in</b> Natural)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="915_16">Wtimeout</A></FONT> (<FONT COLOR=red><A NAME="915_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="915_40">Amount</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#915_16">Wtimeout</A>, "wtimeout");
+
+ <FONT COLOR=red><A NAME="918_7">Time</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <b>case</b> <A HREF="terminal_interface-curses__ads.htm#899_32">Mode</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#895_26">Blocking</A> => <A HREF="terminal_interface-curses__adb.htm#918_7">Time</A> := -1;
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#895_36">Non_Blocking</A> => <A HREF="terminal_interface-curses__adb.htm#918_7">Time</A> := 0;
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#895_50">Delayed</A> =>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#900_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#918_7">Time</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#900_32">Amount</A>);
+ <b>end</b> <b>case</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#915_16">Wtimeout</A> (<A HREF="terminal_interface-curses__ads.htm#898_32">Win</A>, <A HREF="terminal_interface-curses__adb.htm#918_7">Time</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Timeout_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#909_14">Set_Escape_Timer_Mode</A><FONT COLOR=red><A NAME="934_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#910_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#911_7">Timer_Off</A> : <b>in</b> Boolean := False)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="938_16">Notimeout</A></FONT> (<FONT COLOR=red><A NAME="938_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="938_41">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#938_16">Notimeout</A>, "notimeout");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#938_16">Notimeout</A> (<A HREF="terminal_interface-curses__ads.htm#910_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#911_7">Timer_Off</A>)))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Escape_Timer_Mode;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#920_14">Set_NL_Mode</A><FONT COLOR=red><A NAME="948_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#920_27">SwitchOn</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="950_16">NL</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#950_16">NL</A>, "nl");
+ <b>function</b> <FONT COLOR=red><A NAME="952_16">NoNL</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#952_16">NoNL</A>, "nonl");
+
+ <FONT COLOR=red><A NAME="955_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#920_27">SwitchOn</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#955_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#950_16">NL</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__adb.htm#955_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#952_16">NoNL</A>;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#955_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_NL_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#926_14">Clear_On_Next_Update</A><FONT COLOR=red><A NAME="967_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#927_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#928_7">Do_Clear</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="971_16">Clear_Ok</A></FONT> (<FONT COLOR=red><A NAME="971_26">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="971_38">Flag</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#971_16">Clear_Ok</A>, "clearok");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#971_16">Clear_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#927_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#928_7">Do_Clear</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Clear_On_Next_Update;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#933_14">Use_Insert_Delete_Line</A><FONT COLOR=red><A NAME="979_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#934_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#935_7">Do_Idl</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="983_16">IDL_Ok</A></FONT> (<FONT COLOR=red><A NAME="983_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="983_36">Flag</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#983_16">IDL_Ok</A>, "idlok");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#983_16">IDL_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#934_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#935_7">Do_Idl</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Use_Insert_Delete_Line;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#940_14">Use_Insert_Delete_Character</A><FONT COLOR=red><A NAME="991_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#941_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#942_7">Do_Idc</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="995_16">IDC_Ok</A></FONT> (<FONT COLOR=red><A NAME="995_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="995_36">Flag</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#995_16">IDC_Ok</A>, "idcok");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#995_16">IDC_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#941_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#942_7">Do_Idc</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Use_Insert_Delete_Character;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#947_14">Leave_Cursor_After_Update</A><FONT COLOR=red><A NAME="1003_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#948_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#949_7">Do_Leave</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1007_16">Leave_Ok</A></FONT> (<FONT COLOR=red><A NAME="1007_26">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1007_38">Flag</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1007_16">Leave_Ok</A>, "leaveok");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1007_16">Leave_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#948_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#949_7">Do_Leave</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Leave_Cursor_After_Update;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#954_14">Immediate_Update_Mode</A><FONT COLOR=red><A NAME="1015_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#955_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#956_7">Mode</A> : <b>in</b> Boolean := False)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1019_16">Immedok</A></FONT> (<FONT COLOR=red><A NAME="1019_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1019_39">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1019_16">Immedok</A>, "immedok");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1019_16">Immedok</A> (<A HREF="terminal_interface-curses__ads.htm#955_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#956_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Immediate_Update_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#961_14">Allow_Scrolling</A><FONT COLOR=red><A NAME="1027_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#962_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#963_7">Mode</A> : <b>in</b> Boolean := False)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1031_16">Scrollok</A></FONT> (<FONT COLOR=red><A NAME="1031_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1031_40">Mode</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1031_16">Scrollok</A>, "scrollok");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1031_16">Scrollok</A> (<A HREF="terminal_interface-curses__ads.htm#962_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#963_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Allow_Scrolling;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#967_13">Scrolling_Allowed</A><FONT COLOR=red><A NAME="1039_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#967_32">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>) <b>return</b> Boolean
+ <b>is</b>
+ <FONT COLOR=red><A NAME="1041_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <b>case</b> <A HREF="terminal_interface-curses__ads.htm#1732_4">Sizeof_bool</A> <b>is</b>
+ <b>when</b> 1 => <A HREF="terminal_interface-curses__adb.htm#1041_7">Res</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#90_13">W_Get_Byte</A> (<A HREF="terminal_interface-curses__ads.htm#967_32">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1731_4">Offset_scroll</A>));
+ <b>when</b> 2 => <A HREF="terminal_interface-curses__adb.htm#1041_7">Res</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#967_32">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1731_4">Offset_scroll</A>));
+ <b>when</b> 4 => <A HREF="terminal_interface-curses__adb.htm#1041_7">Res</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#88_13">W_Get_Int</A> (<A HREF="terminal_interface-curses__ads.htm#967_32">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1731_4">Offset_scroll</A>));
+ <b>when</b> <b>others</b> => <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>case</b>;
+
+ <b>case</b> <A HREF="terminal_interface-curses__adb.htm#1041_7">Res</A> <b>is</b>
+ <b>when</b> 0 => <b>return</b> False;
+ <b>when</b> <b>others</b> => <b>return</b> True;
+ <b>end</b> <b>case</b>;
+ <b>end</b> Scrolling_Allowed;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#972_14">Set_Scroll_Region</A><FONT COLOR=red><A NAME="1056_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#973_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#974_7">Top_Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#975_7">Bottom_Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1061_16">Wsetscrreg</A></FONT> (<FONT COLOR=red><A NAME="1061_28">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1062_28">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1063_28">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1061_16">Wsetscrreg</A>, "wsetscrreg");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1061_16">Wsetscrreg</A> (<A HREF="terminal_interface-curses__ads.htm#973_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#974_7">Top_Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#975_7">Bottom_Line</A>))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Scroll_Region;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#984_14">Update_Screen</A><FONT COLOR=red><A NAME="1072_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1074_16">Do_Update</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1074_16">Do_Update</A>, "doupdate");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1074_16">Do_Update</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Update_Screen;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#989_14">Refresh</A><FONT COLOR=red><A NAME="1082_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#989_23">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1084_16">Wrefresh</A></FONT> (<FONT COLOR=red><A NAME="1084_26">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1084_16">Wrefresh</A>, "wrefresh");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1084_16">Wrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#989_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Refresh;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#995_14">Refresh_Without_Update</A><FONT COLOR=red><A NAME="1092_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#996_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1095_16">Wnoutrefresh</A></FONT> (<FONT COLOR=red><A NAME="1095_30">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1095_16">Wnoutrefresh</A>, "wnoutrefresh");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1095_16">Wnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#996_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Refresh_Without_Update;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1002_14">Redraw</A><FONT COLOR=red><A NAME="1103_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1002_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1105_16">Redrawwin</A></FONT> (<FONT COLOR=red><A NAME="1105_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1105_16">Redrawwin</A>, "redrawwin");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1105_16">Redrawwin</A> (<A HREF="terminal_interface-curses__ads.htm#1002_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Redraw;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1006_14">Redraw</A><FONT COLOR=red><A NAME="1113_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1006_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1007_22">Begin_Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1008_22">Line_Count</A> : <b>in</b> Positive)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1118_16">Wredrawln</A></FONT> (<FONT COLOR=red><A NAME="1118_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1118_41">First</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>; <FONT COLOR=red><A NAME="1118_56">Cnt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1118_16">Wredrawln</A>, "wredrawln");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1118_16">Wredrawln</A> (<A HREF="terminal_interface-curses__ads.htm#1006_22">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1007_22">Begin_Line</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1008_22">Line_Count</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Redraw;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1017_14">Erase</A><FONT COLOR=red><A NAME="1130_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1017_21">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1132_16">Werase</A></FONT> (<FONT COLOR=red><A NAME="1132_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1132_16">Werase</A>, "werase");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1132_16">Werase</A> (<A HREF="terminal_interface-curses__ads.htm#1017_21">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Erase;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1022_14">Clear</A><FONT COLOR=red><A NAME="1140_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1023_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1142_16">Wclear</A></FONT> (<FONT COLOR=red><A NAME="1142_24">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1142_16">Wclear</A>, "wclear");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1142_16">Wclear</A> (<A HREF="terminal_interface-curses__ads.htm#1023_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Clear;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1028_14">Clear_To_End_Of_Screen</A><FONT COLOR=red><A NAME="1150_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1029_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1152_16">Wclearbot</A></FONT> (<FONT COLOR=red><A NAME="1152_27">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1152_16">Wclearbot</A>, "wclrtobot");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1152_16">Wclearbot</A> (<A HREF="terminal_interface-curses__ads.htm#1029_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Clear_To_End_Of_Screen;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1034_14">Clear_To_End_Of_Line</A><FONT COLOR=red><A NAME="1160_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1035_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1162_16">Wcleareol</A></FONT> (<FONT COLOR=red><A NAME="1162_27">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1162_16">Wcleareol</A>, "wclrtoeol");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1162_16">Wcleareol</A> (<A HREF="terminal_interface-curses__ads.htm#1035_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Clear_To_End_Of_Line;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1044_14">Set_Background</A><FONT COLOR=red><A NAME="1170_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1045_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1046_7">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+ <b>is</b>
+ <b>procedure</b> <FONT COLOR=red><A NAME="1174_17">WBackground</A></FONT> (<FONT COLOR=red><A NAME="1174_30">W</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1174_45">Ch</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>);
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1174_17">WBackground</A>, "wbkgdset");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#1174_17">WBackground</A> (<A HREF="terminal_interface-curses__ads.htm#1045_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1046_7">Ch</A>));
+ <b>end</b> Set_Background;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1051_14">Change_Background</A><FONT COLOR=red><A NAME="1180_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1052_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1053_7">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1184_16">WChangeBkgd</A></FONT> (<FONT COLOR=red><A NAME="1184_29">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1184_41">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1184_16">WChangeBkgd</A>, "wbkgd");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1184_16">WChangeBkgd</A> (<A HREF="terminal_interface-curses__ads.htm#1052_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1053_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Change_Background;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1058_13">Get_Background</A><FONT COLOR=red><A NAME="1192_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1058_29">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1195_16">Wgetbkgd</A></FONT> (<FONT COLOR=red><A NAME="1195_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1195_16">Wgetbkgd</A>, "getbkgd");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1195_16">Wgetbkgd</A> (<A HREF="terminal_interface-curses__ads.htm#1058_29">Win</A>));
+ <b>end</b> Get_Background;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1084_14">Change_Lines_Status</A><FONT COLOR=red><A NAME="1201_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1084_35">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1085_35">Start</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1086_35">Count</A> : <b>in</b> Positive;
+ <A HREF="terminal_interface-curses__ads.htm#1087_35">State</A> : <b>in</b> Boolean)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1206_16">Wtouchln</A></FONT> (<FONT COLOR=red><A NAME="1206_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1207_26">Sta</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1208_26">Cnt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1209_26">Chg</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1206_16">Wtouchln</A>, "wtouchln");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1206_16">Wtouchln</A> (<A HREF="terminal_interface-curses__ads.htm#1084_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1085_35">Start</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1086_35">Count</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#1087_35">State</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Change_Lines_Status;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1073_14">Touch</A><FONT COLOR=red><A NAME="1218_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1073_21">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="1220_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1221_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#1073_21">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1220_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#1221_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1084_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#1073_21">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#1220_7">Y</A>), True);
+ <b>end</b> Touch;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1068_14">Untouch</A><FONT COLOR=red><A NAME="1227_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1068_23">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="1229_7">Y</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1230_7">X</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#1068_23">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1229_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#1230_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1084_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#1068_23">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#1229_7">Y</A>), False);
+ <b>end</b> Untouch;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1077_14">Touch</A><FONT COLOR=red><A NAME="1236_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1077_21">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1078_21">Start</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1079_21">Count</A> : <b>in</b> Positive)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1084_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#1077_21">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1078_21">Start</A>, <A HREF="terminal_interface-curses__ads.htm#1079_21">Count</A>, True);
+ <b>end</b> Touch;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1092_13">Is_Touched</A><FONT COLOR=red><A NAME="1244_13"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1092_25">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1093_25">Line</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1248_16">WLineTouched</A></FONT> (<FONT COLOR=red><A NAME="1248_30">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1248_42">L</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1248_16">WLineTouched</A>, "is_linetouched");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1248_16">WLineTouched</A> (<A HREF="terminal_interface-curses__ads.htm#1092_25">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1093_25">Line</A>)) = <A HREF="terminal_interface-curses__ads.htm#1736_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> Is_Touched;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1097_13">Is_Touched</A><FONT COLOR=red><A NAME="1258_13"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1097_25">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>) <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1261_16">WWinTouched</A></FONT> (<FONT COLOR=red><A NAME="1261_29">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1261_16">WWinTouched</A>, "is_wintouched");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1261_16">WWinTouched</A> (<A HREF="terminal_interface-curses__ads.htm#1097_25">Win</A>) = <A HREF="terminal_interface-curses__ads.htm#1736_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> Is_Touched;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1106_14">Copy</A><FONT COLOR=red><A NAME="1271_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1107_7">Source_Window</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1108_7">Destination_Window</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1109_7">Source_Top_Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1110_7">Source_Left_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1111_7">Destination_Top_Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1112_7">Destination_Left_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1113_7">Destination_Bottom_Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1114_7">Destination_Right_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1115_7">Non_Destructive_Mode</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1282_16">Copywin</A></FONT> (<FONT COLOR=red><A NAME="1282_25">Src</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1283_25">Dst</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1284_25">Str</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1285_25">Slc</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1286_25">Dtr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1287_25">Dlc</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1288_25">Dbr</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1289_25">Drc</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1290_25">Ndm</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1282_16">Copywin</A>, "copywin");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1282_16">Copywin</A> (<A HREF="terminal_interface-curses__ads.htm#1107_7">Source_Window</A>,
+ <A HREF="terminal_interface-curses__ads.htm#1108_7">Destination_Window</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1109_7">Source_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1110_7">Source_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1111_7">Destination_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1112_7">Destination_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1113_7">Destination_Bottom_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1114_7">Destination_Right_Column</A>),
+ Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#1115_7">Non_Destructive_Mode</A>)
+ ) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Copy;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1120_14">Overwrite</A><FONT COLOR=red><A NAME="1307_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1120_25">Source_Window</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1121_25">Destination_Window</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1311_16">Overwrite</A></FONT> (<FONT COLOR=red><A NAME="1311_27">Src</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1311_41">Dst</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1311_16">Overwrite</A>, "overwrite");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1311_16">Overwrite</A> (<A HREF="terminal_interface-curses__ads.htm#1120_25">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#1121_25">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Overwrite;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1126_14">Overlay</A><FONT COLOR=red><A NAME="1319_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1126_23">Source_Window</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1127_23">Destination_Window</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1323_16">Overlay</A></FONT> (<FONT COLOR=red><A NAME="1323_25">Src</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1323_39">Dst</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1323_16">Overlay</A>, "overlay");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1323_16">Overlay</A> (<A HREF="terminal_interface-curses__ads.htm#1126_23">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#1127_23">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Overlay;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1136_14">Insert_Delete_Lines</A><FONT COLOR=red><A NAME="1332_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1137_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1138_7">Lines</A> : <b>in</b> Integer := 1) <FONT COLOR=green><EM>-- default is to insert one line above</EM></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1336_16">Winsdelln</A></FONT> (<FONT COLOR=red><A NAME="1336_27">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1336_39">N</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1336_16">Winsdelln</A>, "winsdelln");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1336_16">Winsdelln</A> (<A HREF="terminal_interface-curses__ads.htm#1137_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1138_7">Lines</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Insert_Delete_Lines;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1143_14">Delete_Line</A><FONT COLOR=red><A NAME="1344_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1143_27">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1136_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#1143_27">Win</A>, -1);
+ <b>end</b> Delete_Line;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1148_14">Insert_Line</A><FONT COLOR=red><A NAME="1350_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1148_27">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1136_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#1148_27">Win</A>, 1);
+ <b>end</b> Insert_Line;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1157_14">Get_Size</A><FONT COLOR=red><A NAME="1358_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1158_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1159_7">Number_Of_Lines</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1160_7">Number_Of_Columns</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>)
+ <b>is</b>
+ <FONT COLOR=green><EM>-- Please note: in ncurses they are one off.</EM></FONT>
+ <FONT COLOR=green><EM>-- This might be different in other implementations of curses</EM></FONT>
+ <FONT COLOR=red><A NAME="1365_7">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1158_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1722_4">Offset_maxy</A>)) + <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1733_4">Offset_XY</A>);
+ <FONT COLOR=red><A NAME="1366_7">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1158_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1723_4">Offset_maxx</A>)) + <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1733_4">Offset_XY</A>);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1159_7">Number_Of_Lines</A> := <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#1365_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1160_7">Number_Of_Columns</A> := <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#1366_7">X</A>);
+ <b>end</b> Get_Size;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1165_14">Get_Window_Position</A><FONT COLOR=red><A NAME="1372_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1166_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1167_7">Top_Left_Line</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1168_7">Top_Left_Column</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="1377_7">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> := <A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1166_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1724_4">Offset_begy</A>);
+ <FONT COLOR=red><A NAME="1378_7">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> := <A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1166_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1725_4">Offset_begx</A>);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1167_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1377_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1168_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1378_7">X</A>);
+ <b>end</b> Get_Window_Position;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1173_14">Get_Cursor_Position</A><FONT COLOR=red><A NAME="1384_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1174_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1175_7">Line</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1176_7">Column</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="1389_7">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> := <A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1174_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1726_4">Offset_cury</A>);
+ <FONT COLOR=red><A NAME="1390_7">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> := <A HREF="terminal_interface-curses__adb.htm#89_13">W_Get_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1174_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1727_4">Offset_curx</A>);
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1175_7">Line</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1389_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1176_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1390_7">X</A>);
+ <b>end</b> Get_Cursor_Position;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1181_14">Get_Origin_Relative_To_Parent</A><FONT COLOR=red><A NAME="1396_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1182_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1183_7">Top_Left_Line</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1184_7">Top_Left_Column</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1185_7">Is_Not_A_Subwindow</A> : <b>out</b> Boolean)
+ <b>is</b>
+ <FONT COLOR=red><A NAME="1402_7">Y</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#88_13">W_Get_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1182_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1729_4">Offset_pary</A>);
+ <FONT COLOR=red><A NAME="1403_7">X</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#88_13">W_Get_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1182_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1730_4">Offset_parx</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1402_7">Y</A> = -1 <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#1183_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>'Last;
+ <A HREF="terminal_interface-curses__ads.htm#1184_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>'Last;
+ <A HREF="terminal_interface-curses__ads.htm#1185_7">Is_Not_A_Subwindow</A> := True;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__ads.htm#1183_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1402_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1184_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#1403_7">X</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1185_7">Is_Not_A_Subwindow</A> := False;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Get_Origin_Relative_To_Parent;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1196_13">New_Pad</A><FONT COLOR=red><A NAME="1416_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1196_22">Lines</A> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1197_22">Columns</A> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1419_16">Newpad</A></FONT> (<FONT COLOR=red><A NAME="1419_24">Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>; <FONT COLOR=red><A NAME="1419_39">Columns</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1419_16">Newpad</A>, "newpad");
+
+ <FONT COLOR=red><A NAME="1422_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#1422_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#1419_16">Newpad</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1196_22">Lines</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1197_22">Columns</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1422_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#1422_7">W</A>;
+ <b>end</b> New_Pad;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1202_13">Sub_Pad</A><FONT COLOR=red><A NAME="1431_13"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1203_7">Pad</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1204_7">Number_Of_Lines</A> : <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1205_7">Number_Of_Columns</A> : <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1206_7">First_Line_Position</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1207_7">First_Column_Position</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1438_16">Subpad</A></FONT>
+ (<FONT COLOR=red><A NAME="1439_10">Pad</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1440_10">Number_Of_Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1441_10">Number_Of_Columns</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1442_10">First_Line_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1443_10">First_Column_Position</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1438_16">Subpad</A>, "subpad");
+
+ <FONT COLOR=red><A NAME="1446_7">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#1446_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#1438_16">Subpad</A> (<A HREF="terminal_interface-curses__ads.htm#1203_7">Pad</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1204_7">Number_Of_Lines</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1205_7">Number_Of_Columns</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1206_7">First_Line_Position</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1207_7">First_Column_Position</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1446_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#57_4">Null_Window</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#1446_7">W</A>;
+ <b>end</b> Sub_Pad;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1212_14">Refresh</A><FONT COLOR=red><A NAME="1459_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1213_7">Pad</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1214_7">Source_Top_Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1215_7">Source_Left_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1216_7">Destination_Top_Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1217_7">Destination_Left_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1218_7">Destination_Bottom_Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1219_7">Destination_Right_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1468_16">Prefresh</A></FONT>
+ (<FONT COLOR=red><A NAME="1469_10">Pad</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1470_10">Source_Top_Row</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1471_10">Source_Left_Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1472_10">Destination_Top_Row</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1473_10">Destination_Left_Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1474_10">Destination_Bottom_Row</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1475_10">Destination_Right_Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1468_16">Prefresh</A>, "prefresh");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1468_16">Prefresh</A> (<A HREF="terminal_interface-curses__ads.htm#1213_7">Pad</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1214_7">Source_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1215_7">Source_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1216_7">Destination_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1217_7">Destination_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1218_7">Destination_Bottom_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1219_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Refresh;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1224_14">Refresh_Without_Update</A><FONT COLOR=red><A NAME="1489_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1225_7">Pad</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1226_7">Source_Top_Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1227_7">Source_Left_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1228_7">Destination_Top_Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1229_7">Destination_Left_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1230_7">Destination_Bottom_Row</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1231_7">Destination_Right_Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1498_16">Pnoutrefresh</A></FONT>
+ (<FONT COLOR=red><A NAME="1499_10">Pad</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1500_10">Source_Top_Row</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1501_10">Source_Left_Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1502_10">Destination_Top_Row</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1503_10">Destination_Left_Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1504_10">Destination_Bottom_Row</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1505_10">Destination_Right_Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1498_16">Pnoutrefresh</A>, "pnoutrefresh");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1498_16">Pnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#1225_7">Pad</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1226_7">Source_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1227_7">Source_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1228_7">Destination_Top_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1229_7">Destination_Left_Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1230_7">Destination_Bottom_Row</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1231_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Refresh_Without_Update;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1236_14">Add_Character_To_Pad_And_Echo_It</A><FONT COLOR=red><A NAME="1519_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1237_7">Pad</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1238_7">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1523_16">Pechochar</A></FONT> (<FONT COLOR=red><A NAME="1523_27">Pad</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1523_41">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1523_16">Pechochar</A>, "pechochar");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1523_16">Pechochar</A> (<A HREF="terminal_interface-curses__ads.htm#1237_7">Pad</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1238_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Add_Character_To_Pad_And_Echo_It;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1241_14">Add_Character_To_Pad_And_Echo_It</A><FONT COLOR=red><A NAME="1532_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1242_7">Pad</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1243_7">Ch</A> : <b>in</b> Character)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#1241_14">Add_Character_To_Pad_And_Echo_It</A>
+ (<A HREF="terminal_interface-curses__ads.htm#1242_7">Pad</A>,
+ <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>'(Ch => <A HREF="terminal_interface-curses__ads.htm#1243_7">Ch</A>,
+ Color => <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+ <b>end</b> Add_Character_To_Pad_And_Echo_It;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1251_14">Scroll</A><FONT COLOR=red><A NAME="1544_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1251_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1252_22">Amount</A> : <b>in</b> Integer := 1)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1547_16">Wscrl</A></FONT> (<FONT COLOR=red><A NAME="1547_23">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1547_37">N</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1547_16">Wscrl</A>, "wscrl");
+
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1547_16">Wscrl</A> (<A HREF="terminal_interface-curses__ads.htm#1251_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1252_22">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Scroll;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1261_14">Delete_Character</A><FONT COLOR=red><A NAME="1557_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1261_32">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1559_16">Wdelch</A></FONT> (<FONT COLOR=red><A NAME="1559_24">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1559_16">Wdelch</A>, "wdelch");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1559_16">Wdelch</A> (<A HREF="terminal_interface-curses__ads.htm#1261_32">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Delete_Character;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1265_14">Delete_Character</A><FONT COLOR=red><A NAME="1567_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1266_7">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1267_7">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1268_7">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1572_16">Mvwdelch</A></FONT> (<FONT COLOR=red><A NAME="1572_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1573_26">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1574_26">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1572_16">Mvwdelch</A>, "mvwdelch");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1572_16">Mvwdelch</A> (<A HREF="terminal_interface-curses__ads.htm#1266_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1267_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1268_7">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Delete_Character;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1277_13">Peek</A><FONT COLOR=red><A NAME="1582_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1277_19">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>)
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1585_16">Winch</A></FONT> (<FONT COLOR=red><A NAME="1585_23">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1585_16">Winch</A>, "winch");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1585_16">Winch</A> (<A HREF="terminal_interface-curses__ads.htm#1277_19">Win</A>));
+ <b>end</b> Peek;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1282_13">Peek</A><FONT COLOR=red><A NAME="1591_13"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1283_7">Win</A> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1284_7">Line</A> : <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1285_7">Column</A> : <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1596_16">Mvwinch</A></FONT> (<FONT COLOR=red><A NAME="1596_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1597_25">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1598_25">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1596_16">Mvwinch</A>, "mvwinch");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1596_16">Mvwinch</A> (<A HREF="terminal_interface-curses__ads.htm#1283_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1284_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1285_7">Column</A>)));
+ <b>end</b> Peek;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1294_14">Insert</A><FONT COLOR=red><A NAME="1604_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1294_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1295_22">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1607_16">Winsch</A></FONT> (<FONT COLOR=red><A NAME="1607_24">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>; <FONT COLOR=red><A NAME="1607_38">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1607_16">Winsch</A>, "winsch");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1607_16">Winsch</A> (<A HREF="terminal_interface-curses__ads.htm#1294_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1295_22">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Insert;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1299_14">Insert</A><FONT COLOR=red><A NAME="1615_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1299_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1300_22">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1301_22">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1302_22">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1621_16">Mvwinsch</A></FONT> (<FONT COLOR=red><A NAME="1621_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1622_26">Lin</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1623_26">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1624_26">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1621_16">Mvwinsch</A>, "mvwinsch");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1621_16">Mvwinsch</A> (<A HREF="terminal_interface-curses__ads.htm#1299_22">Win</A>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1300_22">Line</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1301_22">Column</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1302_22">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Insert;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1310_14">Insert</A><FONT COLOR=red><A NAME="1635_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1310_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1311_22">Str</A> : <b>in</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#1312_22">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+ <b>function</b> <FONT COLOR=red><A NAME="1640_16">Winsnstr</A></FONT> (<FONT COLOR=red><A NAME="1640_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ Str : Char_Ptr;
+ <FONT COLOR=red><A NAME="1642_26">Len</A></FONT> : Integer := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1640_16">Winsnstr</A>, "winsnstr");
+
+ <FONT COLOR=red><A NAME="1645_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1311_22">Str</A>'Length);
+ <FONT COLOR=red><A NAME="1646_7">Length</A></FONT> : size_t;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses__ads.htm#1311_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#1645_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#1646_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1640_16">Winsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1310_22">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1645_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#1645_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses__ads.htm#1312_22">Len</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Insert;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1317_14">Insert</A><FONT COLOR=red><A NAME="1654_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1317_22">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1318_22">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1319_22">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1320_22">Str</A> : <b>in</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#1321_22">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+ <b>function</b> <FONT COLOR=red><A NAME="1662_16">Mvwinsnstr</A></FONT> (<FONT COLOR=red><A NAME="1662_28">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1663_28">Line</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1664_28">Column</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ Str : Char_Ptr;
+ <FONT COLOR=red><A NAME="1666_28">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1662_16">Mvwinsnstr</A>, "mvwinsnstr");
+
+ <FONT COLOR=red><A NAME="1669_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1320_22">Str</A>'Length);
+ <FONT COLOR=red><A NAME="1670_7">Length</A></FONT> : size_t;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses__ads.htm#1320_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#1669_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#1670_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1662_16">Mvwinsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1317_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1318_22">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1319_22">Column</A>),
+ <A HREF="terminal_interface-curses__adb.htm#1669_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#1669_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1321_22">Len</A>))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Insert;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1331_14">Peek</A><FONT COLOR=red><A NAME="1680_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1331_20">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A> : <b>out</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#1333_20">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1684_16">Winnstr</A></FONT> (<FONT COLOR=red><A NAME="1684_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1685_25">Str</A></FONT> : char_array;
+ <FONT COLOR=red><A NAME="1686_25">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1684_16">Winnstr</A>, "winnstr");
+
+ <FONT COLOR=red><A NAME="1689_7">N</A></FONT> : Integer := <A HREF="terminal_interface-curses__ads.htm#1333_20">Len</A>;
+ <FONT COLOR=red><A NAME="1690_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'Length);
+ <FONT COLOR=red><A NAME="1691_7">Cnt</A></FONT> : Natural;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1689_7">N</A> < 0 <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#1689_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'Length;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1689_7">N</A> > <A HREF="terminal_interface-curses__ads.htm#1332_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#1690_7">Txt</A> (0) := <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char'First;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1684_16">Winnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1331_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1690_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#1689_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ To_Ada (<A HREF="terminal_interface-curses__adb.htm#1690_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>, <A HREF="terminal_interface-curses__adb.htm#1691_7">Cnt</A>, True);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1691_7">Cnt</A> < <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'Length <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#1691_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#1332_20">Str</A>'Last) := (<b>others</b> => ' ');
+ <b>end</b> <b>if</b>;
+ <b>end</b> Peek;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1338_14">Peek</A><FONT COLOR=red><A NAME="1709_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1338_20">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1339_20">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1340_20">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1341_20">Str</A> : <b>out</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#1342_20">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#1338_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1339_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#1340_20">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1338_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#1338_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1341_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#1342_20">Len</A>);
+ <b>end</b> Peek;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1351_14">Peek</A><FONT COLOR=red><A NAME="1721_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1351_20">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Attributed_String</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1353_20">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>type</b> Chtype_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="1727_16">Winchnstr</A></FONT> (<FONT COLOR=red><A NAME="1727_27">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ Str : Chtype_Ptr;
+ <FONT COLOR=red><A NAME="1729_27">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1727_16">Winchnstr</A>, "winchnstr");
+
+ <FONT COLOR=red><A NAME="1732_7">N</A></FONT> : Integer := <A HREF="terminal_interface-curses__ads.htm#1353_20">Len</A>;
+ <FONT COLOR=red><A NAME="1733_7">Txt</A></FONT> : <A HREF="terminal_interface-curses__adb.htm#58_9">chtype_array</A> (0 .. <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'Length);
+ <FONT COLOR=red><A NAME="1734_7">Cnt</A></FONT> : Natural := 0;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1732_7">N</A> < 0 <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#1732_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'Length;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1732_7">N</A> > <A HREF="terminal_interface-curses__ads.htm#1352_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#1727_16">Winchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1351_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1733_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#1733_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#1732_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>for</b> <FONT COLOR=red><A NAME="1745_11">To</A></FONT> <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'<b>Range</b> <b>loop</b>
+ <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses__adb.htm#1733_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A>)) = <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A> (<A HREF="terminal_interface-curses__adb.htm#1745_11">To</A>) := <A HREF="terminal_interface-curses__adb.htm#1733_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A>));
+ <A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A> := <A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A> + 1;
+ <b>end</b> <b>loop</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A> < <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'Length <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#1734_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#1352_20">Str</A>'Last) :=
+ (<b>others</b> => (Ch => ' ',
+ Color => <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>));
+ <b>end</b> <b>if</b>;
+ <b>end</b> Peek;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1358_14">Peek</A><FONT COLOR=red><A NAME="1758_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1358_20">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1359_20">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1360_20">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1361_20">Str</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Attributed_String</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1362_20">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#1358_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1359_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#1360_20">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1358_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#1358_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1361_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#1362_20">Len</A>);
+ <b>end</b> Peek;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1372_14">Get</A><FONT COLOR=red><A NAME="1770_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1372_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A> : <b>out</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#1374_19">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1774_16">Wgetnstr</A></FONT> (<FONT COLOR=red><A NAME="1774_26">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1775_26">Str</A></FONT> : char_array;
+ <FONT COLOR=red><A NAME="1776_26">Len</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1774_16">Wgetnstr</A>, "wgetnstr");
+
+ <FONT COLOR=red><A NAME="1779_7">N</A></FONT> : Integer := <A HREF="terminal_interface-curses__ads.htm#1374_19">Len</A>;
+ <FONT COLOR=red><A NAME="1780_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'Length);
+ <FONT COLOR=red><A NAME="1781_7">Cnt</A></FONT> : Natural;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1779_7">N</A> < 0 <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#1779_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'Length;
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1779_7">N</A> > <A HREF="terminal_interface-curses__ads.htm#1373_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#1780_7">Txt</A> (0) := <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char'First;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1774_16">Wgetnstr</A> (<A HREF="terminal_interface-curses__ads.htm#1372_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#1780_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#1779_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ To_Ada (<A HREF="terminal_interface-curses__adb.htm#1780_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#1781_7">Cnt</A>, True);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1781_7">Cnt</A> < <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'Length <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#1781_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#1373_19">Str</A>'Last) := (<b>others</b> => ' ');
+ <b>end</b> <b>if</b>;
+ <b>end</b> Get;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1378_14">Get</A><FONT COLOR=red><A NAME="1799_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1378_19">Win</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1379_19">Line</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1380_19">Column</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1381_19">Str</A> : <b>out</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#1382_19">Len</A> : <b>in</b> Integer := -1)
+ <b>is</b>
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__ads.htm#503_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#1378_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1379_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#1380_19">Column</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1378_14">Get</A> (<A HREF="terminal_interface-curses__ads.htm#1378_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#1381_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#1382_19">Len</A>);
+ <b>end</b> Get;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1400_14">Init_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1811_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1401_7">Format</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1392_9">Soft_Label_Key_Format</A> := <A HREF="terminal_interface-curses__ads.htm#1392_35">Three_Two_Three</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1814_16">Slk_Init</A></FONT> (<FONT COLOR=red><A NAME="1814_26">Fmt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1814_16">Slk_Init</A>, "slk_init");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1814_16">Slk_Init</A> (<A HREF="terminal_interface-curses__ads.htm#1392_9">Soft_Label_Key_Format</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#1401_7">Format</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Init_Soft_Label_Keys;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1406_14">Set_Soft_Label_Key</A><FONT COLOR=red><A NAME="1822_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1406_34">Label</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1396_9">Label_Number</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1407_34">Text</A> : <b>in</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#1408_34">Fmt</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1397_9">Label_Justification</A> := <A HREF="terminal_interface-curses__ads.htm#1397_33">Left</A>)
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+ <b>function</b> <FONT COLOR=red><A NAME="1827_16">Slk_Set</A></FONT> (<FONT COLOR=red><A NAME="1827_25">Label</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ Txt : Char_Ptr;
+ <FONT COLOR=red><A NAME="1829_25">Fmt</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1827_16">Slk_Set</A>, "slk_set");
+
+ <FONT COLOR=red><A NAME="1832_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1407_34">Text</A>'Length);
+ <FONT COLOR=red><A NAME="1833_7">Len</A></FONT> : size_t;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses__ads.htm#1407_34">Text</A>, <A HREF="terminal_interface-curses__adb.htm#1832_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#1833_7">Len</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1827_16">Slk_Set</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1406_34">Label</A>),
+ <A HREF="terminal_interface-curses__adb.htm#1832_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#1832_7">Txt</A>'First)'<b>Access</b>,
+ <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1397_9">Label_Justification</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#1408_34">Fmt</A>)))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Soft_Label_Key;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1413_14">Refresh_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1844_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1846_16">Slk_Refresh</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1846_16">Slk_Refresh</A>, "slk_refresh");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1846_16">Slk_Refresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Refresh_Soft_Label_Keys;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1418_14">Refresh_Soft_Label_Keys_Without_Update</A><FONT COLOR=red><A NAME="1854_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1856_16">Slk_Noutrefresh</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1856_16">Slk_Noutrefresh</A>, "slk_noutrefresh");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1856_16">Slk_Noutrefresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Refresh_Soft_Label_Keys_Without_Update;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1423_14">Get_Soft_Label_Key</A><FONT COLOR=red><A NAME="1864_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1423_34">Label</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1396_9">Label_Number</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1424_34">Text</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1867_16">Slk_Label</A></FONT> (<FONT COLOR=red><A NAME="1867_27">Label</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1867_16">Slk_Label</A>, "slk_label");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#1867_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1423_34">Label</A>)), <A HREF="terminal_interface-curses__ads.htm#1424_34">Text</A>);
+ <b>end</b> Get_Soft_Label_Key;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1428_13">Get_Soft_Label_Key</A><FONT COLOR=red><A NAME="1873_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1428_33">Label</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1396_9">Label_Number</A>) <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1875_16">Slk_Label</A></FONT> (<FONT COLOR=red><A NAME="1875_27">Label</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1875_16">Slk_Label</A>, "slk_label");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#1875_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1428_33">Label</A>)));
+ <b>end</b> Get_Soft_Label_Key;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1434_14">Clear_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1881_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1883_16">Slk_Clear</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1883_16">Slk_Clear</A>, "slk_clear");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1883_16">Slk_Clear</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Clear_Soft_Label_Keys;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1439_14">Restore_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1891_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1893_16">Slk_Restore</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1893_16">Slk_Restore</A>, "slk_restore");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1893_16">Slk_Restore</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Restore_Soft_Label_Keys;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1444_14">Touch_Soft_Label_Keys</A><FONT COLOR=red><A NAME="1901_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1903_16">Slk_Touch</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1903_16">Slk_Touch</A>, "slk_touch");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1903_16">Slk_Touch</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Touch_Soft_Label_Keys;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1449_14">Switch_Soft_Label_Key_Attributes</A><FONT COLOR=red><A NAME="1911_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1450_7">Attr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1451_7">On</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1915_16">Slk_Attron</A></FONT> (<FONT COLOR=red><A NAME="1915_28">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1915_16">Slk_Attron</A>, "slk_attron");
+ <b>function</b> <FONT COLOR=red><A NAME="1917_16">Slk_Attroff</A></FONT> (<FONT COLOR=red><A NAME="1917_29">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1917_16">Slk_Attroff</A>, "slk_attroff");
+
+ <FONT COLOR=red><A NAME="1920_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1921_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch => Character'First,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#1450_7">Attr</A>,
+ Color => <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#1451_7">On</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#1920_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#1915_16">Slk_Attron</A> (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__adb.htm#1921_7">Ch</A>));
+ <b>else</b>
+ <A HREF="terminal_interface-curses__adb.htm#1920_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#1917_16">Slk_Attroff</A> (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__adb.htm#1921_7">Ch</A>));
+ <b>end</b> <b>if</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1920_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Switch_Soft_Label_Key_Attributes;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1457_14">Set_Soft_Label_Key_Attributes</A><FONT COLOR=red><A NAME="1935_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1458_7">Attr</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#348_4">Normal_Video</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1459_7">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>'First)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1939_16">Slk_Attrset</A></FONT> (<FONT COLOR=red><A NAME="1939_29">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1939_16">Slk_Attrset</A>, "slk_attrset");
+
+ <FONT COLOR=red><A NAME="1942_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := (Ch => Character'First,
+ Attr => <A HREF="terminal_interface-curses__ads.htm#1458_7">Attr</A>,
+ Color => <A HREF="terminal_interface-curses__ads.htm#1459_7">Color</A>);
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1939_16">Slk_Attrset</A> (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__adb.htm#1942_7">Ch</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Soft_Label_Key_Attributes;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1464_13">Get_Soft_Label_Key_Attributes</A><FONT COLOR=red><A NAME="1951_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1953_16">Slk_Attr</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1953_16">Slk_Attr</A>, "slk_attr");
+
+ <FONT COLOR=red><A NAME="1956_7">Attr</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A> := <A HREF="terminal_interface-curses__adb.htm#1953_16">Slk_Attr</A>;
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1956_7">Attr</A>).<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <b>end</b> Get_Soft_Label_Key_Attributes;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1468_13">Get_Soft_Label_Key_Attributes</A><FONT COLOR=red><A NAME="1961_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1963_16">Slk_Attr</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1963_16">Slk_Attr</A>, "slk_attr");
+
+ <FONT COLOR=red><A NAME="1966_7">Attr</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A> := <A HREF="terminal_interface-curses__adb.htm#1963_16">Slk_Attr</A>;
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#1966_7">Attr</A>).<A HREF="terminal_interface-curses__ads.htm#353_10">Color</A>;
+ <b>end</b> Get_Soft_Label_Key_Attributes;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1473_14">Set_Soft_Label_Key_Color</A><FONT COLOR=red><A NAME="1971_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1473_40">Pair</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1973_16">Slk_Color</A></FONT> (<FONT COLOR=red><A NAME="1973_27">Color</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1973_16">Slk_Color</A>, "slk_color");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1973_16">Slk_Color</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1473_40">Pair</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Soft_Label_Key_Color;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1482_14">Enable_Key</A><FONT COLOR=red><A NAME="1982_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1482_26">Key</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1483_26">Enable</A> : <b>in</b> Boolean := True)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="1985_16">Keyok</A></FONT> (<FONT COLOR=red><A NAME="1985_23">Keycode</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="1986_23">On_Off</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1985_16">Keyok</A>, "keyok");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1985_16">Keyok</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1482_26">Key</A>), <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#1483_26">Enable</A>)))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Enable_Key;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1492_14">Define_Key</A><FONT COLOR=red><A NAME="1995_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1492_26">Definition</A> : <b>in</b> String;
+ <A HREF="terminal_interface-curses__ads.htm#1493_26">Key</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A>)
+ <b>is</b>
+ <b>type</b> Char_Ptr <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#23_9">Interfaces</A>.C.char;
+ <b>function</b> <FONT COLOR=red><A NAME="1999_16">Defkey</A></FONT> (Def : Char_Ptr;
+ <FONT COLOR=red><A NAME="2000_24">Key</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#1999_16">Defkey</A>, "define_key");
+
+ <FONT COLOR=red><A NAME="2003_7">Txt</A></FONT> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#1492_26">Definition</A>'Length);
+ <FONT COLOR=red><A NAME="2004_7">Length</A></FONT> : size_t;
+ <b>begin</b>
+ To_C (<A HREF="terminal_interface-curses__ads.htm#1492_26">Definition</A>, <A HREF="terminal_interface-curses__adb.htm#2003_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#2004_7">Length</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#1999_16">Defkey</A> (<A HREF="terminal_interface-curses__adb.htm#2003_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#2003_7">Txt</A>'First)'<b>Access</b>, <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1493_26">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Define_Key;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1516_14">Un_Control</A><FONT COLOR=red><A NAME="2012_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1516_26">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1517_26">Str</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2015_16">Unctrl</A></FONT> (<FONT COLOR=red><A NAME="2015_24">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2015_16">Unctrl</A>, "unctrl");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2015_16">Unctrl</A> (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1516_26">Ch</A>)), <A HREF="terminal_interface-curses__ads.htm#1517_26">Str</A>);
+ <b>end</b> Un_Control;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1521_13">Un_Control</A><FONT COLOR=red><A NAME="2021_13"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1521_25">Ch</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A>) <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2023_16">Unctrl</A></FONT> (<FONT COLOR=red><A NAME="2023_24">Ch</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>) <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2023_16">Unctrl</A>, "unctrl");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2023_16">Unctrl</A> (<A HREF="terminal_interface-curses-aux__ads.htm#104_13">AttrChar_To_Chtype</A> (<A HREF="terminal_interface-curses__ads.htm#1521_25">Ch</A>)));
+ <b>end</b> Un_Control;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1527_14">Delay_Output</A><FONT COLOR=red><A NAME="2029_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1527_28">Msecs</A> : <b>in</b> Natural)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2031_16">Delayoutput</A></FONT> (<FONT COLOR=red><A NAME="2031_29">Msecs</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2031_16">Delayoutput</A>, "delay_output");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2031_16">Delayoutput</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1527_28">Msecs</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Delay_Output;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1532_14">Flush_Input</A><FONT COLOR=red><A NAME="2039_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2041_16">Flushinp</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2041_16">Flushinp</A>, "flushinp");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2041_16">Flushinp</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b> <FONT COLOR=green><EM>-- docu says that never happens, but...</EM></FONT>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Flush_Input;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1541_13">Baudrate</A><FONT COLOR=red><A NAME="2049_13"></A></FONT> <b>return</b> Natural
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2051_16">Baud</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2051_16">Baud</A>, "baudrate");
+ <b>begin</b>
+ <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#2051_16">Baud</A>);
+ <b>end</b> Baudrate;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1546_13">Erase_Character</A><FONT COLOR=red><A NAME="2057_13"></A></FONT> <b>return</b> Character
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2059_16">Erasechar</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2059_16">Erasechar</A>, "erasechar");
+ <b>begin</b>
+ <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#2059_16">Erasechar</A>);
+ <b>end</b> Erase_Character;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1551_13">Kill_Character</A><FONT COLOR=red><A NAME="2065_13"></A></FONT> <b>return</b> Character
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2067_16">Killchar</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2067_16">Killchar</A>, "killchar");
+ <b>begin</b>
+ <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#2067_16">Killchar</A>);
+ <b>end</b> Kill_Character;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1556_13">Has_Insert_Character</A><FONT COLOR=red><A NAME="2073_13"></A></FONT> <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2075_16">Has_Ic</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2075_16">Has_Ic</A>, "has_ic");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2075_16">Has_Ic</A> = <A HREF="terminal_interface-curses__ads.htm#1736_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> Has_Insert_Character;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1561_13">Has_Insert_Line</A><FONT COLOR=red><A NAME="2085_13"></A></FONT> <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2087_16">Has_Il</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2087_16">Has_Il</A>, "has_il");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2087_16">Has_Il</A> = <A HREF="terminal_interface-curses__ads.htm#1736_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> Has_Insert_Line;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1566_13">Supported_Attributes</A><FONT COLOR=red><A NAME="2097_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Character_Attribute_Set</A>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2099_16">Termattrs</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#63_12">C_Chtype</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2099_16">Termattrs</A>, "termattrs");
+
+ <FONT COLOR=red><A NAME="2102_7">Ch</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses-aux__ads.htm#101_13">Chtype_To_AttrChar</A> (<A HREF="terminal_interface-curses__adb.htm#2099_16">Termattrs</A>);
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#2102_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#352_10">Attr</A>;
+ <b>end</b> Supported_Attributes;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1571_14">Long_Name</A><FONT COLOR=red><A NAME="2107_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1571_25">Name</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2109_16">Longname</A></FONT> <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2109_16">Longname</A>, "longname");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2109_16">Longname</A>, <A HREF="terminal_interface-curses__ads.htm#1571_25">Name</A>);
+ <b>end</b> Long_Name;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1575_13">Long_Name</A><FONT COLOR=red><A NAME="2115_13"></A></FONT> <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2117_16">Longname</A></FONT> <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2117_16">Longname</A>, "longname");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2117_16">Longname</A>);
+ <b>end</b> Long_Name;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1581_14">Terminal_Name</A><FONT COLOR=red><A NAME="2123_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1581_29">Name</A> : <b>out</b> String)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2125_16">Termname</A></FONT> <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2125_16">Termname</A>, "termname");
+ <b>begin</b>
+ <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2125_16">Termname</A>, <A HREF="terminal_interface-curses__ads.htm#1581_29">Name</A>);
+ <b>end</b> Terminal_Name;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1585_13">Terminal_Name</A><FONT COLOR=red><A NAME="2131_13"></A></FONT> <b>return</b> String
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2133_16">Termname</A></FONT> <b>return</b> chars_ptr;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2133_16">Termname</A>, "termname");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#121_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#2133_16">Termname</A>);
+ <b>end</b> Terminal_Name;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1600_14">Init_Pair</A><FONT COLOR=red><A NAME="2139_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1600_25">Pair</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#298_12">Redefinable_Color_Pair</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1601_25">Fore</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1602_25">Back</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2143_16">Initpair</A></FONT> (<FONT COLOR=red><A NAME="2143_26">Pair</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="2144_26">Fore</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="2145_26">Back</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2143_16">Initpair</A>, "init_pair");
+ <b>begin</b>
+ <b>if</b> Integer (<A HREF="terminal_interface-curses__ads.htm#1600_25">Pair</A>) >= <A HREF="terminal_interface-curses__ads.htm#422_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#1601_25">Fore</A>) >= <A HREF="terminal_interface-curses__ads.htm#419_13">Number_Of_Colors</A> <b>or</b> <b>else</b>
+ Integer (<A HREF="terminal_interface-curses__ads.htm#1602_25">Back</A>) >= <A HREF="terminal_interface-curses__ads.htm#419_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#2143_16">Initpair</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1600_25">Pair</A>), <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1601_25">Fore</A>), <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1602_25">Back</A>))
+ = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Init_Pair;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1607_14">Pair_Content</A><FONT COLOR=red><A NAME="2160_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1607_28">Pair</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Color_Pair</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1608_28">Fore</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1609_28">Back</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>)
+ <b>is</b>
+ <b>type</b> C_Short_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="2165_16">Paircontent</A></FONT> (<FONT COLOR=red><A NAME="2165_29">Pair</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ Fp : C_Short_Access;
+ Bp : C_Short_Access) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2165_16">Paircontent</A>, "pair_content");
+
+ <FONT COLOR=red><A NAME="2170_7">F</A></FONT>, <FONT COLOR=red><A NAME="2170_10">B</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2165_16">Paircontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1607_28">Pair</A>), <A HREF="terminal_interface-curses__adb.htm#2170_7">F</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2170_10">B</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__ads.htm#1608_28">Fore</A> := <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#2170_7">F</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1609_28">Back</A> := <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#2170_10">B</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Pair_Content;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1614_13">Has_Colors</A><FONT COLOR=red><A NAME="2180_13"></A></FONT> <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2182_16">Hascolors</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2182_16">Hascolors</A>, "has_colors");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2182_16">Hascolors</A> = <A HREF="terminal_interface-curses__ads.htm#1736_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> Has_Colors;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1619_14">Init_Color</A><FONT COLOR=red><A NAME="2192_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1619_26">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1620_26">Red</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1621_26">Green</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1622_26">Blue</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2197_16">Initcolor</A></FONT> (<FONT COLOR=red><A NAME="2197_27">Col</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="2198_27">Red</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="2199_27">Green</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <FONT COLOR=red><A NAME="2200_27">Blue</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2197_16">Initcolor</A>, "init_color");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2197_16">Initcolor</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1619_26">Color</A>), <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1620_26">Red</A>), <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1621_26">Green</A>),
+ <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1622_26">Blue</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Init_Color;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#1627_13">Can_Change_Color</A><FONT COLOR=red><A NAME="2209_13"></A></FONT> <b>return</b> Boolean
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2211_16">Canchangecolor</A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2211_16">Canchangecolor</A>, "can_change_color");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2211_16">Canchangecolor</A> = <A HREF="terminal_interface-curses__ads.htm#1736_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> Can_Change_Color;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1632_14">Color_Content</A><FONT COLOR=red><A NAME="2221_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1632_29">Color</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1633_29">Red</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1634_29">Green</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1635_29">Blue</A> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>)
+ <b>is</b>
+ <b>type</b> C_Short_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+
+ <b>function</b> <FONT COLOR=red><A NAME="2228_16">Colorcontent</A></FONT> (<FONT COLOR=red><A NAME="2228_30">Color</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>; R, G, B : C_Short_Access)
+ <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2228_16">Colorcontent</A>, "color_content");
+
+ <FONT COLOR=red><A NAME="2232_7">R</A></FONT>, <FONT COLOR=red><A NAME="2232_10">G</A></FONT>, <FONT COLOR=red><A NAME="2232_13">B</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2228_16">Colorcontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#56_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#1632_29">Color</A>), <A HREF="terminal_interface-curses__adb.htm#2232_7">R</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2232_10">G</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2232_13">B</A>'<b>Access</b>) =
+ <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__ads.htm#1633_29">Red</A> := <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#2232_7">R</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1634_29">Green</A> := <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#2232_10">G</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1635_29">Blue</A> := <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#2232_13">B</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Color_Content;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1648_14">Save_Curses_Mode</A><FONT COLOR=red><A NAME="2245_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1648_32">Mode</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1645_9">Curses_Mode</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2247_16">Def_Prog_Mode</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2247_16">Def_Prog_Mode</A>, "def_prog_mode");
+ <b>function</b> <FONT COLOR=red><A NAME="2249_16">Def_Shell_Mode</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2249_16">Def_Shell_Mode</A>, "def_shell_mode");
+
+ <FONT COLOR=red><A NAME="2252_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <b>case</b> <A HREF="terminal_interface-curses__ads.htm#1648_32">Mode</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#1645_25">Curses</A> => <A HREF="terminal_interface-curses__adb.htm#2252_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#2247_16">Def_Prog_Mode</A>;
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#1645_33">Shell</A> => <A HREF="terminal_interface-curses__adb.htm#2252_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#2249_16">Def_Shell_Mode</A>;
+ <b>end</b> <b>case</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2252_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Save_Curses_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1654_14">Reset_Curses_Mode</A><FONT COLOR=red><A NAME="2263_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1654_33">Mode</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1645_9">Curses_Mode</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2265_16">Reset_Prog_Mode</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2265_16">Reset_Prog_Mode</A>, "reset_prog_mode");
+ <b>function</b> <FONT COLOR=red><A NAME="2267_16">Reset_Shell_Mode</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2267_16">Reset_Shell_Mode</A>, "reset_shell_mode");
+
+ <FONT COLOR=red><A NAME="2270_7">Err</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <b>case</b> <A HREF="terminal_interface-curses__ads.htm#1654_33">Mode</A> <b>is</b>
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#1645_25">Curses</A> => <A HREF="terminal_interface-curses__adb.htm#2270_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#2265_16">Reset_Prog_Mode</A>;
+ <b>when</b> <A HREF="terminal_interface-curses__ads.htm#1645_33">Shell</A> => <A HREF="terminal_interface-curses__adb.htm#2270_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#2267_16">Reset_Shell_Mode</A>;
+ <b>end</b> <b>case</b>;
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2270_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Reset_Curses_Mode;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1660_14">Save_Terminal_State</A><FONT COLOR=red><A NAME="2281_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2283_16">Savetty</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2283_16">Savetty</A>, "savetty");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2283_16">Savetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Save_Terminal_State;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1665_14">Reset_Terminal_State</A><FONT COLOR=red><A NAME="2291_14"></A></FONT>
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2293_16">Resetty</A></FONT> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2293_16">Resetty</A>, "resetty");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2293_16">Resetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Reset_Terminal_State;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1678_14">Rip_Off_Lines</A><FONT COLOR=red><A NAME="2301_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1678_29">Lines</A> : <b>in</b> Integer;
+ <A HREF="terminal_interface-curses__ads.htm#1679_29">Proc</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1669_9">Stdscr_Init_Proc</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2304_16">Ripoffline</A></FONT> (<FONT COLOR=red><A NAME="2304_28">Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <FONT COLOR=red><A NAME="2305_28">Proc</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1669_9">Stdscr_Init_Proc</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2304_16">Ripoffline</A>, "_nc_ripoffline");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2304_16">Ripoffline</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1678_29">Lines</A>), <A HREF="terminal_interface-curses__ads.htm#1679_29">Proc</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Rip_Off_Lines;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1690_14">Set_Cursor_Visibility</A><FONT COLOR=red><A NAME="2313_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1690_37">Visibility</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#1687_9">Cursor_Visibility</A>)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2315_16">Curs_Set</A></FONT> (<FONT COLOR=red><A NAME="2315_26">Curs</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2315_16">Curs_Set</A>, "curs_set");
+
+ <FONT COLOR=red><A NAME="2318_7">Res</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <A HREF="terminal_interface-curses__adb.htm#2318_7">Res</A> := <A HREF="terminal_interface-curses__adb.htm#2315_16">Curs_Set</A> (<A HREF="terminal_interface-curses__ads.htm#1687_9">Cursor_Visibility</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#1690_37">Visibility</A>));
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2318_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <A HREF="terminal_interface-curses__ads.htm#1690_37">Visibility</A> := <A HREF="terminal_interface-curses__ads.htm#1687_9">Cursor_Visibility</A>'Val (<A HREF="terminal_interface-curses__adb.htm#2318_7">Res</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Set_Cursor_Visibility;
+
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1695_14">Nap_Milli_Seconds</A><FONT COLOR=red><A NAME="2326_14"></A></FONT> (<A HREF="terminal_interface-curses__ads.htm#1695_33">Ms</A> : <b>in</b> Natural)
+ <b>is</b>
+ <b>function</b> <FONT COLOR=red><A NAME="2328_16">Napms</A></FONT> (<FONT COLOR=red><A NAME="2328_23">Ms</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2328_16">Napms</A>, "napms");
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2328_16">Napms</A> (<A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1695_33">Ms</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#72_4">Curses_Err</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>end</b> <b>if</b>;
+ <b>end</b> Nap_Milli_Seconds;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A><FONT COLOR=red><A NAME="2337_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="2339_7">Stdscr</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2339_7">Stdscr</A>, "stdscr");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses__adb.htm#2339_7">Stdscr</A>;
+ <b>end</b> Standard_Window;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#410_13">Lines</A><FONT COLOR=red><A NAME="2345_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="2347_7">C_Lines</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2347_7">C_Lines</A>, "LINES");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#62_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#2347_7">C_Lines</A>);
+ <b>end</b> Lines;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#413_13">Columns</A><FONT COLOR=red><A NAME="2353_13"></A></FONT> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A>
+ <b>is</b>
+ <FONT COLOR=red><A NAME="2355_7">C_Columns</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2355_7">C_Columns</A>, "COLS");
+ <b>begin</b>
+ <b>return</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#2355_7">C_Columns</A>);
+ <b>end</b> Columns;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#416_13">Tab_Size</A><FONT COLOR=red><A NAME="2361_13"></A></FONT> <b>return</b> Natural
+ <b>is</b>
+ <FONT COLOR=red><A NAME="2363_7">C_Tab_Size</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2363_7">C_Tab_Size</A>, "TABSIZE");
+ <b>begin</b>
+ <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#2363_7">C_Tab_Size</A>);
+ <b>end</b> Tab_Size;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#419_13">Number_Of_Colors</A><FONT COLOR=red><A NAME="2369_13"></A></FONT> <b>return</b> Natural
+ <b>is</b>
+ <FONT COLOR=red><A NAME="2371_7">C_Number_Of_Colors</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2371_7">C_Number_Of_Colors</A>, "COLORS");
+ <b>begin</b>
+ <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#2371_7">C_Number_Of_Colors</A>);
+ <b>end</b> Number_Of_Colors;
+
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#422_13">Number_Of_Color_Pairs</A><FONT COLOR=red><A NAME="2377_13"></A></FONT> <b>return</b> Natural
+ <b>is</b>
+ <FONT COLOR=red><A NAME="2379_7">C_Number_Of_Color_Pairs</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2379_7">C_Number_Of_Color_Pairs</A>, "COLOR_PAIRS");
+ <b>begin</b>
+ <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#2379_7">C_Number_Of_Color_Pairs</A>);
+ <b>end</b> Number_Of_Color_Pairs;
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+ <b>procedure</b> <A HREF="terminal_interface-curses__ads.htm#1703_14">Transform_Coordinates</A><FONT COLOR=red><A NAME="2385_14"></A></FONT>
+ (<A HREF="terminal_interface-curses__ads.htm#1704_7">W</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#473_13">Standard_Window</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1705_7">Line</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1706_7">Column</A> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A>;
+ <A HREF="terminal_interface-curses__ads.htm#1707_7">Dir</A> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1702_9">Transform_Direction</A> := <A HREF="terminal_interface-curses__ads.htm#1702_33">From_Screen</A>)
+ <b>is</b>
+ <b>type</b> Int_Access <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>function</b> <FONT COLOR=red><A NAME="2392_16">Transform</A></FONT> (<FONT COLOR=red><A NAME="2392_27">W</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ Y, X : Int_Access;
+ <FONT COLOR=red><A NAME="2394_27">Dir</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>pragma</b> Import (C, <A HREF="terminal_interface-curses__adb.htm#2392_16">Transform</A>, "wmouse_trafo");
+
+ <FONT COLOR=red><A NAME="2397_7">X</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1706_7">Column</A>);
+ <FONT COLOR=red><A NAME="2398_7">Y</A></FONT> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#1705_7">Line</A>);
+ <FONT COLOR=red><A NAME="2399_7">D</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#1735_9">Curses_Bool</A> := <A HREF="terminal_interface-curses__ads.htm#1736_4">Curses_Bool_False</A>;
+ <FONT COLOR=red><A NAME="2400_7">R</A></FONT> : <A HREF="terminal_interface-curses-aux__ads.htm#55_12">C_Int</A>;
+ <b>begin</b>
+ <b>if</b> <A HREF="terminal_interface-curses__ads.htm#1707_7">Dir</A> = <A HREF="terminal_interface-curses__ads.htm#1702_46">To_Screen</A> <b>then</b>
+ <A HREF="terminal_interface-curses__adb.htm#2399_7">D</A> := 1;
+ <b>end</b> <b>if</b>;
+ <A HREF="terminal_interface-curses__adb.htm#2400_7">R</A> := <A HREF="terminal_interface-curses__adb.htm#2392_16">Transform</A> (<A HREF="terminal_interface-curses__ads.htm#1704_7">W</A>, <A HREF="terminal_interface-curses__adb.htm#2398_7">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2397_7">X</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#2399_7">D</A>);
+ <b>if</b> <A HREF="terminal_interface-curses__adb.htm#2400_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#75_4">Curses_False</A> <b>then</b>
+ <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#381_4">Curses_Exception</A>;
+ <b>else</b>
+ <A HREF="terminal_interface-curses__ads.htm#1705_7">Line</A> := <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#2398_7">Y</A>);
+ <A HREF="terminal_interface-curses__ads.htm#1706_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#2397_7">X</A>);
+ <b>end</b> <b>if</b>;
+ <b>end</b> Transform_Coordinates;
+
+<b>end</b> Terminal_Interface.Curses;
+</PRE></BODY></HTML>
\ No newline at end of file
--- /dev/null
+<HTML><HEAD><TITLE>terminal_interface-curses.ads</TITLE></HEAD>
+<BODY>
+<HR><DIV ALIGN="center"><H1> File : terminal_interface-curses.ads </H1></DIV><HR>
+<PRE>
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Terminal_Interface.Curses --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- S P E C --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Copyright (c) 1998 Free Software Foundation, Inc. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></FONT>
+<FONT COLOR=green><EM>-- copy of this software and associated documentation files (the --</EM></FONT>
+<FONT COLOR=green><EM>-- "Software"), to deal in the Software without restriction, including --</EM></FONT>
+<FONT COLOR=green><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></FONT>
+<FONT COLOR=green><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></FONT>
+<FONT COLOR=green><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></FONT>
+<FONT COLOR=green><EM>-- furnished to do so, subject to the following conditions: --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- The above copyright notice and this permission notice shall be included --</EM></FONT>
+<FONT COLOR=green><EM>-- in all copies or substantial portions of the Software. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></FONT>
+<FONT COLOR=green><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></FONT>
+<FONT COLOR=green><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></FONT>
+<FONT COLOR=green><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></FONT>
+<FONT COLOR=green><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></FONT>
+<FONT COLOR=green><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></FONT>
+<FONT COLOR=green><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></FONT>
+<FONT COLOR=green><EM>-- --</EM></FONT>
+<FONT COLOR=green><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></FONT>
+<FONT COLOR=green><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></FONT>
+<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
+<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.28 @</EM></FONT>
+<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+<FONT COLOR=green><EM>-- curses binding.</EM></FONT>
+<FONT COLOR=green><EM>-- This module is generated. Please don't change it manually!</EM></FONT>
+<FONT COLOR=green><EM>-- Run the generator instead.</EM></FONT>
+<FONT COLOR=green><EM>-- |</EM></FONT>
+<b>with</b> <A HREF="interfac__ads.htm#23_9">System</A>.Storage_Elements;
+<b>with</b> Interfaces.C; <FONT COLOR=green><EM>-- We need this for some assertions.</EM></FONT>
+
+<b>package</b> Terminal_Interface.Curses <b>is</b>
+ <b>pragma</b> Preelaborate (Terminal_Interface.Curses);
+ <b>pragma</b> Linker_Options ("-lncurses");
+
+ <FONT COLOR=red><A NAME="53_4">NC_Major_Version</A></FONT> : <b>constant</b> := 5; <FONT COLOR=green><EM>-- Major version of the library</EM></FONT>
+ <FONT COLOR=red><A NAME="54_4">NC_Minor_Version</A></FONT> : <b>constant</b> := 0; <FONT COLOR=green><EM>-- Minor version of the library</EM></FONT>
+ NC_Version : <b>constant</b> String := "5.0"; <FONT COLOR=green><EM>-- Version of library</EM></FONT>
+
+ <b>type</b> Window <b>is</b> <b>private</b>;
+ Null_Window : <b>constant</b> Window;
+
+ <b>type</b> <FONT COLOR=red><A NAME="60_9">Line_Position</A></FONT> <b>is</b> <b>new</b> Natural; <FONT COLOR=green><EM>-- line coordinate</EM></FONT>
+ <b>type</b> Column_Position <b>is</b> <b>new</b> Natural; <FONT COLOR=green><EM>-- column coordinate</EM></FONT>
+
+ <b>subtype</b> Line_Count <b>is</b> Line_Position <b>range</b> 1 .. Line_Position'Last;
+ <FONT COLOR=green><EM>-- Type to count lines. We do not allow null windows, so must be positive</EM></FONT>
+ <b>subtype</b> Column_Count <b>is</b> Column_Position <b>range</b> 1 .. Column_Position'Last;
+ <FONT COLOR=green><EM>-- Type to count columns. We do not allow null windows, so must be positive</EM></FONT>
+
+ <b>type</b> Key_Code <b>is</b> <b>new</b> Natural;
+ <FONT COLOR=green><EM>-- That is anything including real characters, special keys and logical</EM></FONT>
+ <FONT COLOR=green><EM>-- request codes.</EM></FONT>
+
+ <b>subtype</b> Real_Key_Code <b>is</b> Key_Code <b>range</b> 0 .. 8#777#;
+ <FONT COLOR=green><EM>-- This are the codes that potentially represent a real keystroke.</EM></FONT>
+ <FONT COLOR=green><EM>-- Not all codes may be possible on a specific terminal. To check the</EM></FONT>
+ <FONT COLOR=green><EM>-- availability of a special key, the Has_Key function is provided.</EM></FONT>
+
+ <b>subtype</b> Special_Key_Code <b>is</b> Real_Key_Code
+ <b>range</b> 8#400# .. Real_Key_Code'Last;
+ <FONT COLOR=green><EM>-- Type for a function- or special key number</EM></FONT>
+
+ <b>subtype</b> Normal_Key_Code <b>is</b> Real_Key_Code <b>range</b>
+ Character'Pos (Character'First) .. Character'Pos (Character'Last);
+ <FONT COLOR=green><EM>-- This are the codes for regular (incl. non-graphical) characters.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- Constants for function- and special keys</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=red><A NAME="87_4">Key_None</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#400#;
+ <FONT COLOR=red><A NAME="88_4">Key_Code_Yes</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#400#;
+ <FONT COLOR=red><A NAME="89_4">Key_Min</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#401#;
+ <FONT COLOR=red><A NAME="90_4">Key_Break</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#401#;
+ <FONT COLOR=red><A NAME="91_4">Key_Cursor_Down</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#402#;
+ <FONT COLOR=red><A NAME="92_4">Key_Cursor_Up</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#403#;
+ <FONT COLOR=red><A NAME="93_4">Key_Cursor_Left</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#404#;
+ <FONT COLOR=red><A NAME="94_4">Key_Cursor_Right</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#405#;
+ <FONT COLOR=red><A NAME="95_4">Key_Home</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#406#;
+ <FONT COLOR=red><A NAME="96_4">Key_Backspace</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#407#;
+ <FONT COLOR=red><A NAME="97_4">Key_F0</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#410#;
+ <FONT COLOR=red><A NAME="98_4">Key_F1</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#411#;
+ <FONT COLOR=red><A NAME="99_4">Key_F2</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#412#;
+ <FONT COLOR=red><A NAME="100_4">Key_F3</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#413#;
+ <FONT COLOR=red><A NAME="101_4">Key_F4</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#414#;
+ <FONT COLOR=red><A NAME="102_4">Key_F5</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#415#;
+ <FONT COLOR=red><A NAME="103_4">Key_F6</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#416#;
+ <FONT COLOR=red><A NAME="104_4">Key_F7</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#417#;
+ <FONT COLOR=red><A NAME="105_4">Key_F8</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#420#;
+ <FONT COLOR=red><A NAME="106_4">Key_F9</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#421#;
+ <FONT COLOR=red><A NAME="107_4">Key_F10</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#422#;
+ <FONT COLOR=red><A NAME="108_4">Key_F11</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#423#;
+ <FONT COLOR=red><A NAME="109_4">Key_F12</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#424#;
+ <FONT COLOR=red><A NAME="110_4">Key_F13</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#425#;
+ <FONT COLOR=red><A NAME="111_4">Key_F14</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#426#;
+ <FONT COLOR=red><A NAME="112_4">Key_F15</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#427#;
+ <FONT COLOR=red><A NAME="113_4">Key_F16</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#430#;
+ <FONT COLOR=red><A NAME="114_4">Key_F17</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#431#;
+ <FONT COLOR=red><A NAME="115_4">Key_F18</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#432#;
+ <FONT COLOR=red><A NAME="116_4">Key_F19</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#433#;
+ <FONT COLOR=red><A NAME="117_4">Key_F20</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#434#;
+ <FONT COLOR=red><A NAME="118_4">Key_F21</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#435#;
+ <FONT COLOR=red><A NAME="119_4">Key_F22</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#436#;
+ <FONT COLOR=red><A NAME="120_4">Key_F23</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#437#;
+ <FONT COLOR=red><A NAME="121_4">Key_F24</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#440#;
+ <FONT COLOR=red><A NAME="122_4">Key_Delete_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#510#;
+ <FONT COLOR=red><A NAME="123_4">Key_Insert_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#511#;
+ <FONT COLOR=red><A NAME="124_4">Key_Delete_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#512#;
+ <FONT COLOR=red><A NAME="125_4">Key_Insert_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#513#;
+ <FONT COLOR=red><A NAME="126_4">Key_Exit_Insert_Mode</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#514#;
+ <FONT COLOR=red><A NAME="127_4">Key_Clear_Screen</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#515#;
+ <FONT COLOR=red><A NAME="128_4">Key_Clear_End_Of_Screen</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#516#;
+ <FONT COLOR=red><A NAME="129_4">Key_Clear_End_Of_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#517#;
+ <FONT COLOR=red><A NAME="130_4">Key_Scroll_1_Forward</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#520#;
+ <FONT COLOR=red><A NAME="131_4">Key_Scroll_1_Backward</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#521#;
+ <FONT COLOR=red><A NAME="132_4">Key_Next_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#522#;
+ <FONT COLOR=red><A NAME="133_4">Key_Previous_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#523#;
+ <FONT COLOR=red><A NAME="134_4">Key_Set_Tab</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#524#;
+ <FONT COLOR=red><A NAME="135_4">Key_Clear_Tab</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#525#;
+ <FONT COLOR=red><A NAME="136_4">Key_Clear_All_Tabs</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#526#;
+ <FONT COLOR=red><A NAME="137_4">Key_Enter_Or_Send</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#527#;
+ <FONT COLOR=red><A NAME="138_4">Key_Soft_Reset</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#530#;
+ <FONT COLOR=red><A NAME="139_4">Key_Reset</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#531#;
+ <FONT COLOR=red><A NAME="140_4">Key_Print</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#532#;
+ <FONT COLOR=red><A NAME="141_4">Key_Bottom</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#533#;
+ <FONT COLOR=red><A NAME="142_4">Key_Upper_Left_Of_Keypad</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#534#;
+ <FONT COLOR=red><A NAME="143_4">Key_Upper_Right_Of_Keypad</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#535#;
+ <FONT COLOR=red><A NAME="144_4">Key_Center_Of_Keypad</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#536#;
+ <FONT COLOR=red><A NAME="145_4">Key_Lower_Left_Of_Keypad</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#537#;
+ <FONT COLOR=red><A NAME="146_4">Key_Lower_Right_Of_Keypad</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#540#;
+ <FONT COLOR=red><A NAME="147_4">Key_Back_Tab</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#541#;
+ <FONT COLOR=red><A NAME="148_4">Key_Beginning</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#542#;
+ <FONT COLOR=red><A NAME="149_4">Key_Cancel</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#543#;
+ <FONT COLOR=red><A NAME="150_4">Key_Close</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#544#;
+ <FONT COLOR=red><A NAME="151_4">Key_Command</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#545#;
+ <FONT COLOR=red><A NAME="152_4">Key_Copy</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#546#;
+ <FONT COLOR=red><A NAME="153_4">Key_Create</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#547#;
+ <FONT COLOR=red><A NAME="154_4">Key_End</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#550#;
+ <FONT COLOR=red><A NAME="155_4">Key_Exit</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#551#;
+ <FONT COLOR=red><A NAME="156_4">Key_Find</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#552#;
+ <FONT COLOR=red><A NAME="157_4">Key_Help</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#553#;
+ <FONT COLOR=red><A NAME="158_4">Key_Mark</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#554#;
+ <FONT COLOR=red><A NAME="159_4">Key_Message</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#555#;
+ <FONT COLOR=red><A NAME="160_4">Key_Move</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#556#;
+ <FONT COLOR=red><A NAME="161_4">Key_Next</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#557#;
+ <FONT COLOR=red><A NAME="162_4">Key_Open</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#560#;
+ <FONT COLOR=red><A NAME="163_4">Key_Options</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#561#;
+ <FONT COLOR=red><A NAME="164_4">Key_Previous</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#562#;
+ <FONT COLOR=red><A NAME="165_4">Key_Redo</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#563#;
+ <FONT COLOR=red><A NAME="166_4">Key_Reference</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#564#;
+ <FONT COLOR=red><A NAME="167_4">Key_Refresh</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#565#;
+ <FONT COLOR=red><A NAME="168_4">Key_Replace</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#566#;
+ <FONT COLOR=red><A NAME="169_4">Key_Restart</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#567#;
+ <FONT COLOR=red><A NAME="170_4">Key_Resume</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#570#;
+ <FONT COLOR=red><A NAME="171_4">Key_Save</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#571#;
+ <FONT COLOR=red><A NAME="172_4">Key_Shift_Begin</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#572#;
+ <FONT COLOR=red><A NAME="173_4">Key_Shift_Cancel</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#573#;
+ <FONT COLOR=red><A NAME="174_4">Key_Shift_Command</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#574#;
+ <FONT COLOR=red><A NAME="175_4">Key_Shift_Copy</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#575#;
+ <FONT COLOR=red><A NAME="176_4">Key_Shift_Create</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#576#;
+ <FONT COLOR=red><A NAME="177_4">Key_Shift_Delete_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#577#;
+ <FONT COLOR=red><A NAME="178_4">Key_Shift_Delete_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#600#;
+ <FONT COLOR=red><A NAME="179_4">Key_Select</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#601#;
+ <FONT COLOR=red><A NAME="180_4">Key_Shift_End</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#602#;
+ <FONT COLOR=red><A NAME="181_4">Key_Shift_Clear_End_Of_Line</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#603#;
+ <FONT COLOR=red><A NAME="182_4">Key_Shift_Exit</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#604#;
+ <FONT COLOR=red><A NAME="183_4">Key_Shift_Find</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#605#;
+ <FONT COLOR=red><A NAME="184_4">Key_Shift_Help</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#606#;
+ <FONT COLOR=red><A NAME="185_4">Key_Shift_Home</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#607#;
+ <FONT COLOR=red><A NAME="186_4">Key_Shift_Insert_Char</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#610#;
+ <FONT COLOR=red><A NAME="187_4">Key_Shift_Cursor_Left</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#611#;
+ <FONT COLOR=red><A NAME="188_4">Key_Shift_Message</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#612#;
+ <FONT COLOR=red><A NAME="189_4">Key_Shift_Move</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#613#;
+ <FONT COLOR=red><A NAME="190_4">Key_Shift_Next_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#614#;
+ <FONT COLOR=red><A NAME="191_4">Key_Shift_Options</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#615#;
+ <FONT COLOR=red><A NAME="192_4">Key_Shift_Previous_Page</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#616#;
+ <FONT COLOR=red><A NAME="193_4">Key_Shift_Print</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#617#;
+ <FONT COLOR=red><A NAME="194_4">Key_Shift_Redo</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#620#;
+ <FONT COLOR=red><A NAME="195_4">Key_Shift_Replace</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#621#;
+ <FONT COLOR=red><A NAME="196_4">Key_Shift_Cursor_Right</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#622#;
+ <FONT COLOR=red><A NAME="197_4">Key_Shift_Resume</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#623#;
+ <FONT COLOR=red><A NAME="198_4">Key_Shift_Save</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#624#;
+ <FONT COLOR=red><A NAME="199_4">Key_Shift_Suspend</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#625#;
+ <FONT COLOR=red><A NAME="200_4">Key_Shift_Undo</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#626#;
+ <FONT COLOR=red><A NAME="201_4">Key_Suspend</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#627#;
+ <FONT COLOR=red><A NAME="202_4">Key_Undo</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#630#;
+ <FONT COLOR=red><A NAME="203_4">Key_Mouse</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> := 8#631#;
+ Key_Resize : <b>constant</b> Special_Key_Code := 8#632#;
+
+ Key_Max : <b>constant</b> Special_Key_Code
+ := Special_Key_Code'Last;
+
+ <b>subtype</b> User_Key_Code <b>is</b> Key_Code
+ <b>range</b> (Key_Max + 129) .. Key_Code'Last;
+ <FONT COLOR=green><EM>-- This is reserved for user defined key codes. The range between Key_Max</EM></FONT>
+ <FONT COLOR=green><EM>-- and the first user code is reserved for subsystems like menu and forms.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- For those who like to use the original key names we produce them were</EM></FONT>
+ <FONT COLOR=green><EM>-- they differ from the original. Please note that they may differ in</EM></FONT>
+ <FONT COLOR=green><EM>-- lower/upper case.</EM></FONT>
+ <FONT COLOR=red><A NAME="217_4">KEY_DOWN</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#91_4">Key_Cursor_Down</A>;
+ <FONT COLOR=red><A NAME="218_4">KEY_UP</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#92_4">Key_Cursor_Up</A>;
+ <FONT COLOR=red><A NAME="219_4">KEY_LEFT</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#93_4">Key_Cursor_Left</A>;
+ <FONT COLOR=red><A NAME="220_4">KEY_RIGHT</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#121_4">Key_Cursor_Right</A>;
+ <FONT COLOR=red><A NAME="221_4">KEY_DL</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#122_4">Key_Delete_Line</A>;
+ <FONT COLOR=red><A NAME="222_4">KEY_IL</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#123_4">Key_Insert_Line</A>;
+ <FONT COLOR=red><A NAME="223_4">KEY_DC</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#124_4">Key_Delete_Char</A>;
+ <FONT COLOR=red><A NAME="224_4">KEY_IC</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#125_4">Key_Insert_Char</A>;
+ <FONT COLOR=red><A NAME="225_4">KEY_EIC</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#126_4">Key_Exit_Insert_Mode</A>;
+ <FONT COLOR=red><A NAME="226_4">KEY_CLEAR</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#127_4">Key_Clear_Screen</A>;
+ <FONT COLOR=red><A NAME="227_4">KEY_EOS</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#128_4">Key_Clear_End_Of_Screen</A>;
+ <FONT COLOR=red><A NAME="228_4">KEY_EOL</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#129_4">Key_Clear_End_Of_Line</A>;
+ <FONT COLOR=red><A NAME="229_4">KEY_SF</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#130_4">Key_Scroll_1_Forward</A>;
+ <FONT COLOR=red><A NAME="230_4">KEY_SR</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#131_4">Key_Scroll_1_Backward</A>;
+ <FONT COLOR=red><A NAME="231_4">KEY_NPAGE</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#132_4">Key_Next_Page</A>;
+ <FONT COLOR=red><A NAME="232_4">KEY_PPAGE</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#133_4">Key_Previous_Page</A>;
+ <FONT COLOR=red><A NAME="233_4">KEY_STAB</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#134_4">Key_Set_Tab</A>;
+ <FONT COLOR=red><A NAME="234_4">KEY_CTAB</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#135_4">Key_Clear_Tab</A>;
+ <FONT COLOR=red><A NAME="235_4">KEY_CATAB</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#136_4">Key_Clear_All_Tabs</A>;
+ <FONT COLOR=red><A NAME="236_4">KEY_ENTER</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#137_4">Key_Enter_Or_Send</A>;
+ <FONT COLOR=red><A NAME="237_4">KEY_SRESET</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#140_4">Key_Soft_Reset</A>;
+ <FONT COLOR=red><A NAME="238_4">KEY_LL</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#141_4">Key_Bottom</A>;
+ <FONT COLOR=red><A NAME="239_4">KEY_A1</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#142_4">Key_Upper_Left_Of_Keypad</A>;
+ <FONT COLOR=red><A NAME="240_4">KEY_A3</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#143_4">Key_Upper_Right_Of_Keypad</A>;
+ <FONT COLOR=red><A NAME="241_4">KEY_B2</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#144_4">Key_Center_Of_Keypad</A>;
+ <FONT COLOR=red><A NAME="242_4">KEY_C1</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#145_4">Key_Lower_Left_Of_Keypad</A>;
+ <FONT COLOR=red><A NAME="243_4">KEY_C3</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#146_4">Key_Lower_Right_Of_Keypad</A>;
+ <FONT COLOR=red><A NAME="244_4">KEY_BTAB</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#147_4">Key_Back_Tab</A>;
+ <FONT COLOR=red><A NAME="245_4">KEY_BEG</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#171_4">Key_Beginning</A>;
+ <FONT COLOR=red><A NAME="246_4">KEY_SBEG</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#172_4">Key_Shift_Begin</A>;
+ <FONT COLOR=red><A NAME="247_4">KEY_SCANCEL</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#173_4">Key_Shift_Cancel</A>;
+ <FONT COLOR=red><A NAME="248_4">KEY_SCOMMAND</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#174_4">Key_Shift_Command</A>;
+ <FONT COLOR=red><A NAME="249_4">KEY_SCOPY</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#175_4">Key_Shift_Copy</A>;
+ <FONT COLOR=red><A NAME="250_4">KEY_SCREATE</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#176_4">Key_Shift_Create</A>;
+ <FONT COLOR=red><A NAME="251_4">KEY_SDC</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#177_4">Key_Shift_Delete_Char</A>;
+ <FONT COLOR=red><A NAME="252_4">KEY_SDL</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#179_4">Key_Shift_Delete_Line</A>;
+ <FONT COLOR=red><A NAME="253_4">KEY_SEND</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#180_4">Key_Shift_End</A>;
+ <FONT COLOR=red><A NAME="254_4">KEY_SEOL</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#181_4">Key_Shift_Clear_End_Of_Line</A>;
+ <FONT COLOR=red><A NAME="255_4">KEY_SEXIT</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#182_4">Key_Shift_Exit</A>;
+ <FONT COLOR=red><A NAME="256_4">KEY_SFIND</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#183_4">Key_Shift_Find</A>;
+ <FONT COLOR=red><A NAME="257_4">KEY_SHELP</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#184_4">Key_Shift_Help</A>;
+ <FONT COLOR=red><A NAME="258_4">KEY_SHOME</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#185_4">Key_Shift_Home</A>;
+ <FONT COLOR=red><A NAME="259_4">KEY_SIC</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#186_4">Key_Shift_Insert_Char</A>;
+ <FONT COLOR=red><A NAME="260_4">KEY_SLEFT</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#187_4">Key_Shift_Cursor_Left</A>;
+ <FONT COLOR=red><A NAME="261_4">KEY_SMESSAGE</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#188_4">Key_Shift_Message</A>;
+ <FONT COLOR=red><A NAME="262_4">KEY_SMOVE</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#189_4">Key_Shift_Move</A>;
+ <FONT COLOR=red><A NAME="263_4">KEY_SNEXT</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#190_4">Key_Shift_Next_Page</A>;
+ <FONT COLOR=red><A NAME="264_4">KEY_SOPTIONS</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#191_4">Key_Shift_Options</A>;
+ <FONT COLOR=red><A NAME="265_4">KEY_SPREVIOUS</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#192_4">Key_Shift_Previous_Page</A>;
+ <FONT COLOR=red><A NAME="266_4">KEY_SPRINT</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#193_4">Key_Shift_Print</A>;
+ <FONT COLOR=red><A NAME="267_4">KEY_SREDO</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#194_4">Key_Shift_Redo</A>;
+ <FONT COLOR=red><A NAME="268_4">KEY_SREPLACE</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#195_4">Key_Shift_Replace</A>;
+ <FONT COLOR=red><A NAME="269_4">KEY_SRIGHT</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#196_4">Key_Shift_Cursor_Right</A>;
+ <FONT COLOR=red><A NAME="270_4">KEY_SRSUME</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#197_4">Key_Shift_Resume</A>;
+ <FONT COLOR=red><A NAME="271_4">KEY_SSAVE</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#198_4">Key_Shift_Save</A>;
+ <FONT COLOR=red><A NAME="272_4">KEY_SSUSPEND</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#76_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#199_4">Key_Shift_Suspend</A>;
+ KEY_SUNDO : Special_Key_Code <b>renames</b> Key_Shift_Undo;
+
+<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
+
+ <b>type</b><A HREF="terminal_interface-curses__ads.htm#276_9"> </A>Color_Number <b>is</b> <b>range</b><A HREF="interfac__ads.htm#23_9"> </A>0 .. Integer (Interfaces.C.short'Last);
+ <b>for</b> Color_Number'Size <b>use</b> Interfaces.C.short'Size;
+ <FONT COLOR=green><EM>-- (n)curses uses a short for the color index</EM></FONT>
+ <FONT COLOR=green><EM>-- The model is, that a Color_Number is an index into an array of</EM></FONT>
+ <FONT COLOR=green><EM>-- (potentially) definable colors. Some of those indices are</EM></FONT>
+ <FONT COLOR=green><EM>-- predefined (see below), although they may not really exist.</EM></FONT>
+
+ <FONT COLOR=red><A NAME="284_4">Black</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 0;
+ <FONT COLOR=red><A NAME="285_4">Red</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 1;
+ <FONT COLOR=red><A NAME="286_4">Green</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 2;
+ <FONT COLOR=red><A NAME="287_4">Yellow</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 3;
+ <FONT COLOR=red><A NAME="288_4">Blue</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 4;
+ <FONT COLOR=red><A NAME="289_4">Magenta</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 5;
+ <FONT COLOR=red><A NAME="290_4">Cyan</A></FONT> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A> := 6;
+ White : <b>constant</b> Color_Number := 7;
+
+ <b>type</b><A HREF="terminal_interface-curses__ads.htm#292_9"> </A>RGB_Value <b>is</b> <b>range</b><A HREF="interfac__ads.htm#23_9"> </A>0 .. Integer (Interfaces.C.short'Last);
+ <b>for</b> RGB_Value'Size <b>use</b> Interfaces.C.short'Size;
+ <FONT COLOR=green><EM>-- Some system may allow to redefine a color by setting RGB values.</EM></FONT>
+
+ <b>type</b><A HREF="terminal_interface-curses__ads.htm#296_9"> </A>Color_Pair <b>is</b> <b>range</b> 0 .. 255;
+ <b>for</b> Color_Pair'Size <b>use</b> 8;
+ <b>subtype</b> Redefinable_Color_Pair <b>is</b> Color_Pair <b>range</b> 1 .. 255;
+ <FONT COLOR=green><EM>-- (n)curses reserves 1 Byte for the color-pair number. Color Pair 0</EM></FONT>
+ <FONT COLOR=green><EM>-- is fixed (Black & White). A color pair is simply a combination of</EM></FONT>
+ <FONT COLOR=green><EM>-- two colors described by Color_Numbers, one for the foreground and</EM></FONT>
+ <FONT COLOR=green><EM>-- the other for the background</EM></FONT>
+
+ <b>type</b> Character_Attribute_Set <b>is</b>
+ <b>record</b>
+ <FONT COLOR=red><A NAME="307_10">Stand_Out</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="308_10">Under_Line</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="309_10">Reverse_Video</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="310_10">Blink</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="311_10">Dim_Character</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="312_10">Bold_Character</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="313_10">Alternate_Character_Set</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="314_10">Invisible_Character</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="315_10">Protected_Character</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="316_10">Horizontal</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="317_10">Left</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="318_10">Low</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="319_10">Right</A></FONT> : Boolean;
+ <FONT COLOR=red><A NAME="320_10">Top</A></FONT> : Boolean;
+ Vertical : Boolean;
+ <b>end</b> <b>record</b><A HREF="terminal_interface-curses__ads.htm#304_9">;</A>
+ <b>pragma</b> Pack (Character_Attribute_Set);
+ <b>pragma</b> Convention (C, Character_Attribute_Set);
+
+ <b>for</b> Character_Attribute_Set <b>use</b>
+ <b>record</b>
+ Stand_Out <b>at</b> 0 <b>range</b> 0 .. 0;
+ Under_Line <b>at</b> 0 <b>range</b> 1 .. 1;
+ Reverse_Video <b>at</b> 0 <b>range</b> 2 .. 2;
+ Blink <b>at</b> 0 <b>range</b> 3 .. 3;
+ Dim_Character <b>at</b> 0 <b>range</b> 4 .. 4;
+ Bold_Character <b>at</b> 0 <b>range</b> 5 .. 5;
+ Alternate_Character_Set <b>at</b> 0 <b>range</b> 6 .. 6;
+ Invisible_Character <b>at</b> 0 <b>range</b> 7 .. 7;
+ Protected_Character <b>at</b> 0 <b>range</b> 8 .. 8;
+ Horizontal <b>at</b> 0 <b>range</b> 9 .. 9;
+ Left <b>at</b> 0 <b>range</b> 10 .. 10;
+ Low <b>at</b> 0 <b>range</b> 11 .. 11;
+ Right <b>at</b> 0 <b>range</b> 12 .. 12;
+ Top <b>at</b> 0 <b>range</b> 13 .. 13;
+ Vertical <b>at</b> 0 <b>range</b> 14 .. 14;
+ <b>end</b> <b>record</b>;
+ <b>for</b> Character_Attribute_Set'Size <b>use</b> 16;
+ <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
+ <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
+ <FONT COLOR=green><EM>-- (n)curses uses all but the lowest 16 Bits for Attributes.</EM></FONT>
+
+ Normal_Video : <b>constant</b> Character_Attribute_Set := (<b>others</b> => False);
+
+ <b>type</b> Attributed_Character <b>is</b>
+ <b>record</b>
+ <FONT COLOR=red><A NAME="353_10">Attr</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A>;
+ <FONT COLOR=red><A NAME="354_10">Color</A></FONT> : Color_Pair;
+ Ch : Character;
+ <b>end</b> <b>record</b>;
+ <b>pragma</b> Convention (C, Attributed_Character);
+ <FONT COLOR=green><EM>-- This is the counterpart for the chtype in C.</EM></FONT>
+
+ <b>for</b> Attributed_Character <b>use</b>
+ <b>record</b>
+ Ch <b>at</b> 0 <b>range</b> 0 .. 7;
+ Color <b>at</b> 0 <b>range</b> 8 .. 15;
+ Attr <b>at</b> 0 <b>range</b> 16 .. 31;
+ <b>end</b> <b>record</b>;
+ <b>for</b> Attributed_Character'Size <b>use</b> 32;
+ <FONT COLOR=green><EM>-- Please note: this rep. clause is generated and may be</EM></FONT>
+ <FONT COLOR=green><EM>-- different on your system.</EM></FONT>
+
+ Default_Character : <b>constant</b> Attributed_Character
+ := (Ch => <A HREF="terminal_interface-curses__ads.htm#296_9">Character</A>'First,
+ Color => Color_Pair'First,
+ Attr => (<b>others</b> => False)); <FONT COLOR=green><EM>-- preelaboratable Normal_Video</EM></FONT>
+
+ <b>type</b> Attributed_String <b>is</b> <b>array</b> (Positive <b>range</b> <>) <b>of</b> Attributed_Character;
+ <b>pragma</b> Pack (Attributed_String);
+ <FONT COLOR=green><EM>-- In this binding we allow strings of attributed characters.</EM></FONT>
+
+ <FONT COLOR=green><EM>------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- Exceptions --</EM></FONT>
+ <FONT COLOR=green><EM>------------------</EM></FONT>
+ <FONT COLOR=red><A NAME="382_4">Curses_Exception</A></FONT> : <b>exception</b>;
+ Wrong_Curses_Version : <b>exception</b>;
+
+ <FONT COLOR=green><EM>-- Those exceptions are raised by the ETI (Extended Terminal Interface)</EM></FONT>
+ <FONT COLOR=green><EM>-- subpackets for Menu and Forms handling.</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=red><A NAME="388_4">Eti_System_Error</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="389_4">Eti_Bad_Argument</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="390_4">Eti_Posted</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="391_4">Eti_Connected</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="392_4">Eti_Bad_State</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="393_4">Eti_No_Room</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="394_4">Eti_Not_Posted</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="395_4">Eti_Unknown_Command</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="396_4">Eti_No_Match</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="397_4">Eti_Not_Selectable</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="398_4">Eti_Not_Connected</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="399_4">Eti_Request_Denied</A></FONT> : <b>exception</b>;
+ <FONT COLOR=red><A NAME="400_4">Eti_Invalid_Field</A></FONT> : <b>exception</b>;
+ Eti_Current : <b>exception</b>;
+
+ <FONT COLOR=green><EM>--------------------------------------------------------------------------</EM></FONT>
+ <FONT COLOR=green><EM>-- External C variables</EM></FONT>
+ <FONT COLOR=green><EM>-- Conceptually even in C this are kind of constants, but they are</EM></FONT>
+ <FONT COLOR=green><EM>-- initialized and sometimes changed by the library routines at runtime</EM></FONT>
+ <FONT COLOR=green><EM>-- depending on the type of terminal. I believe the best way to model</EM></FONT>
+ <FONT COLOR=green><EM>-- this is to use functions.</EM></FONT>
+ <FONT COLOR=green><EM>--------------------------------------------------------------------------</EM></FONT>
+
+ <b>function</b> Lines <A HREF="terminal_interface-curses__ads.htm#410_13"> </A> <b>return</b> Line_Count;
+ <b>pragma</b> Inline (Lines);
+
+ <b>function</b> Columns <b>return</b> Column_Count;
+ <b>pragma</b> Inline (Columns);
+
+ <b>function</b> Tab_Size <b>return</b> Natural;
+ <b>pragma</b> Inline (Tab_Size);
+
+ <b>function</b> Number_Of_Colors <b>return</b> Natural;
+ <b>pragma</b> Inline (Number_Of_Colors);
+
+ <b>function</b> Number_Of_Color_Pairs <b>return</b> Natural;
+ <b>pragma</b> Inline (Number_Of_Color_Pairs);
+
+ ACS_Map : <b>array</b> (Character'Val (0) .. Character'Val (127)) <b>of</b>
+ Attributed_Character;
+ <b>pragma</b> Import (C, ACS_Map, "acs_map");
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- Constants for several characters from the Alternate Character Set</EM></FONT>
+ <FONT COLOR=green><EM>-- You must use this constants as indices into the ACS_Map array</EM></FONT>
+ <FONT COLOR=green><EM>-- to get the corresponding attributed character at runtime.</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=red><A NAME="435_4">ACS_Upper_Left_Corner</A></FONT> : <b>constant</b> Character := 'l';
+ <FONT COLOR=red><A NAME="436_4">ACS_Lower_Left_Corner</A></FONT> : <b>constant</b> Character := 'm';
+ <FONT COLOR=red><A NAME="437_4">ACS_Upper_Right_Corner</A></FONT> : <b>constant</b> Character := 'k';
+ <FONT COLOR=red><A NAME="438_4">ACS_Lower_Right_Corner</A></FONT> : <b>constant</b> Character := 'j';
+ <FONT COLOR=red><A NAME="439_4">ACS_Left_Tee</A></FONT> : <b>constant</b> Character := 't';
+ <FONT COLOR=red><A NAME="440_4">ACS_Right_Tee</A></FONT> : <b>constant</b> Character := 'u';
+ <FONT COLOR=red><A NAME="441_4">ACS_Bottom_Tee</A></FONT> : <b>constant</b> Character := 'v';
+ <FONT COLOR=red><A NAME="442_4">ACS_Top_Tee</A></FONT> : <b>constant</b> Character := 'w';
+ <FONT COLOR=red><A NAME="443_4">ACS_Horizontal_Line</A></FONT> : <b>constant</b> Character := 'q';
+ <FONT COLOR=red><A NAME="444_4">ACS_Vertical_Line</A></FONT> : <b>constant</b> Character := 'x';
+ <FONT COLOR=red><A NAME="445_4">ACS_Plus_Symbol</A></FONT> : <b>constant</b> Character := 'n';
+ <FONT COLOR=red><A NAME="446_4">ACS_Scan_Line_1</A></FONT> : <b>constant</b> Character := 'o';
+ <FONT COLOR=red><A NAME="447_4">ACS_Scan_Line_9</A></FONT> : <b>constant</b> Character := 's';
+ <FONT COLOR=red><A NAME="448_4">ACS_Diamond</A></FONT> : <b>constant</b> Character := Character'Val (96);
+ <FONT COLOR=red><A NAME="449_4">ACS_Checker_Board</A></FONT> : <b>constant</b> Character := 'a';
+ <FONT COLOR=red><A NAME="450_4">ACS_Degree</A></FONT> : <b>constant</b> Character := 'f';
+ <FONT COLOR=red><A NAME="451_4">ACS_Plus_Minus</A></FONT> : <b>constant</b> Character := 'g';
+ <FONT COLOR=red><A NAME="452_4">ACS_Bullet</A></FONT> : <b>constant</b> Character := '~';
+ <FONT COLOR=red><A NAME="453_4">ACS_Left_Arrow</A></FONT> : <b>constant</b> Character := ',';
+ <FONT COLOR=red><A NAME="454_4">ACS_Right_Arrow</A></FONT> : <b>constant</b> Character := '+';
+ <FONT COLOR=red><A NAME="455_4">ACS_Down_Arrow</A></FONT> : <b>constant</b> Character := '.';
+ <FONT COLOR=red><A NAME="456_4">ACS_Up_Arrow</A></FONT> : <b>constant</b> Character := '-';
+ <FONT COLOR=red><A NAME="457_4">ACS_Board_Of_Squares</A></FONT> : <b>constant</b> Character := 'h';
+ <FONT COLOR=red><A NAME="458_4">ACS_Lantern</A></FONT> : <b>constant</b> Character := 'i';
+ <FONT COLOR=red><A NAME="459_4">ACS_Solid_Block</A></FONT> : <b>constant</b> Character := '0';
+ <FONT COLOR=red><A NAME="460_4">ACS_Scan_Line_3</A></FONT> : <b>constant</b> Character := 'p';
+ <FONT COLOR=red><A NAME="461_4">ACS_Scan_Line_7</A></FONT> : <b>constant</b> Character := 'r';
+ <FONT COLOR=red><A NAME="462_4">ACS_Less_Or_Equal</A></FONT> : <b>constant</b> Character := 'y';
+ <FONT COLOR=red><A NAME="463_4">ACS_Greater_Or_Equal</A></FONT> : <b>constant</b> Character := 'z';
+ <FONT COLOR=red><A NAME="464_4">ACS_PI</A></FONT> : <b>constant</b> Character := '{';
+ <FONT COLOR=red><A NAME="465_4">ACS_Not_Equal</A></FONT> : <b>constant</b> Character := '|';
+ ACS_Sterling : <b>constant</b> Character := '}';
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Not implemented: newterm, set_term, delscreen</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_1"#2|</EM></FONT>
+ <b>function</b> Standard_Window <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">stdscr</A></EM></FONT>
+ <b>pragma</b> Inline (Standard_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_2"#2|</EM></FONT>
+ <b>procedure</b> Init_Screen;
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_3"#2|</EM></FONT>
+ <b>procedure</b> Init_Windows <b>renames</b> Init_Screen;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">initscr()</A></EM></FONT>
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#481_14">Init_Screen</A>);
+ <b>pragma</b> Inline (Init_Windows);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_4"#2|</EM></FONT>
+ <b>procedure</b> End_Windows;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">endwin()</A></EM></FONT>
+ <b>procedure</b> End_Screen <b>renames</b> End_Windows;
+ <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#489_14">End_Windows</A>);
+ <b>pragma</b> Inline (End_Screen);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_5"#2|</EM></FONT>
+ <b>function</b> Is_End_Window <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">isendwin()</A></EM></FONT>
+ <b>pragma</b> Inline (Is_End_Window);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_move.3x.html">curs_move.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_6"#2|</EM></FONT>
+ <b>procedure</b> Move_Cursor (<FONT COLOR=red><A NAME="504_27">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="505_27">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Column : <b>in</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_move.3x.html">wmove()</A></EM></FONT>
+ <b>pragma</b> Inline (Move_Cursor);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_7"#2|</EM></FONT>
+ <b>procedure</b> Add (<FONT COLOR=red><A NAME="515_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A> := Standard_Window;
+ Ch : <b>in</b> Attributed_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">waddch()</A></EM></FONT>
+
+ <b>procedure</b> Add (<FONT COLOR=red><A NAME="519_19">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Ch : <b>in</b> Character);
+ <FONT COLOR=green><EM>-- Add a single character at the current logical cursor position to</EM></FONT>
+ <FONT COLOR=green><EM>-- the window. Use the current windows attributes.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_8"#2|</EM></FONT>
+ <b>procedure</b> Add
+ (<FONT COLOR=red><A NAME="526_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="527_7">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="528_7">Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Column_Position</A>;
+ Ch : <b>in</b> Attributed_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">mvwaddch()</A></EM></FONT>
+
+ <b>procedure</b> Add
+ (<FONT COLOR=red><A NAME="533_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="534_7">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="535_7">Column</A></FONT> : <b>in</b> Column_Position;
+ Ch : <b>in</b> Character);
+ <FONT COLOR=green><EM>-- Move to the position and add a single character into the window</EM></FONT>
+ <FONT COLOR=green><EM>-- There are more Add routines, so the Inline pragma follows later</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_9"#2|</EM></FONT>
+ <b>procedure</b> Add_With_Immediate_Echo
+ (<FONT COLOR=red><A NAME="542_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A> := Standard_Window;
+ Ch : <b>in</b> Attributed_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">wechochar()</A></EM></FONT>
+
+ <b>procedure</b> Add_With_Immediate_Echo
+ (<FONT COLOR=red><A NAME="547_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Ch : <b>in</b> Character);
+ <FONT COLOR=green><EM>-- Add a character and do an immediate refresh of the screen.</EM></FONT>
+ <b>pragma</b> Inline (Add_With_Immediate_Echo);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_window.3x.html">curs_window.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_10"#2|</EM></FONT>
+ <b>function</b> Create
+ (<FONT COLOR=red><A NAME="558_7">Number_Of_Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="559_7">Number_Of_Columns</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+ <FONT COLOR=red><A NAME="560_7">First_Line_Position</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ First_Column_Position : Column_Position) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">newwin()</A></EM></FONT>
+ <b>pragma</b> Inline (Create);
+
+ <b>function</b> New_Window
+ (<FONT COLOR=red><A NAME="566_7">Number_Of_Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="567_7">Number_Of_Columns</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+ <FONT COLOR=red><A NAME="568_7">First_Line_Position</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ First_Column_Position : Column_Position) <b>return</b> Window
+ <b>renames</b> Create;
+ <b>pragma</b> Inline (New_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_11"#2|</EM></FONT>
+ <b>procedure</b> Delete (Win : <b>in</b> <b>out</b> Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">delwin()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Reset Win to Null_Window</EM></FONT>
+ <b>pragma</b> Inline (Delete);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_12"#2|</EM></FONT>
+ <b>function</b> Sub_Window
+ (<FONT COLOR=red><A NAME="581_7">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="582_7">Number_Of_Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="583_7">Number_Of_Columns</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+ <FONT COLOR=red><A NAME="584_7">First_Line_Position</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ First_Column_Position : Column_Position) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">subwin()</A></EM></FONT>
+ <b>pragma</b> Inline (Sub_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_13"#2|</EM></FONT>
+ <b>function</b> Derived_Window
+ (<FONT COLOR=red><A NAME="591_7">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="592_7">Number_Of_Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="593_7">Number_Of_Columns</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+ <FONT COLOR=red><A NAME="594_7">First_Line_Position</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ First_Column_Position : Column_Position) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">derwin()</A></EM></FONT>
+ <b>pragma</b> Inline (Derived_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_14"#2|</EM></FONT>
+ <b>function</b> Duplicate (Win : Window) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">dupwin()</A></EM></FONT>
+ <b>pragma</b> Inline (Duplicate);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_15"#2|</EM></FONT>
+ <b>procedure</b> Move_Window (<FONT COLOR=red><A NAME="605_27">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+ <FONT COLOR=red><A NAME="606_27">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Column : <b>in</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">mvwin()</A></EM></FONT>
+ <b>pragma</b> Inline (Move_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_16"#2|</EM></FONT>
+ <b>procedure</b> Move_Derived_Window (<FONT COLOR=red><A NAME="612_35">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+ <FONT COLOR=red><A NAME="613_35">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Column : <b>in</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">mvderwin()</A></EM></FONT>
+ <b>pragma</b> Inline (Move_Derived_Window);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_17"#2|</EM></FONT>
+ <b>procedure</b> Synchronize_Upwards (Win : <b>in</b> Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">wsyncup()</A></EM></FONT>
+ <b>pragma</b> Import (C, Synchronize_Upwards, "wsyncup");
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_18"#2|</EM></FONT>
+ <b>procedure</b> Synchronize_Downwards (Win : <b>in</b> Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">wsyncdown()</A></EM></FONT>
+ <b>pragma</b> Import (C, Synchronize_Downwards, "wsyncdown");
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_19"#2|</EM></FONT>
+ <b>procedure</b> Set_Synch_Mode (<FONT COLOR=red><A NAME="629_30">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Mode : <b>in</b> Boolean := False);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_window.3x.html">syncok()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Synch_Mode);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_addstr.3x.html">curs_addstr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_20"#2|</EM></FONT>
+ <b>procedure</b> Add (<FONT COLOR=red><A NAME="639_19">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="640_19">Str</A></FONT> : <b>in</b> String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addstr.3x.html">waddnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: waddstr()</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_21"#2|</EM></FONT>
+ <b>procedure</b> Add (<FONT COLOR=red><A NAME="646_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="647_19">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="648_19">Column</A></FONT> : <b>in</b> Column_Position;
+ <FONT COLOR=red><A NAME="649_19">Str</A></FONT> : <b>in</b> String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addstr.3x.html">mvwaddnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: mvwaddstr()</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_22"#2|</EM></FONT>
+ <b>procedure</b> Add (<FONT COLOR=red><A NAME="659_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="660_19">Str</A></FONT> : <b>in</b> Attributed_String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addchstr.3x.html">waddchnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: waddchstr()</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_23"#2|</EM></FONT>
+ <b>procedure</b> Add (<FONT COLOR=red><A NAME="666_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="667_19">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="668_19">Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="669_19">Str</A></FONT> : <b>in</b> Attributed_String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_addchstr.3x.html">mvwaddchnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: mvwaddchstr()</EM></FONT>
+ <b>pragma</b> Inline (Add);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_border.3x.html">curs_border.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_24"#2|</EM></FONT>
+ <b>procedure</b> Border
+ (<FONT COLOR=red><A NAME="681_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="682_7">Left_Side_Symbol</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <FONT COLOR=red><A NAME="683_7">Right_Side_Symbol</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <FONT COLOR=red><A NAME="684_7">Top_Side_Symbol</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <FONT COLOR=red><A NAME="685_7">Bottom_Side_Symbol</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <FONT COLOR=red><A NAME="686_7">Upper_Left_Corner_Symbol</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <FONT COLOR=red><A NAME="687_7">Upper_Right_Corner_Symbol</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ <FONT COLOR=red><A NAME="688_7">Lower_Left_Corner_Symbol</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ Lower_Right_Corner_Symbol : <b>in</b> Attributed_Character := Default_Character
+ );
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_border.3x.html">wborder()</A></EM></FONT>
+ <b>pragma</b> Inline (Border);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_25"#2|</EM></FONT>
+ <b>procedure</b> Box
+ (<FONT COLOR=red><A NAME="696_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="697_7">Vertical_Symbol</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#369_4">Default_Character</A>;
+ Horizontal_Symbol : <b>in</b> Attributed_Character := Default_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_border.3x.html">box()</A></EM></FONT>
+ <b>pragma</b> Inline (Box);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_26"#2|</EM></FONT>
+ <b>procedure</b> Horizontal_Line
+ (<FONT COLOR=red><A NAME="704_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="705_7">Line_Size</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Natural</A>;
+ Line_Symbol : <b>in</b> Attributed_Character := Default_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_border.3x.html">whline()</A></EM></FONT>
+ <b>pragma</b> Inline (Horizontal_Line);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_27"#2|</EM></FONT>
+ <b>procedure</b> Vertical_Line
+ (<FONT COLOR=red><A NAME="712_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="713_7">Line_Size</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Natural</A>;
+ Line_Symbol : <b>in</b> Attributed_Character := Default_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_border.3x.html">wvline()</A></EM></FONT>
+ <b>pragma</b> Inline (Vertical_Line);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_getch.3x.html">curs_getch.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_28"#2|</EM></FONT>
+ <b>function</b> Get_Keystroke (Win : Window := Standard_Window)
+ <b>return</b> Real_Key_Code;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">wgetch()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Get a character from the keyboard and echo it - if enabled - to the</EM></FONT>
+ <FONT COLOR=green><EM>-- window.</EM></FONT>
+ <FONT COLOR=green><EM>-- If for any reason (i.e. a timeout) we couldn't get a character the</EM></FONT>
+ <FONT COLOR=green><EM>-- returned keycode is Key_None.</EM></FONT>
+ <b>pragma</b> Inline (Get_Keystroke);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_29"#2|</EM></FONT>
+ <b>procedure</b> Undo_Keystroke (Key : <b>in</b> Real_Key_Code);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">ungetch()</A></EM></FONT>
+ <b>pragma</b> Inline (Undo_Keystroke);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_30"#2|</EM></FONT>
+ <b>function</b> Has_Key (Key : Special_Key_Code) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">has_key()</A></EM></FONT>
+ <b>pragma</b> Inline (Has_Key);
+
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <FONT COLOR=green><EM>-- | Some helper functions</EM></FONT>
+ <FONT COLOR=green><EM>-- |</EM></FONT>
+ <b>function</b> Is_Function_Key (Key : Special_Key_Code) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- Return True if the Key is a function key (i.e. one of F0 .. F63)</EM></FONT>
+ <b>pragma</b> Inline (Is_Function_Key);
+
+ <b>subtype</b> Function_Key_Number <b>is</b> Integer <b>range</b> 0 .. 63;
+ <FONT COLOR=green><EM>-- (n)curses allows for 64 function keys.</EM></FONT>
+
+ <b>function</b> Function_Key (Key : Real_Key_Code) <b>return</b> Function_Key_Number;
+ <FONT COLOR=green><EM>-- Return the number of the function key. If the code is not a</EM></FONT>
+ <FONT COLOR=green><EM>-- function key, a CONSTRAINT_ERROR will be raised.</EM></FONT>
+ <b>pragma</b> Inline (Function_Key);
+
+ <b>function</b> Function_Key_Code (Key : Function_Key_Number) <b>return</b> Real_Key_Code;
+ <FONT COLOR=green><EM>-- Return the key code for a given function-key number.</EM></FONT>
+ <b>pragma</b> Inline (Function_Key_Code);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_31"#2|</EM></FONT>
+ <b>procedure</b> Switch_Character_Attribute
+ (<FONT COLOR=red><A NAME="767_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="768_7">Attr</A></FONT> : <b>in</b> Character_Attribute_Set := Normal_Video;
+ On : <b>in</b> Boolean := True); <FONT COLOR=green><EM>-- if False we switch Off.</EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattron()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: wattroff()</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_32"#2|</EM></FONT>
+ <b>procedure</b> Set_Character_Attributes
+ (<FONT COLOR=red><A NAME="775_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="776_7">Attr</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A> := Normal_Video;
+ Color : <b>in</b> Color_Pair := Color_Pair'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattrset()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Character_Attributes);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_33"#2|</EM></FONT>
+ <b>function</b> Get_Character_Attribute
+ (Win : <b>in</b> Window := Standard_Window) <b>return</b> Character_Attribute_Set;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_34"#2|</EM></FONT>
+ <b>function</b> Get_Character_Attribute
+ (Win : <b>in</b> Window := Standard_Window) <b>return</b> Color_Pair;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Character_Attribute);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_35"#2|</EM></FONT>
+ <b>procedure</b> Set_Color (<FONT COLOR=red><A NAME="793_25">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Window</A> := Standard_Window;
+ Pair : <b>in</b> Color_Pair);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wcolor_set()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Color);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_36"#2|</EM></FONT>
+ <b>procedure</b> Change_Attributes
+ (<FONT COLOR=red><A NAME="800_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="801_7">Count</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Integer</A> := -1;
+ <FONT COLOR=red><A NAME="802_7">Attr</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A> := Normal_Video;
+ Color : <b>in</b> Color_Pair := Color_Pair'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wchgat()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_37"#2|</EM></FONT>
+ <b>procedure</b> Change_Attributes
+ (<FONT COLOR=red><A NAME="808_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="809_7">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A> := Line_Position'First;
+ <FONT COLOR=red><A NAME="810_7">Column</A></FONT> : <b>in</b> Column_Position := Column_Position'First;
+ <FONT COLOR=red><A NAME="811_7">Count</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#304_9">Integer</A> := -1;
+ <FONT COLOR=red><A NAME="812_7">Attr</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A> := Normal_Video;
+ Color : <b>in</b> Color_Pair := Color_Pair'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">mvwchgat()</A></EM></FONT>
+ <b>pragma</b> Inline (Change_Attributes);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_38"#2|</EM></FONT>
+ <b>procedure</b> Beep;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_beep.3x.html">beep()</A></EM></FONT>
+ <b>pragma</b> Inline (Beep);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_39"#2|</EM></FONT>
+ <b>procedure</b> Flash_Screen;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_beep.3x.html">flash()</A></EM></FONT>
+ <b>pragma</b> Inline (Flash_Screen);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- | Not implemented : typeahead</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_40"#2|</EM></FONT>
+ <b>procedure</b> Set_Cbreak_Mode (SwitchOn : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">cbreak()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: nocbreak()</EM></FONT>
+ <b>pragma</b> Inline (Set_Cbreak_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_41"#2|</EM></FONT>
+ <b>procedure</b> Set_Raw_Mode (SwitchOn : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">raw()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: noraw()</EM></FONT>
+ <b>pragma</b> Inline (Set_Raw_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_42"#2|</EM></FONT>
+ <b>procedure</b> Set_Echo_Mode (SwitchOn : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">echo()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: noecho()</EM></FONT>
+ <b>pragma</b> Inline (Set_Echo_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_43"#2|</EM></FONT>
+ <b>procedure</b> Set_Meta_Mode (<FONT COLOR=red><A NAME="856_29">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ SwitchOn : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">meta()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Meta_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_44"#2|</EM></FONT>
+ <b>procedure</b> Set_KeyPad_Mode (<FONT COLOR=red><A NAME="862_31">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ SwitchOn : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">keypad()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_KeyPad_Mode);
+
+ <b>type</b> Half_Delay_Amount <b>is</b> <b>range</b> 1 .. 255;
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_45"#2|</EM></FONT>
+ <b>procedure</b> Half_Delay (Amount : <b>in</b> Half_Delay_Amount);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">halfdelay()</A></EM></FONT>
+ <b>pragma</b> Inline (Half_Delay);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_46"#2|</EM></FONT>
+ <b>procedure</b> Set_Flush_On_Interrupt_Mode
+ (<FONT COLOR=red><A NAME="876_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Mode : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">intrflush()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Flush_On_Interrupt_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_47"#2|</EM></FONT>
+ <b>procedure</b> Set_Queue_Interrupt_Mode
+ (<FONT COLOR=red><A NAME="883_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Flush : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">qiflush()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: noqiflush()</EM></FONT>
+ <b>pragma</b> Inline (Set_Queue_Interrupt_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_48"#2|</EM></FONT>
+ <b>procedure</b> Set_NoDelay_Mode
+ (<FONT COLOR=red><A NAME="891_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Mode : <b>in</b> Boolean := False);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">nodelay()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_NoDelay_Mode);
+
+ <b>type</b> Timeout_Mode <b>is</b> (Blocking, Non_Blocking, Delayed);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_49"#2|</EM></FONT>
+ <b>procedure</b> Set_Timeout_Mode (<FONT COLOR=red><A NAME="899_32">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#895_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="900_32">Mode</A></FONT> : <b>in</b> Timeout_Mode;
+ Amount : <b>in</b> Natural); <FONT COLOR=green><EM>-- in Milliseconds</EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">wtimeout()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Instead of overloading the semantic of the sign of amount, we</EM></FONT>
+ <FONT COLOR=green><EM>-- introduce the Timeout_Mode parameter. This should improve</EM></FONT>
+ <FONT COLOR=green><EM>-- readability. For Blocking and Non_Blocking, the Amount is not</EM></FONT>
+ <FONT COLOR=green><EM>-- evaluated.</EM></FONT>
+ <FONT COLOR=green><EM>-- We don't inline this procedure.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_50"#2|</EM></FONT>
+ <b>procedure</b> Set_Escape_Timer_Mode
+ (<FONT COLOR=red><A NAME="911_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Timer_Off : <b>in</b> Boolean := False);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">notimeout()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Escape_Timer_Mode);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_51"#2|</EM></FONT>
+ <b>procedure</b> Set_NL_Mode (SwitchOn : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">nl()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: nonl()</EM></FONT>
+ <b>pragma</b> Inline (Set_NL_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_52"#2|</EM></FONT>
+ <b>procedure</b> Clear_On_Next_Update
+ (<FONT COLOR=red><A NAME="928_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Do_Clear : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">clearok()</A></EM></FONT>
+ <b>pragma</b> Inline (Clear_On_Next_Update);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_53"#2|</EM></FONT>
+ <b>procedure</b> Use_Insert_Delete_Line
+ (<FONT COLOR=red><A NAME="935_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Do_Idl : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">idlok()</A></EM></FONT>
+ <b>pragma</b> Inline (Use_Insert_Delete_Line);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_54"#2|</EM></FONT>
+ <b>procedure</b> Use_Insert_Delete_Character
+ (<FONT COLOR=red><A NAME="942_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Do_Idc : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">idcok()</A></EM></FONT>
+ <b>pragma</b> Inline (Use_Insert_Delete_Character);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_55"#2|</EM></FONT>
+ <b>procedure</b> Leave_Cursor_After_Update
+ (<FONT COLOR=red><A NAME="949_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Do_Leave : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">leaveok()</A></EM></FONT>
+ <b>pragma</b> Inline (Leave_Cursor_After_Update);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_56"#2|</EM></FONT>
+ <b>procedure</b> Immediate_Update_Mode
+ (<FONT COLOR=red><A NAME="956_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Mode : <b>in</b> Boolean := False);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">immedok()</A></EM></FONT>
+ <b>pragma</b> Inline (Immediate_Update_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_57"#2|</EM></FONT>
+ <b>procedure</b> Allow_Scrolling
+ (<FONT COLOR=red><A NAME="963_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Mode : <b>in</b> Boolean := False);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">scrollok()</A></EM></FONT>
+ <b>pragma</b> Inline (Allow_Scrolling);
+
+ <b>function</b> Scrolling_Allowed (Win : Window := Standard_Window) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- There is no such function in the C interface.</EM></FONT>
+ <b>pragma</b> Inline (Scrolling_Allowed);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_58"#2|</EM></FONT>
+ <b>procedure</b> Set_Scroll_Region
+ (<FONT COLOR=red><A NAME="974_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="975_7">Top_Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Line_Position</A>;
+ Bottom_Line : <b>in</b> Line_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">wsetscrreg()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Scroll_Region);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_59"#2|</EM></FONT>
+ <b>procedure</b> Update_Screen;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">doupdate()</A></EM></FONT>
+ <b>pragma</b> Inline (Update_Screen);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_60"#2|</EM></FONT>
+ <b>procedure</b> Refresh (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wrefresh()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- There is an overloaded Refresh for Pads.</EM></FONT>
+ <FONT COLOR=green><EM>-- The Inline pragma appears there</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_61"#2|</EM></FONT>
+ <b>procedure</b> Refresh_Without_Update
+ (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wnoutrefresh()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- There is an overloaded Refresh_Without_Update for Pads.</EM></FONT>
+ <FONT COLOR=green><EM>-- The Inline pragma appears there</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_62"#2|</EM></FONT>
+ <b>procedure</b> Redraw (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">redrawwin()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_63"#2|</EM></FONT>
+ <b>procedure</b> Redraw (<FONT COLOR=red><A NAME="1007_22">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1008_22">Begin_Line</A></FONT> : <b>in</b> Line_Position;
+ Line_Count : <b>in</b> Positive);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wredrawln()</A></EM></FONT>
+ <b>pragma</b> Inline (Redraw);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_64"#2|</EM></FONT>
+ <b>procedure</b> Erase (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">werase()</A></EM></FONT>
+ <b>pragma</b> Inline (Erase);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_65"#2|</EM></FONT>
+ <b>procedure</b> Clear
+ (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclear()</A></EM></FONT>
+ <b>pragma</b> Inline (Clear);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_66"#2|</EM></FONT>
+ <b>procedure</b> Clear_To_End_Of_Screen
+ (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclrtobot()</A></EM></FONT>
+ <b>pragma</b> Inline (Clear_To_End_Of_Screen);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_67"#2|</EM></FONT>
+ <b>procedure</b> Clear_To_End_Of_Line
+ (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclrtoeol()</A></EM></FONT>
+ <b>pragma</b> Inline (Clear_To_End_Of_Line);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_68"#2|</EM></FONT>
+ <b>procedure</b> Set_Background
+ (<FONT COLOR=red><A NAME="1046_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A> := Standard_Window;
+ Ch : <b>in</b> Attributed_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdset()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Background);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_69"#2|</EM></FONT>
+ <b>procedure</b> Change_Background
+ (<FONT COLOR=red><A NAME="1053_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A> := Standard_Window;
+ Ch : <b>in</b> Attributed_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgd()</A></EM></FONT>
+ <b>pragma</b> Inline (Change_Background);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_70"#2|</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Get_Background</A> (Win : Window := Standard_Window)
+ <b>return</b> Attributed_Character;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdget()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Background);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_71"#2|</EM></FONT>
+ <b>procedure</b> Untouch (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">untouchwin()</A></EM></FONT>
+ <b>pragma</b> Inline (Untouch);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_72"#2|</EM></FONT>
+ <b>procedure</b> Touch (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">touchwin()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_73"#2|</EM></FONT>
+ <b>procedure</b> Touch (<FONT COLOR=red><A NAME="1078_21">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1079_21">Start</A></FONT> : <b>in</b> Line_Position;
+ Count : <b>in</b> Positive);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">touchline()</A></EM></FONT>
+ <b>pragma</b> Inline (Touch);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_74"#2|</EM></FONT>
+ <b>procedure</b> Change_Lines_Status (<FONT COLOR=red><A NAME="1085_35">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1086_35">Start</A></FONT> : <b>in</b> Line_Position;
+ <FONT COLOR=red><A NAME="1087_35">Count</A></FONT> : <b>in</b> Positive;
+ State : <b>in</b> Boolean);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">wtouchln()</A></EM></FONT>
+ <b>pragma</b> Inline (Change_Lines_Status);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_75"#2|</EM></FONT>
+ <b>function</b> Is_Touched (<FONT COLOR=red><A NAME="1093_25">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ Line : Line_Position) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">is_linetouched()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_76"#2|</EM></FONT>
+ <b>function</b> Is_Touched (Win : Window := Standard_Window) <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">is_wintouched()</A></EM></FONT>
+ <b>pragma</b> Inline (Is_Touched);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_overlay.3x.html">curs_overlay.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_77"#2|</EM></FONT>
+ <b>procedure</b> Copy
+ (<FONT COLOR=red><A NAME="1108_7">Source_Window</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ <FONT COLOR=red><A NAME="1109_7">Destination_Window</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+ <FONT COLOR=red><A NAME="1110_7">Source_Top_Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1111_7">Source_Left_Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="1112_7">Destination_Top_Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1113_7">Destination_Left_Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="1114_7">Destination_Bottom_Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1115_7">Destination_Right_Column</A></FONT> : <b>in</b> Column_Position;
+ Non_Destructive_Mode : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">copywin()</A></EM></FONT>
+ <b>pragma</b> Inline (Copy);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_78"#2|</EM></FONT>
+ <b>procedure</b> Overwrite (<FONT COLOR=red><A NAME="1121_25">Source_Window</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ Destination_Window : <b>in</b> Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">overwrite()</A></EM></FONT>
+ <b>pragma</b> Inline (Overwrite);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_79"#2|</EM></FONT>
+ <b>procedure</b> Overlay (<FONT COLOR=red><A NAME="1127_23">Source_Window</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#56_9">Window</A>;
+ Destination_Window : <b>in</b> Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">overlay()</A></EM></FONT>
+ <b>pragma</b> Inline (Overlay);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_80"#2|</EM></FONT>
+ <b>procedure</b> Insert_Delete_Lines
+ (<FONT COLOR=red><A NAME="1138_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Lines : <b>in</b> Integer := 1); <FONT COLOR=green><EM>-- default is to insert one line above</EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">winsdelln()</A></EM></FONT>
+ <b>pragma</b> Inline (Insert_Delete_Lines);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_81"#2|</EM></FONT>
+ <b>procedure</b> Delete_Line (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">wdeleteln()</A></EM></FONT>
+ <b>pragma</b> Inline (Delete_Line);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_82"#2|</EM></FONT>
+ <b>procedure</b> Insert_Line (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">winsertln()</A></EM></FONT>
+ <b>pragma</b> Inline (Insert_Line);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_getyx.3x.html">curs_getyx.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_83"#2|</EM></FONT>
+ <b>procedure</b> Get_Size
+ (<FONT COLOR=red><A NAME="1159_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="1160_7">Number_Of_Lines</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ Number_Of_Columns : <b>out</b> Column_Count);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getmaxyx()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Size);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_84"#2|</EM></FONT>
+ <b>procedure</b> Get_Window_Position
+ (<FONT COLOR=red><A NAME="1167_7">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="1168_7">Top_Left_Line</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Top_Left_Column : <b>out</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getbegyx()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Window_Position);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_85"#2|</EM></FONT>
+ <b>procedure</b> Get_Cursor_Position
+ (<FONT COLOR=red><A NAME="1175_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1176_7">Line</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Column : <b>out</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getyx()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Cursor_Position);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_86"#2|</EM></FONT>
+ <b>procedure</b> Get_Origin_Relative_To_Parent
+ (<FONT COLOR=red><A NAME="1183_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+ <FONT COLOR=red><A NAME="1184_7">Top_Left_Line</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1185_7">Top_Left_Column</A></FONT> : <b>out</b> Column_Position;
+ Is_Not_A_Subwindow : <b>out</b> Boolean);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getparyx()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Instead of placing -1 in the coordinates as return, we use a boolean</EM></FONT>
+ <FONT COLOR=green><EM>-- to return the info that the window has no parent.</EM></FONT>
+ <b>pragma</b> Inline (Get_Origin_Relative_To_Parent);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_87"#2|</EM></FONT>
+ <b>function</b> New_Pad (<FONT COLOR=red><A NAME="1197_22">Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ Columns : Column_Count) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">newpad()</A></EM></FONT>
+ <b>pragma</b> Inline (New_Pad);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_88"#2|</EM></FONT>
+ <b>function</b> Sub_Pad
+ (<FONT COLOR=red><A NAME="1204_7">Pad</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#62_12">Window</A>;
+ <FONT COLOR=red><A NAME="1205_7">Number_Of_Lines</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Line_Count</A>;
+ <FONT COLOR=red><A NAME="1206_7">Number_Of_Columns</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Count</A>;
+ <FONT COLOR=red><A NAME="1207_7">First_Line_Position</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ First_Column_Position : Column_Position) <b>return</b> Window;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">subpad()</A></EM></FONT>
+ <b>pragma</b> Inline (Sub_Pad);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_89"#2|</EM></FONT>
+ <b>procedure</b> Refresh
+ (<FONT COLOR=red><A NAME="1214_7">Pad</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+ <FONT COLOR=red><A NAME="1215_7">Source_Top_Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1216_7">Source_Left_Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="1217_7">Destination_Top_Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1218_7">Destination_Left_Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="1219_7">Destination_Bottom_Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Destination_Right_Column : <b>in</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">prefresh()</A></EM></FONT>
+ <b>pragma</b> Inline (Refresh);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_90"#2|</EM></FONT>
+ <b>procedure</b> Refresh_Without_Update
+ (<FONT COLOR=red><A NAME="1226_7">Pad</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A>;
+ <FONT COLOR=red><A NAME="1227_7">Source_Top_Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1228_7">Source_Left_Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="1229_7">Destination_Top_Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1230_7">Destination_Left_Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="1231_7">Destination_Bottom_Row</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Destination_Right_Column : <b>in</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">pnoutrefresh()</A></EM></FONT>
+ <b>pragma</b> Inline (Refresh_Without_Update);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_91"#2|</EM></FONT>
+ <b>procedure</b> Add_Character_To_Pad_And_Echo_It
+ (<FONT COLOR=red><A NAME="1238_7">Pad</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A>;
+ Ch : <b>in</b> Attributed_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">pechochar()</A></EM></FONT>
+
+ <b>procedure</b> Add_Character_To_Pad_And_Echo_It
+ (<FONT COLOR=red><A NAME="1243_7">Pad</A></FONT> : <b>in</b> Window;
+ Ch : <b>in</b> Character);
+ <b>pragma</b> Inline (Add_Character_To_Pad_And_Echo_It);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_scroll.3x.html">curs_scroll.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_92"#2|</EM></FONT>
+ <b>procedure</b> Scroll (<FONT COLOR=red><A NAME="1252_22">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ Amount : <b>in</b> Integer := 1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_scroll.3x.html">wscrl()</A></EM></FONT>
+ <b>pragma</b> Inline (Scroll);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_93"#2|</EM></FONT>
+ <b>procedure</b> Delete_Character (Win : <b>in</b> Window := Standard_Window);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_delch.3x.html">wdelch()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_94"#2|</EM></FONT>
+ <b>procedure</b> Delete_Character
+ (<FONT COLOR=red><A NAME="1267_7">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1268_7">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Column : <b>in</b> Column_Position);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_delch.3x.html">mvwdelch()</A></EM></FONT>
+ <b>pragma</b> Inline (Delete_Character);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_95"#2|</EM></FONT>
+ <b>function</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Peek</A> (Win : Window := Standard_Window)
+ <b>return</b> Attributed_Character;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inch.3x.html">winch()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_96"#2|</EM></FONT>
+ <b>function</b> Peek
+ (<FONT COLOR=red><A NAME="1284_7">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1285_7">Line</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ Column : Column_Position) <b>return</b> Attributed_Character;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inch.3x.html">mvwinch()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- More Peek's follow, pragma Inline appears later.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_97"#2|</EM></FONT>
+ <b>procedure</b> Insert (<FONT COLOR=red><A NAME="1295_22">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Window</A> := Standard_Window;
+ Ch : <b>in</b> Attributed_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_winch.3x.html">winsch()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_98"#2|</EM></FONT>
+ <b>procedure</b> Insert (<FONT COLOR=red><A NAME="1300_22">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1301_22">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1302_22">Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#350_9">Column_Position</A>;
+ Ch : <b>in</b> Attributed_Character);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_winch.3x.html">mvwinsch()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_winch.3x.html">curs_winch.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_99"#2|</EM></FONT>
+ <b>procedure</b> Insert (<FONT COLOR=red><A NAME="1311_22">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="1312_22">Str</A></FONT> : <b>in</b> String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_winch.3x.html">winsnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: winsstr()</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_100"#2|</EM></FONT>
+ <b>procedure</b> Insert (<FONT COLOR=red><A NAME="1318_22">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1319_22">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1320_22">Column</A></FONT> : <b>in</b> Column_Position;
+ <FONT COLOR=red><A NAME="1321_22">Str</A></FONT> : <b>in</b> String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_winch.3x.html">mvwinsnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: mvwinsstr()</EM></FONT>
+ <b>pragma</b> Inline (Insert);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_instr.3x.html">curs_instr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_101"#2|</EM></FONT>
+ <b>procedure</b> Peek (<FONT COLOR=red><A NAME="1332_20">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="1333_20">Str</A></FONT> : <b>out</b> String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_instr.3x.html">winnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: winstr()</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_102"#2|</EM></FONT>
+ <b>procedure</b> Peek (<FONT COLOR=red><A NAME="1339_20">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1340_20">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1341_20">Column</A></FONT> : <b>in</b> Column_Position;
+ <FONT COLOR=red><A NAME="1342_20">Str</A></FONT> : <b>out</b> String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_instr.3x.html">mvwinnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: mvwinstr()</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_103"#2|</EM></FONT>
+ <b>procedure</b> Peek (<FONT COLOR=red><A NAME="1352_20">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1353_20">Str</A></FONT> : <b>out</b> Attributed_String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inchstr.3x.html">winchnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: winchstr()</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_104"#2|</EM></FONT>
+ <b>procedure</b> Peek (<FONT COLOR=red><A NAME="1359_20">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1360_20">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1361_20">Column</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#374_9">Column_Position</A>;
+ <FONT COLOR=red><A NAME="1362_20">Str</A></FONT> : <b>out</b> Attributed_String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_inchstr.3x.html">mvwinchnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: mvwinchstr()</EM></FONT>
+ <FONT COLOR=green><EM>-- We don't inline the Peek procedures</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_105"#2|</EM></FONT>
+ <b>procedure</b> Get (<FONT COLOR=red><A NAME="1373_19">Win</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="1374_19">Str</A></FONT> : <b>out</b> String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getstr.3x.html">wgetnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: wgetstr()</EM></FONT>
+
+ <b>procedure</b> Get (<FONT COLOR=red><A NAME="1379_19">Win</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#59_9">Window</A> := Standard_Window;
+ <FONT COLOR=red><A NAME="1380_19">Line</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1381_19">Column</A></FONT> : <b>in</b> Column_Position;
+ <FONT COLOR=red><A NAME="1382_19">Str</A></FONT> : <b>out</b> String;
+ Len : <b>in</b> Integer := -1);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_getstr.3x.html">wgetnstr()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- not specified in ncurses, should be: mvwgetnstr()</EM></FONT>
+ <FONT COLOR=green><EM>-- and mvwgetstr() (which exists)</EM></FONT>
+ <FONT COLOR=green><EM>-- Get is not inlined</EM></FONT>
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <b>type</b> Soft_Label_Key_Format <b>is</b> (Three_Two_Three,
+ Four_Four,
+ PC_Style, <FONT COLOR=green><EM>-- ncurses specific</EM></FONT>
+ <FONT COLOR=red><A NAME="1396_9"> </A></FONT> PC_Style_With_Index); <FONT COLOR=green><EM>-- "</EM></FONT>
+ <b>type</b> <FONT COLOR=red><A NAME="1397_9">Label_Number</A></FONT> <b>is</b> <b>new</b> Positive <b>range</b> 1 .. 12;
+ <b>type</b> Label_Justification <b>is</b> (Left, Centered, Right);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_106"#2|</EM></FONT>
+ <b>procedure</b> Init_Soft_Label_Keys
+ (Format : <b>in</b> Soft_Label_Key_Format := Three_Two_Three);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_init()</A></EM></FONT>
+ <b>pragma</b> Inline (Init_Soft_Label_Keys);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_107"#2|</EM></FONT>
+ <b>procedure</b> Set_Soft_Label_Key (<FONT COLOR=red><A NAME="1407_34">Label</A></FONT> : <b>in</b> Label_Number;
+ <FONT COLOR=red><A NAME="1408_34">Text</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1397_9">String</A>;
+ Fmt : <b>in</b> Label_Justification := Left);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_set()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- We don't inline this procedure</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_108"#2|</EM></FONT>
+ <b>procedure</b> Refresh_Soft_Label_Keys;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_refresh()</A></EM></FONT>
+ <b>pragma</b> Inline (Refresh_Soft_Label_Keys);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_109"#2|</EM></FONT>
+ <b>procedure</b> Refresh_Soft_Label_Keys_Without_Update;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_noutrefresh()</A></EM></FONT>
+ <b>pragma</b> Inline (Refresh_Soft_Label_Keys_Without_Update);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_110"#2|</EM></FONT>
+ <b>procedure</b> Get_Soft_Label_Key (<FONT COLOR=red><A NAME="1424_34">Label</A></FONT> : <b>in</b> Label_Number;
+ Text : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_111"#2|</EM></FONT>
+ <b>function</b> Get_Soft_Label_Key (Label : <b>in</b> Label_Number) <b>return</b> String;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <b>pragma</b> Inline (Get_Soft_Label_Key);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_112"#2|</EM></FONT>
+ <b>procedure</b> Clear_Soft_Label_Keys;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_clear()</A></EM></FONT>
+ <b>pragma</b> Inline (Clear_Soft_Label_Keys);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_113"#2|</EM></FONT>
+ <b>procedure</b> Restore_Soft_Label_Keys;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_restore()</A></EM></FONT>
+ <b>pragma</b> Inline (Restore_Soft_Label_Keys);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_114"#2|</EM></FONT>
+ <b>procedure</b> Touch_Soft_Label_Keys;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_touch()</A></EM></FONT>
+ <b>pragma</b> Inline (Touch_Soft_Label_Keys);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_115"#2|</EM></FONT>
+ <b>procedure</b> Switch_Soft_Label_Key_Attributes
+ (<FONT COLOR=red><A NAME="1451_7">Attr</A></FONT> : <b>in</b> Character_Attribute_Set;
+ On : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attron()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: slk_attroff()</EM></FONT>
+ <b>pragma</b> Inline (Switch_Soft_Label_Key_Attributes);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_116"#2|</EM></FONT>
+ <b>procedure</b> Set_Soft_Label_Key_Attributes
+ (<FONT COLOR=red><A NAME="1459_7">Attr</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#296_9">Character_Attribute_Set</A> := Normal_Video;
+ Color : <b>in</b> Color_Pair := Color_Pair'First);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attrset()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Soft_Label_Key_Attributes);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_117"#2|</EM></FONT>
+ <b>function</b> Get_Soft_Label_Key_Attributes <b>return</b> Character_Attribute_Set;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_118"#2|</EM></FONT>
+ <b>function</b> Get_Soft_Label_Key_Attributes <b>return</b> Color_Pair;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></FONT>
+ <b>pragma</b> Inline (Get_Soft_Label_Key_Attributes);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_119"#2|</EM></FONT>
+ <b>procedure</b> Set_Soft_Label_Key_Color (Pair : <b>in</b> Color_Pair);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_color()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Soft_Label_Key_Color);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/keyok.3x.html">keyok.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_120"#2|</EM></FONT>
+ <b>procedure</b> Enable_Key (<FONT COLOR=red><A NAME="1483_26">Key</A></FONT> : <b>in</b> Special_Key_Code;
+ Enable : <b>in</b> Boolean := True);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/keyok.3x.html">keyok()</A></EM></FONT>
+ <b>pragma</b> Inline (Enable_Key);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/define_key.3x.html">define_key.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_121"#2|</EM></FONT>
+ <b>procedure</b> Define_Key (<FONT COLOR=red><A NAME="1493_26">Definition</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#76_12">String</A>;
+ Key : <b>in</b> Special_Key_Code);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/define_key.3x.html">define_key()</A></EM></FONT>
+ <b>pragma</b> Inline (Define_Key);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_util.3x.html">curs_util.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- | Not implemented : filter, use_env, putwin, getwin</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_122"#2|</EM></FONT>
+ <b>procedure</b> Key_Name (<FONT COLOR=red><A NAME="1505_24">Key</A></FONT> : <b>in</b> Real_Key_Code;
+ Name : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- The external name for a real keystroke.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_123"#2|</EM></FONT>
+ <b>function</b> Key_Name (Key : <b>in</b> Real_Key_Code) <b>return</b> String;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <FONT COLOR=green><EM>-- We don't inline this routine</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_124"#2|</EM></FONT>
+ <b>procedure</b> Un_Control (<FONT COLOR=red><A NAME="1517_26">Ch</A></FONT> : <b>in</b> Attributed_Character;
+ Str : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_125"#2|</EM></FONT>
+ <b>function</b> Un_Control (Ch : <b>in</b> Attributed_Character) <b>return</b> String;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <b>pragma</b> Inline (Un_Control);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_126"#2|</EM></FONT>
+ <b>procedure</b> Delay_Output (Msecs : <b>in</b> Natural);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">delay_output()</A></EM></FONT>
+ <b>pragma</b> Inline (Delay_Output);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_127"#2|</EM></FONT>
+ <b>procedure</b> Flush_Input;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_util.3x.html">flushinp()</A></EM></FONT>
+ <b>pragma</b> Inline (Flush_Input);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_128"#2|</EM></FONT>
+ <b>function</b> Baudrate <b>return</b> Natural;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">baudrate()</A></EM></FONT>
+ <b>pragma</b> Inline (Baudrate);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_129"#2|</EM></FONT>
+ <b>function</b> Erase_Character <b>return</b> Character;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">erasechar()</A></EM></FONT>
+ <b>pragma</b> Inline (Erase_Character);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_130"#2|</EM></FONT>
+ <b>function</b> Kill_Character <b>return</b> Character;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">killchar()</A></EM></FONT>
+ <b>pragma</b> Inline (Kill_Character);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_131"#2|</EM></FONT>
+ <b>function</b> Has_Insert_Character <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">has_ic()</A></EM></FONT>
+ <b>pragma</b> Inline (Has_Insert_Character);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_132"#2|</EM></FONT>
+ <b>function</b> Has_Insert_Line <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">has_il()</A></EM></FONT>
+ <b>pragma</b> Inline (Has_Insert_Line);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_133"#2|</EM></FONT>
+ <b>function</b> Supported_Attributes <b>return</b> Character_Attribute_Set;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termattrs()</A></EM></FONT>
+ <b>pragma</b> Inline (Supported_Attributes);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_134"#2|</EM></FONT>
+ <b>procedure</b> Long_Name (Name : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_135"#2|</EM></FONT>
+ <b>function</b> Long_Name <b>return</b> String;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <b>pragma</b> Inline (Long_Name);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_136"#2|</EM></FONT>
+ <b>procedure</b> Terminal_Name (Name : <b>out</b> String);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_137"#2|</EM></FONT>
+ <b>function</b> Terminal_Name <b>return</b> String;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- Same as function</EM></FONT>
+ <b>pragma</b> Inline (Terminal_Name);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_color.3x.html">curs_color.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_138"#2|</EM></FONT>
+ <b>procedure</b> Start_Color;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">start_color()</A></EM></FONT>
+ <b>pragma</b> Import (C, Start_Color, "start_color");
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_139"#2|</EM></FONT>
+ <b>procedure</b> Init_Pair (<FONT COLOR=red><A NAME="1601_25">Pair</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Redefinable_Color_Pair</A>;
+ <FONT COLOR=red><A NAME="1602_25">Fore</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+ Back : <b>in</b> Color_Number);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">init_pair()</A></EM></FONT>
+ <b>pragma</b> Inline (Init_Pair);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_140"#2|</EM></FONT>
+ <b>procedure</b> Pair_Content (<FONT COLOR=red><A NAME="1608_28">Pair</A></FONT> : <b>in</b> Color_Pair;
+ <FONT COLOR=red><A NAME="1609_28">Fore</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#276_9">Color_Number</A>;
+ Back : <b>out</b> Color_Number);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">pair_content()</A></EM></FONT>
+ <b>pragma</b> Inline (Pair_Content);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_141"#2|</EM></FONT>
+ <b>function</b> Has_Colors <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">has_colors()</A></EM></FONT>
+ <b>pragma</b> Inline (Has_Colors);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_142"#2|</EM></FONT>
+ <b>procedure</b> Init_Color (<FONT COLOR=red><A NAME="1620_26">Color</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">Color_Number</A>;
+ <FONT COLOR=red><A NAME="1621_26">Red</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+ <FONT COLOR=red><A NAME="1622_26">Green</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+ Blue : <b>in</b> RGB_Value);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">init_color()</A></EM></FONT>
+ <b>pragma</b> Inline (Init_Color);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_143"#2|</EM></FONT>
+ <b>function</b> Can_Change_Color <b>return</b> Boolean;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">can_change_color()</A></EM></FONT>
+ <b>pragma</b> Inline (Can_Change_Color);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_144"#2|</EM></FONT>
+ <b>procedure</b> Color_Content (<FONT COLOR=red><A NAME="1633_29">Color</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#292_9">Color_Number</A>;
+ <FONT COLOR=red><A NAME="1634_29">Red</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+ <FONT COLOR=red><A NAME="1635_29">Green</A></FONT> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#292_9">RGB_Value</A>;
+ Blue : <b>out</b> RGB_Value);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_color.3x.html">color_content()</A></EM></FONT>
+ <b>pragma</b> Inline (Color_Content);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Man page <A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+
+ <FONT COLOR=green><EM>-- | Not implemented: getsyx, setsyx</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <b>type</b> Curses_Mode <b>is</b> (Curses, Shell);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_145"#2|</EM></FONT>
+ <b>procedure</b> Save_Curses_Mode (Mode : <b>in</b> Curses_Mode);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">def_prog_mode()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: def_shell_mode()</EM></FONT>
+ <b>pragma</b> Inline (Save_Curses_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_146"#2|</EM></FONT>
+ <b>procedure</b> Reset_Curses_Mode (Mode : <b>in</b> Curses_Mode);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">reset_prog_mode()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- AKA: reset_shell_mode()</EM></FONT>
+ <b>pragma</b> Inline (Reset_Curses_Mode);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_147"#2|</EM></FONT>
+ <b>procedure</b> Save_Terminal_State;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">savetty()</A></EM></FONT>
+ <b>pragma</b> Inline (Save_Terminal_State);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_148"#2|</EM></FONT>
+ <b>procedure</b> Reset_Terminal_State;
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">resetty();</A></EM></FONT>
+ <b>pragma</b> Inline (Reset_Terminal_State);
+
+ <b>type</b> Stdscr_Init_Proc <b>is</b> <b>access</b>
+ <b>function</b> (<FONT COLOR=red><A NAME="1671_17">Win</A></FONT> : <A HREF="terminal_interface-curses__ads.htm#64_12">Window</A>;
+ Columns :<A HREF="terminal_interface-curses__ads.htm#1669_9"> </A>Column_Count) <b>return</b> Integer;
+ <b>pragma</b> Convention (C, Stdscr_Init_Proc);
+ <FONT COLOR=green><EM>-- N.B.: the return value is actually ignored, but it seems to be</EM></FONT>
+ <FONT COLOR=green><EM>-- a good practice to return 0 if you think all went fine</EM></FONT>
+ <FONT COLOR=green><EM>-- and -1 otherwise.</EM></FONT>
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_149"#2|</EM></FONT>
+ <b>procedure</b> Rip_Off_Lines (<FONT COLOR=red><A NAME="1679_29">Lines</A></FONT> : <b>in</b> <A HREF="terminal_interface-curses__ads.htm#1669_9">Integer</A>;
+ Proc : <b>in</b> Stdscr_Init_Proc);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">ripoffline()</A></EM></FONT>
+ <FONT COLOR=green><EM>-- N.B.: to be more precise, this uses a ncurses specific enhancement of</EM></FONT>
+ <FONT COLOR=green><EM>-- ripoffline(), in which the Lines argument absolute value is the</EM></FONT>
+ <FONT COLOR=green><EM>-- number of lines to be ripped of. The official ripoffline() only</EM></FONT>
+ <FONT COLOR=green><EM>-- uses the sign of Lines to rip of a single line from bottom or top.</EM></FONT>
+ <b>pragma</b> Inline (Rip_Off_Lines);
+
+ <b>type</b> Cursor_Visibility <b>is</b> (Invisible, Normal, Very_Visible);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_150"#2|</EM></FONT>
+ <b>procedure</b> Set_Cursor_Visibility (Visibility : <b>in</b> <b>out</b> Cursor_Visibility);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">curs_set()</A></EM></FONT>
+ <b>pragma</b> Inline (Set_Cursor_Visibility);
+
+ <FONT COLOR=green><EM>-- #1A NAME="AFU_151"#2|</EM></FONT>
+ <b>procedure</b> Nap_Milli_Seconds (Ms : <b>in</b> Natural);
+ <FONT COLOR=green><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">napms()</A></EM></FONT>
+ <b>pragma</b> Inline (Nap_Milli_Seconds);
+
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <FONT COLOR=green><EM>-- | Some useful helpers.</EM></FONT>
+ <FONT COLOR=green><EM>-- |=====================================================================</EM></FONT>
+ <b>type</b> Transform_Direction <b>is</b> (From_Screen, To_Screen);
+ <b>procedure</b> Transform_Coordinates
+ (<FONT COLOR=red><A NAME="1705_7">W</A></FONT> : <b>in</b> Window := Standard_Window;
+ <FONT COLOR=red><A NAME="1706_7">Line</A></FONT> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#60_9">Line_Position</A>;
+ <FONT COLOR=red><A NAME="1707_7">Column</A></FONT> : <b>in</b> <b>out</b> Column_Position;
+ Dir : <b>in</b> Transform_Direction := From_Screen);
+ <FONT COLOR=green><EM>-- This procedure transforms screen coordinates into coordinates relative</EM></FONT>
+ <FONT COLOR=green><EM>-- to the window and vice versa, depending on the Dir parameter.</EM></FONT>
+ <FONT COLOR=green><EM>-- Screen coordinates are the position informations on the physical device.</EM></FONT>
+ <FONT COLOR=green><EM>-- An Curses_Exception will be raised if Line and Column are not in the</EM></FONT>
+ <FONT COLOR=green><EM>-- Window or if you pass the Null_Window as argument.</EM></FONT>
+ <FONT COLOR=green><EM>-- We don't inline this procedure</EM></FONT>
+
+<b>private</b>
+ <b>type</b> Window <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address;
+ Null_Window : <b>constant</b> Window := 0;
+
+ <FONT COLOR=green><EM>-- The next constants are generated and may be different on your</EM></FONT>
+ <FONT COLOR=green><EM>-- architecture.</EM></FONT>
+ <FONT COLOR=green><EM>--</EM></FONT>
+ <FONT COLOR=red><A NAME="1723_4">Offset_maxy</A></FONT> : <b>constant</b> Natural := 2; <FONT COLOR=green><EM>-- short</EM></FONT>
+ <FONT COLOR=red><A NAME="1724_4">Offset_maxx</A></FONT> : <b>constant</b> Natural := 3; <FONT COLOR=green><EM>-- short</EM></FONT>
+ <FONT COLOR=red><A NAME="1725_4">Offset_begy</A></FONT> : <b>constant</b> Natural := 4; <FONT COLOR=green><EM>-- short</EM></FONT>
+ <FONT COLOR=red><A NAME="1726_4">Offset_begx</A></FONT> : <b>constant</b> Natural := 5; <FONT COLOR=green><EM>-- short</EM></FONT>
+ <FONT COLOR=red><A NAME="1727_4">Offset_cury</A></FONT> : <b>constant</b> Natural := 0; <FONT COLOR=green><EM>-- short</EM></FONT>
+ <FONT COLOR=red><A NAME="1728_4">Offset_curx</A></FONT> : <b>constant</b> Natural := 1; <FONT COLOR=green><EM>-- short</EM></FONT>
+ <FONT COLOR=red><A NAME="1729_4">Offset_yoffset</A></FONT> : <b>constant</b> Natural := 36; <FONT COLOR=green><EM>-- short</EM></FONT>
+ <FONT COLOR=red><A NAME="1730_4">Offset_pary</A></FONT> : <b>constant</b> Natural := 13; <FONT COLOR=green><EM>-- int</EM></FONT>
+ <FONT COLOR=red><A NAME="1731_4">Offset_parx</A></FONT> : <b>constant</b> Natural := 12; <FONT COLOR=green><EM>-- int</EM></FONT>
+ <FONT COLOR=red><A NAME="1732_4">Offset_scroll</A></FONT> : <b>constant</b> Natural := 27; <FONT COLOR=green><EM>-- char</EM></FONT>
+ <FONT COLOR=red><A NAME="1733_4">Sizeof_bool</A></FONT> : <b>constant</b> Natural := 1; <FONT COLOR=green><EM>-- bool</EM></FONT>
+ Offset_XY : <b>constant</b> Natural := 1; <FONT COLOR=green><EM>-- int</EM></FONT>
+
+ <b>type</b> Curses_Bool <b>is</b> <b>mod</b> 2 ** <A HREF="terminal_interface-curses__ads.htm#1735_9">Interfaces</A>.C.char'Size;
+ Curses_Bool_False : <b>constant</b> Curses_Bool := 0;
+
+<b>end</b> Terminal_Interface.Curses;
+</PRE></BODY></HTML>
\ No newline at end of file
-<HEAD><TITLE>terminal_interface.ads</TITLE></HEAD>
+<HTML><HEAD><TITLE>terminal_interface.ads</TITLE></HEAD>
<BODY>
<HR><DIV ALIGN="center"><H1> File : terminal_interface.ads </H1></DIV><HR>
<PRE>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<FONT COLOR=green><EM>-- --</EM></FONT>
-<FONT COLOR=green><EM>-- GNAT ncurses Binding --</EM></FONT>
+<FONT COLOR=green><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></FONT>
<FONT COLOR=green><EM>-- --</EM></FONT>
<FONT COLOR=green><EM>-- Terminal_Interface --</EM></FONT>
<FONT COLOR=green><EM>-- --</EM></FONT>
<FONT COLOR=green><EM>-- sale, use or other dealings in this Software without prior written --</EM></FONT>
<FONT COLOR=green><EM>-- authorization. --</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
-<FONT COLOR=green><EM>-- Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1996</EM></FONT>
+<FONT COLOR=green><EM>-- Author: <A HREF="http://home.t-online.de/home/Juergen.Pfeifer">Jürgen Pfeifer</A> <<A HREF="mailto:juergen.pfeifer@gmx.net"><juergen.pfeifer@gmx.net></A>> 1996</EM></FONT>
<FONT COLOR=green><EM>-- Version Control:</EM></FONT>
-<FONT COLOR=green><EM>-- $Revision: 1.10 $</EM></FONT>
+<FONT COLOR=green><EM>-- @Revision: 1.10 @</EM></FONT>
<FONT COLOR=green><EM>-- Binding Version 01.00</EM></FONT>
<FONT COLOR=green><EM>------------------------------------------------------------------------------</EM></FONT>
<b>package</b> <FONT COLOR=red><A NAME="41_9">Terminal_Interface</A></FONT> <b>is</b>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<!--
- $Id: announce.html,v 1.34 1999/10/23 21:13:11 tom Exp $
+ $Id: announce.html,v 1.38 2000/07/04 22:41:38 tom Exp $
-->
<HTML>
<HEAD>
-<TITLE>Announcing ncurses 5.0</TITLE>
+<TITLE>Announcing ncurses 5.1</TITLE>
<link rev=made href="mailto:bug-ncurses@gnu.org">
</HEAD>
<BODY>
-<H1>Announcing ncurses 5.0</H1>
+<H1>Announcing ncurses 5.1</H1>
The ncurses (new curses) library is a free software emulation of
curses in System V Release 4.0, and more. It uses terminfo format,
The ncurses distribution is available via anonymous FTP at
the GNU distribution site
<A HREF="ftp://ftp.gnu.org/pub/gnu/ncurses">ftp://ftp.gnu.org/pub/gnu/ncurses</A>.
-It is also available at
-<A HREF="ftp://ftp.clark.net/pub/dickey/ncurses">ftp://ftp.clark.net/pub/dickey/ncurses</A>.
+<br>It is also available at
+<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
<H1>Release Notes</H1>
-We decided to release ncurses as a new whole number release (5.0) because it
-incorporates several interface changes, including some that would invalidate
-existing shared libraries. These are the highlights from the change-log
-since ncurses 4.2 release.
+This release is designed to be upward compatible from ncurses 5.0; very few
+applications will require recompilation, depending on the platform.
+These are the highlights from the change-log since ncurses 5.0 release.
<p>
Interface changes:
<ul>
- <li>The principal source of changes to the interface comes from the
- release of X/Open Curses in 1997. Earlier versions of ncurses (4.0
- and before) were based on a draft version of the specification. The
- release version adds parameters to some functions to support the
- evolving internationalization of curses. These summarize the impact:
-<ul>
- <li>modified several prototypes to correspond with 1997 version of
- X/Open Curses (affects ABI since developers have used attr_get).
-
- <li>corrected prototypes for slk_* functions, using chtype rather than
- attr_t.
-
- <li>the slk_attr_{set,off,on} functions need an additional void*
- parameter according to XSI.
-
- <li>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.
-
- <li>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.
-
- <li>reviewed/corrected macros in curses.h as per XSI document.
-
- <li>add set_a_attributes and set_pglen_inch to terminfo structure, as per
- XSI and Solaris 2.5.
-</ul>
- <li>The newest version of the X/Open Curses is implemented on Solaris
- and other vendor's systems. It adds new features to the terminfo
- descriptions:
-<ul>
- <li>implement tparm %l format.
-
- <li>implement tparm printf-style width and precision for %s, %d, %x, %o
- as per XSI.
-</ul>
- <li>We made additional changes to reduce impact by future interface
- changes:
-<ul>
- <li>rename key_names[] array to _nc_key_names since it is not part of
- the curses interface.
-
- <li>move macro winch to a function, to hide details of struct ldat
-</ul>
- <li>modify configure script to embed ABI in shared libraries for HP-UX
- 10.x (detailed request by Tim Mooney).
-
- <li>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).
+ <li>made the extended terminal capabilities
+ (<code>configure --enable-tcap-names</code>)
+ a standard feature (though the configure script can disable it,
+ it is built by default).
+
+ <li>removed the <code>trace()</code> function and related trace support
+ from the production library. This is the only interface change that
+ may cause problems with existing applications linked to shared
+ libraries, since not all platforms use the minor version number.
+
+ <li>explicitly initialized 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 some platforms.
+
+ <li>modified curses.h.in, undef'ing some symbols to avoid conflict with
+ C++ STL.
</ul>
New features:
<ul>
- <li>enable sigwinch handler by default.
+ <li>added a new extension, <code>assume_default_colors()</code> to
+ provide better control over the use of default colors. This is
+ the principal visible difference between ncurses 5.1 and preceding
+ versions. The new extension allows an application to specify what
+ colors pair 0 uses.
+ <p>
+ <em>NOTE</em>: Pair 0 defaults to white on black unless
+ you have invoked <code>use_default_colors()</code> or set it via
+ <code>assume_default_colors()</code>. An application that calls
+ <code>start_colors()</code> without setting the background color
+ will consistently have a black background no matter what color your
+ terminal's background actually is.
+
+ <li>made several fixes to the terminfo-to-termcap conversion, and
+ have been using the generated termcaps without further hand-tuning.
+ This builds on the extension <code>use_extended_names()</code> by
+ adding "obsolete" termcap strings to terminfo.src
+ <ul>
+ <li>modified <code>tic</code> so that if extended names (i.e.,
+ configure --enable-tcap-names) are active, then <code>tic -x</code>
+ will also write "obsolete" capabilities that are present in the
+ terminfo source.
+
+ <li>added 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.
+
+ <li>add -a option to tic and infocmp, which retains commented-out
+ capabilities during source translation/comparison, e.g., captoinfo
+ and infotocap.
+ </ul>
+
+ <li>implemented limited support for UTF-8, useful with XFree86 xterm:
+ <ul>
+ <li>if the <code>configure --enable-widec</code> option is
+ given, append 'w' to names of the generated libraries (e.g.,
+ libncursesw.so) to avoid conflict with existing ncurses libraries.
+ <li>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.
+ <li>modified view.c to make a rudimentary viewer of UTF-8 text.
+ </ul>
+
+ <li>modify <code>raw()</code> and <code>noraw()</code> to clear/restore
+ IEXTEN flag which affects <code>stty lnext</code> on systems such as FreeBSD
+
+ <li>reordered tests during mouse initialization to allow for gpm to run
+ in xterm, or for xterm to be used under OS/2 EMX. Also dropped test
+ for <code>$DISPLAY</code> in favor of the terminfo capability
+ <code>kmous=\E[M</code> or
+ if <code>$TERM</code> environment variable contains "xterm".
+
+ <li>added configure option <code>--with-manpage-symlinks</code>, which
+ provides for fully indexing manpage entries by making symbolic links
+ for the aliases.
+
+ <li>changed <code>unctrl()</code> to render C1 characters (128-159) as
+ <code>~@</code>, <code>~A</code>, etc.
+
+ <li>add experimental configure option --enable-colorfgbg to check for
+ $COLORTERM variable as set by rxvt/aterm/Eterm.
+
+ <li>made the <code>infocmp -F</code> option less verbose.
+
+ <li>dropped support for gnat 3.10 (gnat 3.12 is current).
- <li>turn on hashmap scrolling code by default
-
- <li>improved support for termcap applications
+</ul>
+Major bug fixes:
<ul>
- <li>modify tput to accept termcap names as an alternative to terminfo
- names.
+ <li>modified infocmp -e, -E options to ensure that generated fallback.c
+ type for Booleans agrees with term.h
- <li>provide support for termcap PC variable by copying it from terminfo
- data and using it as the padding character in tputs.
+ <li>documented a special case of incompatiblity between ncurses 4.2 and
+ 5.0, added a section for this in INSTALL.
- <li>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.
+ <li>corrected 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.
- <li>change name-comparisons in lib_termcap to compare no more than 2
- characters.
+ <li>made '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
+ could mislead ncurses into producing too few padding characters.
- <li>add configure option --enable-tcap-names, which essentially
- allows users to define new capabilities as in termcap.
-</ul>
- <li>add mouse support to ncurses menus.
-
- <li>add mouse and dll support for OS/2 EMX
+ <li>modified 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.
- <li>modify terminfo parsing to accept octal and hexadecimal constants
+ <li>modified echo() behavior of getch() to match Solaris curses for
+ carriage return and backspace (reported by Neil Zanella).
- <li>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.
+ <li>corrected offsets used for subwindows in <code>wresize()</code>
- <li>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.
+ <li>modified 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
- <li>add -f option to infocmp and tic, which formats the terminfo
- if/then/else/endif so that they are readable (with newlines and
- tabs).
+ <li>corrected logic in lib_twait.c as used by lib_mouse.c for GPM mouse
+ support when poll() is used rather than select().
- <li>modify tic to compile into %'char' form in preference to %{number},
- since that is a little more efficient.
-</ul>
-Major bug fixes:
-<ul>
- <li>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.
-
- <li>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.
-
- <li>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.
-
- <li>modify setupterm so that cancelled strings are treated the same as
- absent strings, cancelled and absent booleans false (does not affect
- tic, infocmp).
-
- <li>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.
-
- <li>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.
-
- <li>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.
+ <li>made several fixes for buffer overflows, unchecked recursion,
+ improvements in performance, etc. See the NEWS file for details.
</ul>
<H1>Features of Ncurses</H1>
<DL>
<DT> cdk
<DD> Curses Development Kit
-<A HREF="http://www.vexus.ca/CDK.html">Curses Development Kit</a>
-<A HREF="ftp://ftp.clark.net/pub/dickey/cdk">ftp://ftp.clark.net/pub/dickey/cdk</A>.
+<br>
+<A HREF="http://www.vexus.ca/CDK.html">http://www.vexus.ca/CDK.html</a>
+<br>
+<A HREF="http://dickey.his.com/cdk/cdk.html">http://dickey.his.com/cdk</A>.
<DT> ded
<DD> directory-editor
-<A HREF="ftp://ftp.clark.net/pub/dickey/ded">ftp://ftp.clark.net/pub/dickey/ded</A>.
+<br>
+<A HREF="http://dickey.his.com/ded/ded.html">http://dickey.his.com/ded</A>.
<DT> dialog
<DD> the underlying application used in Slackware's setup, and the basis
for similar applications on GNU/Linux.
+<br>
+<A HREF="http://dickey.his.com/dialog/dialog.html">http://dickey.his.com/dialog</A>.
<DT> lynx
<DD> the character-screen WWW browser
+<br>
+<A HREF="http://lynx.isc.org/release/">http://lynx.isc.org/release</A>.
<DT> Midnight Commander 4.1
<DD> file manager
+<br>
+<A HREF="www.gnome.org/mc/">www.gnome.org/mc/</A>.
<DT> mutt
<DD> mail utility
+<br>
+<A HREF="http://www.mutt.org">http://www.mutt.org</A>.
<DT> ncftp
<DD> file-transfer utility
+<br>
+<A HREF="http://www.ncftp.com">http://www.ncftp.com</A>.
<DT> nvi
<DD> New vi versions 1.50 are able to use ncurses versions 1.9.7 and later.
+<br>
+<A HREF="http://www.bostic.com/vi/">http://www.bostic.com/vi/</A>.
<DT> tin
<DD> newsreader, supporting color, MIME
-<A HREF="ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff">ftp://ftp.akk.uni-karlsruhe.de/pub/news/clients/tin-unoff</A>.
+<br>
+<A HREF="http://www.tin.org">http://www.tin.org</A>.
<DT> taper
<DD> tape archive utility
+<br>
+<A HREF="http://members.iinet.net.au/~yusuf/taper/">http://members.iinet.net.au/~yusuf/taper/</A>.
<DT> vh-1.6
<DD> Volks-Hypertext browser for the Jargon File
+<br>
+<A HREF="http://www.bg.debian.org/Packages/unstable/text/vh.html">http://www.bg.debian.org/Packages/unstable/text/vh.html</A>.
</DL>
as well as some that use ncurses for the terminfo support alone:
<DL>
<DT> minicom
<DD> terminal emulator
+<br>
+<A HREF="http://www.pp.clinet.fi/~walker/minicom.html">http://www.pp.clinet.fi/~walker/minicom.html</A>.
<DT> vile
<DD> vi-like-emacs
-<A HREF="ftp://ftp.clark.net/pub/dickey/vile">ftp://ftp.clark.net/pub/dickey/vile</A>.
+<br>
+<A HREF="http://dickey.his.com/vile/vile.html">http://dickey.his.com/vile</A>.
</DL>
<P>
HREF="mailto:zmbenhal@netcom.com">Zeyd Ben-Halim</A> and
<A HREF="http://www.ccil.org/~esr/home.html">Eric S. Raymond</A>.
Ongoing work is being done by
-<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
and
<A HREF="mailto:juergen.pfeifer@gmx.net">Jürgen Pfeifer</A>.
-<A HREF="mailto:dickey@clark.net">Thomas Dickey</A>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
acts as the maintainer for the Free Software Foundation, which holds the
copyright on ncurses.
Contact the current maintainers at
testing of this package.<P>
Beta versions of ncurses and patches to the current release are made available at
-<A HREF="ftp://ftp.clark.net/pub/dickey/ncurses">ftp://ftp.clark.net/pub/dickey/ncurses</A>.
+<A HREF="ftp://dickey.his.com/ncurses">ftp://dickey.his.com/ncurses</A>.
<H2>Future Plans</H2>
<UL>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<!--
- $Id: hackguide.html,v 1.23 1999/01/17 00:15:48 tom Exp $
+ $Id: hackguide.html,v 1.25 2000/03/25 18:45:21 tom Exp $
-->
<HTML>
<HEAD>
<H1>Contents</H1>
<UL>
<LI><A HREF="#abstract">Abstract</A>
-<P>
<LI><A HREF="#objective">Objective of the Package</A>
<UL>
<LI><A HREF="#whysvr4">Why System V Curses?</A>
<LI><A HREF="#extensions">How to Design Extensions</A>
</UL>
-<LI><A HREF="#portability">Portability and Configuration</A><UL>
-</UL>
+<LI><A HREF="#portability">Portability and Configuration</A>
<LI><A HREF="#documentation">Documentation Conventions</A>
-<P>
<LI><A HREF="#bugtrack">How to Report Bugs</A>
-<P>
<LI><A HREF="#ncurslib">A Tour of the Ncurses Library</A>
<UL>
<LI><A HREF="#loverview">Library Overview</A>
<LI><A HREF="#output">Output and Screen Updating</A>
</UL>
<LI><A HREF="#fmnote">The Forms and Menu Libraries</A>
-<P>
<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><A HREF="#translation">Source-Form Translation</A>
</UL>
<LI><A HREF="#utils">Other Utilities</A>
-<P>
<LI><A HREF="#style">Style Tips for Developers</A>
-<P>
<LI><A HREF="#port">Porting Hints</A>
</UL>
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>
+package.
<H1><A NAME="objective">Objective of the Package</A></H1>
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>
+characteristics:
<UL>
<LI>Source-compatible with historical curses implementations (including
the original BSD curses and System V curses.
-<P>
<LI>Conformant with the XSI Curses standard issued as part of XPG4 by
X/Open.
-<P>
<LI>High-quality -- stable and reliable code, wide portability, good
packaging, superior documentation.
-<P>
<LI>Featureful -- should eliminate as much of the drudgery of C interface
programming as possible, freeing programmers to think at a higher
level of design.
These objectives are in priority order. So, for example, source
compatibility with older version must trump featurefulness -- we cannot
add features if it means breaking the portion of the API corresponding
-to historical curses versions. <P>
+to historical curses versions.
<H2><A NAME="whysvr4">Why System V Curses?</A></H2>
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>
+System V took us most of the way to base-level XSI conformance.
<H2><A NAME="extensions">How to Design Extensions</A></H2>
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>
+You can use this to condition the calls to the mouse API calls.
<H1><A NAME="portability">Portability and Configuration</A></H1>
to less-capable UNIX environments wherever possible. <P>
We encourage developers to support OS-specific optimizations and methods
-not available under POSIX/ANSI, provided only that: <P>
+not available under POSIX/ANSI, provided only that:
<UL>
<LI>All such code is properly conditioned so the build process does not
attempt to compile it under a plain ANSI/POSIX environment.
-<P>
<LI>Adding such implementation methods does not introduce incompatibilities
in the <STRONG>ncurses</STRONG> API between platforms.
</UL>
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>
+macro, which you then use to condition your code.
<H1><A NAME="documentation">Documentation Conventions</A></H1>
There are three kinds of documentation associated with this package. Each
-has a different preferred format: <P>
+has a different preferred format:
<UL>
<LI>Package-internal files (README, INSTALL, TO-DO etc.)
<LI>Everything else (i.e., narrative documentation).
</UL>
-Our conventions are simple: <P>
+Our conventions are simple:
<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's
- no point in elaborate mark-up. <P>
+ no point in elaborate mark-up.
<LI><STRONG>Mark up manual pages in the man macros.</STRONG> These have to be viewable
- through traditional <EM>man(1)</EM> programs. <P>
+ through traditional <EM>man(1)</EM> programs.
<LI><STRONG>Write everything else in HTML.</STRONG>
</OL>
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.<P>
+announcement document to WWW pretty trivial.
<H1><A NAME="bugtrack">How to Report Bugs</A></H1>
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. <P>
+have to wait a while.
<OL>
-<LI>Develop a recipe to reproduce the bug. <P>
-
+<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 --
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>
+the test programs provided with the distribution.)
<LI>Try to reproduce the bug on a different terminal type. <P>
If you have xterm available, it is also good to collect xterm reports for
different window sizes. This is especially true if you normally use an
unusual xterm window size -- a surprising number of the bugs we've seen
-are either triggered or masked by these. <P>
+are either triggered or masked by these.
<LI>Generate and examine a trace file for the broken behavior. <P>
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. <P>
+the screen-update logic quite exactly.
<LI>Report details and symptoms, not just interpretations. <P>
There's one other interactive tester, <CODE>tctest</CODE>, that exercises
translation between termcap and terminfo formats. If you have a serious
-need to run this, you probably belong on our development team! <P>
+need to run this, you probably belong on our development team!
<H1><A NAME="ncurslib">A Tour of the Ncurses Library</A></H1>
reorganization in the underlying data structures. <P>
These files are used only for debugging support:
-<blockquote><code>
+<blockquote>
+<code>
lib_trace.c
lib_traceatr.c
lib_tracebits.c
lib_tracedmp.c
lib_tracemse.c
trace_buf.c
-</blockquote></code>
+</code>
+</blockquote>
It is rather unlikely you will ever need to change these, unless
you want to introduce a new debug trace level for some reasoon.<P>
computations on the terminal capabilities, or queries to the OS
environment, but nevertheless have only fairly low complexity. These
include:
-<blockquote><code>
+<blockquote>
+<code>
lib_acs.c
lib_beep.c
lib_color.c
lib_tputs.c
lib_vidattr.c
read_entry.c.
-</blockquote></code>
+</code>
+</blockquote>
They are likely to need revision only if
ncurses is being ported to an environment without an underlying
terminfo capability representation. <P>
These files
have serious hooks into
the tty driver and signal facilities:
-<blockquote><code>
+<blockquote>
+<code>
lib_kernel.c
lib_baudrate.c
lib_raw.c
lib_tstp.c
lib_twait.c
-</blockquote></code>
+</code>
+</blockquote>
If you run into porting snafus
moving the package to another UNIX, the problem is likely to be in one
of these files.
falls in this category.<P>
Almost all of the real work is done in the files
-<blockquote><code>
+<blockquote>
+<code>
hardscroll.c
hashmap.c
lib_addch.c
lib_refresh.c
lib_setup.c
lib_vidattr.c
-</blockquote></code>
+</code>
+</blockquote>
Most of the algorithmic complexity in the
library lives in these files.
If there is a real bug in <STRONG>ncurses</STRONG> itself, it's probably here.
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
-<blockquote><code>
+<blockquote>
+<code>
alloc_entry.c
captoinfo.c
comp_captab.c
parse_entry.c
read_termcap.c
write_entry.c
-</blockquote></code>
-We'll discuss these in the compiler tour. <P>
+</code>
+</blockquote>
+We'll discuss these in the compiler tour.
<H2><A NAME="engine">The Engine Room</A></H2>
calls may find the code in <CODE>lib_twait.c</CODE> interesting. It deals
with the problem that some BSD selects don't return a reliable
time-left value. The function <CODE>timed_wait()</CODE> effectively
-simulates a System V select. <P>
+simulates a System V select.
<H3><A NAME="mouse">Mouse Events</A></H3>
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>
+events) into a gesture (a high-level or composite event).
<H3><A NAME="output">Output and Screen Updating</A></H3>
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>
+for mask values, near the end.
<H1><A NAME="fmnote">The Forms and Menu Libraries</A></H1>
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>
+slightly cleaned up for <CODE>ncurses</CODE>.
<H1><A NAME="tic">A Tour of the Terminfo Compiler</A></H1>
mode (termcap or terminfo) based on the first `,' or `:' it finds in
each entry. The lexer does all the work of recognizing capability
names and values; the grammar above it is trivial, just "parse entries
-till you run out of file". <P>
+till you run out of file".
<H2><A NAME="nonuse">Translation of Non-<STRONG>use</STRONG> Capabilities</A></H2>
Thus, adding a new capability is usually pretty trivial, just a matter
of adding one line to the <CODE>include/Caps</CODE> file. We'll have more
to say about this in the section on <A HREF="#translation">Source-Form
-Translation</A>. <P>
+Translation</A>.
<H2><A NAME="uses">Use Capability Resolution</A></H2>
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>
+overwriting ones that predate it.
<H2><A NAME="translation">Source-Form Translation</A></H2>
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>
+get translated to an <STRONG>acsc</STRONG> string.
<H1><A NAME="utils">Other Utilities</A></H1>
the ordinary De-compilation case and entry difference reporting. <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>
+followed by a <CODE>tputs()</CODE> of a selected capability.
<H1><A NAME="style">Style Tips for Developers</A></H1>
preferable to ad-hoc code -- that's why the fifth field (flags) is
there. <P>
-Have fun! <P>
+Have fun!
<H1><A NAME="port">Porting Hints</A></H1>
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>
+ports.
-<blockquote><code>
+<blockquote>
+<code>
lib_addch.c
lib_addstr.c
lib_bkgd.c
lib_unctrl.c
lib_window.c
panel.c
-</blockquote></code>
+</code>
+</blockquote>
<P>
-This module is pure curses, but calls outstr(): <P>
+This module is pure curses, but calls outstr():
-<blockquote><code>
+<blockquote>
+<code>
lib_getstr.c
-</blockquote></code>
+</code>
+</blockquote>
<P>
These modules are pure curses, except that they use <CODE>tputs()</CODE>
-and <CODE>putp()</CODE>: <P>
+and <CODE>putp()</CODE>:
-<blockquote><code>
+<blockquote>
+<code>
lib_beep.c
lib_color.c
lib_endwin.c
lib_options.c
lib_slk.c
lib_vidattr.c
-</blockquote></code>
+</code>
+</blockquote>
<P>
-This modules assist in POSIX emulation on non-POSIX systems: <P>
+This modules assist in POSIX emulation on non-POSIX systems:
<DL>
<DT> sigaction.c
<DD> signal calls
</DL>
The following source files will not be needed for a
-single-terminal-type port. <P>
+single-terminal-type port.
-<blockquote><code>
+<blockquote>
+<code>
alloc_entry.c
captoinfo.c
clear.c
read_entry.c
tput.c
write_entry.c
-</blockquote></code>
+</code>
+</blockquote>
<P>
The following modules will use open()/read()/write()/close()/lseek() on files,
-but no other OS calls. <P>
+but no other OS calls.
<DL>
<DT>lib_screen.c
Modules that would have to be modified for a port start here: <P>
The following modules are `pure curses' but contain assumptions inappropriate
-for a memory-mapped port. <P>
+for a memory-mapped port.
<dl>
<dt>lib_longname.c<dd>assumes there may be multiple terminals
--- /dev/null
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
+<!--
+ $Id: index.html,v 1.1 2000/03/05 18:22:05 juergen Exp $
+-->
+<HTML>
+<HEAD>
+<TITLE>Welcome to ncurses</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+</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> to ncurses.</LI>
+</UL><P>
+We also have HTML versions of all the ncurses <a href="man">manpages</a>.
+</BODY>
+</HTML>
+<!--
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# mode:html
+# case-fold-search:nil
+# fill-column:70
+# End:
+-->
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>captoinfo</B> - convert a <I>termcap</I> description into a <I>terminfo</I>
+ description
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>captoinfo</B> [<B>-v</B><I>n</I> <I>width</I>] [<B>-V</B>] [<B>-1</B>] [<B>-w</B> <I>width</I>] <I>file</I> . . .
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ <B>captoinfo</B> looks in <I>file</I> for <B>termcap</B> descriptions. For
+ each one found, an equivalent <B>terminfo</B> description is
+ written to standard output. Termcap <B>tc</B> capabilities are
+ translated directly to terminfo <B>use</B> capabilities.
+
+ If no <I>file</I> is given, then the environment variable <B>TERMCAP</B>
+ is used for the filename or entry. If <B>TERMCAP</B> is a full
+ pathname to a file, only the terminal whose name is speci-
+ fied in the environment variable <B>TERM</B> is extracted from
+ that file. If the environment variable <B>TERMCAP</B> is not
+ set, then the file <B>@DATADIR@/terminfo</B> is read.
+
+ <B>-v</B> print out tracing information on standard error as
+ the program runs.
+
+ <B>-V</B> print out the version of the program in use on stan-
+ dard error and exit.
+
+ <B>-1</B> 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.
+
+ <B>-w</B> change the output to <I>width</I> characters.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ @DATADIR@/terminfo Compiled terminal description
+ database.
+
+
+</PRE>
+<H2>TRANSLATIONS FROM NONSTANDARD CAPABILITIES</H2><PRE>
+ Some obsolete nonstandard capabilities will automatically
+ be translated into standard (SVr4/XSI Curses) terminfo
+ capabilities by <B>captoinfo</B>. 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 <B>acsc</B> string. The
+ double-line capabilities and <B>GG</B> 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 following
+ AIX extensions are automatically translated:
+
+ IBM XSI
+ -------------
+ ksel kslt
+ kbtab kcbt
+ font0 s0ds
+ font1 s1ds
+ font2 s2ds
+ font3 s3ds
+
+ Additionally, the AIX <B>box1</B> capability will be automati-
+ cally translated to an <B>acsc</B> string.
+
+ Hewlett-Packard's terminfo library supports two nonstan-
+ dard terminfo capabilities <B>meml</B> (memory lock) and <B>memu</B>
+ (memory unlock). These will be discarded with a warning
+ message.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ This utility is actually a link to <B><A HREF="tic.1m.html">tic(1m)</A></B>, running in <I>-I</I>
+ mode. You can use other <I>tic</I> options such as <B>-f</B> and <B>-x</B>.
+
+ The trace option isn't identical to SVr4's. Under SVr4,
+ instead of following the -v with a trace level n, you
+ repeat it n times.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+ Eric S. Raymond <esr@snark.thyrsus.com>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>clear</B> - clear the terminal screen
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>clear</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ <B>clear</B> clears your screen if this is possible. It looks in
+ the environment for the terminal type and then in the <B>ter-</B>
+ <B>minfo</B> database to figure out how to clear the screen.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="tput.1.html">tput(1)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>addch</B>, <B>waddch</B>, <B>mvaddch</B>, <B>mvwaddch</B>, <B>echochar</B>, <B>wechochar</B> -
+ add a character (with attributes) to a <B>curses</B> window, then
+ advance the cursor
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>addch(chtype</B> <B>ch);</B>
+ <B>int</B> <B>waddch(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch);</B>
+ <B>int</B> <B>mvaddch(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch);</B>
+ <B>int</B> <B>mvwaddch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch);</B>
+ <B>int</B> <B>echochar(chtype</B> <B>ch);</B>
+ <B>int</B> <B>wechochar(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>addch</B>, <B>waddch</B>, <B>mvaddch</B> and <B>mvwaddch</B> routines put the
+ character <I>ch</I> into the given window at its current window
+ position, which is then advanced. They are analogous to
+ <B>putchar</B> in <B><A HREF="stdio.3.html">stdio(3)</A></B>. 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 <B>scrollok</B> is enabled, the scrolling region is
+ scrolled up one line.
+
+ If <I>ch</I> 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 <B>clrtoeol</B>, 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.
+
+ If <I>ch</I> is any control character other than tab, newline, or
+ backspace, it is drawn in <B>^</B><I>X</I> notation. Calling <B>winch</B>
+ 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 <B>addch</B> or related functions by logical-ORing them
+ into the character. (Thus, text, including attributes,
+ can be copied from one place to another using <B>inch</B> and
+ <B>addch</B>.). See the <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B> page for values of prede-
+ fined video attribute constants that can be usefully OR'ed
+ into characters.
+
+ The <B>echochar</B> and <B>wechochar</B> routines are equivalent to a
+ call to <B>addch</B> followed by a call to <B>refresh</B>, or a call to
+ <B>waddch</B> followed by a call to <B>wrefresh</B>. 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.
+
+ <B>Line</B> <B>Graphics</B>
+ The following variables may be used to add line drawing
+ characters to the screen with routines of the <B>addch</B> fam-
+ ily. The default character listed below is used if the
+ <B>acsc</B> capability doesn't define a terminal-specific
+ replacement for it (but see the EXTENSIONS section below).
+ The names are taken from VT100 nomenclature.
+
+ <I>Name</I> <I>Default</I> <I>Description</I>
+ --------------------------------------------------
+ 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
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and <B>OK</B> on
+ success (the SVr4 manuals specify only "an integer value
+ other than <B>ERR</B>") upon successful completion, unless other-
+ wise noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>addch</B>, <B>mvaddch</B>, <B>mvwaddch</B>, and <B>echochar</B> may be
+ macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ 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.
+
+ 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 <B>acsc</B> 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
+ <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>, <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>, <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>,
+ <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>, <B><A HREF="putc.3S.html">putc(3S)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>addchstr</B>, <B>addchnstr</B>, <B>waddchstr</B>, <B>waddchnstr</B>, <B>mvaddchstr</B>,
+ <B>mvaddchnstr</B>, <B>mvwaddchstr</B>, <B>mvwaddchnstr</B> - add a string of
+ characters (and attributes) to a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>addchstr(const</B> <B>chtype</B> <B>*chstr);</B>
+ <B>int</B> <B>addchnstr(const</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>waddchstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>chtype</B> <B>*chstr);</B>
+ <B>int</B> <B>waddchnstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvaddchstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>chtype</B> <B>*chstr);</B>
+ <B>int</B> <B>mvaddchnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvwaddchstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>chtype</B>
+ <B>*chstr);</B>
+ <B>int</B> <B>mvwaddchnstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>chtype</B>
+ <B>*chstr,</B> <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These routines copy <I>chstr</I> into the window image structure
+ at and after the current cursor position. The four rou-
+ tines with <I>n</I> as the last argument copy at most <I>n</I> elements,
+ but no more than will fit on the line. If <B>n</B>=<B>-1</B> then the
+ whole string is copied, to the maximum number of charac-
+ ters that will fit on the line.
+
+ The window cursor is <I>not</I> advanced, and these routines work
+ faster than <B>waddnstr</B>. On the other hand, they don't per-
+ form any kind of checking (such as for the newline,
+ backspace, or carriage return characters), they don't
+ advance the current cursor position, they don't expand
+ other control characters to ^-escapes, and they truncate
+ the string if it crosses the right margin, rather then
+ wrapping it around to the new line.
+
+
+
+</PRE>
+<H2>RETURN VALUES</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and <B>OK</B> on
+ success (the SVr4 manuals specify only "an integer value
+ other than <B>ERR</B>") upon successful completion, unless other-
+ wise noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that all routines except <B>waddchnstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ All these entry points are described in the XSI Curses
+ standard, Issue 4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>addstr</B>, <B>addnstr</B>, <B>waddstr</B>, <B>waddnstr</B>, <B>mvaddstr</B>, <B>mvaddnstr</B>,
+ <B>mvwaddstr</B>, <B>mvwaddnstr</B> - add a string of characters to a
+ <B>curses</B> window and advance cursor
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>addstr(const</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>addnstr(const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>waddstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>waddnstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvaddstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>mvaddnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvwaddstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>mvwaddnstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str,</B>
+ <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These routines write the characters of the (null-termi-
+ nated) character string <I>str</I> on the given window. It is
+ similar to calling <B>waddch</B> once for each character in the
+ string. The four routines with <I>n</I> as the last argument
+ write at most <I>n</I> characters. If <I>n</I> is -1, then the entire
+ string will be added.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and <B>OK</B> on
+ success (the SVr4 manuals specify only "an integer value
+ other than <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that all of these routines except <B>waddstr</B> and
+ <B>waddnstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ 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.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>attroff</B>, <B>wattroff</B>, <B>attron</B>, <B>wattron</B>, <B>attrset</B>, <B>wattrset</B>,
+ <B>color_set</B>, <B>wcolor_set</B>, <B>standend</B>, <B>wstandend</B>, <B>standout</B>,
+ <B>wstandout</B>, <B>attr_get</B>, <B>wattr_get</B>, <B>attr_off</B>, <B>wattr_off</B>,
+ <B>attr_on</B>, <B>wattr_on</B>, <B>attr_set</B>, <B>wattr_set</B>, <B>chgat</B>, <B>wchgat</B>,
+ <B>mvchgat</B>, <B>mvwchgat</B>, <B>PAIR_NUMBER</B> - <B>curses</B> character and win-
+ dow attribute control routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+ <B>int</B> <B>attroff(int</B> <B>attrs);</B>
+ <B>int</B> <B>wattroff(WINDOW</B> <B>*win,</B> <B>int</B> <B>attrs);</B>
+ <B>int</B> <B>attron(int</B> <B>attrs);</B>
+ <B>int</B> <B>wattron(WINDOW</B> <B>*win,</B> <B>int</B> <B>attrs);</B>
+ <B>int</B> <B>attrset(int</B> <B>attrs);</B>
+ <B>int</B> <B>wattrset(WINDOW</B> <B>*win,</B> <B>int</B> <B>attrs);</B>
+ <B>int</B> <B>color_set(short</B> <B>color_pair_number,</B> <B>void*</B> <B>opts);</B>
+ <B>int</B> <B>wcolor_set(WINDOW</B> <B>*win,</B> <B>short</B> <B>color_pair_number,</B>
+ <B>void*</B> <B>opts);</B>
+ <B>int</B> <B>standend(void);</B>
+ <B>int</B> <B>wstandend(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>standout(void);</B>
+ <B>int</B> <B>wstandout(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>attr_get(attr_t</B> <B>*attrs,</B> <B>short</B> <B>*pair,</B> <B>void</B> <B>*opts);</B>
+ <B>int</B> <B>wattr_get(WINDOW</B> <B>*win,</B> <B>attr_t</B> <B>*attrs,</B> <B>short</B> <B>*pair,</B>
+ <B>void</B> <B>*opts);</B>
+ <B>int</B> <B>attr_off(attr_t</B> <B>attrs,</B> <B>void</B> <B>*opts);</B>
+ <B>int</B> <B>wattr_off(WINDOW</B> <B>*win,</B> <B>attr_t</B> <B>attrs,</B> <B>void</B> <B>*opts);</B>
+ <B>int</B> <B>attr_on(attr_t</B> <B>attrs,</B> <B>void</B> <B>*opts);</B>
+ <B>int</B> <B>wattr_on(WINDOW</B> <B>*win,</B> <B>attr_t</B> <B>attrs,</B> <B>void</B> <B>*opts);</B>
+ <B>int</B> <B>attr_set(attr_t</B> <B>attrs,</B> <B>short</B> <B>pair,</B> <B>void</B> <B>*opts);</B>
+ <B>int</B> <B>wattr_set(WINDOW</B> <B>*win,</B> <B>attr_t</B> <B>attrs,</B> <B>short</B> <B>pair,</B> <B>void</B>
+ <B>*opts);</B>
+ <B>int</B> <B>chgat(int</B> <B>n,</B> <B>attr_t</B> <B>attr,</B> <B>short</B> <B>color,</B>
+ <B>const</B> <B>void</B> <B>*opts)</B>
+ <B>int</B> <B>wchgat(WINDOW</B> <B>*win,</B> <B>int</B> <B>n,</B> <B>attr_t</B> <B>attr,</B>
+ <B>short</B> <B>color,</B> <B>const</B> <B>void</B> <B>*opts)</B>
+ <B>int</B> <B>mvchgat(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>int</B> <B>n,</B> <B>attr_t</B> <B>attr,</B>
+ <B>short</B> <B>color,</B> <B>const</B> <B>void</B> <B>*opts)</B>
+ <B>int</B> <B>mvwchgat(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>int</B> <B>n,</B>
+ <B>attr_t</B> <B>attr,</B> <B>short</B> <B>color,</B> <B>const</B> <B>void</B> <B>*opts)</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ 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 <B>wad-</B>
+ <B>dch</B>, <B>waddstr</B> and <B>wprintw</B>. 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 <B>attrset</B> sets the current attributes of the
+ given window to <I>attrs</I>. The routine <B>attroff</B> turns off the
+ named attributes without turning any other attributes on
+ or off. The routine <B>attron</B> turns on the named attributes
+ without affecting any others. The routine <B>standout</B> is the
+ same as <B>attron(A_STANDOUT)</B>. The routine <B>standend</B> is the
+ same as <B>attrset(A_NORMAL)</B> or <B>attrset(0)</B>, that is, it turns
+ off all attributes.
+
+ The routine <B>color_set</B> 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 <B>wattr_get</B> returns the current attribute and
+ color pair for the given window; <B>attr_get</B> returns the cur-
+ rent attribute and color pair for <B>stdscr</B>. The remaining
+ <B>attr_</B>* functions operate exactly like the corresponding
+ <B>attr</B>* functions, except that they take arguments of type
+ <B>attr_t</B> rather than <B>int</B>.
+
+ The routine <B>chgat</B> changes the attributes of a given number
+ of characters starting at the current cursor location of
+ <B>stdscr</B>. 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 <B>wchgat</B> func-
+ tion generalizes this to any window; the <B>mvwchgat</B> function
+ does a cursor move before acting. In these functions, the
+ color argument is a color-pair index (as in the first
+ argument of <I>init</I><B>_</B><I>pair</I>, see <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>). The <B>opts</B>
+ argument is not presently used, but is reserved for the
+ future (leave it <B>NULL</B>).
+
+ <B>Attributes</B>
+ The following video attributes, defined in <B><curses.h></B>, can
+ be passed to the routines <B>attron</B>, <B>attroff</B>, and <B>attrset</B>, or
+ OR'ed with the characters passed to <B>addch</B>.
+
+ <B>A_NORMAL</B> Normal display (no highlight)
+ <B>A_STANDOUT</B> Best highlighting mode of the terminal.
+ <B>A_UNDERLINE</B> Underlining
+ <B>A_REVERSE</B> Reverse video
+ <B>A_BLINK</B> Blinking
+ <B>A_DIM</B> Half bright
+ <B>A_BOLD</B> Extra bright or bold
+ <B>A_PROTECT</B> Protected mode
+ <B>A_INVIS</B> Invisible or blank mode
+ <B>A_ALTCHARSET</B> Alternate character set
+ <B>A_CHARTEXT</B> Bit-mask to extract a character
+ <B>COLOR_PAIR(</B><I>n</I><B>)</B> Color-pair number <I>n</I>
+
+ The following macro is the reverse of <B>COLOR_PAIR(</B><I>n</I><B>)</B>:
+
+ <B>PAIR_NUMBER(</B><I>attrs</I>) Returns the pair number associated
+ with the <B>COLOR_PAIR(</B><I>n</I><B>)</B> 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 <B>1</B>.
+
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>attroff</B>, <B>wattroff</B>, <B>attron</B>, <B>wattron</B>, <B>attrset</B>,
+ <B>wattrset</B>, <B>standend</B> and <B>standout</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ All these functions are supported in the XSI Curses stan-
+ dard, Issue 4. The standard defined the dedicated type
+ for highlights, <B>attr_t</B>, which is not defined in SVr4
+ curses. The functions taking <B>attr_t</B> arguments are not sup-
+ ported under SVr4.
+
+ The XSI Curses standard states that whether the tradi-
+ tional functions <B>attron</B>/<B>attroff</B>/<B>attrset</B> can manipulate
+ attributes other than <B>A_BLINK</B>, <B>A_BOLD</B>, <B>A_DIM</B>, <B>A_REVERSE</B>,
+ <B>A_STANDOUT</B>, or <B>A_UNDERLINE</B> is "unspecified". Under this
+ implementation as well as SVr4 curses, these functions
+ correctly manipulate all other highlights (specifically,
+ <B>A_ALTCHARSET</B>, <B>A_PROTECT</B>, and <B>A_INVIS</B>).
+
+ XSI Curses added the new entry points, <B>attr_get</B>, <B>attr_on</B>,
+ <B>attr_off</B>, <B>attr_set</B>, <B>wattr_on</B>, <B>wattr_off</B>, <B>wattr_get</B>,
+ <B>wattr_set</B>. These are intended to work with a new series
+ of highlight macros prefixed with <B>WA_</B>.
+
+ <B>WA_NORMAL</B> Normal display (no highlight)
+ <B>WA_STANDOUT</B> Best highlighting mode of the terminal.
+ <B>WA_UNDERLINE</B> Underlining
+ <B>WA_REVERSE</B> Reverse video
+ <B>WA_BLINK</B> Blinking
+ <B>WA_DIM</B> Half bright
+ <B>WA_BOLD</B> Extra bright or bold
+ <B>WA_ALTCHARSET</B> Alternate character set
+
+ The XSI curses standard specifies that each pair of corre-
+ sponding <B>A_</B> and <B>WA_</B>-using functions operates on the same
+ current-highlight information.
+
+ The XSI standard extended conformance level adds new high-
+ lights <B>A_HORIZONTAL</B>, <B>A_LEFT</B>, <B>A_LOW</B>, <B>A_RIGHT</B>, <B>A_TOP</B>, <B>A_VER-</B>
+ <B>TICAL</B> (and corresponding <B>WA_</B> macros for each) which this
+ curses does not yet support.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>, <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>,
+ <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>beep</B>, <B>flash</B> - <B>curses</B> bell and screen flash routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>beep(void);</B>
+ <B>int</B> <B>flash(void);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>beep</B> and <B>flash</B> routines are used to alert the terminal
+ user. The routine <B>beep</B> sounds an audible alarm on the
+ terminal, if possible; otherwise it flashes the screen
+ (visible bell). The routine <B>flash</B> 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>RETURN VALUE</H2><PRE>
+ These routines return <B>OK</B> if they succeed in beeping or
+ flashing, <B>ERR</B> otherwise.
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+ SVr4's beep and flash routines always returned <B>OK</B>, so it
+ was not possible to tell when the beep or flash failed.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are defined in the XSI Curses standard,
+ Issue 4. Like SVr4, it specifies that they always return
+ <B>OK</B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>bkgdset</B>, <B>wbkgdset</B>, <B>bkgd</B>, <B>wbkgd</B>, <B>getbkgd</B> - <B>curses</B> window
+ background manipulation routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>void</B> <B>bkgdset(const</B> <B>chtype</B> <B>ch);</B>
+ <B>void</B> <B>wbkgdset(WINDOW</B> <B>*win,</B> <B>const</B> <B>chtype</B> <B>ch);</B>
+ <B>int</B> <B>bkgd(const</B> <B>chtype</B> <B>ch);</B>
+ <B>int</B> <B>wbkgd(WINDOW</B> <B>*win,</B> <B>const</B> <B>chtype</B> <B>ch);</B>
+ <B>chtype</B> <B>getbkgd(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>bkgdset</B> and <B>wbkgdset</B> routines manipulate the back-
+ ground of the named window. The window background is a
+ <B>chtype</B> 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 <B>waddch</B>. 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 <B>bkgd</B> and <B>wbkgd</B> 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 <B>getbkgd</B> function returns the given window's current
+ background character/attribute pair.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The routines <B>bkgd</B> and <B>wbkgd</B> return the integer <B>OK</B>. The
+ SVr4.0 manual says "or a non-negative integer if <B>immedok</B>
+ is set", but this appears to be an error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>bkgdset</B> and <B>bkgd</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4. The draft does not include <B>const</B> qualifiers on
+ the arguments. The standard specifies that <B>bkgd</B> and <B>wbkgd</B>
+ return <B>ERR</B>, on failure. but gives no failure conditions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>border</B>, <B>wborder</B>, <B>box</B>, <B>hline</B>, <B>whline</B>, <B>vline</B>, <B>wvline</B>, <B>mvh-</B>
+ <B>line</B>, <B>mvwhline</B>, <B>mvvline</B>, <B>mvwvline</B> - create <B>curses</B> borders,
+ horizontal and vertical lines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+ <B>int</B> <B>border(chtype</B> <B>ls,</B> <B>chtype</B> <B>rs,</B> <B>chtype</B> <B>ts,</B> <B>chtype</B> <B>bs,</B>
+ <B>chtype</B> <B>tl,</B> <B>chtype</B> <B>tr,</B> <B>chtype</B> <B>bl,</B> <B>chtype</B> <B>br);</B>
+ <B>int</B> <B>wborder(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ls,</B> <B>chtype</B> <B>rs,</B>
+ <B>chtype</B> <B>ts,</B> <B>chtype</B> <B>bs,</B> <B>chtype</B> <B>tl,</B> <B>chtype</B> <B>tr,</B>
+ <B>chtype</B> <B>bl,</B> <B>chtype</B> <B>br);</B>
+ <B>int</B> <B>box(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>verch,</B> <B>chtype</B> <B>horch);</B>
+ <B>int</B> <B>hline(chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>whline(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>vline(chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>wvline(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+ <B>mvhline(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+ <B>mvwhline(WINDOW</B> <B>*,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvvline(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvwvline(WINDOW</B> <B>*,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch,</B> <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>border</B>, <B>wborder</B> and <B>box</B> routines draw a box around the
+ edges of a window. The argument <I>ls</I> is a character and
+ attributes used for the left side of the border, <I>rs</I> -
+ right side, <I>ts</I> - top side, <I>bs</I> - bottom side, <I>tl</I> - top
+ left-hand corner, <I>tr</I> - top right-hand corner, <I>bl</I> - bottom
+ left-hand corner, and <I>br</I> - bottom right-hand corner. If
+ any of these arguments is zero, then the following default
+ values (defined in <B>curses.h</B>) are used instead: <B>ACS_VLINE</B>,
+ <B>ACS_VLINE</B>, <B>ACS_HLINE</B>, <B>ACS_HLINE</B>, <B>ACS_ULCORNER</B>,
+ <B>ACS_URCORNER</B>, <B>ACS_LLCORNER</B>, <B>ACS_LRCORNER</B>.
+
+ <B>box(</B><I>win</I><B>,</B> <I>verch</I><B>,</B> <I>horch</I><B>)</B> is a shorthand for the following
+ call: <B>wborder(</B><I>win</I><B>,</B> <I>verch</I><B>,</B> <I>verch</I><B>,</B> <I>horch</I><B>,</B> <I>horch</I><B>,</B> <B>0,</B> <B>0,</B> <B>0,</B>
+ <B>0)</B>.
+
+ The <B>hline</B> and <B>whline</B> functions draw a horizontal (left to
+ right) line using <I>ch</I> starting at the current cursor posi-
+ tion in the window. The current cursor position is not
+ changed. The line is at most <I>n</I> characters long, or as
+ many as fit into the window.
+
+ The <B>vline</B> and <B>wvline</B> functions draw a vertical (top to
+ bottom) line using <I>ch</I> starting at the current cursor posi-
+ tion in the window. The current cursor position is not
+ changed. The line is at most <I>n</I> characters long, or as
+ many as fit into the window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>OK</B>. The SVr4.0 manual
+ says "or a non-negative integer if <B>immedok</B> is set", but
+ this appears to be an error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The borders generated by these functions are <I>inside</I> bor-
+ ders (this is also true of SVr4 curses, though the fact is
+ not documented).
+
+ Note that <B>border</B> and <B>box</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4. Additional functions <B>mvhline</B>, <B>mvvline</B>, <B>mvwhline</B>,
+ and <B>mvwvline</B> are described there which this implementation
+ does not yet support. The standard specifies that they
+ return <B>ERR</B> on failure, but specifies no error conditions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>erase</B>, <B>werase</B>, <B>clear</B>, <B>wclear</B>, <B>clrtobot</B>, <B>wclrtobot</B>, <B>clr-</B>
+ <B>toeol</B>, <B>wclrtoeol</B> - clear all or part of a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#</B> <B>include</B> <B><curses.h></B>
+
+ <B>int</B> <B>erase(void);</B>
+ <B>int</B> <B>werase(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>clear(void);</B>
+ <B>int</B> <B>wclear(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>clrtobot(void);</B>
+ <B>int</B> <B>wclrtobot(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>clrtoeol(void);</B>
+ <B>int</B> <B>wclrtoeol(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>erase</B> and <B>werase</B> routines copy blanks to every posi-
+ tion in the window, clearing the screen.
+
+ The <B>clear</B> and <B>wclear</B> routines are like <B>erase</B> and <B>werase</B>,
+ but they also call <B>clearok</B>, so that the screen is cleared
+ completely on the next call to <B>wrefresh</B> for that window
+ and repainted from scratch.
+
+ The <B>clrtobot</B> and <B>wclrtobot</B> 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 <B>clrtoeol</B> and <B>wclrtoeol</B> 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 <B>wbkgdset</B>) merged into them.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>OK</B>. The SVr4.0 manual
+ says "or a non-negative integer if <B>immedok</B> is set", but
+ this appears to be an error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>erase</B>, <B>werase</B>, <B>clear</B>, <B>wclear</B>, <B>clrtobot</B>, and <B>clr-</B>
+ <B>toeol</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4. The standard specifies that they return <B>ERR</B> on
+ failure, but specifies no error conditions.
+
+ Some historic curses implementations had, as an undocu-
+ mented feature, the ability to do the equivalent of
+ <B>clearok(...,</B> <B>1)</B> by saying <B>touchwin(stdscr)</B> or
+ <B>clear(stdscr)</B>. This will not work under ncurses.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>start_color</B>, <B>init_pair</B>, <B>init_color</B>, <B>has_colors</B>,
+ <B>can_change_color</B>, <B>color_content</B>, <B>pair_content</B>, <B>COLOR_PAIR</B>
+ - <B>curses</B> color manipulation routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#</B> <B>include</B> <B><curses.h></B>
+ <B>int</B> <B>start_color(void);</B>
+ <B>int</B> <B>init_pair(short</B> <B>pair,</B> <B>short</B> <B>f,</B> <B>short</B> <B>b);</B>
+ <B>int</B> <B>init_color(short</B> <B>color,</B> <B>short</B> <B>r,</B> <B>short</B> <B>g,</B> <B>short</B> <B>b);</B>
+ <B>bool</B> <B>has_colors(void);</B>
+ <B>bool</B> <B>can_change_color(void);</B>
+ <B>int</B> <B>color_content(short</B> <B>color,</B> <B>short</B> <B>*r,</B> <B>short</B> <B>*g,</B> <B>short</B>
+ <B>*b);</B>
+ <B>int</B> <B>pair_content(short</B> <B>pair,</B> <B>short</B> <B>*f,</B> <B>short</B> <B>*b);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ <B>Overview</B>
+ <B>curses</B> support color attributes on terminals with that
+ capability. To use these routines <B>start_color</B> must be
+ called, usually right after <B>initscr</B>. 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 <B>init_pair</B>. After it has been ini-
+ tialized, <B>COLOR_PAIR</B>(<I>n</I>), a macro defined in <B><curses.h></B>,
+ can be used as a new video attribute.
+
+ If a terminal is capable of redefining colors, the pro-
+ grammer can use the routine <B>init_color</B> to change the defi-
+ nition of a color. The routines <B>has_colors</B> and
+ <B>can_change_color</B> return <B>TRUE</B> or <B>FALSE</B>, depending on
+ whether the terminal has color capabilities and whether
+ the programmer can change the colors. The routine
+ <B>color_content</B> allows a programmer to extract the amounts
+ of red, green, and blue components in an initialized
+ color. The routine <B>pair_content</B> allows a programmer to
+ find out how a given color-pair is currently defined.
+
+ <B>Routine</B> <B>Descriptions</B>
+ The <B>start_color</B> 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 <B>initscr</B>.
+ <B>start_color</B> initializes eight basic colors (black, red,
+ green, yellow, blue, magenta, cyan, and white), and two
+ global variables, <B>COLORS</B> and <B>COLOR_PAIRS</B> (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 <B>init_pair</B> 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:
+
+ - The value of the first argument must be between <B>1</B> and
+ <B>COLOR_PAIRS-1</B>.
+
+ - The value of the second and third arguments must be
+ between 0 and <B>COLORS</B> (the 0 color pair is wired to
+ white on black and cannot be changed).
+
+ If the color-pair was previously initialized, the screen
+ is refreshed and all occurrences of that color-pair is
+ changed to the new definition.
+
+ As an extension, ncurses allows you to set color pair 0
+ via the <B>assume_default_colors</B> routine, or to specify the
+ use of default colors (color number <B>-1</B>) if you first
+ invoke the <B>use_default_colors</B> routine.
+
+ The <B>init_color</B> 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 <B>0</B> and <B>COLORS</B>. (See the section
+ <B>Colors</B> for the default color index.) Each of the last
+ three arguments must be a value between 0 and 1000. When
+ <B>init_color</B> is used, all occurrences of that color on the
+ screen immediately change to the new definition.
+
+ The <B>has_colors</B> routine requires no arguments. It returns
+ <B>TRUE</B> if the terminal can manipulate colors; otherwise, it
+ returns <B>FALSE</B>. 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.
+
+ The <B>can_change_color</B> routine requires no arguments. It
+ returns <B>TRUE</B> if the terminal supports colors and can
+ change their definitions; other, it returns <B>FALSE</B>. This
+ routine facilitates writing terminal-independent programs.
+
+ The <B>color_content</B> 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 <B>short</B>s 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 <B>COLORS</B>. 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 com-
+ ponent).
+
+ The <B>pair_content</B> 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 <B>short</B>s for storing the foreground and the background
+ color numbers. The value of the first argument must be
+ between 1 and <B>COLOR_PAIRS-1</B>. The values that are stored
+ at the addresses pointed to by the second and third argu-
+ ments are between 0 and <B>COLORS</B>.
+
+ <B>Colors</B>
+ In <B><curses.h></B> the following macros are defined. These are
+ the default colors. <B>curses</B> also assumes that <B>COLOR_BLACK</B>
+ is the default background color for all terminals.
+
+ <B>COLOR_BLACK</B>
+ <B>COLOR_RED</B>
+ <B>COLOR_GREEN</B>
+ <B>COLOR_YELLOW</B>
+ <B>COLOR_BLUE</B>
+ <B>COLOR_MAGENTA</B>
+ <B>COLOR_CYAN</B>
+ <B>COLOR_WHITE</B>
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The routines <B>can_change_color()</B> and <B>has_colors()</B> return
+ <B>TRUE</B> or <B>FALSE</B>.
+
+ All other routines return the integer <B>ERR</B> upon failure and
+ an <B>OK</B> (SVr4 specifies only "an integer value other than
+ <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ In the <I>ncurses</I> implementation, there is a separate color
+ activation flag, color palette, color pairs table, and
+ associated COLORS and COLOR_PAIRS counts for each screen;
+ the <B>start_color</B> 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 <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>.
+
+ Several caveats apply on 386 and 486 machines with VGA-
+ compatible graphics:
+
+ - COLOR_YELLOW is actually brown. To get yellow, use
+ COLOR_YELLOW combined with the <B>A_BOLD</B> attribute.
+
+ - 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).
+
+ - Color RGB values are not settable.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ This implementation satisfies XSI Curses's minimum maxi-
+ mums for <B>COLORS</B> and <B>COLOR_PAIRS</B>.
+
+ The <B>init_pair</B> routine accepts negative values of fore-
+ ground and background color to support the
+ <B>use_default_colors</B> extension, but only if that routine has
+ been first invoked.
+
+ The assumption that <B>COLOR_BLACK</B> is the default background
+ color for all terminals can be modified using the
+ <B>assume_default_colors</B> extension,
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>, <B><A HREF="dft_fgbg.3x.html">dft_fgbg(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>delch</B>, <B>wdelch</B>, <B>mvdelch</B>, <B>mvwdelch</B> - delete character under
+ the cursor in a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>delch(void);</B>
+ <B>int</B> <B>wdelch(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>mvdelch(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>int</B> <B>mvwdelch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</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 <I>y</I>, <I>x</I>, if specified). (This
+ does not imply use of the hardware delete character fea-
+ ture.)
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and an <B>OK</B>
+ (SVr4 specifies only "an integer value other than <B>ERR</B>")
+ upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>delch</B>, <B>mvdelch</B>, and <B>mvwdelch</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4. The standard specifies that they return <B>ERR</B> on
+ failure, but specifies no error conditions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>deleteln</B>, <B>wdeleteln</B>, <B>insdelln</B>, <B>winsdelln</B>, <B>insertln</B>, <B>win-</B>
+ <B>sertln</B> - delete and insert lines in a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>deleteln(void);</B>
+ <B>int</B> <B>wdeleteln(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>insdelln(int</B> <B>n);</B>
+ <B>int</B> <B>winsdelln(WINDOW</B> <B>*win,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>insertln(void);</B>
+ <B>int</B> <B>winsertln(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>deleteln</B> and <B>wdeleteln</B> 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 <B>insdelln</B> and <B>winsdelln</B> routines, for positive <I>n</I>,
+ insert <I>n</I> lines into the specified window above the current
+ line. The <I>n</I> bottom lines are lost. For negative <I>n</I>,
+ delete <I>n</I> lines (starting with the one under the cursor),
+ and move the remaining lines up. The bottom <I>n</I> lines are
+ cleared. The current cursor position remains the same.
+
+ The <B>insertln</B> and <B>insertln</B> routines, insert a blank line
+ above the current line and the bottom line is lost.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and an <B>OK</B>
+ (SVr4 specifies only "an integer value other than <B>ERR</B>")
+ upon successful completion.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4. The standard specifies that they return <B>ERR</B> on
+ failure, but specifies no error conditions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that all but <B>winsdelln</B> may be macros.
+
+ These routines do not require a hardware line delete or
+ insert feature in the terminal. In fact, they won't use
+ hardware line delete/insert unless <B>idlok(...,</B> <B>TRUE)</B> has
+ been set on the current window.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>curs_extend</B>: <B>curses_version</B>, <B>use_extended_names</B> - miscel-
+ laneous curses extensions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>const</B> <B>char</B> <B>*</B> <B>curses_version(void);</B>
+ <B>int</B> <B>use_extended_names(bool</B> <B>enable);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These functions are extensions to the curses library which
+ do not fit easily into other categories.
+
+ Use <I>curses</I><B>_</B><I>version()</I> to get the version number, including
+ patch level of the library, e.g., <B>5.0.19991023</B>
+
+ The <I>use</I><B>_</B><I>extended</I><B>_</B><I>names()</I> 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 descision is made by using the <B>-x</B> option of <I>tic</I>
+ to compile extended terminal definitions. However you can
+ disable this feature to ensure compatiblity with other
+ implementations of curses
+
+
+</PRE>
+<H2>PORTABILITY</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 con-
+ ditioned using NCURSES_VERSION.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>, <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>, <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B>,
+ <B><A HREF="define_key.3x.html">define_key(3x)</A></B>, <B><A HREF="dft_fgbg.3x.html">dft_fgbg(3x)</A></B>, <B><A HREF="keybound.3x.html">keybound(3x)</A></B>, <B><A HREF="keyok.3x.html">keyok(3x)</A></B>,
+ <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B>, <B><A HREF="wresize.3x.html">wresize(3x)</A></B>.
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+ Thomas Dickey.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>getch</B>, <B>wgetch</B>, <B>mvgetch</B>, <B>mvwgetch</B>, <B>ungetch</B>, <B>has_key</B> - get
+ (or push back) characters from <B>curses</B> terminal keyboard
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>getch(void);</B>
+ <B>int</B> <B>wgetch(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>mvgetch(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>int</B> <B>mvwgetch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>int</B> <B>ungetch(int</B> <B>ch);</B>
+ <B>int</B> <B>has_key(int</B> <B>ch);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>getch</B>, <B>wgetch</B>, <B>mvgetch</B> and <B>mvwgetch</B>, routines read a
+ character from the window. In no-delay mode, if no input
+ is waiting, the value <B>ERR</B> is returned. In delay mode, the
+ program waits until the system passes text through to the
+ program. Depending on the setting of <B>cbreak</B>, this is
+ after 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 <B>noecho</B> 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
+ <B>delch</B> had been called. If the character value is any
+ other <B>KEY_</B> define, the user is alerted with a <B>beep</B> 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 <B>wrefresh</B>, <B>wrefresh</B> will be
+ called before another character is read.
+
+ If <B>keypad</B> is <B>TRUE</B>, 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
+ <B><curses.h></B> as macros with values outside the range of
+ 8-bit characters whose names begin with <B>KEY_.</B> 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
+ escape character), <B>curses</B> 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.
+
+ The <B>ungetch</B> routine places <I>ch</I> back onto the input queue to
+ be returned by the next call to <B>wgetch</B>. Note that there
+ is, in effect, just one input queue for all windows.
+
+
+ <B>Function</B> <B>Keys</B>
+ The following function keys, defined in <B><curses.h></B>, might
+ be returned by <B>getch</B> if <B>keypad</B> has been enabled. Note
+ that not all of these are necessarily supported on any
+ particular terminal.
+
+ <I>Name</I> <I>Key</I> <I>name</I>
+
+ 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(<I>n</I>) For 0 <= <I>n</I> <= 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:
+
+ +-----+------+-------+
+ | <B>A1</B> | <B>up</B> | <B>A3</B> |
+ +-----+------+-------+
+ |<B>left</B> | <B>B2</B> | <B>right</B> |
+ +-----+------+-------+
+ | <B>C1</B> | <B>down</B> | <B>C3</B> |
+ +-----+------+-------+
+ The <B>has_key</B> routine takes a key value from the above list,
+ and returns TRUE or FALSE according as the current termi-
+ nal type recognizes a key with that value.
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and an
+ integer value other than <B>ERR</B> (<B>OK</B> in the case of ungetch())
+ upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ 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.
+
+ When using <B>getch</B>, <B>wgetch</B>, <B>mvgetch</B>, or <B>mvwgetch</B>, nocbreak
+ mode (<B>nocbreak</B>) and echo mode (<B>echo</B>) 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 <B>getch</B>, <B>mvgetch</B>, and <B>mvwgetch</B> 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 <B>KEY_UP</B>,
+ <B>KEY_DOWN</B>, <B>KEY_LEFT</B>, <B>KEY_RIGHT</B>, <B>KEY_HOME</B>, <B>KEY_END</B>,
+ <B>KEY_NPAGE</B>, <B>KEY_PPAGE</B>, and function keys 1 through 12. The
+ Ins key is usually mapped to <B>KEY_IC</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ 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 <B>ERR</B> on failure,
+ but specifies no error conditions.
+
+ The echo behavior of these functions on input of <B>KEY_</B> or
+ backspace characters was not specified in the SVr4 docu-
+ mentation. This description is adopted from the XSI
+ Curses standard.
+
+ The behavior of <B>getch</B> 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
+ implementation of handled signal receipt interrupts a
+ <B><A HREF="read.2.html">read(2)</A></B> call in progress or not, and also (in some imple-
+ mentations) depending on whether an input timeout or non-
+ blocking mode hsd been set.
+
+ Programmers concerned about portability should be prepared
+ for either of two cases: (a) signal receipt does not
+ interrupt <B>getch</B>; (b) signal receipt interrupts <B>getch</B> and
+ causes it to return ERR with <B>errno</B> set to <B>EINTR</B>. Under
+ the <B>ncurses</B> implementation, handled signals never inter-
+ rupt <B>getch</B>.
+
+ The <B>has_key</B> function is unique to <B>ncurses</B>. We recommend
+ that any code using it be conditionalized on the
+ <B>NCURSES_VERSION</B> feature macro.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>, <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>,
+ <B><A HREF="curs_move.3x.html">curs_move(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>. <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>getstr</B>, <B>getnstr</B>, <B>wgetstr</B>, <B>wgetnstr</B>, <B>mvgetstr</B>, <B>mvgetnstr</B>,
+ <B>mvwgetstr</B>, <B>mvwgetnstr</B> - accept character strings from
+ <B>curses</B> terminal keyboard
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>getstr(char</B> <B>*str);</B>
+ <B>int</B> <B>getnstr(char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>wgetstr(WINDOW</B> <B>*win,</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>wgetnstr(WINDOW</B> <B>*win,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvgetstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>mvwgetstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>mvgetnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvwgetnstr(WINDOW</B> <B>*,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>getstr</B> is equivalent to a series of calls to
+ <B>getch</B>, 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 <I>str</I>.
+
+ <B>wgetnstr</B> reads at most <I>n</I> 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 <B>getnstr</B> function reads
+ from the <I>stdscr</I> default window.
+
+ The user's erase and kill characters are interpreted. If
+ keypad mode is on for the window, <B>KEY_LEFT</B> and
+ <B>KEY_BACKSPACE</B> are both considered equivalent to the user's
+ kill character.
+
+ Characters input are echoed only if <B>echo</B> is currently on.
+ In that case, backspace is echoed as deletion of the pre-
+ vious character (typically a left motion).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and an <B>OK</B>
+ (SVr4 specifies only "an integer value other than <B>ERR</B>")
+ upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>getstr</B>, <B>mvgetstr</B>, and <B>mvwgetstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4. They read single-byte characters only. The
+ standard specifies that they return <B>ERR</B> on failure, but
+ the single error condition <B>EOVERFLOW</B> associated with
+ extended-level conformance is not yet returned (the XSI
+ curses support for multi-byte characters is not yet pre-
+ sent).
+
+ 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, <I>etc</I>.) 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 <B>getnstr</B>, <B>mvgetnstr</B>, and <B>mvwgetnstr</B> were pre-
+ sent but not documented in SVr4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>getyx</B>, <B>getparyx</B>, <B>getbegyx</B>, <B>getmaxyx</B> - get <B>curses</B> cursor
+ and window coordinates
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>void</B> <B>getyx(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>void</B> <B>getparyx(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>void</B> <B>getbegyx(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>void</B> <B>getmaxyx(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>getyx</B> macro places the current cursor position of the
+ given window in the two integer variables <I>y</I> and <I>x</I>.
+
+ If <I>win</I> is a subwindow, the <B>getparyx</B> macro places the
+ beginning coordinates of the subwindow relative to the
+ parent window into two integer variables <I>y</I> and <I>x</I>. Other-
+ wise, <B>-1</B> is placed into <I>y</I> and <I>x</I>.
+
+ Like <B>getyx</B>, the <B>getbegyx</B> and <B>getmaxyx</B> macros store the
+ current beginning coordinates and size of the specified
+ window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The return values of these macros are undefined (<I>i</I>.<I>e</I>.,
+ they should not be used as the right-hand side of assign-
+ ment statements).
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ All of these interfaces are macros and that "<B>&</B>" is not
+ necessary before the variables <I>y</I> and <I>x</I>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>inch</B>, <B>winch</B>, <B>mvinch</B>, <B>mvwinch</B> - get a character and
+ attributes from a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>chtype</B> <B>inch(void);</B>
+ <B>chtype</B> <B>winch(WINDOW</B> <B>*win);</B>
+ <B>chtype</B> <B>mvinch(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>chtype</B> <B>mvwinch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These routines return the character, of type <B>chtype</B>, 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
+ <B><curses.h></B> can be used with the <B>&</B> (logical AND) operator
+ to extract the character or attributes alone.
+
+
+ <B>Attributes</B>
+ The following bit-masks may be AND-ed with characters
+ returned by <B>winch</B>.
+
+ <B>A_CHARTEXT</B> Bit-mask to extract character
+ <B>A_ATTRIBUTES</B> Bit-mask to extract attributes
+ <B>A_COLOR</B> Bit-mask to extract color-pair field information
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that all of these routines may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>inchstr</B>, <B>inchnstr</B>, <B>winchstr</B>, <B>winchnstr</B>, <B>mvinchstr</B>,
+ <B>mvinchnstr</B>, <B>mvwinchstr</B>, <B>mvwinchnstr</B> - get a string of
+ characters (and attributes) from a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>inchstr(chtype</B> <B>*chstr);</B>
+ <B>int</B> <B>inchnstr(chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>winchstr(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>*chstr);</B>
+ <B>int</B> <B>winchnstr(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvinchstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>*chstr);</B>
+ <B>int</B> <B>mvinchnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>*chstr,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvwinchstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>*chstr);</B>
+ <B>int</B> <B>mvwinchnstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>*chstr,</B>
+ <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These routines return a NULL-terminated array of <B>chtype</B>
+ quantities, starting at the current cursor position in the
+ named window and ending at the right margin of the window.
+ The four functions with <I>n</I> as the last argument, return a
+ leading substring at most <I>n</I> characters long (exclusive of
+ the trailing (chtype)0). Constants defined in <B><curses.h></B>
+ can be used with the <B>&</B> (logical AND) operator to extract
+ the character or the attribute alone from any position in
+ the <I>chstr</I> [see <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>].
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and an
+ integer value other than <B>ERR</B> upon successful completion
+ (the number of characters retrieved, exclusive of the
+ trailing 0).
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that all routines except <B>winchnstr</B> may be macros.
+ SVr4 does not document whether the result string is 0-ter-
+ minated; it does not document whether a length limit argu-
+ ment includes any trailing 0; and it does not document the
+ meaning of the return value.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ 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 <B>OK</B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>.
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>initscr</B>, <B>newterm</B>, <B>endwin</B>, <B>isendwin</B>, <B>set_term</B>, <B>delscreen</B> -
+ <B>curses</B> screen initialization and manipulation routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>WINDOW</B> <B>*initscr(void);</B>
+ <B>int</B> <B>endwin(void);</B>
+ <B>bool</B> <B>isendwin(void);</B>
+ <B>SCREEN</B> <B>*newterm(const</B> <B>char</B> <B>*type,</B> <B>FILE</B> <B>*outfd,</B> <B>FILE</B>
+ <B>*infd);</B>
+ <B>SCREEN</B> <B>*set_term(SCREEN</B> <B>*new);</B>
+ <B>void</B> <B>delscreen(SCREEN*</B> <B>sp);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ <B>initscr</B> is normally the first <B>curses</B> routine to call when
+ initializing a program. A few special routines sometimes
+ need to be called before it; these are <B>slk_init</B>, <B>filter</B>,
+ <B>ripoffline</B>, <B>use_env</B>. For multiple-terminal applications,
+ <B>newterm</B> may be called before <B>initscr</B>.
+
+ The initscr code determines the terminal type and initial-
+ izes all <B>curses</B> data structures. <B>initscr</B> also causes the
+ first call to <B>refresh</B> to clear the screen. If errors
+ occur, <B>initscr</B> writes an appropriate error message to
+ standard error and exits; otherwise, a pointer is returned
+ to <B>stdscr</B>.
+
+ A program that outputs to more than one terminal should
+ use the <B>newterm</B> routine for each terminal instead of
+ <B>initscr</B>. 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 <B>newterm</B>. The routine <B>newterm</B> should be called once
+ for each terminal. It returns a variable of type <B>SCREEN</B> <B>*</B>
+ which should be saved as a reference to that terminal.
+ The arguments are the <I>type</I> of the terminal to be used in
+ place of <B>$TERM</B>, a file pointer for output to the terminal,
+ and another file pointer for input from the terminal (if
+ <I>type</I> is <B>NULL</B>, <B>$TERM</B> will be used). The program must also
+ call <B>endwin</B> for each terminal being used before exiting
+ from <B>curses</B>. If <B>newterm</B> is called more than once for the
+ same terminal, the first terminal referred to must be the
+ last one for which <B>endwin</B> is called.
+
+ A program should always call <B>endwin</B> before exiting or
+ escaping from <B>curses</B> 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 <B>refresh</B> or <B>doupdate</B> after
+ a temporary escape causes the program to resume visual
+ mode.
+
+ The <B>isendwin</B> routine returns <B>TRUE</B> if <B>endwin</B> has been
+ called without any subsequent calls to <B>wrefresh</B>, and <B>FALSE</B>
+ otherwise.
+
+ The <B>set_term</B> routine is used to switch between different
+ terminals. The screen reference <B>new</B> becomes the new cur-
+ rent terminal. The previous terminal is returned by the
+ routine. This is the only routine which manipulates
+ <B>SCREEN</B> pointers; all other routines affect only the cur-
+ rent terminal.
+
+ The <B>delscreen</B> routine frees storage associated with the
+ <B>SCREEN</B> data structure. The <B>endwin</B> routine does not do
+ this, so <B>delscreen</B> should be called after <B>endwin</B> if a par-
+ ticular <B>SCREEN</B> is no longer needed.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ <B>endwin</B> returns the integer <B>ERR</B> upon failure and <B>OK</B> upon
+ successful completion.
+
+ Routines that return pointers always return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>initscr</B> and <B>newterm</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4. It specifies that portable applications must not
+ call <B>initscr</B> more than once.
+
+ Old versions of curses, e.g., BSD 4.4, may have returned a
+ null pointer from <B>initscr</B> when an error is detected,
+ rather than exiting. It is safe but redundant to check
+ the return value of <B>initscr</B> in XSI Curses.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>,
+ <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>, <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>cbreak</B>, <B>nocbreak</B>, <B>echo</B>, <B>noecho</B>, <B>halfdelay</B>, <B>intrflush</B>, <B>key-</B>
+ <B>pad</B>, <B>meta</B>, <B>nodelay</B>, <B>notimeout</B>, <B>raw</B>, <B>noraw</B>, <B>noqiflush</B>,
+ <B>qiflush</B>, <B>timeout</B>, <B>wtimeout</B>, <B>typeahead</B> - <B>curses</B> input
+ options
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>cbreak(void);</B>
+ <B>int</B> <B>nocbreak(void);</B>
+ <B>int</B> <B>echo(void);</B>
+ <B>int</B> <B>noecho(void);</B>
+ <B>int</B> <B>halfdelay(int</B> <B>tenths);</B>
+ <B>int</B> <B>intrflush(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>int</B> <B>keypad(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>int</B> <B>meta(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>int</B> <B>nodelay(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>int</B> <B>raw(void);</B>
+ <B>int</B> <B>noraw(void);</B>
+ <B>void</B> <B>noqiflush(void);</B>
+ <B>void</B> <B>qiflush(void);</B>
+ <B>int</B> <B>notimeout(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>void</B> <B>timeout(int</B> <B>delay);</B>
+ <B>void</B> <B>wtimeout(WINDOW</B> <B>*win,</B> <B>int</B> <B>delay);</B>
+ <B>int</B> <B>typeahead(int</B> <B>fd);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ Normally, the tty driver buffers typed characters until a
+ newline or carriage return is typed. The <B>cbreak</B> routine
+ disables line buffering and erase/kill character-process-
+ ing (interrupt and flow control characters are unaf-
+ fected), making characters typed by the user immediately
+ available to the program. The <B>nocbreak</B> routine returns
+ the terminal to normal (cooked) mode.
+
+ Initially the terminal may or may not be in <B>cbreak</B> mode,
+ as the mode is inherited; therefore, a program should call
+ <B>cbreak</B> or <B>nocbreak</B> explicitly. Most interactive programs
+ using <B>curses</B> set the <B>cbreak</B> mode. Note that <B>cbreak</B> over-
+ rides <B>raw</B>. [See <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B> for a discussion of how
+ these routines interact with <B>echo</B> and <B>noecho</B>.]
+
+ The <B>echo</B> and <B>noecho</B> routines control whether characters
+ typed by the user are echoed by <B>getch</B> as they are typed.
+ Echoing by the tty driver is always disabled, but ini-
+ tially <B>getch</B> 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
+ <B>noecho</B>. [See <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B> for a discussion of how these
+ routines interact with <B>cbreak</B> and <B>nocbreak</B>.]
+
+ The <B>halfdelay</B> routine is used for half-delay mode, which
+ is similar to <B>cbreak</B> mode in that characters typed by the
+ user are immediately available to the program. However,
+ after blocking for <I>tenths</I> tenths of seconds, ERR is
+ returned if nothing has been typed. The value of <B>tenths</B>
+ must be a number between 1 and 255. Use <B>nocbreak</B> to leave
+ half-delay mode.
+
+ If the <B>intrflush</B> option is enabled, (<I>bf</I> is <B>TRUE</B>), 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 <B>curses</B> to have the wrong idea of
+ what is on the screen. Disabling (<I>bf</I> is <B>FALSE</B>), the
+ option prevents the flush. The default for the option is
+ inherited from the tty driver settings. The window argu-
+ ment is ignored.
+
+ The <B>keypad</B> option enables the keypad of the user's termi-
+ nal. If enabled (<I>bf</I> is <B>TRUE</B>), the user can press a func-
+ tion key (such as an arrow key) and <B>wgetch</B> returns a sin-
+ gle value representing the function key, as in <B>KEY_LEFT</B>.
+ If disabled (<I>bf</I> is <B>FALSE</B>), <B>curses</B> 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 key-
+ pad to be turned on when <B>wgetch</B> 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
+ driver [see <B><A HREF="termio.7.html">termio(7)</A></B>]. To force 8 bits to be returned,
+ invoke <B>meta</B>(<I>win</I>, <B>TRUE</B>); this is equivalent, under POSIX,
+ to setting the CS8 flag on the terminal. To force 7 bits
+ to be returned, invoke <B>meta</B>(<I>win</I>, <B>FALSE</B>); this is equiva-
+ lent, under POSIX, to setting the CS8 flag on the termi-
+ nal. The window argument, <I>win</I>, is always ignored. If the
+ terminfo capabilities <B>smm</B> (meta_on) and <B>rmm</B> (meta_off) are
+ defined for the terminal, <B>smm</B> is sent to the terminal when
+ <B>meta</B>(<I>win</I>, <B>TRUE</B>) is called and <B>rmm</B> is sent when <B>meta</B>(<I>win</I>,
+ <B>FALSE</B>) is called.
+
+ The <B>nodelay</B> option causes <B>getch</B> to be a non-blocking call.
+ If no input is ready, <B>getch</B> returns <B>ERR</B>. If disabled (<I>bf</I>
+ is <B>FALSE</B>), <B>getch</B> waits until a key is pressed.
+
+ While interpreting an input escape sequence, <B>wgetch</B> sets a
+ timer while waiting for the next character. If <B>notime-</B>
+ <B>out(</B><I>win</I>, <B>TRUE</B>) is called, then <B>wgetch</B> 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.
+
+ The <B>raw</B> and <B>noraw</B> routines place the terminal into or out
+ of raw mode. Raw mode is similar to <B>cbreak</B> 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 <B>curses</B>.
+
+ When the <B>noqiflush</B> routine is used, normal flush of input
+ and output queues associated with the <B>INTR</B>, <B>QUIT</B> and <B>SUSP</B>
+ characters will not be done [see <B><A HREF="termio.7.html">termio(7)</A></B>]. When <B>qiflush</B>
+ is called, the queues will be flushed when these control
+ characters are read. You may want to call <B>noqiflush()</B> in
+ a signal handler if you want output to continue as though
+ the interrupt had not occurred, after the handler exits.
+
+ The <B>timeout</B> and <B>wtimeout</B> routines set blocking or non-
+ blocking read for a given window. If <I>delay</I> is negative,
+ blocking read is used (<I>i</I>.<I>e</I>., waits indefinitely for
+ input). If <I>delay</I> is zero, then non-blocking read is used
+ (<I>i</I>.<I>e</I>., read returns <B>ERR</B> if no input is waiting). If <I>delay</I>
+ is positive, then read blocks for <I>delay</I> milliseconds, and
+ returns <B>ERR</B> if there is still no input. Hence, these rou-
+ tines provide the same functionality as <B>nodelay</B>, plus the
+ additional capability of being able to block for only
+ <I>delay</I> milliseconds (where <I>delay</I> is positive).
+
+ The <B>curses</B> 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 <B>refresh</B> or <B>doupdate</B>
+ is called again. This allows faster response to commands
+ typed in advance. Normally, the input FILE pointer passed
+ to <B>newterm</B>, or <B>stdin</B> in the case that <B>initscr</B> was used,
+ will be used to do this typeahead checking. The <B>typeahead</B>
+ routine specifies that the file descriptor <I>fd</I> is to be
+ used to check for typeahead instead. If <I>fd</I> is -1, then no
+ typeahead checking is done.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines that return an integer return <B>ERR</B> upon fail-
+ ure and OK (SVr4 specifies only "an integer value other
+ than <B>ERR</B>") upon successful completion, unless otherwise
+ noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ 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 <B>raw</B>
+ call turned it off as a side-effect. For best portabil-
+ ity, set echo or noecho explicitly just after initializa-
+ tion, even if your program remains in cooked mode.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>echo</B>, <B>noecho</B>, <B>halfdelay</B>, <B>intrflush</B>, <B>meta</B>, <B>node-</B>
+ <B>lay</B>, <B>notimeout</B>, <B>noqiflush</B>, <B>qiflush</B>, <B>timeout</B>, and <B>wtimeout</B>
+ may be macros.
+
+ The <B>noraw</B> and <B>nocbreak</B> 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>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="termio.7.html">termio(7)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>insch</B>, <B>winsch</B>, <B>mvinsch</B>, <B>mvwinsch</B> - insert a character
+ before cursor in a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>insch(chtype</B> <B>ch);</B>
+ <B>int</B> <B>winsch(WINDOW</B> <B>*win,</B> <B>chtype</B> <B>ch);</B>
+ <B>int</B> <B>mvinsch(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch);</B>
+ <B>int</B> <B>mvwinsch(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>chtype</B> <B>ch);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These routines, insert the character <I>ch</I> 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.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines that return an integer return <B>ERR</B> upon fail-
+ ure and OK (SVr4 specifies only "an integer value other
+ than <B>ERR</B>") upon successful completion, unless otherwise
+ noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ These routines do not necessarily imply use of a hardware
+ insert character feature.
+
+ Note that <B>insch</B>, <B>mvinsch</B>, and <B>mvwinsch</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>insstr</B>, <B>insnstr</B>, <B>winsstr</B>, <B>winsnstr</B>, <B>mvinsstr</B>, <B>mvinsnstr</B>,
+ <B>mvwinsstr</B>, <B>mvwinsnstr</B> - insert string before cursor in a
+ <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+ <B>int</B> <B>insstr(const</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>insnstr(const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>winsstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>winsnstr(WINDOW</B> <B>*win,</B> <B>const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvinsstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>mvinsnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvwinsstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>mvwinsnstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>const</B> <B>char</B> <B>*str,</B>
+ <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ 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 <I>y</I>, <I>x</I>, if specified). The four
+ routines with <I>n</I> as the last argument insert a leading sub-
+ string of at most <I>n</I> characters. If <I>n</I><=0, then the entire
+ string is inserted.
+
+ If a character in <I>str</I> is a tab, newline, carriage return
+ or backspace, the cursor is moved appropriately within the
+ window. A newline also does a <B>clrtoeol</B> before moving.
+ Tabs are considered to be at every eighth column. If a
+ character in <I>str</I> is another control character, it is drawn
+ in the <B>^</B><I>X</I> notation. Calling <B>winch</B> 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>RETURN VALUE</H2><PRE>
+ All routines that return an integer return <B>ERR</B> upon fail-
+ ure and OK (SVr4 specifies only "an integer value other
+ than <B>ERR</B>") upon successful completion, unless otherwise
+ noted in the preceding routine descriptions.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that all but <B>winsnstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4, which adds const qualifiers to the arguments.
+ The XSI Curses error conditions <B>EILSEQ</B> and <B>EILOVERFLOW</B>
+ associated with extended-level conformance are not yet
+ detected (this implementation does not yet support XPG4
+ multi-byte characters).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>, <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>instr</B>, <B>innstr</B>, <B>winstr</B>, <B>winnstr</B>, <B>mvinstr</B>, <B>mvinnstr</B>, <B>mvwin-</B>
+ <B>str</B>, <B>mvwinnstr</B> - get a string of characters from a <B>curses</B>
+ window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>instr(char</B> <B>*str);</B>
+ <B>int</B> <B>innstr(char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>winstr(WINDOW</B> <B>*win,</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>winnstr(WINDOW</B> <B>*win,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvinstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>mvinnstr(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str,</B> <B>int</B> <B>n);</B>
+ <B>int</B> <B>mvwinstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>mvwinnstr(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*str,</B> <B>int</B>
+ <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These routines return a string of characters in <I>str</I>,
+ extracted starting at the current cursor position in the
+ named window. Attributes are stripped from the charac-
+ ters. The four functions with <I>n</I> as the last argument
+ return a leading substring at most <I>n</I> characters long
+ (exclusive of the trailing NUL).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All of the functions return <B>ERR</B> upon failure, or the num-
+ ber of characters actually read into the string.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that all routines except <B>winnstr</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses error conditions <B>EILSEQ</B> and <B>EILOVERFLOW</B>
+ associated with extended-level conformance are not yet
+ detected (this implementation does not yet support XPG4
+ multi-byte characters). 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 <I>n</I>. In this case, the functions
+ return the string ending at the right margin.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>def_prog_mode</B>, <B>def_shell_mode</B>, <B>reset_prog_mode</B>,
+ <B>reset_shell_mode</B>, <B>resetty</B>, <B>savetty</B>, <B>getsyx</B>, <B>setsyx</B>, <B>ripof-</B>
+ <B>fline</B>, <B>curs_set</B>, <B>napms</B> - low-level <B>curses</B> routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>def_prog_mode(void);</B>
+ <B>int</B> <B>def_shell_mode(void);</B>
+ <B>int</B> <B>reset_prog_mode(void);</B>
+ <B>int</B> <B>reset_shell_mode(void);</B>
+ <B>int</B> <B>resetty(void);</B>
+ <B>int</B> <B>savetty(void);</B>
+ <B>void</B> <B>getsyx(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>void</B> <B>setsyx(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>int</B> <B>ripoffline(int</B> <B>line,</B> <B>int</B> <B>(*init)(WINDOW</B> <B>*,</B> <B>int));</B>
+ <B>int</B> <B>curs_set(int</B> <B>visibility);</B>
+ <B>int</B> <B>napms(int</B> <B>ms);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The following routines give low-level access to various
+ <B>curses</B> capabilities. Theses routines typically are used
+ inside library routines.
+
+ The <B>def_prog_mode</B> and <B>def_shell_mode</B> routines save the
+ current terminal modes as the "program" (in <B>curses</B>) or
+ "shell" (not in <B>curses</B>) state for use by the
+ <B>reset_prog_mode</B> and <B>reset_shell_mode</B> routines. This is
+ done automatically by <B>initscr</B>. There is one such save
+ area for each screen context allocated by <B>newterm()</B>.
+
+ The <B>reset_prog_mode</B> and <B>reset_shell_mode</B> routines restore
+ the terminal to "program" (in <B>curses</B>) or "shell" (out of
+ <B>curses</B>) state. These are done automatically by <B>endwin</B>
+ and, after an <B>endwin</B>, by <B>doupdate</B>, so they normally are
+ not called.
+
+ The <B>resetty</B> and <B>savetty</B> routines save and restore the
+ state of the terminal modes. <B>savetty</B> saves the current
+ state in a buffer and <B>resetty</B> restores the state to what
+ it was at the last call to <B>savetty</B>.
+
+ The <B>getsyx</B> routine returns the current coordinates of the
+ virtual screen cursor in <I>y</I> and <I>x</I>. If <B>leaveok</B> is currently
+ <B>TRUE</B>, then <B>-1</B>,<B>-1</B> is returned. If lines have been removed
+ from the top of the screen, using <B>ripoffline</B>, <I>y</I> and <I>x</I>
+ include these lines; therefore, <I>y</I> and <I>x</I> should be used
+ only as arguments for <B>setsyx</B>.
+
+ The <B>setsyx</B> routine sets the virtual screen cursor to <I>y</I>, <I>x</I>.
+ If <I>y</I> and <I>x</I> are both <B>-1</B>, then <B>leaveok</B> is set. The two rou-
+ tines <B>getsyx</B> and <B>setsyx</B> are designed to be used by a
+ library routine, which manipulates <B>curses</B> windows but does
+ not want to change the current position of the program's
+ cursor. The library routine would call <B>getsyx</B> at the
+ beginning, do its manipulation of its own windows, do a
+ <B>wnoutrefresh</B> on its windows, call <B>setsyx</B>, and then call
+ <B>doupdate</B>.
+
+ The <B>ripoffline</B> routine provides access to the same facil-
+ ity that <B>slk_init</B> [see <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>] uses to reduce the
+ size of the screen. <B>ripoffline</B> must be called before
+ <B>initscr</B> or <B>newterm</B> is called. If <I>line</I> is positive, a line
+ is removed from the top of <B>stdscr</B>; if <I>line</I> is negative, a
+ line is removed from the bottom. When this is done inside
+ <B>initscr</B>, the routine <B>init</B> (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 <B>LINES</B> and <B>COLS</B> (defined in
+ <B><curses.h></B>) are not guaranteed to be accurate and <B>wrefresh</B>
+ or <B>doupdate</B> must not be called. It is allowable to call
+ <B>wnoutrefresh</B> during the initialization routine.
+
+ <B>ripoffline</B> can be called up to five times before calling
+ <B>initscr</B> or <B>newterm</B>.
+
+ The <B>curs_set</B> routine sets the cursor state is set to
+ invisible, normal, or very visible for <B>visibility</B> equal to
+ <B>0</B>, <B>1</B>, or <B>2</B> respectively. If the terminal supports the
+ <I>visibility</I> requested, the previous <I>cursor</I> state is
+ returned; otherwise, <B>ERR</B> is returned.
+
+ The <B>napms</B> routine is used to sleep for <I>ms</I> milliseconds.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Except for <B>curs_set</B>, these routines always return <B>OK</B>.
+ <B>curs_set</B> returns the previous cursor state, or <B>ERR</B> if the
+ requested <I>visibility</I> is not supported.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>getsyx</B> is a macro, so <B>&</B> is not necessary before
+ the variables <I>y</I> and <I>x</I>.
+
+ Older SVr4 man pages warn that the return value of
+ <B>curs_set</B> "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 <B>curs_set</B> in <B>endwin</B> if
+ <B>curs_set</B> has been called to make the cursor other than
+ normal, i.e., either visible or very visible. There is no
+ way for ncurses to determine the initial cursor state to
+ restore that.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The functions <B>setsyx</B> and <B>getsyx</B> are not described in the
+ XSI Curses standard, Issue 4. All other functions are as
+ described in XSI Curses.
+
+ The SVr4 documentation describes <B>setsyx</B> and <B>getsyx</B> as hav-
+ ing return type int. This is misleading, as they are
+ macros with no documented semantics for the return value.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>,
+ <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>, <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>, <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>getmouse</B>, <B>ungetmouse</B>, <B>mousemask</B>, <B>wenclose</B>, <B>mouse_trafo</B>,
+ <B>wmouse_trafo</B>, <B>mouseinterval</B> - mouse interface through
+ curses
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>typedef</B> <B>unsigned</B> <B>long</B> <B>mmask_t;</B>
+
+ <B>typedef</B> <B>struct</B>
+ <B>{</B>
+ <B>short</B> <B>id;</B> <I>/*</I> <I>ID</I> <I>to</I> <I>distinguish</I> <I>multiple</I> <I>devices</I> <I>*/</I>
+ <B>int</B> <B>x,</B> <B>y,</B> <B>z;</B> <I>/*</I> <I>event</I> <I>coordinates</I> <I>*/</I>
+ <B>mmask_t</B> <B>bstate;</B> <I>/*</I> <I>button</I> <I>state</I> <I>bits</I> <I>*/</I>
+ <B>}</B>
+ <B>MEVENT;</B>
+ <B>int</B> <B>getmouse(MEVENT</B> <B>*event);</B>
+ <B>int</B> <B>ungetmouse(MEVENT</B> <B>*event);</B>
+ <B>mmask_t</B> <B>mousemask(mmask_t</B> <B>newmask,</B> <B>mmask_t</B> <B>*oldmask);</B>
+ <B>bool</B> <B>wenclose(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>bool</B> <B>mouse_trafo(int*</B> <B>pY,</B> <B>int*</B> <B>pX,</B> <B>bool</B> <B>to_screen);</B>
+ <B>bool</B> <B>wmouse_trafo(const</B> <B>WINDOW*</B> <B>win,</B> <B>int*</B> <B>pY,</B> <B>int*</B> <B>pX,</B>
+ <B>bool</B> <B>to_screen);</B>
+ <B>int</B> <B>mouseinterval(int</B> <B>erval);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These functions provide an interface to mouse events from
+ <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>. Mouse events are represented by <B>KEY_MOUSE</B>
+ pseudo-key values in the <B>wgetch</B> input stream.
+
+ To make mouse events visible, use the <B>mousemask</B> 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.
+
+ Here are the mouse event type masks:
+
+ <I>Name</I> <I>Description</I>
+ ---------------------------------------------------------------------
+ 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
+
+ Once a class of mouse events have been made visible in a
+ window, calling the <B>wgetch</B> function on that window may
+ return <B>KEY_MOUSE</B> as an indicator that a mouse event has
+ been queued. To read the event data and pop the event off
+ the queue, call <B>getmouse</B>. This function will return <B>OK</B> if
+ a mouse event is actually visible in the given window, <B>ERR</B>
+ otherwise. When <B>getmouse</B> returns <B>OK</B>, 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 <B>ungetmouse</B> function behaves analogously to <B>ungetch</B>.
+ It pushes a <B>KEY_MOUSE</B> event onto the input queue, and
+ associates with that event the given state data and
+ screen-relative character-cell coordinates.
+
+ The <B>wenclose</B> 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 <B>wmouse_trafo</B> function transforms a given pair of coor-
+ dinates from stdscr-relative coordinates to screen-rela-
+ tive coordinates or vice versa. Please remember, that
+ stdscr-relative coordinates are not always identical to
+ screen-relative coordinates due to the mechanism to
+ reserve lines on top or bottom of the screen for other
+ purposes (ripoff() call, see also slk_... functions). If
+ the parameter <B>to_screen</B> is <B>TRUE</B>, the pointers <B>pY,</B> <B>pX</B> must
+ reference the coordinates of a location inside the window
+ <B>win</B>. They are converted to screen-relative coordinates and
+ returned through the pointers. If the conversion was suc-
+ cessful, the function returns <B>TRUE</B>. If one of the parame-
+ ters was NULL or the location is not inside the window,
+ <B>FALSE</B> is returned. If <B>to_screen</B> is <B>FALSE</B>, the pointers <B>pY,</B>
+ <B>pX</B> must reference screen-relative coordinates. They are
+ converted to stdscr-relative coordinates if the window <B>win</B>
+ encloses this point. In this case the function returns
+ <B>TRUE</B>. If one of the parameters is NULL or the point is not
+ inside the window, <B>FALSE</B> is returned. Please notice, that
+ the referenced coordinates are only replaced by the con-
+ verted coordinates if the transformation was successful.
+
+ The <B>mouseinterval</B> function sets the maximum time (in thou-
+ sands 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.
+
+ 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 <B>get-</B>
+ <B>str</B> that expects a linefeed for input-loop termination.
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ <B>getmouse</B>, <B>ungetmouse</B> and <B>mouseinterval</B> return the integer
+ <B>ERR</B> upon failure or <B>OK</B> upon successful completion. <B>mouse-</B>
+ <B>mask</B> returns the mask of reportable events. <B>wenclose</B> and
+ <B>wmouse_trafo</B> are boolean functions returning <B>TRUE</B> or <B>FALSE</B>
+ depending on their test result.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These calls were designed for <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>, and are not
+ found in SVr4 curses, 4.4BSD curses, or any other previous
+ version of curses.
+
+ The feature macro <B>NCURSES_MOUSE_VERSION</B> is provided so the
+ preprocessor can be used to test whether these features
+ are present (its value is 1). If the interface is
+ changed, the value of <B>NCURSES_MOUSE_VERSION</B> will be incre-
+ mented.
+
+ The order of the <B>MEVENT</B> structure members is not guaran-
+ teed. Additional fields may be added to the structure in
+ the future.
+
+ Under <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>, these calls are implemented using
+ either xterm's built-in mouse-tracking API or Alessandro
+ Rubini's gpm server. If you are using something other
+ than xterm and there is no gpm daemon running on your
+ machine, mouse events will not be visible to <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>
+ (and the <B>wmousemask</B> function will always return <B>0</B>).
+
+ 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.
+
+
+</PRE>
+<H2>BUGS</H2><PRE>
+ Mouse events under xterm will not in fact be ignored dur-
+ ing cooked mode, if they have been enabled by <B>wmousemask</B>.
+ 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
+ description must have <B>kmous</B> set to "\E[M" (the beginning
+ of the response from xterm for mouse clicks).
+
+ Because there are no standard terminal responses that
+ would serve to identify terminals which support the xterm
+ mouse protocol, <B>ncurses</B> assumes that if your $DISPLAY
+ environment variable is set, and <B>kmous</B> is defined in the
+ terminal description, then the terminal may send mouse
+ events.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>move</B>, <B>wmove</B> - move <B>curses</B> window cursor
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>move(int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>int</B> <B>wmove(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These routines move the cursor associated with the window
+ to line <I>y</I> and column <I>x</I>. This routine does not move the
+ physical cursor of the terminal until <B>refresh</B> is called.
+ The position specified is relative to the upper left-hand
+ corner of the window, which is (0,0).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These routines return <B>ERR</B> upon failure and OK (SVr4 speci-
+ fies only "an integer value other than <B>ERR</B>") upon success-
+ ful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>move</B> may be a macro.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4. The standard specifies that if (y,x) is within a
+ multi-column character, the cursor is moved to the first
+ column of that character; however, this implementation
+ does not yet support the extended-level XSI multi-byte
+ characters.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>clearok</B>, <B>idlok</B>, <B>idcok</B> <B>immedok</B>, <B>leaveok</B>, <B>setscrreg</B>,
+ <B>wsetscrreg</B>, <B>scrollok</B>, <B>nl</B>, <B>nonl</B> - <B>curses</B> output options
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>clearok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>int</B> <B>idlok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>void</B> <B>idcok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>void</B> <B>immedok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>int</B> <B>leaveok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>int</B> <B>setscrreg(int</B> <B>top,</B> <B>int</B> <B>bot);</B>
+ <B>int</B> <B>wsetscrreg(WINDOW</B> <B>*win,</B> <B>int</B> <B>top,</B> <B>int</B> <B>bot);</B>
+ <B>int</B> <B>scrollok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>int</B> <B>nl(void);</B>
+ <B>int</B> <B>nonl(void);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These routines set options that change the style of output
+ within <B>curses</B>. All options are initially <B>FALSE</B>, unless
+ otherwise stated. It is not necessary to turn these
+ options off before calling <B>endwin</B>.
+
+ If <B>clearok</B> is called with <B>TRUE</B> as argument, the next call
+ to <B>wrefresh</B> 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 <I>win</I> argument to <B>clearok</B> is the global variable <B>curscr</B>,
+ the next call to <B>wrefresh</B> with any window causes the
+ screen to be cleared and repainted from scratch.
+
+ If <B>idlok</B> is called with <B>TRUE</B> as second argument, <B>curses</B>
+ considers using the hardware insert/delete line feature of
+ terminals so equipped. Calling <B>idlok</B> with <B>FALSE</B> 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 isn't really needed. If insert/delete line can-
+ not be used, <B>curses</B> redraws the changed portions of all
+ lines.
+
+ If <B>idcok</B> is called with <B>FALSE</B> as second argument, <B>curses</B>
+ 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 <B>idcok</B> with
+ <B>TRUE</B> as second argument re-enables use of character inser-
+ tion and deletion.
+
+ If <B>immedok</B> is called with <B>TRUE</B> <B>as</B> <B>argument</B>, any change in
+ the window image, such as the ones caused by <B>waddch,</B>
+ <B>wclrtobot,</B> <B>wscrl</B>, <I>etc</I>., automatically cause a call to <B>wre-</B>
+ <B>fresh</B>. However, it may degrade performance considerably,
+ due to repeated calls to <B>wrefresh</B>. It is disabled by
+ default.
+
+ Normally, the hardware cursor is left at the location of
+ the window cursor being refreshed. The <B>leaveok</B> option
+ allows the cursor to be left wherever the update happens
+ to leave it. It is useful for applications where the cur-
+ sor is not used, since it reduces the need for cursor
+ motions. If possible, the cursor is made invisible when
+ this option is enabled.
+
+ The <B>setscrreg</B> and <B>wsetscrreg</B> routines allow the applica-
+ tion programmer to set a software scrolling region in a
+ window. <I>top</I> and <I>bot</I> 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 <B>scrollok</B> 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 <B>idlok</B> 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 <B>scrollok</B> 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, (<I>bf</I> is <B>FALSE</B>), the cursor is left
+ on the bottom line. If enabled, (<I>bf</I> is <B>TRUE</B>), the window
+ is scrolled up one line (Note that in order to get the
+ physical scrolling effect on the terminal, it is also nec-
+ essary to call <B>idlok</B>).
+
+ The <B>nl</B> and <B>nonl</B> 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 <B>addch('\n')</B>
+ does the equivalent of return and line feed on the virtual
+ screen). Initially, these translations do occur. If you
+ disable them using <B>nonl</B>, <B>curses</B> will be able to make bet-
+ ter use of the line-feed capability, resulting in faster
+ cursor motion. Also, <B>curses</B> will then be able to detect
+ the return key.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The functions <B>setscrreg</B> and <B>wsetscrreg</B> return <B>OK</B> upon suc-
+ cess and <B>ERR</B> upon failure. All other routines that return
+ an integer always return <B>OK</B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These functions are described in the XSI Curses standard,
+ Issue 4.
+
+ The XSI Curses standard is ambiguous on the question of
+ whether <B>raw</B>() should disable the CRLF translations con-
+ trolled by <B>nl</B>() and <B>nonl</B>(). 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 does not mess with.
+
+ Some historic curses implementations had, as an undocu-
+ mented feature, the ability to do the equivalent of
+ <B>clearok(...,</B> <B>1)</B> by saying <B>touchwin(stdscr)</B> or <B>clear(std-</B>
+ <B>scr)</B>. This will not work under ncurses.
+
+ Earlier System V curses implementations specified that
+ with <B>scrollok</B> enabled, any window modification triggering
+ a scroll also forced a physical refresh. XSI Curses does
+ not require this, and <B>ncurses</B> avoids doing it in order to
+ perform better vertical-motion optimization at <B>wrefresh</B>
+ time.
+
+ The XSI Curses standard does not mention that the cursor
+ should be made invisible as a side-effect of <B>leaveok</B>.
+ SVr4 curses documentation does this, but the code does
+ not. Use <B>curs_set</B> to make the cursor invisible.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>clearok</B>, <B>leaveok</B>, <B>scrollok</B>, <B>idcok</B>, <B>nl</B>, <B>nonl</B> and
+ <B>setscrreg</B> may be macros.
+
+ The <B>immedok</B> routine is useful for windows that are used as
+ terminal emulators.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>, <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>,
+ <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>overlay</B>, <B>overwrite</B>, <B>copywin</B> - overlay and manipulate over-
+ lapped <B>curses</B> windows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>overlay(const</B> <B>WINDOW</B> <B>*srcwin,</B> <B>WINDOW</B> <B>*dstwin);</B>
+ <B>int</B> <B>overwrite(const</B> <B>WINDOW</B> <B>*srcwin,</B> <B>WINDOW</B> <B>*dstwin);</B>
+ <B>int</B> <B>copywin(WINDOW</B> <B>*srcwin,</B> <B>WINDOW</B> <B>*dstwin,</B> <B>int</B> <B>sminrow,</B>
+ <B>int</B> <B>smincol,</B> <B>int</B> <B>dminrow,</B> <B>int</B> <B>dmincol,</B> <B>int</B> <B>dmaxrow,</B>
+ <B>int</B> <B>dmaxcol,</B> <B>int</B> <B>overlay);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>overlay</B> and <B>overwrite</B> routines overlay <I>srcwin</I> on top
+ of <I>dstwin</I>. <I>scrwin</I> and <I>dstwin</I> are not required to be the
+ same size; only text where the two windows overlap is
+ copied. The difference is that <B>overlay</B> is non-destructive
+ (blanks are not copied) whereas <B>overwrite</B> is destructive.
+
+ The <B>copywin</B> routine provides a finer granularity of con-
+ trol over the <B>overlay</B> and <B>overwrite</B> routines. Like in the
+ <B>prefresh</B> routine, a rectangle is specified in the destina-
+ tion window, (<I>dminrow</I>, <I>dmincol</I>) and (<I>dmaxrow</I>, <I>dmaxcol</I>),
+ and the upper-left-corner coordinates of the source win-
+ dow, (<I>sminrow</I>, <I>smincol</I>). If the argument <I>overlay</I> is <B>true</B>,
+ then copying is non-destructive, as in <B>overlay</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return an integer return <B>ERR</B> upon failure,
+ and <B>OK</B> (SVr4 only specifies "an integer value other than
+ <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>overlay</B> and <B>overwrite</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</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 multi-byte
+ renditions (not yet supported in this implementation).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>newpad</B>, <B>subpad</B>, <B>prefresh</B>, <B>pnoutrefresh</B>, <B>pechochar</B> - create
+ and display <B>curses</B> pads
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>WINDOW</B> <B>*newpad(int</B> <B>nlines,</B> <B>int</B> <B>ncols);</B>
+ <B>WINDOW</B> <B>*subpad(WINDOW</B> <B>*orig,</B> <B>int</B> <B>nlines,</B> <B>int</B> <B>ncols,</B>
+ <B>int</B> <B>begin_y,</B> <B>int</B> <B>begin_x);</B>
+ <B>int</B> <B>prefresh(WINDOW</B> <B>*pad,</B> <B>int</B> <B>pminrow,</B> <B>int</B> <B>pmincol,</B>
+ <B>int</B> <B>sminrow,</B> <B>int</B> <B>smincol,</B> <B>int</B> <B>smaxrow,</B> <B>int</B> <B>smaxcol);</B>
+ <B>int</B> <B>pnoutrefresh(WINDOW</B> <B>*pad,</B> <B>int</B> <B>pminrow,</B> <B>int</B> <B>pmincol,</B>
+ <B>int</B> <B>sminrow,</B> <B>int</B> <B>smincol,</B> <B>int</B> <B>smaxrow,</B> <B>int</B> <B>smaxcol);</B>
+ <B>int</B> <B>pechochar(WINDOW</B> <B>*pad,</B> <B>chtype</B> <B>ch);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>newpad</B> routine creates and returns a pointer to a new
+ pad data structure with the given number of lines, <I>nlines</I>,
+ and columns, <I>ncols</I>. 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.
+ Automatic refreshes of pads (<I>e</I>.<I>g</I>., from scrolling or echo-
+ ing of input) do not occur. It is not legal to call <B>wre-</B>
+ <B>fresh</B> with a <I>pad</I> as an argument; the routines <B>prefresh</B> or
+ <B>pnoutrefresh</B> 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 <B>subpad</B> routine creates and returns a pointer to a sub-
+ window within a pad with the given number of lines,
+ <I>nlines</I>, and columns, <I>ncols</I>. Unlike <B>subwin</B>, which uses
+ screen coordinates, the window is at position (<I>begin</I>_<I>x</I><B>,</B>
+ <I>begin</I>_<I>y</I>) on the pad. The window is made in the middle of
+ the window <I>orig</I>, so that changes made to one window affect
+ both windows. During the use of this routine, it will
+ often be necessary to call <B>touchwin</B> or <B>touchline</B> on <I>orig</I>
+ before calling <B>prefresh</B>.
+
+ The <B>prefresh</B> and <B>pnoutrefresh</B> routines are analogous to
+ <B>wrefresh</B> and <B>wnoutrefresh</B> 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.
+ <I>pminrow</I> and <I>pmincol</I> specify the upper left-hand corner of
+ the rectangle to be displayed in the pad. <I>sminrow</I>, <I>smin-</I>
+ <I>col</I>, <I>smaxrow</I>, and <I>smaxcol</I> specify the edges of the rectan-
+ gle to be displayed on the screen. The lower right-hand
+ corner of the rectangle to be displayed in the pad is cal-
+ culated 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 <I>pminrow</I>, <I>pmincol</I>, <I>sminrow</I>, or <I>smincol</I> are
+ treated as if they were zero.
+
+ The <B>pechochar</B> routine is functionally equivalent to a call
+ to <B>addch</B> followed by a call to <B>refresh</B>, a call to <B>waddch</B>
+ followed by a call to <B>wrefresh</B>, or a call to <B>waddch</B> fol-
+ lowed by a call to <B>prefresh.</B> 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
+ instead of their equivalents. In the case of <B>pechochar</B>,
+ the last location of the pad on the screen is reused for
+ the arguments to <B>prefresh</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return an integer return <B>ERR</B> upon failure
+ and <B>OK</B> (SVr4 only specifies "an integer value other than
+ <B>ERR</B>") upon successful completion.
+
+ Routines that return pointers return <B>NULL</B> on error, and
+ set <B>errno</B> to <B>ENOMEM</B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>pechochar</B> may be a macro.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4 describes these func-
+ tions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>, <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>,
+ <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>mcprint</STRONG> - ship binary data to printer
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>mcprint</B> - ship binary data to printer
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+ <B>#include</B> <B><curses.h></B>
- <STRONG>int</STRONG> <STRONG>mcprint(char</STRONG> <STRONG>*data,</STRONG> <STRONG>int</STRONG> <STRONG>len);</STRONG>
+ <B>int</B> <B>mcprint(char</B> <B>*data,</B> <B>int</B> <B>len);</B>
</PRE>
<H2>DESCRIPTION</H2><PRE>
- This function uses the <STRONG>mc5p</STRONG> or <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities,
+ This function uses the <B>mc5p</B> or <B>mc4</B> and <B>mc5</B> 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
+ Note that the <B>mcprint</B> 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
</PRE>
<H2>RETURN VALUE</H2><PRE>
- The <STRONG>mcprint</STRONG> function returns <STRONG>ERR</STRONG> if the write operation
+ The <B>mcprint</B> function returns <B>ERR</B> if the write operation
aborted for some reason. In this case, errno will contain
- either an error associated with <STRONG>write(2)</STRONG> or one of the
+ either an error associated with <B>write(2)</B> or one of the
following:
ENODEV
Couldn't allocate sufficient memory to buffer the
printer write.
- When <STRONG>mcprint</STRONG> succeeds, it returns the number of char-
+ When <B>mcprint</B> succeeds, it returns the number of char-
acters actually sent to the printer.
</PRE>
<H2>PORTABILITY</H2><PRE>
- The <STRONG>mcprint</STRONG> call was designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3X)</A></STRONG>, and is not
+ The <B>mcprint</B> call was designed for <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>, and is not
found in SVr4 curses, 4.4BSD curses, or any other previous
version of curses.
</PRE>
<H2>BUGS</H2><PRE>
- Padding in the <STRONG>mc5p</STRONG>, <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities will not be
+ Padding in the <B>mc5p</B>, <B>mc4</B> and <B>mc5</B> capabilities will not be
interpreted.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>printw</B>, <B>wprintw</B>, <B>mvprintw</B>, <B>mvwprintw</B>, <B>vwprintw</B>, <B>vw_printw</B>
+ - print formatted output in <B>curses</B> windows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>printw(char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+ <B>int</B> <B>wprintw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+ <B>int</B> <B>mvprintw(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+ <B>int</B> <B>mvwprintw(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B>
+ <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg]</B> ...);
+
+ <B>#include</B> <B><varargs.h></B>
+ <B>int</B> <B>vwprintw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt,</B> <B>varglist);</B>
+ <B>int</B> <B>vw_printw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt,</B> <B>varglist);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>printw</B>, <B>wprintw</B>, <B>mvprintw</B> and <B>mvwprintw</B> routines are
+ analogous to <B>printf</B> [see <B><A HREF="printf.3S.html">printf(3S)</A></B>]. In effect, the
+ string that would be output by <B>printf</B> is output instead as
+ though <B>waddstr</B> were used on the given window.
+
+ The <B>vwprintw</B> routine is analogous to <B>vprintf</B> [see
+ <B><A HREF="printf.3S.html">printf(3S)</A></B>] and performs a <B>wprintw</B> using a variable argu-
+ ment list. The third argument is a <B>va_list</B>, a pointer to
+ a list of arguments, as defined in <B><varargs.h></B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return an integer return <B>ERR</B> upon failure
+ and <B>OK</B> (SVr4 only specifies "an integer value other than
+ <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4 describes these func-
+ tions. The function <B>vwprintw</B> is marked TO BE WITHDRAWN,
+ and is to be replaced by a function <B>vw_printw</B> using the
+ <B><stdarg.h></B> interface.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="printf.3S.html">printf(3S)</A></B>, <B>vprintf(3S)</B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>refresh</B>, <B>wrefresh</B>, <B>wnoutrefresh</B>, <B>doupdate</B>, <B>redrawwin</B>, <B>wre-</B>
+ <B>drawln</B> - refresh <B>curses</B> windows and lines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>refresh(void);</B>
+ <B>int</B> <B>wrefresh(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>wnoutrefresh(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>doupdate(void);</B>
+ <B>int</B> <B>redrawwin(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>wredrawln(WINDOW</B> <B>*win,</B> <B>int</B> <B>beg_line,</B> <B>int</B> <B>num_lines);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>refresh</B> and <B>wrefresh</B> routines (or <B>wnoutrefresh</B> and
+ <B>doupdate</B>) must be called to get actual output to the ter-
+ minal, as other routines merely manipulate data struc-
+ tures. The routine <B>wrefresh</B> copies the named window to
+ the physical terminal screen, taking into account what is
+ already there in order to do optimizations. The <B>refresh</B>
+ routine is the same, using <B>stdscr</B> as the default window.
+ Unless <B>leaveok</B> has been enabled, the physical cursor of
+ the terminal is left at the location of the cursor for
+ that window.
+
+ The <B>wnoutrefresh</B> and <B>doupdate</B> routines allow multiple
+ updates with more efficiency than <B>wrefresh</B> alone. In
+ addition to all the window structures, <B>curses</B> keeps two
+ data structures representing the terminal screen: a physi-
+ cal screen, describing what is actually on the screen, and
+ a virtual screen, describing what the programmer wants to
+ have on the screen.
+
+ The routine <B>wrefresh</B> works by first calling <B>wnoutrefresh</B>,
+ which copies the named window to the virtual screen, and
+ then calling <B>doupdate</B>, 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 <B>wrefresh</B> results in alternating calls
+ to <B>wnoutrefresh</B> and <B>doupdate</B>, causing several bursts of
+ output to the screen. By first calling <B>wnoutrefresh</B> for
+ each window, it is then possible to call <B>doupdate</B> once,
+ resulting in only one burst of output, with fewer total
+ characters transmitted and less CPU time used. If the <I>win</I>
+ argument to <B>wrefresh</B> is the global variable <B>curscr</B>, 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
+ <I>touched</I> (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 <B>PORTABILITY</B> below for a warning about
+ exploiting this behavior.)
+
+ The <B>wredrawln</B> routine indicates to <B>curses</B> 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 <B>redrawwin</B>()
+ touches the entire window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return an integer return <B>ERR</B> upon failure,
+ and <B>OK</B> (SVr4 only specifies "an integer value other than
+ <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>refresh</B> and <B>redrawwin</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4 describes these func-
+ tions.
+
+ Whether <B>wnoutrefresh()</B> 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 <B>touchwin()</B> before the <B>wnoutrefresh()</B> call to
+ guarantee an entire-contents copy anywhere.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>scanw</B>, <B>wscanw</B>, <B>mvscanw</B>, <B>mvwscanw</B>, <B>vwscanw</B>, <B>vw_scanw</B> - con-
+ vert formatted input from a <B>curses</B> widow
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>scanw(char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+ <B>int</B> <B>wscanw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+ <B>int</B> <B>mvscanw(int</B> <B>y,</B> <B>int</B> <B>x,</B> <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg</B>] <B>...);</B>
+ <B>int</B> <B>mvwscanw(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x,</B>
+ <B>char</B> <B>*fmt</B> [<B>,</B> <B>arg]</B> <B>...);</B>
+ <B>int</B> <B>vw_scanw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt,</B> <B>va_list</B> <B>varglist);</B>
+ <B>int</B> <B>vwscanw(WINDOW</B> <B>*win,</B> <B>char</B> <B>*fmt,</B> <B>va_list</B> <B>varglist);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>scanw</B>, <B>wscanw</B> and <B>mvscanw</B> routines are analogous to
+ <B>scanf</B> [see <B><A HREF="scanf.3S.html">scanf(3S)</A></B>]. The effect of these routines is as
+ though <B>wgetstr</B> were called on the window, and the result-
+ ing line used as input for <B><A HREF="sscanf.3.html">sscanf(3)</A></B>. Fields which do not
+ map to a variable in the <I>fmt</I> field are lost.
+
+ The <B>vwscanw</B> routine is similar to <B>vwprintw</B> in that it per-
+ forms a <B>wscanw</B> using a variable argument list. The third
+ argument is a <I>va</I>_<I>list</I>, a pointer to a list of arguments,
+ as defined in <B><varargs.h></B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ <B>vwscanw</B> returns <B>ERR</B> on failure and an integer equal to the
+ number of fields scanned on success.
+
+ Applications may use the return value from the <B>scanw</B>,
+ <B>wscanw</B>, <B>mvscanw</B> and <B>mvwscanw</B> routines to determine the
+ number of fields which were mapped in the call.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4 describes these func-
+ tions. The function <B>vwscanw</B> is marked TO BE WITHDRAWN,
+ and is to be replaced by a function <B>vw_scanw</B> using the
+ <B><stdarg.h></B> interface.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>, <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>, <B><A HREF="scanf.3S.html">scanf(3S)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>scr_dump</B>, <B>scr_restore</B>, <B>scr_init</B>, <B>scr_set</B> - read (write) a
+ <B>curses</B> screen from (to) a file
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>scr_dump(const</B> <B>char</B> <B>*filename);</B>
+ <B>int</B> <B>scr_restore(const</B> <B>char</B> <B>*filename);</B>
+ <B>int</B> <B>scr_init(const</B> <B>char</B> <B>*filename);</B>
+ <B>int</B> <B>scr_set(const</B> <B>char</B> <B>*filename);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>scr_dump</B> routine dumps the current contents of the
+ virtual screen to the file <I>filename</I>.
+
+ The <B>scr_restore</B> routine sets the virtual screen to the
+ contents of <I>filename</I>, which must have been written using
+ <B>scr_dump</B>. The next call to <B>doupdate</B> restores the screen
+ to the way it looked in the dump file.
+
+ The <B>scr_init</B> routine reads in the contents of <I>filename</I> and
+ uses them to initialize the <B>curses</B> data structures about
+ what the terminal currently has on its screen. If the
+ data is determined to be valid, <B>curses</B> bases its next
+ update of the screen on this information rather than
+ clearing the screen and starting from scratch. <B>scr_init</B>
+ is used after <B>initscr</B> or a <B>system</B> [see <B>system</B>(BA_LIB)]
+ call to share the screen with another process which has
+ done a <B>scr_dump</B> after its <B>endwin</B> call. The data is
+ declared invalid if the terminfo capabilities <B>rmcup</B> and
+ <B>nrrmc</B> exist; also if the terminal has been written to
+ since the preceding <B>scr_dump</B> call.
+
+ The <B>scr_set</B> routine is a combination of <B>scr_restore</B> and
+ <B>scr_init</B>. It tells the program that the information in
+ <I>filename</I> 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 <B>getwin</B>
+ and <B>putwin</B> routines [see <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>].
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and <B>OK</B>
+ upon success.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>scr_init</B>, <B>scr_set</B>, and <B>scr_restore</B> may be
+ macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4, describes these func-
+ tions (adding the const qualifiers).
+ The SVr4 docs merely say under <B>scr_init</B> that the dump data
+ is also considered invalid "if the time-stamp of the tty
+ is old" but don't define "old".
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>,
+ <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>, <B><A HREF="system.3S.html">system(3S)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>scroll</B>, <B>scrl</B>, <B>wscrl</B> - scroll a <B>curses</B> window
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>scroll(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>scrl(int</B> <B>n);</B>
+ <B>int</B> <B>wscrl(WINDOW</B> <B>*win,</B> <B>int</B> <B>n);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>scroll</B> 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 <I>n</I>, the <B>scrl</B> and <B>wscrl</B> routines scroll the
+ window up <I>n</I> lines (line <I>i</I>+<I>n</I> becomes <I>i</I>); otherwise scroll
+ the window down <I>n</I> 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
+ <B>scrollok</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These routines return <B>ERR</B> upon failure, and <B>OK</B> (SVr4 only
+ specifies "an integer value other than <B>ERR</B>") upon success-
+ ful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>scrl</B> and <B>scroll</B> 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, in order 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 gen-
+ erated by the scroll function is zeroed. Under this
+ implementation it is.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4 describes these func-
+ tions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>slk_init</B>, <B>slk_set</B>, <B>slk_refresh</B>, <B>slk_noutrefresh</B>,
+ <B>slk_label</B>, <B>slk_clear</B>, <B>slk_restore</B>, <B>slk_touch</B>, <B>slk_attron</B>,
+ <B>slk_attrset</B>, <B>slk_attroff</B>, <B>slk_attr_on</B>, <B>slk_attr_set</B>,
+ <B>slk_attr_off</B>, <B>slk_attr</B> <B>slk_color</B> - <B>curses</B> soft label rou-
+ tines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>slk_init(int</B> <B>fmt);</B>
+ <B>int</B> <B>slk_set(int</B> <B>labnum,</B> <B>const</B> <B>char</B> <B>*label,</B> <B>int</B> <B>fmt);</B>
+ <B>int</B> <B>slk_refresh(void);</B>
+ <B>int</B> <B>slk_noutrefresh(void);</B>
+ <B>char</B> <B>*slk_label(int</B> <B>labnum);</B>
+ <B>int</B> <B>slk_clear(void);</B>
+ <B>int</B> <B>slk_restore(void);</B>
+ <B>int</B> <B>slk_touch(void);</B>
+ <B>int</B> <B>slk_attron(const</B> <B>chtype</B> <B>attrs);</B>
+ <B>int</B> <B>slk_attroff(const</B> <B>chtype</B> <B>attrs);</B>
+ <B>int</B> <B>slk_attrset(const</B> <B>chtype</B> <B>attrs);</B>
+ <B>int</B> <B>slk_attr_on(attr_t</B> <B>attrs,</B> <B>void*</B> <B>opts);</B>
+ <B>int</B> <B>slk_attr_off(const</B> <B>attr_t</B> <B>attrs,</B> <B>void</B> <B>*</B> <B>opts);</B>
+ <B>int</B> <B>slk_attr_set(const</B> <B>attr_t</B> <B>attrs,</B>
+ <B>short</B> <B>color_pair_number,</B> <B>void*</B> <B>opts);</B>
+ <B>attr_t</B> <B>slk_attr(void);</B>
+ <B>int</B> <B>slk_color(short</B> <B>color_pair_number);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</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 labels, <B>curses</B> takes over the bottom
+ line of <B>stdscr</B>, reducing the size of <B>stdscr</B> and the vari-
+ able <B>LINES</B>. <B>curses</B> 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 most common
+ for todays PC like enduser devices. Please note that
+ ncurses simulates this mode by taking over up to two lines
+ at the bottom of the screen, it doesn't try to use any
+ hardware support for this mode.
+
+ The <B>slk_init</B> routine must be called before <B>initscr</B> or
+ <B>newterm</B> is called. If <B>initscr</B> eventually uses a line from
+ <B>stdscr</B> to emulate the soft labels, then <I>fmt</I> determines how
+ the labels are arranged on the screen. Setting <I>fmt</I> to <B>0</B>
+ indicates a 3-2-3 arrangement of the labels, <B>1</B> indicates a
+ 4-4 arrangement and <B>2</B> indicates the PC like 4-4-4 mode. If
+ <B>fmt</B> is set to <B>3</B>, it 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 <B>slk_set</B> routine requires <I>labnum</I> to be a label number,
+ from <B>1</B> to <B>8</B> (resp. <B>12</B>); <I>label</I> must be the string to be put
+ on the label, up to eight (resp. five) characters in
+ length. A null string or a null pointer sets up a blank
+ label. <I>fmt</I> is either <B>0</B>, <B>1</B>, or <B>2</B>, indicating whether the
+ label is to be left-justified, centered, or right-justi-
+ fied, respectively, within the label.
+
+ The <B>slk_refresh</B> and <B>slk_noutrefresh</B> routines correspond to
+ the <B>wrefresh</B> and <B>wnoutrefresh</B> routines.
+
+ The <B>slk_label</B> routine returns the current label for label
+ number <I>labnum</I>, with leading and trailing blanks stripped.
+
+ The <B>slk_clear</B> routine clears the soft labels from the
+ screen.
+
+ The <B>slk_restore</B> routine, restores the soft labels to the
+ screen after a <B>slk_clear</B> has been performed.
+
+ The <B>slk_touch</B> routine forces all the soft labels to be
+ output the next time a <B>slk_noutrefresh</B> is performed.
+
+ The <B>slk_attron</B>, <B>slk_attrset</B>, <B>slk_attroff</B> and <B>slk_attr</B> rou-
+ tines correspond to <B>attron</B>, <B>attrset</B>, <B>attroff</B> and <B>attr_get</B>.
+ 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 <B>slk_color</B> routine corresponds to <B>color_set</B>. It has an
+ effect only if soft labels are simulated on the bottom
+ line of the screen.
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These routines return <B>ERR</B> upon failure and OK (SVr4 speci-
+ fies only "an integer value other than <B>ERR</B>") upon success-
+ ful completion. <B>slk_attr</B> returns the attribute used for
+ the soft keys.
+
+ <B>slk_label</B> returns <B>NULL</B> on error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Most applications would use <B>slk_noutrefresh</B> because a <B>wre-</B>
+ <B>fresh</B> is likely to follow soon.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4, describes these func-
+ tions. It changes the argument type of the attribute-
+ manipulation functions <B>slk_attron</B>, <B>slk_attroff</B>,
+ <B>slk_attrset</B> to be <B>attr_t</B>, and adds <B>const</B> qualifiers. The
+ format codes <B>2</B> and <B>3</B> for <B>slk_init()</B> and the function
+ <B>slk_attr</B> are specific to ncurses.
+
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>,
+ <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>baudrate</B>, <B>erasechar</B>, <B>has_ic</B>, <B>has_il</B>, <B>killchar</B>, <B>longname</B>,
+ <B>termattrs</B>, <B>termname</B> - <B>curses</B> environment query routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>baudrate(void);</B>
+ <B>char</B> <B>erasechar(void);</B>
+ <B>bool</B> <B>has_ic(void);</B>
+ <B>bool</B> <B>has_il(void);</B>
+ <B>char</B> <B>killchar(void);</B>
+ <B>char</B> <B>*longname(void);</B>
+ <B>attr_t</B> <B>termattrs(void);</B>
+ <B>char</B> <B>*termname(void);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>baudrate</B> routine returns the output speed of the ter-
+ minal. The number returned is in bits per second, for
+ example <B>9600</B>, and is an integer.
+
+ The <B>erasechar</B> routine returns the user's current erase
+ character.
+
+ The <B>has_ic</B> routine is true if the terminal has insert- and
+ delete- character capabilities.
+
+ The <B>has_il</B> 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
+ <B>scrollok</B>.
+
+ The <B>killchar</B> routine returns the user's current line kill
+ character.
+
+ The <B>longname</B> 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 <B>initscr</B> or
+ <B>newterm</B>. The area is overwritten by each call to <B>newterm</B>
+ and is not restored by <B>set_term</B>, so the value should be
+ saved between calls to <B>newterm</B> if <B>longname</B> is going to be
+ used with multiple terminals.
+
+ If a given terminal doesn't support a video attribute that
+ an application program is trying to use, <B>curses</B> may sub-
+ stitute a different video attribute for it. The <B>termattrs</B>
+ function returns a logical <B>OR</B> of all video attributes sup-
+ ported by the terminal. This information is useful when a
+ <B>curses</B> program needs complete control over the appearance
+ of the screen.
+
+ The <B>termname</B> routine returns the value of the
+ environmental variable <B>TERM</B> (truncated to 14 characters).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ <B>longname</B> and <B>termname</B> return <B>NULL</B> on error.
+
+ Routines that return an integer return <B>ERR</B> upon failure
+ and <B>OK</B> (SVr4 only specifies "an integer value other than
+ <B>ERR</B>") upon successful completion.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>termattrs</B> may be a macro.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4 describes these func-
+ tions. It changes the return type of <B>termattrs</B> to the new
+ type <B>attr_t</B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>tgetent</B>, <B>tgetflag</B>, <B>tgetnum</B>, <B>tgetstr</B>, <B>tgoto</B>, <B>tputs</B> - direct
+ <B>curses</B> interface to the terminfo capability database
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+ <B>#include</B> <B><term.h></B>
+ <B>int</B> <B>tgetent(const</B> <B>char</B> <B>*bp,</B> <B>char</B> <B>*name);</B>
+ <B>int</B> <B>tgetflag(const</B> <B>char</B> <B>*id);</B>
+ <B>int</B> <B>tgetnum(const</B> <B>char</B> <B>*id);</B>
+ <B>char</B> <B>*tgetstr(const</B> <B>char</B> <B>*id,</B> <B>char</B> <B>**area);</B>
+ <B>char</B> <B>*tgoto(const</B> <B>char</B> <B>*cap,</B> <B>int</B> <B>col,</B> <B>int</B> <B>row);</B>
+ <B>int</B> <B>tputs(const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>affcnt,</B> <B>int</B> <B>(*putc)(int));</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These routines are included as a conversion aid for pro-
+ grams that use the <I>termcap</I> library. Their parameters are
+ the same and the routines are emulated using the <I>terminfo</I>
+ database. Thus, they can only be used to query the capa-
+ bilities of entries for which a terminfo entry has been
+ compiled.
+
+ The <B>tgetent</B> routine loads the entry for <I>name</I>. 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 <I>bp</I>.
+
+ The <B>tgetflag</B> routine gets the boolean entry for <I>id</I>, or
+ zero if it is not available.
+
+ The <B>tgetnum</B> routine gets the numeric entry for <I>id</I>, or -1
+ if it is not available.
+
+ The <B>tgetstr</B> routine returns the string entry for <I>id</I>, or
+ zero if it is not available. Use <B>tputs</B> to output the
+ returned string. The return value will also be copied to
+ the buffer pointed to by <I>area</I>, and the <I>area</I> value will be
+ updated to point past the null ending this value.
+
+ The <B>tgoto</B> routine instantiates the parameters into the
+ given capability. The output from this routine is to be
+ passed to <B>tputs</B>.
+
+ The <B>tputs</B> routine is described on the <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ manual page. It can retrieve capabilities by either term-
+ cap or terminfo name.
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Except where explicitly noted, routines that return an
+ integer return <B>ERR</B> upon failure and <B>OK</B> (SVr4 only speci-
+ fies "an integer value other than <B>ERR</B>") upon successful
+ completion.
+
+ Routines that return pointers return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>BUGS</H2><PRE>
+ If you call <B>tgetstr</B> to fetch <B>ca</B> 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 won't cause problems if all you do with it
+ is call <B>tgoto</B> or <B>tparm</B>, which both expand terminfo-style.
+
+ Because terminfo conventions for representing padding in
+ string capabilities differ from termcap's, <B>tputs("50");</B>
+ will put out a literal "50" rather than busy-waiting for
+ 50 milliseconds. Cope with it.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ 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 <B>tgetent</B> correctly, though
+ all three were in fact returned ever since SVr1.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>, <B><A HREF="putc.3S.html">putc(3S)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>setupterm</B>, <B>setterm</B>, <B>set_curterm</B>, <B>del_curterm</B>, <B>restartterm</B>,
+ <B>tparm</B>, <B>tputs</B>, <B>putp</B>, <B>vidputs</B>, <B>vidattr</B>, <B>mvcur</B>, <B>tigetflag</B>,
+ <B>tigetnum</B>, <B>tigetstr</B> - <B>curses</B> interfaces to terminfo
+ database
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+ <B>#include</B> <B><term.h></B>
+
+ <B>int</B> <B>setupterm(const</B> <B>char</B> <B>*term,</B> <B>int</B> <B>fildes,</B> <B>int</B> <B>*errret);</B>
+ <B>int</B> <B>setterm(const</B> <B>char</B> <B>*term);</B>
+ <B>TERMINAL</B> <B>*set_curterm(TERMINAL</B> <B>*nterm);</B>
+ <B>int</B> <B>del_curterm(TERMINAL</B> <B>*oterm);</B>
+ <B>int</B> <B>restartterm(const</B> <B>char</B> <B>*term,</B> <B>int</B> <B>fildes,</B> <B>int</B>
+ <B>*errret);</B>
+ <B>char</B> <B>*tparm(const</B> <B>char</B> <B>*str,</B> <B>...);</B>
+ <B>int</B> <B>tputs(const</B> <B>char</B> <B>*str,</B> <B>int</B> <B>affcnt,</B> <B>int</B> <B>(*putc)(int));</B>
+ <B>int</B> <B>putp(const</B> <B>char</B> <B>*str);</B>
+ <B>int</B> <B>vidputs(chtype</B> <B>attrs,</B> <B>int</B> <B>(*putc)(char));</B>
+ <B>int</B> <B>vidattr(chtype</B> <B>attrs);</B>
+ <B>int</B> <B>mvcur(int</B> <B>oldrow,</B> <B>int</B> <B>oldcol,</B> <B>int</B> <B>newrow,</B> <B>int</B> <B>newcol);</B>
+ <B>int</B> <B>tigetflag(const</B> <B>char</B> <B>*capname);</B>
+ <B>int</B> <B>tigetnum(const</B> <B>char</B> <B>*capname);</B>
+ <B>char</B> <B>*tigetstr(const</B> <B>char</B> <B>*capname);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ These low-level routines must be called by programs that
+ have to deal directly with the <B>terminfo</B> database to handle
+ certain terminal capabilities, such as programming func-
+ tion keys. For all other functionality, <B>curses</B> routines
+ are more suitable and their use is recommended.
+
+ Initially, <B>setupterm</B> should be called. Note that
+ <B>setupterm</B> is automatically called by <B>initscr</B> and <B>newterm</B>.
+ This defines the set of terminal-dependent variables
+ [listed in <B><A HREF="terminfo.5.html">terminfo(5)</A></B>]. The <B>terminfo</B> variables <B>lines</B> and
+ <B>columns</B> are initialized by <B>setupterm</B> as follows: If
+ <B>use_env(FALSE)</B> has been called, values for <B>lines</B> and
+ <B>columns</B> specified in <B>terminfo</B> are used. Otherwise, if the
+ environment variables <B>LINES</B> and <B>COLUMNS</B> exist, their val-
+ ues are used. If these environment variables do not exist
+ and the program is running in a window, the current window
+ size is used. Otherwise, if the environment variables do
+ not exist, the values for <B>lines</B> and <B>columns</B> specified in
+ the <B>terminfo</B> database are used.
+
+ The header files <B>curses.h</B> and <B>term.h</B> should be included
+ (in this order) to get the definitions for these strings,
+ numbers, and flags. Parameterized strings should be
+ passed through <B>tparm</B> to instantiate them. All <B>terminfo</B>
+ strings [including the output of <B>tparm</B>] should be printed
+ with <B>tputs</B> or <B>putp</B>. Call the <B>reset_shell_mode</B> to restore
+ the tty modes before exiting [see <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>].
+ Programs which use cursor addressing should output
+ <B>enter_ca_mode</B> upon startup and should output <B>exit_ca_mode</B>
+ before exiting. Programs desiring shell escapes should
+ call
+
+ <B>reset_shell_mode</B> and output <B>exit_ca_mode</B> before the shell
+ is called and should output <B>enter_ca_mode</B> and call
+ <B>reset_prog_mode</B> after returning from the shell.
+
+ The <B>setupterm</B> routine reads in the <B>terminfo</B> database, ini-
+ tializing the <B>terminfo</B> structures, but does not set up the
+ output virtualization structures used by <B>curses</B>. The ter-
+ minal type is the character string <I>term</I>; if <I>term</I> is null,
+ the environment variable <B>TERM</B> is used. All output is to
+ file descriptor <B>fildes</B> which is initialized for output.
+ If <I>errret</I> is not null, then <B>setupterm</B> returns <B>OK</B> or <B>ERR</B>
+ and stores a status value in the integer pointed to by
+ <I>errret</I>. A return value of <B>OK</B> combined with status of <B>1</B> in
+ <I>errret</I> is normal. If <B>ERR</B> is returned, examine <I>errret</I>:
+
+ <B>1</B> means that the terminal is hardcopy, cannot be
+ used for curses applications.
+
+ <B>0</B> means that the terminal could not be found, or
+ that it is a generic type, having too little
+ information for curses applications to run.
+
+ <B>-1</B> means that the <B>terminfo</B> database could not be
+ found.
+
+ If <I>errret</I> is null, <B>setupterm</B> prints an error message upon
+ finding an error and exits. Thus, the simplest call is:
+
+ <B>setupterm((char</B> <B>*)0,</B> <B>1,</B> <B>(int</B> <B>*)0);</B>,
+
+ which uses all the defaults and sends the output to <B>std-</B>
+ <B>out</B>.
+
+ The <B>setterm</B> routine is being replaced by <B>setupterm</B>. The
+ call:
+
+ <B>setupterm(</B><I>term</I><B>,</B> <B>1,</B> <B>(int</B> <B>*)0)</B>
+
+ provides the same functionality as <B>setterm(</B><I>term</I><B>)</B>. The
+ <B>setterm</B> routine is included here for BSD compatibility,
+ and is not recommended for new programs.
+
+ The <B>set_curterm</B> routine sets the variable <B>cur_term</B> to
+ <I>nterm</I>, and makes all of the <B>terminfo</B> boolean, numeric, and
+ string variables use the values from <I>nterm</I>. It returns
+ the old value of <B>cur_term</B>.
+
+ The <B>del_curterm</B> routine frees the space pointed to by
+ <I>oterm</I> and makes it available for further use. If <I>oterm</I> is
+ the same as <B>cur_term</B>, references to any of the <B>terminfo</B>
+ boolean, numeric, and string variables thereafter may
+ refer to invalid memory locations until another <B>setupterm</B>
+ has been called.
+
+ The <B>restartterm</B> routine is similar to <B>setupterm</B> and
+ <B>initscr</B>, 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,
+ does a setupterm, and then restores the bits.
+
+ The <B>tparm</B> routine instantiates the string <I>str</I> with parame-
+ ters <I>pi</I>. A pointer is returned to the result of <I>str</I> with
+ the parameters applied.
+
+ The <B>tputs</B> routine applies padding information to the
+ string <I>str</I> and outputs it. The <I>str</I> must be a terminfo
+ string variable or the return value from <B>tparm</B>, <B>tgetstr</B>,
+ or <B>tgoto</B>. <I>affcnt</I> is the number of lines affected, or 1 if
+ not applicable. <I>putc</I> is a <B>putchar</B>-like routine to which
+ the characters are passed, one at a time.
+
+ The <B>putp</B> routine calls <B>tputs(</B><I>str</I><B>,</B> <B>1,</B> <B>putchar)</B>. Note that
+ the output of <B>putp</B> always goes to <B>stdout</B>, not to the
+ <I>fildes</I> specified in <B>setupterm</B>.
+
+ The <B>vidputs</B> routine displays the string on the terminal in
+ the video attribute mode <I>attrs</I>, which is any combination
+ of the attributes listed in <B><A HREF="ncurses.3x.html">curses(3x)</A></B>. The characters
+ are passed to the <B>putchar</B>-like routine <I>putc</I>.
+
+ The <B>vidattr</B> routine is like the <B>vidputs</B> routine, except
+ that it outputs through <B>putchar</B>.
+
+ The <B>mvcur</B> routine provides low-level cursor motion. It
+ takes effect immediately (rather than at the next
+ refresh).
+
+ The <B>tigetflag</B>, <B>tigetnum</B> and <B>tigetstr</B> routines return the
+ value of the capability corresponding to the <B>terminfo</B> <I>cap-</I>
+ <I>name</I> passed to them, such as <B>xenl</B>.
+
+ The <B>tigetflag</B> routine returns the value <B>-1</B> if <I>capname</I> is
+ not a boolean capability, or <B>0</B> if it is canceled or absent
+ from the terminal description.
+
+ The <B>tigetnum</B> routine returns the value <B>-2</B> if <I>capname</I> is
+ not a numeric capability, or <B>-1</B> if it is canceled or
+ absent from the terminal description.
+
+ The <B>tigetstr</B> routine returns the value <B>(char</B> <B>*)-1</B> if
+ <I>capname</I> is not a string capability, or <B>0</B> if it is canceled
+ or absent from the terminal description.
+
+ The <I>capname</I> for each capability is given in the table col-
+ umn entitled <I>capname</I> code in the capabilities section of
+ <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+ <B>char</B> <B>*boolnames</B>, <B>*boolcodes</B>, <B>*boolfnames</B>
+
+ <B>char</B> <B>*numnames</B>, <B>*numcodes</B>, <B>*numfnames</B>
+
+ <B>char</B> <B>*strnames</B>, <B>*strcodes</B>, <B>*strfnames</B>
+
+ These null-terminated arrays contain the <I>capnames</I>, the
+ <B>termcap</B> codes, and the full C names, for each of the <B>ter-</B>
+ <B>minfo</B> variables.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return an integer return <B>ERR</B> upon failure
+ and <B>OK</B> (SVr4 only specifies "an integer value other than
+ <B>ERR</B>") upon successful completion, unless otherwise noted
+ in the preceding routine descriptions.
+
+ Routines that return pointers always return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The <B>setupterm</B> routine should be used in place of <B>setterm</B>.
+ It may be useful when you want to test for terminal capa-
+ bilities without committing to the allocation of storage
+ involved in <B>initscr</B>.
+
+ Note that <B>vidattr</B> and <B>vidputs</B> may be macros.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The function <B>setterm</B> is not described in the XSI Curses
+ standard and must be considered non-portable. All other
+ functions are as described in the XSI curses standard.
+
+ In System V Release 4, <B>set_curterm</B> has an <B>int</B> return type
+ and returns <B>OK</B> or <B>ERR</B>. We have chosen to implement the
+ XSI Curses semantics.
+
+ In System V Release 4, the third argument of <B>tputs</B> has the
+ type <B>int</B> <B>(*putc)(char)</B>.
+
+ The XSI Curses standard prototypes <B>tparm</B> with a fixed num-
+ ber of parameters, rather than a variable argument list.
+
+ XSI notes that after calling <B>mvcur</B>, the curses state may
+ not match the actual terminal state, and that an applica-
+ tion should touch and refresh the window before resuming
+ normal curses calls. Both ncurses and System V Release 4
+ curses implement <B>mvcur</B> using the SCREEN data allocated in
+ either <B>initscr</B> or <B>newterm</B>. So though it is documented as
+ a terminfo function, <B>mvcur</B> is really a curses function
+ which is not well specified.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>, <B>curs_term-</B>
+ <B><A HREF="cap.3x.html">cap(3x)</A></B>, <B><A HREF="putc.3S.html">putc(3S)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>touchwin</B>, <B>touchline</B>, <B>untouchwin</B>, <B>wtouchln</B>, <B>is_linetouched</B>,
+ <B>is_wintouched</B> - <B>curses</B> refresh control routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+ <B>int</B> <B>touchwin(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>touchline(WINDOW</B> <B>*win,</B> <B>int</B> <B>start,</B> <B>int</B> <B>count);</B>
+ <B>int</B> <B>untouchwin(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>wtouchln(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>n,</B> <B>int</B> <B>changed);</B>
+ <B>bool</B> <B>is_linetouched(WINDOW</B> <B>*win,</B> <B>int</B> <B>line);</B>
+ <B>bool</B> <B>is_wintouched(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>touchwin</B> and <B>touchline</B> 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 <B>touchline</B> only pretends that <I>count</I> lines have
+ been changed, beginning with line <I>start</I>.
+
+ The <B>untouchwin</B> routine marks all lines in the window as
+ unchanged since the last call to <B>wrefresh</B>.
+
+ The <B>wtouchln</B> routine makes <I>n</I> lines in the window, starting
+ at line <I>y</I>, look as if they have (<I>changed</I><B>=1</B>) or have not
+ (<I>changed</I><B>=0</B>) been changed since the last call to <B>wrefresh</B>.
+
+ The <B>is_linetouched</B> and <B>is_wintouched</B> routines return <B>TRUE</B>
+ if the specified line/window was modified since the last
+ call to <B>wrefresh</B>; otherwise they return <B>FALSE</B>. In addi-
+ tion, <B>is_linetouched</B> returns <B>ERR</B> if <I>line</I> is not valid for
+ the given window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ All routines return the integer <B>ERR</B> upon failure and an
+ integer value other than <B>ERR</B> upon successful completion,
+ unless otherwise noted in the preceding routine descrip-
+ tions.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ 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
+ <B>clearok(...,</B> <B>1)</B> by saying <B>touchwin(stdscr)</B> or <B>clear(std-</B>
+ <B>scr)</B>. This will not work under ncurses.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that all routines except <B>wtouchln</B> may be macros.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>_tracef</B>, <B>_tracedump</B>, <B>_traceattr</B>, <B>_traceattr2</B>,
+ <B>_nc_tracebits</B>, <B>_tracechar</B>, <B>_tracechtype</B>, <B>_tracechtype2</B>,
+ <B>_tracemouse</B>, <B>trace</B> - <B>curses</B> debugging routines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+ <B>void</B> <B>_tracef(const</B> <B>char</B> <B>*format,</B> <B>...);</B>
+ <B>void</B> <B>_tracedump(const</B> <B>char</B> <B>*label,</B> <B>WINDOW</B> <B>*win);</B>
+ <B>char</B> <B>*_traceattr(attr_t</B> <B>attr);</B>
+ <B>char</B> <B>*_traceattr2(int</B> <B>buffer,</B> <B>chtype</B> <B>ch);</B>
+ <B>char</B> <B>*_nc_tracebits(void);</B>
+ <B>char</B> <B>*_tracechar(const</B> <B>unsigned</B> <B>char</B> <B>ch);</B>
+ <B>char</B> <B>*_tracechtype(chtype</B> <B>ch);</B>
+ <B>char</B> <B>*_tracechtype2(int</B> <B>buffer,</B> <B>chtype</B> <B>ch);</B>
+ <B>char</B> <B>*_tracemouse(const</B> <B>MEVENT</B> <B>*event);</B>
+ <B>void</B> <B>trace(const</B> <B>unsigned</B> <B>int</B> <B>param);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>trace</B> 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 <I>libncurses</I><B>_</B><I>g.a</I>, but may be com-
+ piled into any model (shared, static, profile) by defining
+ the symbol <B>TRACE</B>.
+
+ The principal parts of this interface are the <B>trace</B> rou-
+ tine which selectively enables different tracing features,
+ and the <B>_tracef</B> routine which writes formatted data to the
+ <I>trace</I> file.
+
+ Calling <B>trace</B> with a nonzero parameter opens the file
+ <B>trace</B> in the current directory for output. The parameter
+ is formed by OR'ing values from the list of <B>TRACE_</B><I>xxx</I> def-
+ initions in <B><curses.h></B>. 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
+ refresh.
+
+ 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 <B>addch</B>.
+
+ 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_MAXIMUM
+ maximum trace level, enables all of the separate
+ trace features.
+
+ Some tracing features are enabled whenever the <B>trace</B>
+ parameter is nonzero. Some features overlap. The
+ specific names are used as a guideline.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines which return a value are designed to be used as
+ parameters to the <B>_tracef</B> routine.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ 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.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>.
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>unctrl</B>, <B>keyname</B>, <B>filter</B>, <B>use_env</B>, <B>putwin</B>, <B>getwin</B>,
+ <B>delay_output</B>, <B>flushinp</B> - miscellaneous <B>curses</B> utility rou-
+ tines
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>char</B> <B>*unctrl(chtype</B> <B>c);</B>
+ <B>char</B> <B>*keyname(int</B> <B>c);</B>
+ <B>void</B> <B>filter(void);</B>
+ <B>void</B> <B>use_env(char</B> <B>bool);</B>
+ <B>int</B> <B>putwin(WINDOW</B> <B>*win,</B> <B>FILE</B> <B>*filep);</B>
+ <B>WINDOW</B> <B>*getwin(FILE</B> <B>*filep);</B>
+ <B>int</B> <B>delay_output(int</B> <B>ms);</B>
+ <B>int</B> <B>flushinp(void);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>unctrl</B> macro expands to a character string which is a
+ printable representation of the character <I>c</I>. Control
+ characters are displayed in the <B>^</B><I>X</I> notation. Printing
+ characters are displayed as is.
+
+ The <B>keyname</B> routine returns a character string correspond-
+ ing to the key <I>c</I>.
+
+ The <B>filter</B> routine, if used, must be called before <B>initscr</B>
+ or <B>newterm</B> are called. The effect is that, during those
+ calls, <B>LINES</B> is set to 1; the capabilities <B>clear</B>, <B>cup</B>,
+ <B>cud</B>, <B>cud1</B>, <B>cuu1</B>, <B>cuu</B>, <B>vpa</B> are disabled; and the <B>home</B>
+ string is set to the value of <B>cr</B>.
+
+ The <B>use_env</B> routine, if used, is called before <B>initscr</B> or
+ <B>newterm</B> are called. When called with <B>FALSE</B> as an argu-
+ ment, the values of <B>lines</B> and <B>columns</B> specified in the
+ <I>terminfo</I> database will be used, even if environment vari-
+ ables <B>LINES</B> and <B>COLUMNS</B> (used by default) are set, or if
+ <B>curses</B> is running in a window (in which case default
+ behavior would be to use the window size if <B>LINES</B> and
+ <B>COLUMNS</B> are not set).
+
+ The <B>putwin</B> routine writes all data associated with window
+ <I>win</I> into the file to which <I>filep</I> points. This information
+ can be later retrieved using the <B>getwin</B> function.
+
+ The <B>getwin</B> routine reads window related data stored in the
+ file by <B>putwin</B>. The routine then creates and initializes
+ a new window using that data. It returns a pointer to the
+ new window.
+
+ The <B>delay_output</B> routine inserts an <I>ms</I> millisecond pause
+ in output. This routine should not be used extensively
+ because padding characters are used rather than a CPU
+ pause.
+ The <B>flushinp</B> routine throws away any typeahead that has
+ been typed by the user and has not yet been read by the
+ program.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Except for <B>flushinp</B>, routines that return an integer
+ return <B>ERR</B> upon failure and <B>OK</B> (SVr4 specifies only "an
+ integer value other than <B>ERR</B>") upon successful completion.
+
+ <B>flushinp</B> always returns <B>OK</B>.
+
+ Routines that return pointers return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4 describes these func-
+ tions.
+
+ The SVr4 documentation describes the action of <B>filter</B> only
+ in the vaguest terms. The description here is adapted
+ from the XSI Curses standard (which erroneously fails to
+ describe the disabling of <B>cuu</B>).
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Note that <B>unctrl</B> is a macro, which is defined in <<B>unc-</B>
+ <B>trl.h</B>>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>, <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>newwin</B>, <B>delwin</B>, <B>mvwin</B>, <B>subwin</B>, <B>derwin</B>, <B>mvderwin</B>, <B>dupwin</B>,
+ <B>wsyncup</B>, <B>syncok</B>, <B>wcursyncup</B>, <B>wsyncdown</B> - create <B>curses</B>
+ windows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>WINDOW</B> <B>*newwin(int</B> <B>nlines,</B> <B>int</B> <B>ncols,</B> <B>int</B> <B>begin_y,</B>
+ <B>int</B> <B>begin_x);</B>
+ <B>int</B> <B>delwin(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>mvwin(WINDOW</B> <B>*win,</B> <B>int</B> <B>y,</B> <B>int</B> <B>x);</B>
+ <B>WINDOW</B> <B>*subwin(WINDOW</B> <B>*orig,</B> <B>int</B> <B>nlines,</B> <B>int</B> <B>ncols,</B>
+ <B>int</B> <B>begin_y,</B> <B>int</B> <B>begin_x);</B>
+ <B>WINDOW</B> <B>*derwin(WINDOW</B> <B>*orig,</B> <B>int</B> <B>nlines,</B> <B>int</B> <B>ncols,</B>
+ <B>int</B> <B>begin_y,</B> <B>int</B> <B>begin_x);</B>
+ <B>int</B> <B>mvderwin(WINDOW</B> <B>*win,</B> <B>int</B> <B>par_y,</B> <B>int</B> <B>par_x);</B>
+ <B>WINDOW</B> <B>*dupwin(WINDOW</B> <B>*win);</B>
+ <B>void</B> <B>wsyncup(WINDOW</B> <B>*win);</B>
+ <B>int</B> <B>syncok(WINDOW</B> <B>*win,</B> <B>bool</B> <B>bf);</B>
+ <B>void</B> <B>wcursyncup(WINDOW</B> <B>*win);</B>
+ <B>void</B> <B>wsyncdown(WINDOW</B> <B>*win);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ Calling <B>newwin</B> 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 <I>begin</I>_<I>y</I>, column
+ <I>begin</I>_<I>x</I>. If either <I>nlines</I> or <I>ncols</I> is zero, they default
+ to <B>LINES</B> <B>-</B> <I>begin</I>_<I>y</I> and <B>COLS</B> <B>-</B> <I>begin</I>_<I>x</I>. A new full-screen
+ window is created by calling <B>newwin(0,0,0,0)</B>.
+
+ Calling <B>delwin</B> deletes the named window, freeing all mem-
+ ory associated with it (it does not actually erase the
+ window's screen image). Subwindows must be deleted before
+ the main window can be deleted.
+
+ Calling <B>mvwin</B> moves the window so that the upper left-hand
+ corner is at position (<I>x</I>, <I>y</I>). 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 <B>subwin</B> creates and returns a pointer to a new win-
+ dow with the given number of lines, <I>nlines</I>, and columns,
+ <I>ncols</I>. The window is at position (<I>begin</I>_<I>y</I>, <I>begin</I>_<I>x</I>) on
+ the screen. (This position is relative to the screen, and
+ not to the window <I>orig</I>.) The window is made in the middle
+ of the window <I>orig</I>, so that changes made to one window
+ will affect both windows. The subwindow shares memory
+ with the window <I>orig</I>. When using this routine, it is nec-
+ essary to call <B>touchwin</B> or <B>touchline</B> on <I>orig</I> before call-
+ ing <B>wrefresh</B> on the subwindow.
+
+ Calling <B>derwin</B> is the same as calling <B>subwin,</B> except that
+ <I>begin</I>_<I>y</I> and <I>begin</I>_<I>x</I> are relative to the origin of the win-
+ dow <I>orig</I> rather than the screen. There is no difference
+ between the subwindows and the derived windows.
+
+ Calling <B>mvderwin</B> 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.
+
+ Calling <B>dupwin</B> creates an exact duplicate of the window
+ <I>win</I>.
+
+ Calling <B>wsyncup</B> touches all locations in ancestors of <I>win</I>
+ that are changed in <I>win</I>. If <B>syncok</B> is called with second
+ argument <B>TRUE</B> then <B>wsyncup</B> is called automatically when-
+ ever there is a change in the window.
+
+ The <B>wsyncdown</B> routine touches each location in <I>win</I> that
+ has been touched in any of its ancestor windows. This
+ routine is called by <B>wrefresh</B>, so it should almost never
+ be necessary to call it manually.
+
+ The routine <B>wcursyncup</B> updates the current cursor position
+ of all the ancestors of the window to reflect the current
+ cursor position of the window.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return an integer return the integer <B>ERR</B>
+ upon failure and <B>OK</B> (SVr4 only specifies "an integer value
+ other than <B>ERR</B>") upon successful completion.
+
+ <B>delwin</B> returns the integer <B>ERR</B> upon failure and <B>OK</B> upon
+ successful completion.
+
+ Routines that return pointers return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ If many small changes are made to the window, the <B>wsyncup</B>
+ option could degrade performance.
+
+ Note that <B>syncok</B> may be a macro.
+
+
+</PRE>
+<H2>BUGS</H2><PRE>
+ The subwindow functions (<I>subwin</I>, <I>derwin</I>, <I>mvderwin</I>, <B>wsyn-</B>
+ <B>cup</B>, <B>wsyncdown</B>, <B>wcursyncup</B>, <B>syncok</B>) are flaky, incom-
+ pletely implemented, and not well tested.
+
+ The System V curses documentation is very unclear about
+ what <B>wsyncup</B> and <B>wsyncdown</B> 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 <B>curses</B> implementation, is pat-
+ terned on the XPG4 curses standard. The weaker XPG4 spec
+ may result in slower updates.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The XSI Curses standard, Issue 4 describes these func-
+ tions.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>, <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>define_key</STRONG> - define a keycode
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>define_key</B> - define a keycode
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+ <B>#include</B> <B><curses.h></B>
- <STRONG>int</STRONG> <STRONG>define_key(char</STRONG> <STRONG>*definition,</STRONG> <STRONG>int</STRONG> <STRONG>keycode);</STRONG>
+ <B>int</B> <B>define_key(char</B> <B>*definition,</B> <B>int</B> <B>keycode);</B>
</PRE>
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="keyok.3x.html">keyok(3X)</A></STRONG>.
+ <B><A HREF="keyok.3x.html">keyok(3x)</A></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>dft_fgbg</B>: <B>use_default_colors</B>, <B>assume_default_colors</B> - use
+ terminal's default colors
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>use_default_colors(void);</B>
+ <B>int</B> <B>assume_default_colors(int</B> <B>fg,</B> <B>int</B> <B>bg);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <I>use</I><B>_</B><I>default</I><B>_</B><I>colors()</I> and <I>assume</I><B>_</B><I>default</I><B>_</B><I>colors()</I> 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 <B>ls</B> 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 <I>setaf</I> terminfo
+ capability to set the foreground color. Full-screen
+ applications that use default colors can achieve similar
+ visual effects.
+
+ The first function, <I>use</I><B>_</B><I>default</I><B>_</B><I>colors()</I> 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, <I>assume</I><B>_</B><I>default</I><B>_</B><I>colors()</I> 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:
+ <I>use</I><B>_</B><I>default</I><B>_</B><I>colors();</I>
+ <I>assume</I><B>_</B><I>default</I><B>_</B><I>colors(-1,-1);</I>
+
+ 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 <I>use</I><B>_</B><I>default</I><B>_</B><I>col-</I>
+ <I>ors()</I> or <I>assume</I><B>_</B><I>default</I><B>_</B><I>colors()</I>.
+
+ 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</I><B>_</B><I>default</I><B>_</B><I>colors()</I> or <I>assume</I><B>_</B><I>default</I><B>_</B><I>col-</I>
+ <I>ors()</I> ncurses will paint a white foreground (text) with
+ black background for color pair 0.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These functions return the integer <B>ERR</B> upon failure and <B>OK</B>
+ on success. They will fail if either the terminal does
+ not support the <I>orig</I><B>_</B><I>pair</I> or <I>orig</I><B>_</B><I>colors</I> capability. If
+ the <I>initialize</I><B>_</B><I>pair</I> capability is found, this causes an
+ error as well.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ Associated with this extension, the <B><A HREF="init_pair.3x.html">init_pair(3x)</A></B> function
+ accepts negative arguments to specify default foreground
+ or background colors.
+
+
+</PRE>
+<H2>PORTABILITY</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 con-
+ ditioned using NCURSES_VERSION.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>, <B><A HREF="ded.1.html">ded(1)</A></B>.
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+ Thomas Dickey (from an analysis of the requirements for
+ color xterm for XFree86 3.1.2C, February 1996).
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form</B> - curses extension for programming forms
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>form</B> 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 <B>form</B> library uses the <B>curses</B> libraries, and a curses
+ initialization routine such as <B>initscr</B> must be called
+ before using any of these functions. To use the <B>form</B>
+ library, link with the options <B>-lform</B> <B>-lcurses</B>.
+
+
+ <B>Current</B> <B>Default</B> <B>Values</B> <B>for</B> <B>Field</B> <B>Attributes</B>
+ The <B>form</B> library maintains a default value for field
+ attributes. You can get or set this default by calling
+ the appropriate <B>set_</B> or retrieval routine with a <B>NULL</B>
+ field pointer. Changing this default with a <B>set_</B> function
+ affects future field creations, but does not change the
+ rendering of fields already created.
+
+
+ <B>Routine</B> <B>Name</B> <B>Index</B>
+ The following table lists each <B>form</B> routine and the name
+ of the manual page on which it is described.
+
+ <B>curses</B> Routine Name Manual Page Name
+ -------------------------------------------------
+ current_field <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+ data_ahead <B><A HREF="form_data.3x.html">form_data(3x)</A></B>
+ data_behind <B><A HREF="form_data.3x.html">form_data(3x)</A></B>
+ dup_field <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>
+ dynamic_fieldinfo <B><A HREF="form_field_info.3x.html">form_field_info(3x)</A></B>
+ field_arg <B><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></B>
+ field_back <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+ field_buffer <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+ field_count <B><A HREF="form_field.3x.html">form_field(3x)</A></B>
+ field_fore <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+ field_index <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+ field_info <B><A HREF="form_field_info.3x.html">form_field_info(3x)</A></B>
+ field_init <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+ field_just <B><A HREF="form_field_just.3x.html">form_field_just(3x)</A></B>
+ field_opts <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+ field_opts_off <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+ field_opts_on <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+ field_pad <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+
+ field_status <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+ field_term <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+ field_type <B><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></B>
+ field_userptr <B><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></B>
+ form_driver <B><A HREF="form_driver.3x.html">form_driver(3x)</A></B>
+ form_fields <B><A HREF="form_field.3x.html">form_field(3x)</A></B>
+ form_init <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+ form_opts <B><A HREF="form_opts.3x.html">form_opts(3x)</A></B>
+ form_opts_off <B><A HREF="form_opts.3x.html">form_opts(3x)</A></B>
+ form_opts_on <B><A HREF="form_opts.3x.html">form_opts(3x)</A></B>
+ form_page <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+ form_request_by_name <B><A HREF="form_requestname.3x.html">form_requestname(3x)</A></B>
+ form_request_name <B><A HREF="form_requestname.3x.html">form_requestname(3x)</A></B>
+ form_sub <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+ form_term <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+ form_userptr <B><A HREF="form_userptr.3x.html">form_userptr(3x)</A></B>
+ form_win <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+ free_field <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>
+ free_form <B><A HREF="form_new.3x.html">form_new(3x)</A></B>
+ link_field <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>
+ link_fieldtype <B><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></B>
+ move_field <B><A HREF="form_field.3x.html">form_field(3x)</A></B>
+ new_field <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>
+ new_form <B><A HREF="form_new.3x.html">form_new(3x)</A></B>
+ new_page <B><A HREF="form_new_page.3x.html">form_new_page(3x)</A></B>
+ pos_form_cursor <B><A HREF="form_cursor.3x.html">form_cursor(3x)</A></B>
+ post_form <B><A HREF="form_post.3x.html">form_post(3x)</A></B>
+ scale_form <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+ set_current_field <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+ set_field_back <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+ set_field_buffer <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+ set_field_fore <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+ set_field_init <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+ set_field_just <B><A HREF="form_field_just.3x.html">form_field_just(3x)</A></B>
+ set_field_opts <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+ set_field_pad <B><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></B>
+ set_field_status <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+ set_field_term <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+ set_field_type <B><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></B>
+ set_field_userptr <B><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></B>
+ set_fieldtype_arg <B><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></B>
+ set_fieldtype_choice <B><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></B>
+ set_form_fields <B><A HREF="form_field.3x.html">form_field(3x)</A></B>
+ set_form_init <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+ set_form_opts <B><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></B>
+ set_form_page <B><A HREF="form_page.3x.html">form_page(3x)</A></B>
+ set_form_sub <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+ set_form_term <B><A HREF="form_hook.3x.html">form_hook(3x)</A></B>
+ set_form_userptr <B><A HREF="form_userptr.3x.html">form_userptr(3x)</A></B>
+ set_form_win <B><A HREF="form_win.3x.html">form_win(3x)</A></B>
+ set_max_field <B><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></B>
+ set_new_page <B><A HREF="form_new_page.3x.html">form_new_page(3x)</A></B>
+ unpost_form <B><A HREF="form_post.3x.html">form_post(3x)</A></B>
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return pointers return <B>NULL</B> on error. Rou-
+ tines that return an integer return one of the following
+ error codes:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_CONNECTED</B>
+ The field is already connected to a form.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_POSTED</B>
+ The form is already posted.
+
+ <B>E_BAD_STATE</B>
+ Routine was called from an initialization or termina-
+ tion function.
+
+ <B>E_NO_ROOM</B>
+ Form is too large for its window.
+
+ <B>E_NOT_POSTED</B>
+ The form has not been posted.
+
+ <B>E_UNKNOWN_COMMAND</B>
+ The form driver code saw an unknown request code.
+
+ <B>E_INVALID_FIELD</B>
+ Contents of a field are not valid.
+
+ <B>E_NOT_CONNECTED</B>
+ No fields are connected to the form.
+
+ <B>E_REQUEST_DENIED</B>
+ The form driver could not process the request.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages whose names begin "form_" for
+ detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ files <B><curses.h></B> and <B><eti.h></B>.
+
+ 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 GNU <B><A HREF="ld.1.html">ld(1)</A></B> and many other linkers).
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for ncurses
+ by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_cursor</STRONG> - position a form window cursor
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_cursor</B> - position a form window cursor
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
int pos_form_cursor(FORM *form);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>pos_form_cursor</STRONG> restores the cursor to the
+ The function <B>pos_form_cursor</B> restores the cursor to the
position required for the forms driver to continue pro-
- cessing requests. This is useful after <STRONG>curses</STRONG> routines
+ cessing requests. This is useful after <B>curses</B> routines
have been called to do screen-painting in response to a
form operation.
<H2>RETURN VALUE</H2><PRE>
This routine returns one of the following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
- <STRONG>E_NOT_POSTED</STRONG>
+ <B>E_NOT_POSTED</B>
The form has not been posted.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_data</STRONG> - test for off-screen data in given forms
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_data</B> - test for off-screen data in given forms
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
bool data_ahead(const FORM *form);
bool data_behind(const FORM *form);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>data_ahead</STRONG> tests whether there is off-screen
+ The function <B>data_ahead</B> 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
+ The function <B>data_behind</B> tests whether there is off-screen
data behind in the given form. It returns TRUE (1) or
FALSE (0).
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_driver</STRONG> - command-processing loop of the form system
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_driver</B> - command-processing loop of the form system
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
int form_driver(FORM *form, int c);
</PRE>
<H2>DESCRIPTION</H2><PRE>
Once a form has been posted (displayed), you should funnel
- input events to it through <STRONG>form_driver</STRONG>. This routine has
+ input events to it through <B>form_driver</B>. This routine has
two major input cases; either the input is a form naviga-
tion request or it's a printable ASCII character. The
form driver requests are as follows:
REQ_LEFT_FIELD
Move left to a field.
+
+ REQ_RIGHT_FIELD
Move right to a field.
REQ_UP_FIELD
Move down in the field.
+
+ REQ_NEW_LINE
Insert or overlay a new line.
REQ_INS_CHAR
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
that request is executed.
If the second argument is neither printable ASCII nor one
- of the above pre-defined form requests, the drive assumes
+ 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
+ <B>E_UNKNOWN_COMMAND</B>. Application-defined commands should be
+ defined relative to <B>MAX_COMMAND</B>, the maximum value of
these pre-defined requests.
</PRE>
<H2>RETURN VALUE</H2><PRE>
- <STRONG>form_driver</STRONG> return one of the following error codes:
+ <B>form_driver</B> return one of the following error codes:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
- <STRONG>E_BAD_STATE</STRONG>
+ <B>E_BAD_STATE</B>
+ Routine was called from an initialization or
+ termination function.
- <STRONG>E_NOT_POSTED</STRONG>
+ <B>E_NOT_POSTED</B>
The form has not been posted.
- <STRONG>E_UNKNOWN_COMMAND</STRONG>
+ <B>E_UNKNOWN_COMMAND</B>
The form driver code saw an unknown request code.
- <STRONG>E_INVALID_FIELD</STRONG>
+ <B>E_INVALID_FIELD</B>
Contents of field is invalid.
- <STRONG>E_REQUEST_DENIED</STRONG>
+ <B>E_REQUEST_DENIED</B>
The form driver could not process the request.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- files <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ files <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_field</B> - make and break connections between fields and
+ forms
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ 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);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_form_fields</B> changes the field pointer
+ array of the given <I>form</I>. The array must be terminated by
+ a <B>NULL</B>.
+
+ The function <B>form_fields</B> returns the field array of the
+ given form.
+
+ The function <B>field_count</B> returns the count of fields in
+ <I>form</I>.
+
+ The function <B>move_field</B> move the given field (which must
+ be disconnected) to a specified location on the screen.
+
+
+</PRE>
+<H2>RETURN VALUES</H2><PRE>
+ The function <B>form_fields</B> returns <B>NULL</B> on error.
+
+ The function <B>field_count</B> returns <B>ERR</B> (the general <B>curses</B>
+ error return value) on error.
+
+ The functions <B>set_form_fields</B> and <B>move_field</B> return one of
+ the following codes on error:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_POSTED</B>
+ The form is already posted.
+
+ <B>E_CONNECTED</B>
+ The field is already connected to a form.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</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
+ <B>field_count</B> error value as -1 (which is the value of <B>ERR</B>).
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_field_attributes</B> - color and attribute control for
+ form fields
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ 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);
+ chtype field_pad(const FIELD *field);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_field_fore</B> sets the foreground attribute
+ of <I>field</I>. This is the highlight used to display the field
+ contents. The function <B>field_fore</B> returns the foreground
+ attribute. The default is <B>A_STANDOUT</B>.
+
+ The function <B>set_field_back</B> sets the background attribute
+ of <I>form</I>. This is the highlight used to display the extent
+ fields in the form. The function <B>field_back</B> returns the
+ background attribute. The default is <B>A_NORMAL</B>.
+
+ The function <B>set_field_pad</B> sets the character used to fill
+ the field. The function <B>field_pad</B> returns the given
+ form's pad character. The default is a blank.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These routines return one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages whose names begin "form_" for
+ detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_field_buffer</B> - field buffer control
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ 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);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_field_buffer</B> sets the numbered buffer of
+ the given field to contain a given string. Buffer 0 is
+ the displayed value of the field; other numbered buffers
+ may be allocated by applications through the <B>nbuf</B> argument
+ of (see <B><A HREF="form_field_new.3x.html">form_field_new(3x)</A></B>) but are not manipulated by the
+ forms library. The function <B>field_buffer</B> returns the
+ address of the buffer. Please note that this buffer has
+ always the length of the buffer, that means that it may
+ typically contain trailing spaces. If you entered leading
+ spaces the buffer may also contain them. 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 trail-
+ ing spaces. Please note also, that subsequent operations
+ on the form will probably change the content of the
+ buffer. So don't use it for long term storage of the
+ entered form data.
+
+ The function <B>set_field_status</B> sets the associated status
+ flag of <I>field</I>; <B>field_status</B> gets the current value. The
+ status flag is set to a nonzero value whenever the field
+ changes.
+
+ The function <B>set_max_field</B> sets the maximum size for a
+ dynamic field. An argument of 0 turns off any maximum
+ size threshold for that field.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The <B>field_buffer</B> function returns NULL on error.
+
+ The <B>field_status</B> function returns <B>TRUE</B> or <B>FALSE</B>.
+
+ The remaining routines return one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages whose names begin "form_" for
+ detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_field_info</STRONG> - retrieve field characteristics
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_field_info</B> - retrieve field characteristics
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
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
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>field_info</STRONG> returns the sizes and other
+ The function <B>field_info</B> 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 <STRONG>dynamic_field_info</STRONG> returns the actual size of
+ The function <B>dynamic_field_info</B> 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>).
+ by turning off the <B>O_STATIC</B>).
</PRE>
<H2>RETURN VALUE</H2><PRE>
These routines return one of the following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG> and 3X pages whose names begin "form_" for
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages whose names begin "form_" for
detailed descriptions of the entry points.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
</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>AUTHORS</H2><PRE>
Juergen Pfeifer. Manual pages and adaptation for new
curses by Eric S. Raymond.
-
-
-
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_field_just</B> - retrieve field characteristics
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ int set_field_just(FIELD *field, int justification);
+ int field_just(const FIELD *field);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_field_just</B> sets the justification
+ attribute of a field; <B>field_just</B> returns a field's justi-
+ fication attribute. The attribute may be one of NO_JUSTI-
+ FICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
+
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The function <B>field_just</B> returns one of: NO_JUSTIFICATION,
+ JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
+
+ The function <B>set_field_just</B> return one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages whose names begin "form_" for
+ detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_field_new</STRONG> - create and destroy form fields
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_field_new</B> - create and destroy form fields
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
FIELD *new_field(int height, int width,
int toprow, int leftcol,
int offscreen, int nbuffers);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>new_field</STRONG> allocates a new field and initial-
+ The function <B>new_field</B> 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 <STRONG>dup_field</STRONG> duplicates a field at a new loca-
+ The function <B>dup_field</B> 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 <STRONG>link_field</STRONG> acts like <STRONG>dup_field</STRONG>, but the new
+ The function <B>link_field</B> acts like <B>dup_field</B>, but the new
field shares buffers with its parent. Attribute data is
separate.
- The function <STRONG>free_field</STRONG> de-allocates storage associated
+ The function <B>free_field</B> de-allocates storage associated
with a field.
</PRE>
<H2>RETURN VALUE</H2><PRE>
- The function, <STRONG>new_field</STRONG>, <STRONG>dup_field</STRONG>, <STRONG>link_field</STRONG> return <STRONG>NULL</STRONG>
+ The function, <B>new_field</B>, <B>dup_field</B>, <B>link_field</B> return <B>NULL</B>
on error.
- The function <STRONG>free_field</STRONG> returns one of the following:
+ The function <B>free_field</B> returns one of the following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</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><A HREF="dup_field.3x.html">dup_field(3X)</A></STRONG> being portable; the System V forms
+ by <B><A HREF="dup_field.3x.html">dup_field(3x)</A></B> being portable; the System V forms
library documents are not very explicit on what gets
copied and was not.
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_field_opts</STRONG> - set and get field options
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_field_opts</B> - set and get field options
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
int set_field_opts(FIELD *field, OPTIONS opts);
int field_opts_on(FIELD *field, OPTIONS opts);
int field_opts_off(FIELD *field, OPTIONS opts);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_field_opts</STRONG> sets all the given field's
+ The function <B>set_field_opts</B> 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,
+ The function <B>field_opts_on</B> turns on the given option bits,
and leaves others alone.
- The function <STRONG>field_opts_off</STRONG> turns off the given option
+ The function <B>field_opts_off</B> turns off the given option
bits, and leaves others alone.
- The function <STRONG>field_opts</STRONG> returns the field's current option
+ The function <B>field_opts</B> returns the field's current option
bits.
The following options are defined (all are on by default):
O_AUTOSKIP
Skip to the next field when this one fills
+
+ O_NULLOK
Allow a blank field.
O_STATIC
</PRE>
<H2>RETURN VALUE</H2><PRE>
- Except for <STRONG>field_opts</STRONG>, each routine returns one of the
+ Except for <B>field_opts</B>, each routine returns one of the
following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_CURRENT</STRONG>
+ <B>E_CURRENT</B>
The field is the current field.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
- <STRONG>NOTES</STRONG> The header file <STRONG><form.h></STRONG> automatically includes the
- header file <STRONG><curses.h></STRONG>.
+ <B>NOTES</B> The header file <B><form.h></B> automatically includes the
+ header file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_field_userptr</STRONG> - associate application data with a
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_field_userptr</B> - associate application data with a
form field
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
int set_field_userptr(FIELD *field, void*userptr);
void *field_userptr(const FIELD *field);
</PRE>
<H2>RETURN VALUE</H2><PRE>
- The function <STRONG>field_userptr</STRONG> returns <STRONG>NULL</STRONG> on error. The
- function <STRONG>set_field_userptr</STRONG> returns one of the following:
+ The function <B>field_userptr</B> returns <B>NULL</B> on error. The
+ function <B>set_field_userptr</B> returns one of the following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_field_validation</STRONG> - data type validation for fields
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_field_validation</B> - data type validation for fields
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
int set_field_type(FIELD *field, FIELDTYPE *type, ...);
FIELDTYPE *field_type(const FIELD *field);
void *field_arg(const FIELD *field);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_field_type</STRONG> declares a data type for a
+ The function <B>set_field_type</B> declares a data type for a
given form field. This is the type checked by validation
functions. The types are as follows:
TYPE_ALNUM
- Alphanumeric data. Requires a third <STRONG>int</STRONG> argument, a
+ Alphanumeric data. Requires a third <B>int</B> argument, a
minimum field width.
TYPE_ALPHA
- Character data. Requires a third <STRONG>int</STRONG> argument, a
+ Character data. Requires a third <B>int</B> argument, a
minimum field width.
TYPE_ENUM
Accept one of a specified set of strings. Requires a
- third <STRONG>(char</STRONG> <STRONG>**)</STRONG> argument pointing to a string list; a
- fourth <STRONG>int</STRONG> flag argument to enable case-sensitivity;
- and a fifth <STRONG>int</STRONG> flag argument specifying whether a
+ third <B>(char</B> <B>**)</B> argument pointing to a string list; a
+ fourth <B>int</B> flag argument to enable case-sensitivity;
+ and a fifth <B>int</B> 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
on the stack.
TYPE_INTEGER
- Integer data, parsable to an integer by <STRONG>atoi(3)</STRONG>.
- Requires a third <STRONG>int</STRONG> argument controlling the preci-
- sion, a fourth <STRONG>long</STRONG> argument constraining minimum
- value, and a fifth <STRONG>long</STRONG> constraining maximum value.
+ Integer data, parsable to an integer by <B>atoi(3)</B>.
+ Requires a third <B>int</B> argument controlling the preci-
+ sion, a fourth <B>long</B> argument constraining minimum
+ value, and a fifth <B>long</B> constraining maximum value.
If the maximum value is less or equal the minimum
value, the range is simply ignored. On return the
- field buffer is formatted according to the <STRONG>printf</STRONG>
+ field buffer is formatted according to the <B>printf</B>
format specification ".*ld", where the '*' is
replaced by the precision argument. For details of
- the precision handling see <STRONG>printf's</STRONG> man-page.
+ the precision handling see <B>printf's</B> man-page.
TYPE_NUMERIC
Numeric data (may have a decimal-point part).
- Requires a third <STRONG>int</STRONG> argument controlling the preci-
- sion, a fourth <STRONG>double</STRONG> argument constraining minimum
- value, and a fifth <STRONG>double</STRONG> constraining maximum value.
+ Requires a third <B>int</B> argument controlling the preci-
+ sion, a fourth <B>double</B> argument constraining minimum
+ value, and a fifth <B>double</B> constraining maximum value.
If your system supports locale's, the decimal point
+ character to be used must be the one specified by
+ your locale. If the maximum value is less or equal
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
+ <B>printf</B> format specification ".*f", where the '*' is
replaced by the precision argument. For details of
- the precision handling see <STRONG>printf's</STRONG> man-page.
+ the precision handling see <B>printf's</B> man-page.
TYPE_REGEXP
Regular expression data. Requires a regular expres-
- sion <STRONG>(char</STRONG> <STRONG>*)</STRONG> third argument; the data is valid if
+ sion <B>(char</B> <B>*)</B> third argument; the data is valid if
the regular expression matches it. Regular expres-
- sions are in the format of <STRONG><A HREF="regcomp.3x.html">regcomp(3X)</A></STRONG> and
- <STRONG><A HREF="regexec.3x.html">regexec(3X)</A></STRONG>. Please notice that the regular expres-
+ sions are in the format of <B><A HREF="regcomp.3x.html">regcomp(3x)</A></B> and
+ <B><A HREF="regexec.3x.html">regexec(3x)</A></B>. Please notice that the regular expres-
sion 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
implementations.
It is possible to set up new programmer-defined field
- types. See the <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3X)</A></STRONG> manual page.
+ types. See the <B><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></B> manual page.
</PRE>
<H2>RETURN VALUE</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 fol-
+ The functions <B>field_type</B> and <B>field_arg</B> return <B>NULL</B> on
+ error. The function <B>set_field_type</B> returns one of the fol-
lowing:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_fieldtype</STRONG> - define validation-field types
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_fieldtype</B> - define validation-field types
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
FIELDTYPE *new_fieldtype(
bool (* const field_check)(FIELD *, const void *),
bool (* const char_check)(int, const void *));
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>new_fieldtype</STRONG> creates a new field type usable
- for data validation. You supply it with <EM>field</EM><STRONG>_</STRONG><EM>check</EM>, a
+ The function <B>new_fieldtype</B> creates a new field type usable
+ for data validation. You supply it with <I>field</I><B>_</B><I>check</I>, a
predicate to check the validity of an entered data string
whenever the user attempt to leave a field. The (FIELD *)
argument is passed in so the validation predicate can see
argument is an argument-block structure, about which more
below.
- You also supply <STRONG>new_fieldtype</STRONG> with <EM>char</EM><STRONG>_</STRONG><EM>check</EM>, a function
+ You also supply <B>new_fieldtype</B> with <I>char</I><B>_</B><I>check</I>, 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 <STRONG>free_fieldtype</STRONG> frees the space allocated for
+ The function <B>free_fieldtype</B> frees the space allocated for
a given validation type.
- The function <STRONG>set_fieldtype</STRONG> associates three storage-man-
- agement functions with a field type. The <EM>mak</EM><STRONG>_</STRONG><EM>arg</EM> function
+ The function <B>set_fieldtype</B> associates three storage-man-
+ agement functions with a field type. The <I>mak</I><B>_</B><I>arg</I> function
is automatically applied to the list of arguments you give
- <STRONG>set_field_type</STRONG> when attaching validation to a field; its
+ <B>set_field_type</B> 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 argu-
ment-block structures. They will be used by the forms-
- driver code. You must supply the <EM>mak</EM><STRONG>_</STRONG><EM>arg</EM> function, the
+ driver code. You must supply the <I>mak</I><B>_</B><I>arg</I> function, the
other two are optional, you may supply NULL for them. In
- this case it is assumed, that <EM>mak</EM><STRONG>_</STRONG><EM>arg</EM> doesn't allocate
+ this case it is assumed, that <I>mak</I><B>_</B><I>arg</I> doesn't allocate
memory but simply loads the argument into a single scalar
value.
+ The form driver requests <B>REQ_NEXT_CHOICE</B> and
+ <B>REQ_PREV_CHOICE</B> 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> func-
+ to move through the set. The <B>set_fieldtype_choice</B> func-
tion allows forms programmers to define successor and pre-
decessor functions for the field type. These functions
take the field pointer and an argument-block structure as
The integer-valued routines return one of the following
codes on error:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
- <STRONG>E_CONNECTED</STRONG>
+ <B>E_CONNECTED</B>
The field is already connected to a form.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
- All of the <STRONG>(char</STRONG> <STRONG>*)</STRONG> arguments of these functions should
- actually be <STRONG>(void</STRONG> <STRONG>*)</STRONG>. The type has been left uncorrected
+ All of the <B>(char</B> <B>*)</B> arguments of these functions should
+ actually be <B>(void</B> <B>*)</B>. The type has been left uncorrected
for strict compatibility with System V.
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_hook</B> - set hooks for automatic invocation by applica-
+ tions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ int set_field_init(FORM *form, void (*func)(FORM *));
+ void (*)(FORM *) field_init(const FORM *form);
+ int set_field_term(FORM *form, void (*func)(FORM *));
+ void (*)(FORM *) field_term(const FORM *form);
+ int set_form_init(FORM *form, void (*func)(FORM *));
+ void (*)(FORM *) form_init(const FORM *form);
+ int set_form_term(FORM *form, void (*func)(FORM *));
+ void (*)(FORM *) form_term(const FORM *form);
+
+
+</PRE>
+<H2>DESCRIPTION</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 <B>form_driver</B>.
+
+ The function <B>set_field_init</B> sets a hook to be called at
+ form-post time and each time the selected field changes
+ (after the change). <B>field_init</B> returns the current field
+ init hook, if any (<B>NULL</B> if there is no such hook).
+
+ The function <B>set_field_term</B> sets a hook to be called at
+ form-unpost time and each time the selected field changes
+ (before the change). <B>field_term</B> returns the current field
+ term hook, if any (<B>NULL</B> if there is no such hook).
+
+ The function <B>set_form_init</B> sets a hook to be called at
+ form-post time and just after a page change once it is
+ posted. <B>form_init</B> returns the current form init hook, if
+ any (<B>NULL</B> if there is no such hook).
+
+ The function <B>set_form_term</B> sets a hook to be called at
+ form-unpost time and just before a page change once it is
+ posted. <B>form_init</B> returns the current form term hook, if
+ any (<B>NULL</B> if there is no such hook).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return pointers return <B>NULL</B> on error. Other
+ routines return one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_new</B> - create and destroy forms
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ FORM *new_form(FIELD **fields);
+ int free_form(FORM *form);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>new_form</B> creates a new form connected to a
+ specified field pointer array (which must be <B>NULL</B>-termi-
+ nated).
+
+ The function <B>free_form</B> disconnects <I>form</I> from its field
+ array and frees the storage allocated for the form.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The function <B>new_form</B> returns <B>NULL</B> on error.
+
+ The function <B>free_form</B> returns one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_POSTED</B>
+ The form has already been posted.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_new_page</B> - form pagination functions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ int set_new_page(FIELD *field, bool new_page_flag);
+ bool new_page(const FIELD *field);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_new_page</B> sets or resets a flag marking
+ the given field as the beginning of a new page on its
+ form.
+
+ The function <B>new_page</B> is a predicate which tests if a
+ given field marks a page beginning on its form.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The function <B>new_page</B> returns <B>TRUE</B> or <B>FALSE</B>.
+
+ The function <B>set_new_page</B> return one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_CONNECTED</B>
+ The given field is already connected to a form.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages whose names begin "form_" for
+ detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_opts</B> - set and get form options
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ int set_form_opts(FORM *form, OPTIONS opts);
+ int form_opts_on(FORM *form, OPTIONS opts);
+ int form_opts_off(FORM *form, OPTIONS opts);
+ OPTIONS form_opts(const FORM *form);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_form_opts</B> sets all the given form's
+ option bits (form option bits may be logically-OR'ed
+ together).
+
+ The function <B>form_opts_on</B> turns on the given option bits,
+ and leaves others alone.
+
+ The function <B>form_opts_off</B> turns off the given option
+ bits, and leaves others alone.
+
+ The function <B>form_opts</B> returns the form's current option
+ bits.
+
+ The following options are defined (all are on by default):
+
+ O_NL_OVERLOAD
+ Overload the <B>REQ_NEW_LINE</B> forms driver request so
+ that calling it at the end of a field goes to the
+ next field.
+
+ O_BS_OVERLOAD
+ Overload the <B>REQ_DEL_PREV</B> forms driver request so
+ that calling it at the beginning of a field goes to
+ the previous field.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Except for <B>form_opts</B>, each routine returns one of the fol-
+ lowing:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_page</B> - set and get form page number
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ 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);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_current</B> <B>field</B> sets the current field of
+ the given form; <B>current_field</B> returns the current field of
+ the given form.
+
+ The function <B>set_form_page</B> sets the form's page number
+ (goes to page <I>n</I> of the form).
+
+ The function <B>form_page</B> returns the form's current page
+ number.
+
+ The function <B>field_index</B> returns the index of the field in
+ the field array of the form it is connected to. It returns
+ <B>ERR</B> if the argument is the null pointer or the field is
+ not connected.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Except for <B>form_page</B>, each routine returns one of the fol-
+ lowing:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_BAD_STATE</B>
+ Routine was called from an initialization or termina-
+ tion function.
+
+ <B>E_INVALID_FIELD</B>
+ Contents of a field are not valid.
+
+ <B>E_REQUEST_DENIED</B>
+ The form driver could not process the request.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_post</B> - write or erase forms from associated subwin-
+ dows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><form.h></B>
+ int post_form(FORM *form);
+ int unpost_form(FORM *form);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>post_form</B> displays a form to its associated
+ subwindow. To trigger physical display of the subwindow,
+ use <B>refresh</B> or some equivalent <B>curses</B> routine (the
+ implicit <B>doupdate</B> triggered by an <B>curses</B> input request
+ will do).
+
+ The function <B>unpost_form</B> erases form from its associated
+ subwindow.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These routines return one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_POSTED</B>
+ The form has already been posted.
+
+ <B>E_BAD_STATE</B>
+ Routine was called from an initialization or termina-
+ tion function.
+
+ <B>E_NO_ROOM</B>
+ Form is too large for its window.
+
+ <B>E_NOT_POSTED</B>
+ The form has not been posted.
+
+ <B>E_NOT_CONNECTED</B>
+ No items are connected to the form.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_requestname</STRONG> - handle printable form request names
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_requestname</B> - handle printable form request names
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
const char *form_request_name(int request);
int form_request_by_name(const char *name);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>form_request_name</STRONG> returns the printable name
+ The function <B>form_request_name</B> returns the printable name
of a form request code.
- The function <STRONG>form_request_by_name</STRONG> searches in the name-
+ The function <B>form_request_by_name</B> 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>RETURN VALUE</H2><PRE>
- <STRONG>form_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets errno to
- <STRONG>E_BAD_ARGUMENT</STRONG>.
- <STRONG>form_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error.
+ <B>form_request_name</B> returns <B>NULL</B> on error and sets errno to
+ <B>E_BAD_ARGUMENT</B>.
+ <B>form_request_by_name</B> returns <B>E_NO_MATCH</B> on error.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_userptr</STRONG> - associate application data with a form item
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_userptr</B> - associate application data with a form item
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
int set_form_userptr(FORM *form, void *userptr);
void* form_userptr(const FORM *form);
</PRE>
<H2>RETURN VALUE</H2><PRE>
- The function <STRONG>form_userptr</STRONG> returns <STRONG>NULL</STRONG> on error. The
- function <STRONG>set_form_userptr</STRONG> returns one of the following:
+ The function <B>form_userptr</B> returns <B>NULL</B> on error. The
+ function <B>set_form_userptr</B> returns one of the following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>form_win</STRONG> - make and break form window and subwindow asso-
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>form_win</B> - make and break form window and subwindow asso-
ciations
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ <B>#include</B> <B><form.h></B>
int set_form_win(FORM *form, WINDOW *win);
WINDOW *form_win(const FORM *form);
int set_form_sub(FORM *form, WINDOW *sub);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- Every form has an associated pair of <STRONG>curses</STRONG> windows. The
+ Every form has an associated pair of <B>curses</B> 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.
+ code uses <B>stdscr</B> 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
+ In the <B>set_</B> functions, window argument of <B>NULL</B> is treated
+ as though it were <B>stsdcr</B>. A form argument of <B>NULL</B> 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>.
+ The function <B>scale_form</B> returns the minimum size required
+ for the subwindow of <I>form</I>.
</PRE>
<H2>RETURN VALUE</H2><PRE>
- Routines that return pointers return <STRONG>NULL</STRONG> on error. Rou-
+ Routines that return pointers return <B>NULL</B> on error. Rou-
tines that return an integer return one of the following
error codes:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
- <STRONG>E_POSTED</STRONG>
+ <B>E_POSTED</B>
The form has already been posted.
- <STRONG>E_NOT_CONNECTED</STRONG>
+ <B>E_NOT_CONNECTED</B>
No items are connected to the form.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="form.3x.html">form(3x)</A></B>.
+
- The header file <STRONG><form.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><form.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>infocmp</B> - compare or print out <I>terminfo</I> descriptions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>infocmp</B> [<B>-dceEGgnpqrILCuV1</B>] [<B>-v</B> <I>n</I>] [<B>-s</B> <B>d</B>| <B>i</B>| <B>l</B>| <B>c</B>]
+ [<B>-w</B> <I>width</I>] [<B>-A</B> <I>directory</I>] [<B>-B</B> <I>directory</I>]
+ [<I>termname</I>...]
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ <B>infocmp</B> can be used to compare a binary <B>terminfo</B> entry
+ with other terminfo entries, rewrite a <B>terminfo</B> descrip-
+ tion to take advantage of the <B>use=</B> terminfo field, or
+ print out a <B>terminfo</B> description from the binary file
+ (<B>term</B>) in a variety of formats. In all cases, the boolean
+ fields will be printed first, followed by the numeric
+ fields, followed by the string fields.
+
+ <B>Default</B> <B>Options</B>
+ If no options are specified and zero or one <I>termnames</I> are
+ specified, the <B>-I</B> option will be assumed. If more than
+ one <I>termname</I> is specified, the <B>-d</B> option will be assumed.
+
+ <B>Comparison</B> <B>Options</B> <B>[-d]</B> <B>[-c]</B> <B>[-n]</B>
+ <B>infocmp</B> compares the <B>terminfo</B> description of the first
+ terminal <I>termname</I> with each of the descriptions given by
+ the entries for the other terminal's <I>termnames</I>. If a
+ capability is defined for only one of the terminals, the
+ value returned will depend on the type of the capability:
+ <B>F</B> for boolean variables, <B>-1</B> for integer variables, and
+ <B>NULL</B> for string variables.
+
+ The <B>-d</B> 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 <B>-c</B> 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 <B>-u</B> option is worth using.
+
+ The <B>-n</B> option produces a list of each capability that is
+ in neither entry. If no <I>termnames</I> are given, the environ-
+ ment variable <B>TERM</B> will be used for both of the <I>termnames</I>.
+ This can be used as a quick check to see if anything was
+ left out of a description.
+
+ <B>Source</B> <B>Listing</B> <B>Options</B> <B>[-I]</B> <B>[-L]</B> <B>[-C]</B> <B>[-r]</B>
+ The <B>-I</B>, <B>-L</B>, and <B>-C</B> options will produce a source listing
+ for each terminal named.
+
+ <B>-I</B> use the <B>terminfo</B> names
+ <B>-L</B> use the long C variable name listed in <<B>term.h</B>>
+
+ <B>-C</B> use the <B>termcap</B> names
+ <B>-r</B> when using <B>-C</B>, put out all capabilities in <B>termcap</B> form
+
+ If no <I>termnames</I> are given, the environment variable <B>TERM</B>
+ will be used for the terminal name.
+
+ The source produced by the <B>-C</B> option may be used directly
+ as a <B>termcap</B> entry, but not all parameterized strings can
+ be changed to the <B>termcap</B> format. <B>infocmp</B> 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
+ <B>termcap</B> expects it. Mandatory padding (padding informa-
+ tion with a trailing '/') will become optional.
+
+ All <B>termcap</B> variables no longer supported by <B>terminfo</B>, but
+ which are derivable from other <B>terminfo</B> variables, will be
+ output. Not all <B>terminfo</B> capabilities will be translated;
+ only those variables which were part of <B>termcap</B> will nor-
+ mally be output. Specifying the <B>-r</B> option will take off
+ this restriction, allowing all capabilities to be output
+ in <I>termcap</I> 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 <B>termcap</B> strings
+ are not as flexible, it is not always possible to convert
+ a <B>terminfo</B> string capability into an equivalent <B>termcap</B>
+ format. A subsequent conversion of the <B>termcap</B> file back
+ into <B>terminfo</B> format will not necessarily reproduce the
+ original <B>terminfo</B> source.
+
+ Some common <B>terminfo</B> parameter sequences, their <B>termcap</B>
+ equivalents, and some terminal types which commonly have
+ such sequences, are:
+
+ <B>terminfo</B> <B>termcap</B> Representative Terminals
+ ---------------------------------------------------------------
+ <B>%p1%c</B> <B>%.</B> adm
+ <B>%p1%d</B> <B>%d</B> hp, ANSI standard, vt100
+ <B>%p1%'x'%+%c</B> <B>%+x</B> concept
+ <B>%i</B> <B>%i</B>q ANSI standard, vt100
+ <B>%p1%?%'x'%>%t%p1%'y'%+%;</B> <B>%>xy</B> concept
+ <B>%p2</B> is printed before <B>%p1</B> <B>%r</B> hp
+
+ <B>Use=</B> <B>Option</B> <B>[-u]</B>
+ The <B>-u</B> option produces a <B>terminfo</B> source description of
+ the first terminal <I>termname</I> which is relative to the sum
+ of the descriptions given by the entries for the other
+ terminals <I>termnames</I>. It does this by analyzing the dif-
+ ferences between the first <I>termname</I> and the other
+ <I>termnames</I> and producing a description with <B>use=</B> 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 <B>infocmp</B> 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 <I>termname</I>, but one of the other
+ <I>termname</I> entries contains a value for it. A capability's
+ value gets printed if the value in the first <I>termname</I> is
+ not found in any of the other <I>termname</I> entries, or if the
+ first of the other <I>termname</I> entries that has this capabil-
+ ity gives a different value for the capability than that
+ in the first <I>termname</I>.
+
+ The order of the other <I>termname</I> entries is significant.
+ Since the terminfo compiler <B>tic</B> does a left-to-right scan
+ of the capabilities, specifying two <B>use=</B> 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. <B>infocmp</B> will flag any such incon-
+ sistencies between the other <I>termname</I> entries as they are
+ found.
+
+ Alternatively, specifying a capability <I>after</I> a <B>use=</B> entry
+ that contains that capability will cause the second speci-
+ fication to be ignored. Using <B>infocmp</B> 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 <B>use=</B> fields that are superfluous. <B>infocmp</B>
+ will flag any other <I>termname</I> <I>use=</I> fields that were not
+ needed.
+
+ <B>Changing</B> <B>Databases</B> <B>[-A</B> <I>directory</I>] [-B <I>directory</I>]
+ The location of the compiled <B>terminfo</B> database is taken
+ from the environment variable <B>TERMINFO</B> . If the variable
+ is not defined, or the terminal is not found in that loca-
+ tion, the system <B>terminfo</B> database, in <B>@DATADIR@/terminfo</B>,
+ will be used. The options <B>-A</B> and <B>-B</B> may be used to over-
+ ride this location. The <B>-A</B> option will set <B>TERMINFO</B> for
+ the first <I>termname</I> and the <B>-B</B> option will set <B>TERMINFO</B> for
+ the other <I>termnames</I>. 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.
+
+ <B>Other</B> <B>Options</B> <B>[-s</B> <B>d|i|l|c]</B> <B>[-1FTVefip]</B> <B>[-Rsubset]</B> <B>[-v</B> <I>n</I>] [-w
+ <I>width</I>]
+ The <B>-s</B> option sorts the fields within each type according
+ to the argument below:
+
+ <B>d</B> leave fields in the order that they are stored in the
+ <I>terminfo</I> database.
+
+ <B>i</B> sort by <I>terminfo</I> name.
+
+ <B>l</B> sort by the long C variable name.
+
+ <B>c</B> sort by the <I>termcap</I> name.
+
+ If the <B>-s</B> option is not given, the fields printed out
+ will be sorted alphabetically by the <B>terminfo</B> name
+ within each type, except in the case of the <B>-C</B> or the
+ <B>-L</B> options, which cause the sorting to be done by the
+ <B>termcap</B> name or the long C variable name, respec-
+ tively.
+
+ <B>-1</B> 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.
+
+ <B>-F</B> 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 <B>-r</B>.
+
+ <B>-G</B> Display constant literals in decimal form rather than
+ their character equivalents.
+
+ <B>-a</B> tells <B>infocmp</B> to retain commented-out capabilities
+ rather than discarding them. Capabilities are com-
+ mented by prefixing them with a period.
+
+ <B>-q</B> Make the comparison listing shorter by omitting sub-
+ headings, and using "-" for absent capabilities, "@"
+ for canceled rather than "NULL".
+
+ <B>-R</B><I>subset</I>
+ 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 <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+ for details. You can also choose the subset "BSD"
+ which selects only capabilities with termcap equiva-
+ lents recognized by 4.4BSD.
+
+ <B>-T</B> 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).
+
+ <B>-V</B> prints out the version of the program in use on stan-
+ dard error and exits.
+
+ <B>-e</B> Dump the capabilities of the given terminal as a C
+ initializer for a TERMTYPE structure (the terminal
+ capability structure in the <B><term.h></B>). This option
+ is useful for preparing versions of the curses
+ library hardwired for a given terminal type.
+
+ <B>-E</B> Dump the capabilities of the given terminal as
+ tables, needed in the C initializer for a TERMTYPE
+ structure (the terminal capability structure in the
+ <B><term.h></B>). 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 <B>-e</B> and <B>-E</B>
+ options was not needed; but support for extended
+ names required making the arrays of terminal capabil-
+ ities separate from the TERMTYPE structure.
+
+ <B>-f</B> Display complex terminfo strings which contain
+ if/then/else/endif expressions indented for readabil-
+ ity.
+
+ <B>-g</B> Display constant character literals in quoted form
+ rather than their decimal equivalents.
+
+ <B>-i</B> Analyze the initialization (<B>is1</B>, <B>is2</B>, <B>is3</B>), and reset
+ (<B>rs1</B>, <B>rs2</B>, <B>rs3</B>), 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
+ 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
+
+ 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
+
+ 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}).
+
+ <B>-p</B> Ignore padding specifications when comparing strings.
+
+ <B>-v</B> <I>n</I> prints out tracing information on standard error as
+ the program runs. Higher values of n induce greater
+ verbosity.
+
+ <B>-w</B> <I>width</I>
+ changes the output to <I>width</I> characters.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ @DATADIR@/terminfo Compiled terminal description
+ database.
+
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+ The <B>-E</B>, <B>-F</B>, <B>-G</B>, <B>-R</B>, <B>-T</B>, <B>-a</B>, <B>-e</B>, <B>-f</B>, <B>-g</B>, <B>-i</B>, <B>-p</B>, and <B>-q</B>
+ options are not supported in SVr4 curses.
+
+ The <B>-r</B> 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.
+
+
+</PRE>
+<H2>BUGS</H2><PRE>
+ The -F option of <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B> should be a <B><A HREF="toe.1m.html">toe(1m)</A></B> mode.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>, <B><A HREF="captoinfo.1m.html">captoinfo(1m)</A></B>, <B><A HREF="infotocap.1m.html">infotocap(1m)</A></B>, <B><A HREF="tic.1m.html">tic(1m)</A></B>,
+ <B><A HREF="toe.1m.html">toe(1m)</A></B>, <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+ Eric S. Raymond <esr@snark.thyrsus.com> and Thomas E.
+ Dickey <dickey@herndon4.his.com>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>infotocap</B> - convert a <I>terminfo</I> description into a <I>termcap</I>
+ description
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>infotocap</B> [<B>-v</B><I>n</I> <I>width</I>] [<B>-V</B>] [<B>-1</B>] [<B>-w</B> <I>width</I>] <I>file</I> . . .
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ <B>infotocap</B> looks in <I>file</I> for <B>terminfo</B> descriptions. For
+ each one found, an equivalent <B>termcap</B> description is writ-
+ ten to standard output. Terminfo <B>use</B> capabilities are
+ translated directly to termcap <B>tc</B> capabilities.
+
+ <B>-v</B> print out tracing information on standard error as
+ the program runs.
+
+ <B>-V</B> print out the version of the program in use on stan-
+ dard error and exit.
+
+ <B>-1</B> 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.
+
+ <B>-w</B> change the output to <I>width</I> characters.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ @DATADIR@/terminfo Compiled terminal description
+ database.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ This utility is actually a link to <B><A HREF="tic.1m.html">tic(1m)</A></B>, running in <I>-C</I>
+ mode. You can use other <I>tic</I> options such as <B>-f</B> and <B>-x</B>.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="tic.1m.html">tic(1m)</A></B>, <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>keybound</B> - return definition of keycode
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+ <B>int</B> <B>keybound(int</B> <B>keycode,</B> <B>int</B> <B>count);</B>
+
+
+</PRE>
+<H2>DESCRIPTION</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>RETURN VALUE</H2><PRE>
+ The keycode must be greater than zero, else NULL is
+ returned. If it does not correspond to a defined key,
+ then NULL is returned. Otherwise, the function returns a
+ string, which must be freed by the caller.
+
+
+</PRE>
+<H2>PORTABILITY</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 con-
+ ditioned using NCURSES_VERSION.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="define_key.3x.html">define_key(3x)</A></B>, <B><A HREF="keyok.3x.html">keyok(3x)</A></B>.
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+ Thomas Dickey.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>keyok</STRONG> - enable or disable a keycode
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>keyok</B> - enable or disable a keycode
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+ <B>#include</B> <B><curses.h></B>
- <STRONG>int</STRONG> <STRONG>keyok(int</STRONG> <STRONG>keycode,</STRONG> <STRONG>bool</STRONG> <STRONG>enable);</STRONG>
+ <B>int</B> <B>keyok(int</B> <B>keycode,</B> <B>bool</B> <B>enable);</B>
</PRE>
<H2>DESCRIPTION</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
+ the <I>keypad</I> function to disable all keycodes. Keys that
have been disabled can be reenabled.
<H2>RETURN VALUE</H2><PRE>
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 <EM>enable</EM> parameter is true,
+ then ERR is returned. If the <I>enable</I> parameter is true,
then the key must have been disabled, and vice versa.
Otherwise, the function returns OK.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="define_key.3x.html">define_key(3X)</A></STRONG>.
+ <B><A HREF="define_key.3x.html">define_key(3x)</A></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu</B> - curses extension for programming menus
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>menu</B> 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 <B>menu</B> library uses the <B>curses</B> libraries, and a curses
+ initialization routine such as <B>initscr</B> must be called
+ before using any of these functions. To use the <B>menu</B>
+ library, link with the options <B>-lmenu</B> <B>-lcurses</B>.
+
+
+ <B>Current</B> <B>Default</B> <B>Values</B> <B>for</B> <B>Item</B> <B>Attributes</B>
+ The <B>menu</B> library maintains a default value for item
+ attributes. You can get or set this default by calling
+ the appropriate <B>get_</B> or <B>set_</B> routine with a <B>NULL</B> item
+ pointer. Changing this default with a <B>set_</B> function
+ affects future item creations, but does not change the
+ rendering of items already created.
+
+
+ <B>Routine</B> <B>Name</B> <B>Index</B>
+ The following table lists each <B>menu</B> routine and the name
+ of the manual page on which it is described.
+
+ <B>curses</B> Routine Name Manual Page Name
+ --------------------------------------------
+ current_item <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+ free_item <B><A HREF="mitem_new.3x.html">mitem_new(3x)</A></B>
+ free_menu <B><A HREF="menu_new.3x.html">menu_new(3x)</A></B>
+ item_count <B><A HREF="menu_items.3x.html">menu_items(3x)</A></B>
+ item_description <B><A HREF="mitem_name.3x.html">mitem_name(3x)</A></B>
+ item_index <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+ item_init <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+ item_name <B><A HREF="mitem_name.3x.html">mitem_name(3x)</A></B>
+ item_opts <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+ item_opts_off <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+ item_opts_on <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+ item_term <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+ item_userptr <B><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></B>
+ item_value <B><A HREF="mitem_value.3x.html">mitem_value(3x)</A></B>
+ item_visible <B><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></B>
+ menu_back <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+ menu_driver <B><A HREF="menu_driver.3x.html">menu_driver(3x)</A></B>
+ menu_fore <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+
+ menu_format <B><A HREF="menu_format.3x.html">menu_format(3x)</A></B>
+ menu_grey <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+ menu_init <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+ menu_items <B><A HREF="menu_items.3x.html">menu_items(3x)</A></B>
+ menu_mark <B><A HREF="menu_mark.3x.html">menu_mark(3x)</A></B>
+ menu_opts <B><A HREF="menu_opts.3x.html">menu_opts(3x)</A></B>
+ menu_opts_off <B><A HREF="menu_opts.3x.html">menu_opts(3x)</A></B>
+ menu_opts_on <B><A HREF="menu_opts.3x.html">menu_opts(3x)</A></B>
+ menu_pad <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+ menu_pattern <B><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></B>
+ menu_request_by_name <B><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></B>
+ menu_request_name <B><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></B>
+ menu_spacing <B><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></B>
+ menu_sub <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+ menu_term <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+ menu_userptr <B><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></B>
+ menu_win <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+ new_item <B><A HREF="mitem_new.3x.html">mitem_new(3x)</A></B>
+ new_menu <B><A HREF="menu_new.3x.html">menu_new(3x)</A></B>
+ pos_menu_cursor <B><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></B>
+ post_menu <B><A HREF="menu_post.3x.html">menu_post(3x)</A></B>
+ scale_menu <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+ set_current_item <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+ set_item_init <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+ set_item_opts <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+ set_item_term <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+ set_item_userptr <B><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></B>
+ set_item_value <B><A HREF="mitem_value.3x.html">mitem_value(3x)</A></B>
+ set_menu_back <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+ set_menu_fore <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+ set_menu_format <B><A HREF="menu_format.3x.html">menu_format(3x)</A></B>
+ set_menu_grey <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+ set_menu_init <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+ set_menu_items <B><A HREF="menu_items.3x.html">menu_items(3x)</A></B>
+ set_menu_mark <B><A HREF="menu_mark.3x.html">menu_mark(3x)</A></B>
+ set_menu_opts <B><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></B>
+ set_menu_pad <B><A HREF="menu_attribs.3x.html">menu_attribs(3x)</A></B>
+ set_menu_pattern <B><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></B>
+ set_menu_spacing <B><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></B>
+ set_menu_sub <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+ set_menu_term <B><A HREF="menu_hook.3x.html">menu_hook(3x)</A></B>
+ set_menu_userptr <B><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></B>
+ set_menu_win <B><A HREF="menu_win.3x.html">menu_win(3x)</A></B>
+ set_top_row <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+ top_row <B><A HREF="mitem_current.3x.html">mitem_current(3x)</A></B>
+ unpost_menu <B><A HREF="menu_post.3x.html">menu_post(3x)</A></B>
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return pointers return <B>NULL</B> on error. Rou-
+ tines that return an integer return one of the following
+ error codes:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_POSTED</B>
+ The menu is already posted.
+
+ <B>E_BAD_STATE</B>
+ Routine was called from an initialization or termina-
+ tion function.
+
+ <B>E_NO_ROOM</B>
+ Menu is too large for its window.
+
+ <B>E_NOT_POSTED</B>
+ The menu has not been posted.
+
+ <B>E_UNKNOWN_COMMAND</B>
+ The menu driver code saw an unknown request code.
+
+ <B>E_NO_MATCH</B>
+ Character failed to match.
+
+ <B>E_NOT_SELECTABLE</B>
+ The designated item cannot be selected.
+
+ <B>E_NOT_CONNECTED</B>
+ No items are connected to the menu.
+
+ <B>E_REQUEST_DENIED</B>
+ The menu driver could not process the request.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages whose names begin "menu_" for
+ detailed descriptions of the entry points.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ files <B><curses.h></B> and <B><eti.h></B>.
+
+ 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 give you a link error
+ using GNU <B><A HREF="ld.1.html">ld(1)</A></B> and many other linkers).
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for ncurses
+ by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_attributes</B> - color and attribute control for menus
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ 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);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_menu_fore</B> sets the foreground attribute
+ of <I>menu</I>. This is the highlight used for selected menu
+ items. <B>menu_fore</B> returns the foreground attribute. The
+ default is <B>A_STANDOUT</B>.
+
+ The function <B>set_menu_back</B> sets the background attribute
+ of <I>menu</I>. This is the highlight used for selectable (but
+ not currently selected) menu items. The function
+ <B>menu_back</B> returns the background attribute. The default
+ is <B>A_NORMAL</B>.
+
+ The function <B>set_menu_grey</B> sets the grey attribute of
+ <I>menu</I>. This is the highlight used for un-selectable menu
+ items in menus that permit more than one selection. The
+ function <B>menu_grey</B> returns the grey attribute. The
+ default is <B>A_UNDERLINE</B>.
+
+ The function <B>set_menu_pad</B> sets the character used to fill
+ the space between the name and description parts of a menu
+ item. <B>menu_pad</B> returns the given menu's pad character.
+ The default is a blank.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These routines return one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B> and 3x pages whose names begin "menu_" for
+ detailed descriptions of the entry points.
+
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>menu_cursor</STRONG> - position a menu's cursor
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_cursor</B> - position a menu's cursor
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
int pos_menu_cursor(const MENU *menu);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>pos_menu_cursor</STRONG> restores the cursor to the
+ The function <B>pos_menu_cursor</B> 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
+ This is useful after <B>curses</B> routines have been called to
do screen-painting in response to a menu select.
<H2>RETURN VALUE</H2><PRE>
This routine returns one of the following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
- <STRONG>E_NOT_POSTED</STRONG>
+ <B>E_NOT_POSTED</B>
The menu has not been posted.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>menu_driver</STRONG> - command-processing loop of the menu system
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_driver</B> - command-processing loop of the menu system
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
int menu_driver(MENU *menu, int c);
</PRE>
<H2>DESCRIPTION</H2><PRE>
Once a menu has been posted (displayed), you should funnel
- input events to it through <STRONG>menu_driver</STRONG>. This routine has
+ input events to it through <B>menu_driver</B>. This routine has
three major input cases; either the input is a menu navi-
gation request, it's a printable ASCII character or it is
the KEY_MOUSE special key associated with an mouse event.
REQ_TOGGLE_ITEM
Select/deselect an item.
+
+ REQ_CLEAR_PATTERN
Clear the menu pattern buffer.
REQ_BACK_PATTERN
If the second argument is a printable ASCII 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
+ such match, <B>menu_driver</B> returns <B>E_NO_MATCH</B> and deletes the
appended character from the buffer.
If the second argument is one of the above pre-defined
you click at an item inside the display area of the menu,
the menu cursor is positioned to that item. If you double-
click at an item a REQ_TOGGLE_ITEM is generated and
- <STRONG>E_UNKNOWN_COMMAND</STRONG> is returned. This return value makes
+ <B>E_UNKNOWN_COMMAND</B> is returned. This return value makes
sense, because a double click usually means that an item-
specific action should be returned. It's exactly the pur-
pose of this return value to signal that an application
specific command should be executed. If a translation into
- a request was done, <STRONG>menu_driver</STRONG> returns the result of this
+ a request was done, <B>menu_driver</B> returns the result of this
request. If you clicked outside the user window or the
mouse event couldn't be translated into a menu request an
- <STRONG>E_REQUEST_DENIED</STRONG> is returned.
+ <B>E_REQUEST_DENIED</B> is returned.
If the second argument is neither printable ASCII 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
+ returns <B>E_UNKNOWN_COMMAND</B>. Application-defined commands
+ should be defined relative to <B>MAX_COMMAND</B>, the maximum
value of these pre-defined requests.
- <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</STRONG>).
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ <B>menu_driver</B> return one of the following error codes:
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
- <STRONG>E_BAD_STATE</STRONG>
+ <B>E_BAD_STATE</B>
Routine was called from an initialization or termina-
tion function.
- <STRONG>E_NOT_POSTED</STRONG>
+ <B>E_NOT_POSTED</B>
The menu has not been posted.
- <STRONG>E_UNKNOWN_COMMAND</STRONG>
+ <B>E_UNKNOWN_COMMAND</B>
The menu driver code saw an unknown request code.
- <STRONG>E_NO_MATCH</STRONG>
+ <B>E_NO_MATCH</B>
Character failed to match.
- <STRONG>E_REQUEST_DENIED</STRONG>
+ <B>E_REQUEST_DENIED</B>
The menu driver could not process the request.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- files <STRONG><curses.h></STRONG>.
+ The header file <B><menu.h></B> automatically includes the header
+ files <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_format</B> - set and get menu sizes
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ int set_menu_format(MENU *menu, int rows, int cols);
+ int menu_format(const MENU *menu, int *rows, int *cols);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_menu_format</B> 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, <B>post_menu()</B> will
+ fail.
+
+ The default format is 16 rows, 1 column. Calling
+ <B>set_menu_format</B> with a null menu pointer will change this
+ default. A zero row or column argument to <B>set_menu_format</B>
+ is interpreted as a request not to change the current
+ value.
+
+ The function <B>menu_format</B> returns the maximum-size con-
+ straints for the given menu into the storage addressed by
+ <B>rows</B> and <B>cols</B>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These routines returns one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_POSTED</B>
+ The menu is already posted.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_hook</B> - set hooks for automatic invocation by applica-
+ tions
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ int set_item_init(MENU *menu, void (*func)(MENU *));
+ void (*)(MENU *) item_init(const MENU *menu);
+ int set_item_term(MENU *menu, void (*func)(MENU *));
+ void (*)(MENU *) item_term(const MENU *menu);
+ int set_menu_init(MENU *menu, void (*func)(MENU *));
+ void (*)(MENU *) menu_init(const MENU *menu);
+ int set_menu_term(MENU *menu, void (*func)(MENU *));
+ void (*)(MENU *) menu_term(const MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</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 <B>menu_driver</B>.
+
+ The function <B>set_item_init</B> sets a hook to be called at
+ menu-post time and each time the selected item changes
+ (after the change). <B>item_init</B> returns the current item
+ init hook, if any (<B>NULL</B> if there is no such hook).
+
+ The function <B>set_item_term</B> sets a hook to be called at
+ menu-unpost time and each time the selected item changes
+ (before the change). <B>item_term</B> returns the current item
+ term hook, if any (<B>NULL</B> if there is no such hook).
+
+ The function <B>set_menu_init</B> sets a hook to be called at
+ menu-post time and just after the top row on the menu
+ changes once it is posted. <B>menu_init</B> returns the current
+ menu init hook, if any (<B>NULL</B> if there is no such hook).
+
+ The function <B>set_menu_term</B> sets a hook to be called at
+ menu-unpost time and just before the top row on the menu
+ changes once it is posted. <B>menu_term</B> returns the current
+ menu term hook, if any (<B>NULL</B> if there is no such hook).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return pointers return <B>NULL</B> on error. Other
+ routines return one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_items</B> - make and break connections between items and
+ menus
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ int set_menu_items(MENU *menu, ITEM **items);
+ ITEM **menu_items(const MENU *menu);
+ int item_count(const MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_menu_items</B> changes the item pointer array
+ of the given <I>menu</I>. The array must be terminated by a
+ <B>NULL</B>.
+
+ The function <B>menu_items</B> returns the item array of the
+ given menu.
+
+ The function <B>item_count</B> returns the count of items in
+ <I>menu</I>.
+
+
+</PRE>
+<H2>RETURN VALUES</H2><PRE>
+ The function <B>menu_items</B> returns <B>NULL</B> on error.
+
+ The function <B>item_count</B> returns <B>ERR</B> (the general <B>curses</B>
+ error return value) on error.
+
+ The function <B>set_menu_items</B> returns one of the following
+ codes on error:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_POSTED</B>
+ The menu is already posted.
+
+ <B>E_NOT_CONNECTED</B>
+ No items are connected to the menu.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</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
+ <B>item_count</B> error value as -1 (which is the value of <B>ERR</B>).
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_mark</B> - get and set the menu mark string
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ int set_menu_mark(MENU *menu, const char *mark);
+ const char *menu_mark(const MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ 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 <B>set_menu_mark</B> sets the mark string for the
+ given menu. Calling <B>set_menu_mark</B> 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 <B>set_menu_mark</B>
+ with a <B>NULL</B> menu argument will change this default.
+
+ The function <B>menu_mark</B> returns the menu's mark string (or
+ <B>NULL</B> if there is none).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The function <B>menu_mark</B> returns <B>NULL</B> on error. The func-
+ tion <B>set_menu_mark</B> may return the following error codes:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_new</B> - create and destroy menus
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ MENU *new_menu(ITEM **items);
+ int free_menu(MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>new_menu</B> creates a new menu connected to a
+ specified item pointer array (which must be <B>NULL</B>-termi-
+ nated).
+
+ The function <B>free_menu</B> disconnects <I>menu</I> from its item
+ array and frees the storage allocated for the menu.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The function <B>new_menu</B> returns <B>NULL</B> on error.
+
+ The function <B>free_menu</B> returns one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_POSTED</B>
+ The menu has already been posted.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>menu_opts</STRONG> - set and get menu options
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_opts</B> - set and get menu options
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
int set_menu_opts(MENU *menu, OPTIONS opts);
int menu_opts_on(MENU *menu, OPTIONS opts);
int menu_opts_off(MENU *menu, OPTIONS opts);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_menu_opts</STRONG> sets all the given menu's
+ The function <B>set_menu_opts</B> 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,
+ The function <B>menu_opts_on</B> turns on the given option bits,
and leaves others alone.
- The function <STRONG>menu_opts_off</STRONG> turns off the given option
+ The function <B>menu_opts_off</B> turns off the given option
bits, and leaves others alone.
- The function <STRONG>menu_opts</STRONG> returns the menu's current option
+ The function <B>menu_opts</B> returns the menu's current option
bits.
The following options are defined (all are on by default):
</PRE>
<H2>RETURN VALUE</H2><PRE>
- Except for <STRONG>menu_opts</STRONG>, each routine returns one of the fol-
+ Except for <B>menu_opts</B>, each routine returns one of the fol-
lowing:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- System error occurred (see <STRONG>errno</STRONG>).
- <STRONG>E_POSTED</STRONG>
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_POSTED</B>
The menu is already posted.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_pattern</B> - get and set a menu's pattern buffer
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ int set_menu_pattern(MENU *menu, const char *pattern);
+ char *menu_pattern(const MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ Every menu has an associated pattern match buffer. As
+ input events that are printable ASCII characters come in,
+ they are appended to this match buffer and tested for a
+ match, as described in <B><A HREF="menu_driver.3x.html">menu_driver(3x)</A></B>.
+
+ The function <B>set_menu_pattern</B> 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 <B>menu_pattern</B> returns the pattern buffer of
+ the given <I>menu</I>.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The function <B>menu_pattern</B> returns <B>NULL</B> on error. The
+ function <B>set_menu_pattern</B> may return the following error
+ codes:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_NO_MATCH</B>
+ Character failed to match.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_post</B> - write or erase menus from associated subwin-
+ dows
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ int post_menu(MENU *menu);
+ int unpost_menu(MENU *menu);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>post_menu</B> displays a menu to its associated
+ subwindow. To trigger physical display of the subwindow,
+ use <B>refresh</B> or some equivalent <B>curses</B> routine (the
+ implicit <B>doupdate</B> triggered by an <B>curses</B> input request
+ will do). <B>post_menu</B> resets the selection status of all
+ items.
+
+ The function <B>unpost_menu</B> erases menu from its associated
+ subwindow.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These routines return one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_POSTED</B>
+ The menu has already been posted.
+
+ <B>E_BAD_STATE</B>
+ Routine was called from an initialization or termina-
+ tion function.
+
+ <B>E_NO_ROOM</B>
+ Menu is too large for its window. You should consider
+ to use <B>set_menu_format()</B> to solve the problem.
+
+ <B>E_NOT_POSTED</B>
+ The menu has not been posted.
+
+ <B>E_NOT_CONNECTED</B>
+ No items are connected to the menu.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>menu_requestname</STRONG> - handle printable menu request names
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_requestname</B> - handle printable menu request names
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
const char *menu_request_name(int request);
int menu_request_by_name(const char *name);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>menu_request_name</STRONG> returns the printable name
+ The function <B>menu_request_name</B> returns the printable name
of a menu request code.
- The function <STRONG>menu_request_by_name</STRONG> searches in the name-
+ The function <B>menu_request_by_name</B> 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>RETURN VALUE</H2><PRE>
- <STRONG>menu_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets errno to
- <STRONG>E_BAD_ARGUMENT</STRONG>.
- <STRONG>menu_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error.
+ <B>menu_request_name</B> returns <B>NULL</B> on error and sets errno to
+ <B>E_BAD_ARGUMENT</B>.
+ <B>menu_request_by_name</B> returns <B>E_NO_MATCH</B> on error.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>menu_spacing</STRONG> - Control spacing between menu items.
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_spacing</B> - Control spacing between menu items.
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
int set_menu_spacing(MENU *menu,
int spc_description
int spc_rows,
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The function <STRONG>set_menu_spacing</STRONG> sets the spacing informa-
- tions for the menu. <STRONG>spc_description</STRONG> controls the number
+ The function <B>set_menu_spacing</B> sets the spacing informa-
+ tions for the menu. <B>spc_description</B> 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
+ must not be larger than <B>TABSIZE</B>. The menu system puts in
the middle of this spacing area the pad character. The
- remaining parts are filled with spaces. <STRONG>spc_rows</STRONG> controls
+ remaining parts are filled with spaces. <B>spc_rows</B> controls
the number of rows that are used for an item. It must not
be larger than 3. The menu system inserts then blank lines
between item rows, these lines will contain the pad char-
- acter in the appropriate positions. <STRONG>spc_columns</STRONG> controls
+ acter in the appropriate positions. <B>spc_columns</B> 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 <STRONG>menu_spacing</STRONG> passes back the spacing info for
+ The function <B>menu_spacing</B> passes back the spacing info for
the menu. If a pointer is NULL, this specific info is sim-
ply not returned.
</PRE>
<H2>RETURN VALUE</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>
+ Both routines return <B>E_OK</B> on success. <B>set_menu_spacing</B> may
+ return <B>E_POSTED</B> if the menu is posted, or <B>E_BAD_ARGUMENT</B>
if one of the spacing values is out of range.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
</PRE>
<H2>AUTHORS</H2><PRE>
Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>menu_userptr</STRONG> - associate application data with a menu item
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_userptr</B> - associate application data with a menu item
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
int set_menu_userptr(MENU *menu, void *userptr);
void *menu_userptr(const MENU *menu);
</PRE>
<H2>RETURN VALUE</H2><PRE>
- Except for <STRONG>menu_userptr</STRONG> (which returns <STRONG>NULL</STRONG> on error),
+ Except for <B>menu_userptr</B> (which returns <B>NULL</B> on error),
each function returns one of the following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>menu_win</STRONG> - make and break menu window and subwindow asso-
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>menu_win</B> - make and break menu window and subwindow asso-
ciations
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
int set_menu_win(MENU *menu, WINDOW *win);
WINDOW *menu_win(const MENU *menu);
int set_menu_sub(MENU *menu, WINDOW *sub);
</PRE>
<H2>DESCRIPTION</H2><PRE>
- Every menu has an associated pair of <STRONG>curses</STRONG> windows. The
+ Every menu has an associated pair of <B>curses</B> 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.
+ code uses <B>stdscr</B> 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
+ In the <B>set_</B> functions, window argument of <B>NULL</B> is treated
+ as though it were <B>stsdcr</B>. A menu argument of <B>NULL</B> 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>.
+ The function <B>scale_menu</B> returns the minimum size required
+ for the subwindow of <I>menu</I>.
</PRE>
<H2>RETURN VALUE</H2><PRE>
- Routines that return pointers return <STRONG>NULL</STRONG> on error. Rou-
+ Routines that return pointers return <B>NULL</B> on error. Rou-
tines that return an integer return one of the following
error codes:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
- <STRONG>E_POSTED</STRONG>
+ <B>E_POSTED</B>
The menu has already been posted.
- <STRONG>E_NOT_CONNECTED</STRONG>
+ <B>E_NOT_CONNECTED</B>
No items are connected to the menu.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>mitem_current</B> - set and get current_menu_item
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ 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);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_current_item</B> sets the current item (the
+ item on which the menu cursor is positioned). <B>cur-</B>
+ <B>rent_item</B> returns a pointer to the current item in the
+ given menu.
+
+ The function <B>set_top_row</B> 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 <B>O_ROWMAJOR</B> option is tog-
+ gled). The item leftmost on the given row becomes cur-
+ rent. The function <B>top_row</B> returns the number of the top
+ menu row being displayed.
+
+ The function <B>item_index</B> returns the (zero-origin) index of
+ <I>item</I> in the menu's item pointer list.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ <B>current_item</B> returns <B>NULL</B> on error.
+
+ <B>top_row</B> and <B>item_index</B> return <B>ERR</B> (the general <B>curses</B>
+ error value) on error.
+
+ <B>set_current_item</B> and <B>set_top_row</B> return one of the follow-
+ ing:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_BAD_ARGUMENT</B>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <B>E_BAD_STATE</B>
+ Routine was called from an initialization or termina-
+ tion function.
+
+ <B>E_NOT_CONNECTED</B>
+ No items are connected to the menu.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</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 <B>top_row</B>
+ and <B>index_item</B> error value as -1 (which is the value of
+ <B>ERR</B>).
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>mitem_name</B> - get menu item name and description fields
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ const char *item_name(const ITEM *item);
+ const char *item_description(const ITEM *item);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>item_name</B> returns the name part of the given
+ item.
+ The function <B>item_description</B> returns the description part
+ of the given item.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ These routines returns <B>NULL</B> on error.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>mitem_new</STRONG> - create and destroy menu items
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>mitem_new</B> - create and destroy menu items
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
ITEM *new_item(const char *name, const char *description);
int free_item(ITEM *item);
</PRE>
<H2>DESCRIPTION</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
+ The function <B>new_item</B> allocates a new item and initializes
+ it from the <B>name</B> and <B>description</B> 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 carefull with
names or descriptions allocated on the stack of some rou-
tines.
- The function <STRONG>free_item</STRONG> de-allocates an item. Please notice
+ The function <B>free_item</B> 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>RETURN VALUE</H2><PRE>
- The function <STRONG>new_item</STRONG> returns <STRONG>NULL</STRONG> on error.
+ The function <B>new_item</B> returns <B>NULL</B> on error.
- The function <STRONG>free_item</STRONG> returns one of the following:
+ The function <B>free_item</B> returns one of the following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
- <STRONG>E_BAD_ARGUMENT</STRONG>
+ <B>E_BAD_ARGUMENT</B>
Routine detected an incorrect or out-of-range argu-
ment.
- <STRONG>E_CONNECTED</STRONG>
+ <B>E_CONNECTED</B>
Item is connected to a menu.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
Juergen Pfeifer. Manual pages and adaptation for new
curses by Eric S. Raymond.
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>mitem_opts</B> - set and get menu item options
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ int set_item_opts(ITEM *item, OPTIONS opts);
+ int item_opts_on(ITEM *item, OPTIONS opts);
+ int item_opts_off(ITEM *item, OPTIONS opts);
+ OPTIONS item_opts(const ITEM *item);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <B>set_item_opts</B> sets all the given item's
+ option bits (menu option bits may be logically-OR'ed
+ together).
+
+ The function <B>item_opts_on</B> turns on the given option bits,
+ and leaves others alone.
+
+ The function <B>item_opts_off</B> turns off the given option
+ bits, and leaves others alone.
+
+ The function <B>item_opts</B> returns the item's current option
+ bits.
+
+ There is only one defined option bit mask, <B>O_SELECTABLE</B>.
+ When this is on, the item may be selected during menu pro-
+ cessing. This option defaults to on.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Except for <B>item_opts</B>, each routine returns one of the fol-
+ lowing:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>mitem_userptr</STRONG> - associate application data with a menu
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>mitem_userptr</B> - associate application data with a menu
item
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
int set_item_userptr(ITEM *item, void *userptr);
void *item_userptr(const ITEM *item);
</PRE>
<H2>RETURN VALUE</H2><PRE>
- Except for <STRONG>item_userptr</STRONG> (which returns <STRONG>NULL</STRONG> on error),
+ Except for <B>item_userptr</B> (which returns <B>NULL</B> on error),
each function returns one of the following:
- <STRONG>E_OK</STRONG> The routine succeeded.
+ <B>E_OK</B> The routine succeeded.
- <STRONG>E_SYSTEM_ERROR</STRONG>
- System error occurred (see <STRONG>errno</STRONG>).
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>mitem_value</B> - set and get menu item values
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><menu.h></B>
+ int set_item_value(ITEM *item, bool value);
+ bool item_value(const ITEM *item);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ If you turn off the menu option <B>O_ONEVALUE</B> (e.g., with
+ <B>set_menu_opts</B> or <B>menu_opts_off</B>; see <B><A HREF="menu_opts.3x.html">menu_opts(3x)</A></B>), the
+ menu becomes multi-valued; that is, more than one item may
+ simultaneously be selected.
+
+ In a multi_valued menu, you can used <B>set_item_value</B> to
+ select the given menu item (second argument <B>TRUE</B>) or dese-
+ lect it (second argument <B>FALSE</B>).
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The function <B>set_item_value</B> returns one of the following:
+
+ <B>E_OK</B> The routine succeeded.
+
+ <B>E_SYSTEM_ERROR</B>
+ System error occurred (see <B>errno</B>).
+
+ <B>E_REQUEST_DENIED</B>
+ The menu driver could not process the request.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V menu library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>mitem_visible</STRONG> - check visibility of a menu item
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>mitem_visible</B> - check visibility of a menu item
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><menu.h></STRONG>
+ <B>#include</B> <B><menu.h></B>
bool item_visible(const ITEM *item);
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3X)</A></STRONG>.
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="menu.3x.html">menu(3x)</A></B>.
</PRE>
<H2>NOTES</H2><PRE>
- The header file <STRONG><menu.h></STRONG> automatically includes the header
- file <STRONG><curses.h></STRONG>.
+ The header file <B><menu.h></B> automatically includes the header
+ file <B><curses.h></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>ncurses</B> - CRT screen handling and optimization package
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><curses.h></B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>ncurses</B> 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.
+
+ The <B>ncurses</B> routines emulate the <B><A HREF="ncurses.3x.html">curses(3x)</A></B> library of
+ System V Release 4 UNIX, and the XPG4 curses standard (XSI
+ curses) but the <B>ncurses</B> library is freely redistributable
+ in source form. Differences from the SVr4 curses are sum-
+ marized under the EXTENSIONS and BUGS sections below and
+ described in detail in the EXTENSIONS and BUGS sections of
+ individual man pages.
+
+ A program using these routines must be linked with the
+ <B>-lncurses</B> option, or (if it has been generated) with the
+ debugging library <B>-lncurses_g</B>. (Your system integrator
+ may also have installed these libraries under the names
+ <B>-lcurses</B> and <B>-lcurses_g</B>.) The ncurses_g library generates
+ trace logs (in a file called 'trace' in the current direc-
+ tory) that describe curses actions.
+
+ The <B>ncurses</B> package supports: overall screen, window and
+ pad manipulation; output to windows and pads; reading ter-
+ minal input; control over terminal and <B>curses</B> 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.
+
+ To initialize the routines, the routine <B>initscr</B> or <B>newterm</B>
+ must be called before any of the other routines that deal
+ with windows and screens are used. The routine <B>endwin</B>
+ 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:
+
+ <B>initscr();</B> <B>cbreak();</B> <B>noecho();</B>
+
+ Most programs would additionally use the sequence:
+
+ <B>nonl();</B>
+ <B>intrflush(stdscr,</B> <B>FALSE);</B>
+ <B>keypad(stdscr,</B> <B>TRUE);</B>
+
+ Before a <B>curses</B> 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 <B>tput</B> <B>init</B> command after the shell environment variable
+ <B>TERM</B> has been exported. <B>tset(1)</B> is usually responsible
+ for doing this. [See <B><A HREF="terminfo.5.html">terminfo(5)</A></B> for further details.]
+
+ The <B>ncurses</B> library permits manipulation of data struc-
+ tures, called <I>windows</I>, which can be thought of as two-
+ dimensional arrays of characters representing all or part
+ of a CRT screen. A default window called <B>stdscr</B>, which is
+ the size of the terminal screen, is supplied. Others may
+ be created with <B>newwin</B>.
+
+ Note that <B>curses</B> does not handle overlapping windows,
+ that's done by the <B><A HREF="panel.3x.html">panel(3x)</A></B> library. This means that you
+ can either use <B>stdscr</B> or divide the screen into tiled win-
+ dows and not using <B>stdscr</B> at all. Mixing the two will
+ result in unpredictable, and undesired, effects.
+
+ Windows are referred to by variables declared as <B>WINDOW</B> <B>*</B>.
+ These data structures are manipulated with routines
+ described here and elsewhere in the <B>ncurses</B> manual pages.
+ Among which the most basic routines are <B>move</B> and <B>addch</B>.
+ More general versions of these routines are included with
+ names beginning with <B>w</B>, allowing the user to specify a
+ window. The routines not beginning with <B>w</B> affect <B>stdscr</B>.)
+
+ After using routines to manipulate a window, <B>refresh</B> is
+ called, telling <B>curses</B> to make the user's CRT screen look
+ like <B>stdscr</B>. The characters in a window are actually of
+ type <B>chtype</B>, (character and attribute data) so that other
+ information about the character may also be stored with
+ each character.
+
+ Special windows called <I>pads</I> 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 <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B> 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, <B>curses</B> 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
+ <B><curses.h></B>, such as <B>A_REVERSE</B>, <B>ACS_HLINE</B>, and <B>KEY_LEFT</B>.
+
+ If the environment variables <B>LINES</B> and <B>COLUMNS</B> are set, or
+ if the program is executing in a window environment, line
+ and column information in the environment will override
+ information read by <I>terminfo</I>. This would effect a program
+ running in an AT&T 630 layer, for example, where the size
+ of a screen is changeable (see <B>ENVIRONMENT</B>).
+
+ If the environment variable <B>TERMINFO</B> is defined, any pro-
+ gram using <B>curses</B> checks for a local terminal definition
+ before checking in the standard place. For example, if
+ <B>TERM</B> is set to <B>att4424</B>, then the compiled terminal defini-
+ tion is found in
+
+ <B>@DATADIR@/terminfo/a/att4424</B>.
+
+ (The <B>a</B> is copied from the first letter of <B>att4424</B> to avoid
+ creation of huge directories.) However, if <B>TERMINFO</B> is
+ set to <B>$HOME/myterms</B>, <B>curses</B> first checks
+
+ <B>$HOME/myterms/a/att4424</B>,
+
+ and if that fails, it then checks
+
+ <B>@DATADIR@/terminfo/a/att4424</B>.
+
+ This is useful for developing experimental definitions or
+ when write permission in <B>@DATADIR@/terminfo</B> is not avail-
+ able.
+
+ The integer variables <B>LINES</B> and <B>COLS</B> are defined in
+ <B><curses.h></B> and will be filled in by <B>initscr</B> with the size
+ of the screen. The constants <B>TRUE</B> and <B>FALSE</B> have the val-
+ ues <B>1</B> and <B>0</B>, respectively.
+
+ The <B>curses</B> routines also define the <B>WINDOW</B> <B>*</B> variable
+ <B>curscr</B> which is used for certain low-level operations like
+ clearing and redrawing a screen containing garbage. The
+ <B>curscr</B> can be used in only a few routines.
+
+
+ <B>Routine</B> <B>and</B> <B>Argument</B> <B>Names</B>
+ Many <B>curses</B> routines have two or more versions. The rou-
+ tines prefixed with <B>w</B> require a window argument. The rou-
+ tines prefixed with <B>p</B> require a pad argument. Those with-
+ out a prefix generally use <B>stdscr</B>.
+
+ The routines prefixed with <B>mv</B> require a <I>y</I> and <I>x</I> coordinate
+ to move to before performing the appropriate action. The
+ <B>mv</B> routines imply a call to <B>move</B> before the call to the
+ other routine. The coordinate <I>y</I> always refers to the row
+ (of the window), and <I>x</I> always refers to the column. The
+ upper left-hand corner is always (0,0), not (1,1).
+
+ The routines prefixed with <B>mvw</B> take both a window argument
+ and <I>x</I> and <I>y</I> coordinates. The window argument is always
+ specified before the coordinates.
+
+ In each case, <I>win</I> is the window affected, and <I>pad</I> is the
+ pad affected; <I>win</I> and <I>pad</I> are always pointers to type
+ <B>WINDOW</B>.
+
+ Option setting routines require a Boolean flag <I>bf</I> with the
+ value <B>TRUE</B> or <B>FALSE</B>; <I>bf</I> is always of type <B>bool</B>. The vari-
+ ables <I>ch</I> and <I>attrs</I> below are always of type <B>chtype</B>. The
+ types <B>WINDOW</B>, <B>SCREEN</B>, <B>bool</B>, and <B>chtype</B> are defined in
+ <B><curses.h></B>. The type <B>TERMINAL</B> is defined in <B><term.h></B>.
+ All other arguments are integers.
+
+
+ <B>Routine</B> <B>Name</B> <B>Index</B>
+ The following table lists each <B>curses</B> 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.
+
+ <B>curses</B> Routine Name Manual Page Name
+ -------------------------------------------
+ COLOR_PAIR <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+ PAIR_NUMBER <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ _nc_tracebits <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ _traceattr <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ _traceattr2 <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ _tracechar <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ _tracechtype <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ _tracechtype2 <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ _tracedump <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ _tracef <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ _tracemouse <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ addch <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+ addchnstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+ addchstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+ addnstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+ addstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+ assume_default_colors <B><A HREF="dft_fgbg.3x.html">dft_fgbg(3x)</A></B>*
+ attr_get <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ attr_off <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ attr_on <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ attr_set <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ attroff <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ attron <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ attrset <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ baudrate <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+ beep <B><A HREF="curs_beep.3x.html">curs_beep(3x)</A></B>
+ bkgd <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+ bkgdset <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+ border <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ box <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ can_change_color <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+ cbreak <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ chgat <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ clear <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+ clearok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+
+ clrtobot <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+ clrtoeol <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+ color_content <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+ color_set <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ copywin <B><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></B>
+ curs_set <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ curses_version <B><A HREF="curs_extend.3x.html">curs_extend(3x)</A></B>*
+ def_prog_mode <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ def_shell_mode <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ define_key <B><A HREF="define_key.3x.html">define_key(3x)</A></B>*
+ del_curterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ delay_output <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+ delch <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
+ deleteln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+ delscreen <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+ delwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ derwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ doupdate <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+ dupwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ echo <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ echochar <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+ endwin <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+ erase <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+ erasechar <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+ filter <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+ flash <B><A HREF="curs_beep.3x.html">curs_beep(3x)</A></B>
+ flushinp <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+ getbegyx <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
+ getbkgd <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+ getch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+ getmaxyx <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
+ getmouse <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+ getnstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+ getparyx <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
+ getstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+ getsyx <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ getwin <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+ getyx <B><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></B>
+ halfdelay <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ has_colors <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+ has_ic <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+ has_il <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+ has_key <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>*
+ hline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ idcok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+ idlok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+ immedok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+ inch <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
+ inchnstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+ inchstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+ init_color <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+ init_pair <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+ initscr <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+
+ innstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+ insch <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
+ insdelln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+ insertln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+ insnstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+ insstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+ instr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+ intrflush <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ is_linetouched <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+ is_wintouched <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+ isendwin <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+ keybound <B><A HREF="keybound.3x.html">keybound(3x)</A></B>*
+ keyname <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+ keyok <B><A HREF="keyok.3x.html">keyok(3x)</A></B>*
+ keypad <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ killchar <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+ leaveok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+ longname <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+ mcprint <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B>*
+ meta <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ mouse_trafo <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+ mouseinterval <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+ mousemask <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+ move <B><A HREF="curs_move.3x.html">curs_move(3x)</A></B>
+ mvaddch <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+ mvaddchnstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+ mvaddchstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+ mvaddnstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+ mvaddstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+ mvchgat <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ mvcur <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ mvdelch <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
+ mvderwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ mvgetch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+ mvgetnstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+ mvgetstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+ mvhline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ mvinch <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
+ mvinchnstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+ mvinchstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+ mvinnstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+ mvinsch <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
+ mvinsnstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+ mvinsstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+ mvinstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+ mvprintw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+ mvscanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+ mvvline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ mvwaddch <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+ mvwaddchnstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+ mvwaddchstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+ mvwaddnstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+ mvwaddstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+
+ mvwchgat <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ mvwdelch <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
+ mvwgetch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+ mvwgetnstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+ mvwgetstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+ mvwhline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ mvwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ mvwinch <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
+ mvwinchnstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+ mvwinchstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+ mvwinnstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+ mvwinsch <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
+ mvwinsnstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+ mvwinsstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+ mvwinstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+ mvwprintw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+ mvwscanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+ mvwvline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ napms <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ newpad <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+ newterm <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+ newwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ nl <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+ nocbreak <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ nodelay <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ noecho <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ nonl <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+ noqiflush <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ noraw <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ notimeout <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ overlay <B><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></B>
+ overwrite <B><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></B>
+ pair_content <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+ pechochar <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+ pnoutrefresh <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+ prefresh <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+ printw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+ putp <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ putwin <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+ qiflush <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ raw <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ redrawwin <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+ refresh <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+ reset_prog_mode <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ reset_shell_mode <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ resetty <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ resizeterm <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B>*
+ restartterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ ripoffline <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ savetty <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ scanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+ scr_dump <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
+ scr_init <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
+
+ scr_restore <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
+ scr_set <B><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></B>
+ scrl <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>
+ scroll <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>
+ scrollok <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+ set_curterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ set_term <B><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></B>
+ setscrreg <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+ setsyx <B><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></B>
+ setterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ setupterm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ slk_attr <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>*
+ slk_attr_off <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_attr_on <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_attr_set <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_attroff <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_attron <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_attrset <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_clear <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_color <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_init <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_label <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_noutrefresh <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_refresh <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_restore <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_set <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ slk_touch <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B>
+ standend <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ standout <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ start_color <B><A HREF="curs_color.3x.html">curs_color(3x)</A></B>
+ subpad <B><A HREF="curs_pad.3x.html">curs_pad(3x)</A></B>
+ subwin <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ syncok <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ termattrs <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+ termname <B><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></B>
+ tgetent <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+ tgetflag <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+ tgetnum <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+ tgetstr <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+ tgoto <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+ tigetflag <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ tigetnum <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ tigetstr <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ timeout <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ touchline <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+ touchwin <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+ tparm <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ tputs <B><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></B>
+ tputs <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ trace <B><A HREF="curs_trace.3x.html">curs_trace(3x)</A></B>*
+ typeahead <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ unctrl <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+ ungetch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+
+ ungetmouse <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+ untouchwin <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+ use_default_colors <B><A HREF="dft_fgbg.3x.html">dft_fgbg(3x)</A></B>*
+ use_env <B><A HREF="curs_util.3x.html">curs_util(3x)</A></B>
+ use_extended_names <B><A HREF="curs_extend.3x.html">curs_extend(3x)</A></B>*
+ vidattr <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ vidputs <B><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></B>
+ vline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ vw_printw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+ vw_scanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+ vwprintw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+ vwscanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+ waddch <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+ waddchnstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+ waddchstr <B><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></B>
+ waddnstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+ waddstr <B><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></B>
+ wattr_get <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wattr_off <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wattr_on <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wattr_set <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wattroff <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wattron <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wattrset <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wbkgd <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+ wbkgdset <B><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></B>
+ wborder <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ wchgat <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wclear <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+ wclrtobot <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+ wclrtoeol <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+ wcolor_set <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wcursyncup <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ wdelch <B><A HREF="curs_delch.3x.html">curs_delch(3x)</A></B>
+ wdeleteln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+ wechochar <B><A HREF="curs_addch.3x.html">curs_addch(3x)</A></B>
+ wenclose <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+ werase <B><A HREF="curs_clear.3x.html">curs_clear(3x)</A></B>
+ wgetch <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B>
+ wgetnstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+ wgetstr <B><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></B>
+ whline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+ winch <B><A HREF="curs_inch.3x.html">curs_inch(3x)</A></B>
+ winchnstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+ winchstr <B><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></B>
+ winnstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+ winsch <B><A HREF="curs_insch.3x.html">curs_insch(3x)</A></B>
+ winsdelln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+ winsertln <B><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></B>
+ winsnstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+ winsstr <B><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></B>
+ winstr <B><A HREF="curs_instr.3x.html">curs_instr(3x)</A></B>
+ wmouse_trafo <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B>*
+
+ wmove <B><A HREF="curs_move.3x.html">curs_move(3x)</A></B>
+ wnoutrefresh <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+ wprintw <B><A HREF="curs_printw.3x.html">curs_printw(3x)</A></B>
+ wredrawln <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+ wrefresh <B><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></B>
+ wresize <B><A HREF="wresize.3x.html">wresize(3x)</A></B>*
+ wscanw <B><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></B>
+ wscrl <B><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></B>
+ wsetscrreg <B><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></B>
+ wstandend <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wstandout <B><A HREF="curs_attr.3x.html">curs_attr(3x)</A></B>
+ wsyncdown <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ wsyncup <B><A HREF="curs_window.3x.html">curs_window(3x)</A></B>
+ wtimeout <B><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></B>
+ wtouchln <B><A HREF="curs_touch.3x.html">curs_touch(3x)</A></B>
+ wvline <B><A HREF="curs_border.3x.html">curs_border(3x)</A></B>
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ Routines that return an integer return <B>ERR</B> upon failure
+ and an integer value other than <B>ERR</B> upon successful com-
+ pletion, unless otherwise noted in the routine descrip-
+ tions.
+
+ All macros return the value of the <B>w</B> version, except
+ <B>setscrreg</B>, <B>wsetscrreg</B>, <B>getyx</B>, <B>getbegyx</B>, <B>getmaxyx</B>. The
+ return values of <B>setscrreg</B>, <B>wsetscrreg</B>, <B>getyx</B>, <B>getbegyx</B>,
+ and <B>getmaxyx</B> are undefined (<I>i</I>.<I>e</I>., these should not be used
+ as the right-hand side of assignment statements).
+
+ Routines that return pointers return <B>NULL</B> on error.
+
+
+</PRE>
+<H2>ENVIRONMENT</H2><PRE>
+ The following environment symbols are useful for customiz-
+ ing the runtime behavior of the <B>ncurses</B> 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 <B>ncurses</B> 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 <B>cmdch</B> capability) of the loaded terminfo
+ entries to the value of this symbol. Very few ter-
+ minfo entries provide this feature.
+
+ 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,
+ <B>ncurses</B> uses the size which may be specified in the
+ terminfo database (i.e., the <B>cols</B> capability).
+
+ It is important that your application use a correct
+ size for the screen. However, 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.
+
+ 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, <B>lines</B> and <B>cols</B> should not be specified
+ in a terminal description for terminals which are run
+ as emulations.
+
+ Use the <B>use_env</B> function to disable this feature.
+
+ 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.
+
+ HOME Tells <B>ncurses</B> 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, <B>ncurses</B> uses
+ 132.
+
+ 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 <I>flash</I>.
+
+ NCURSES_NO_SETBUF
+ Normally <B>ncurses</B> enables buffered output during ter-
+ minal initialization. This is done (as in SVr4
+ curses) for performance reasons. For testing pur-
+ poses, both of <B>ncurses</B> 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_TRACE
+ During initialization, the <B>ncurses</B> debugging library
+ checks the NCURSES_TRACE symbol. If it is defined,
+ to a numeric value, <B>ncurses</B> calls the <B>trace</B> function,
+ using that value as the argument.
+
+ The argument values, which are defined in <B>curses.h</B>,
+ provide several types of information. When running
+ with traces enabled, your application will write the
+ file <B>trace</B> to the current directory.
+
+ TERM Denotes your terminal type. Each terminal type is
+ distinct, though many are similar.
+
+ TERMCAP
+ If the <B>ncurses</B> library has been configured with <I>term-</I>
+ <I>cap</I> support, <B>ncurses</B> 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 <B>ncurses</B> to ignore the usual place for this
+ information, e.g., /etc/termcap.
+
+ TERMINFO
+ Overrides the directory in which <B>ncurses</B> 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:
+
+ - the last directory to which <B>ncurses</B> wrote, if any,
+ is searched first.
+
+ - the directory specified by the TERMINFO symbol
+
+ - $HOME/.terminfo
+
+ - directories listed in the TERMINFO_DIRS symbol
+
+ - one or more directories whose names are configured
+ and compiled into the ncurses library, e.g.,
+ @DATADIR@/terminfo
+
+ TERMINFO_DIRS
+ Specifies a list of directories to search for termi-
+ nal descriptions. The list is separated by colons
+ (i.e., ":"). 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 <B>ncurses</B>
+ checks the TERMPATH symbol. This is a list of file-
+ names separated by colons (i.e., ":"). If the
+ TERMPATH symbol is not set, <B>ncurses</B> looks in the
+ files /etc/termcap, /usr/share/misc/termcap and
+ $HOME/.termcap, in that order.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ @DATADIR@/tabset
+ directory containing initialization files for the
+ terminal capability database @DATADIR@/terminfo ter-
+ minal capability database
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="terminfo.5.html">terminfo(5)</A></B> and 3x pages whose names begin "curs_" for
+ detailed routine descriptions.
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+ The <B>ncurses</B> library can be compiled with an option
+ (<B>-DUSE_GETCAP</B>) that falls back to the old-style /etc/term-
+ cap file if the terminal setup code cannot find a terminfo
+ entry corresponding to <B>TERM</B>. Use of this feature is not
+ recommended, as it essentially includes an entire termcap
+ compiler in the <B>ncurses</B> startup code, at significant cost
+ in core and startup cycles.
+
+ The <B>ncurses</B> library includes facilities for capturing
+ mouse events on certain terminals (including xterm). See
+ the <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B> manual page for details.
+
+ The <B>ncurses</B> library includes facilities for responding to
+ window resizing events, e.g., when running in an xterm.
+ See the <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B> and <B><A HREF="wresize.3x.html">wresize(3x)</A></B> manual pages for
+ details. In addition, the library may be configured with
+ a SIGWINCH handler.
+
+ The <B>ncurses</B> 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 <B><A HREF="define_key.3x.html">define_key(3x)</A></B> and <B><A HREF="keyok.3x.html">keyok(3x)</A></B> manual pages for
+ details.
+
+ The <B>ncurses</B> 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 <B><A HREF="use_default_colors.3x.html">use_default_colors(3x)</A></B> manual page for details.
+
+ The <B>ncurses</B> library includes a function for directing
+ application output to a printer attached to the terminal
+ device. See the <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B> manual page for details.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The <B>ncurses</B> library is intended to be BASE-level
+ conformant with the XSI Curses standard. Certain portions
+ of the EXTENDED XSI Curses functionality (including color
+ support) are supported. The following EXTENDED XSI Curses
+ calls in support of wide (multibyte) characters are not
+ yet implemented: <B>add_wch</B>, <B>add_wchnstr</B>, <B>add_wchstr</B>, <B>addnw-</B>
+ <B>str</B>, <B>addwstr</B>, <B>bkgrnd</B>, <B>bkgrndset</B>, <B>border_set</B>, <B>box_set</B>,
+ <B>echo_wchar</B>, <B>erasewchar</B>, <B>get_wch</B>, <B>get_wstr</B>, <B>getbkgrnd</B>,
+ <B>getcchar</B>, <B>getn_wstr</B>, <B>getwchtype</B>, <B>hline_set</B>, <B>in_wch</B>,
+ <B>in_wchnstr</B>, <B>in_wchstr</B>, <B>innwstr</B>, <B>ins_nwstr</B>, <B>ins_wch</B>,
+ <B>ins_wstr</B>, <B>inwchnstr</B>, <B>inwchstr</B>, <B>inwstr</B>, <B>key_name</B>, <B>kill-</B>
+ <B>wchar</B>, <B>mvadd_wch</B>, <B>mvadd_wchnstr</B>, <B>mvadd_wchstr</B>, <B>mvaddnwstr</B>,
+ <B>mvaddwstr</B>, <B>mvget_wch</B>, <B>mvget_wstr</B>, <B>mvgetn_wstr</B>, <B>mvh-</B>
+ <B>line_set</B>, <B>mvin_wch</B>, <B>mvinnwstr</B>, <B>mvins_nwstr</B>, <B>mvins_wch</B>,
+ <B>mvins_wstr</B>, <B>mvinwchnstr</B>, <B>mvinwchstr</B>, <B>mvinwchstr</B>, <B>mvinwstr</B>,
+ <B>mvvline_set</B>, <B>mvwadd_wch</B>, <B>mvwadd_wchnstr</B>, <B>mvwadd_wchstr</B>,
+ <B>mvwaddnwstr</B>, <B>mvwaddwstr</B>, <B>mvwget_ch</B>, <B>mvwget_wch</B>,
+ <B>mvwget_wstr</B>, <B>mvwgetn_wstr</B>, <B>mvwhline_set</B>, <B>mvwin_wch</B>,
+ <B>mvwin_wchnstr</B>, <B>mvwin_wchstr</B>, <B>mvwinnwstr</B>, <B>mvwins_nwstr</B>,
+ <B>mvwins_wch</B>, <B>mvwins_wstr</B>, <B>mvwinwchnstr</B>. <B>mvwinwstr</B>, <B>mvwv-</B>
+ <B>line_set</B>, <B>pecho_wchar</B>, <B>setcchar</B>, <B>slk_wset</B>, <B>term_attrs</B>,
+ <B>unget_wch</B>, <B>vhline_set</B>, <B>vid_attr</B>, <B>vid_puts</B>, <B>vline_set</B>,
+ <B>wadd_wch</B>, <B>wadd_wchnstr</B>, <B>wadd_wchstr</B>, <B>waddnwstr</B>, <B>waddwstr</B>,
+ <B>waddwstr</B>, <B>wbkgrnd</B>, <B>wbkgrndset</B>, <B>wbkgrndset</B>, <B>wborder_set</B>,
+ <B>wecho_wchar</B>, <B>wecho_wchar</B>, <B>wget_wch</B>, <B>wget_wstr</B>, <B>wgetbkgrnd</B>,
+ <B>wgetn_wstr</B>, <B>whline_set</B>, <B>win_wch</B>, <B>win_wchnstr</B>, <B>win_wchstr</B>,
+ <B>winnwstr</B>, <B>wins_nwstr</B>, <B>wins_wch</B>, <B>wins_wstr</B>, <B>winwchnstr</B>,
+ <B>winwchstr</B>, <B>winwstr</B>, <B>wunctrl</B>, <B>wvline_set</B>,
+
+ A small number of local differences (that is, individual
+ differences between the XSI Curses and <B>ncurses</B> calls) are
+ described in <B>PORTABILITY</B> sections of the library man
+ pages.
+
+ The routine <B>has_key</B> is not part of XPG4, nor is it present
+ in SVr4. See the <B><A HREF="curs_getch.3x.html">curs_getch(3x)</A></B> manual page for details.
+
+ The routine <B>slk_attr</B> is not part of XPG4, nor is it pre-
+ sent in SVr4. See the <B><A HREF="curs_slk.3x.html">curs_slk(3x)</A></B> manual page for
+ details.
+
+ The routines <B>getmouse</B>, <B>mousemask</B>, <B>ungetmouse</B>, <B>mouseinter-</B>
+ <B>val</B>, and <B>wenclose</B> relating to mouse interfacing are not
+ part of XPG4, nor are they present in SVr4. See the
+ <B><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></B> manual page for details.
+
+ The routine <B>mcprint</B> was not present in any previous curses
+ implementation. See the <B><A HREF="curs_print.3x.html">curs_print(3x)</A></B> manual page for
+ details.
+
+ The routine <B>wresize</B> is not part of XPG4, nor is it present
+ in SVr4. See the <B><A HREF="wresize.3x.html">wresize(3x)</A></B> manual page for details.
+
+ In historic curses versions, delays embedded in the capa-
+ bilities <B>cr</B>, <B>ind</B>, <B>cub1</B>, <B>ff</B> and <B>tab</B> activated corresponding
+ delay bits in the UNIX tty driver. In this implementa-
+ tion, all padding is done by NUL sends. This method is
+ slightly more expensive, but narrows the interface to the
+ UNIX kernel significantly and increases the package's
+ portability correspondingly.
+
+ In the XSI standard and SVr4 manual pages, many entry
+ points have prototype arguments of the for <B>char</B> <B>*const</B> (or
+ <B>cchar_t</B> <B>*const</B>, or <B>wchar_t</B> <B>*const</B>, or <B>void</B> <B>*const</B>).
+ Depending on one's interpretation of the ANSI C standard
+ (see section 3.5.4.1), these declarations are either (a)
+ meaningless, or (b) meaningless and illegal. The declara-
+ tion <B>const</B> <B>char</B> <B>*x</B> is a modifiable pointer to unmodifiable
+ data, but <B>char</B> <B>*const</B> <B>x</B>' is an unmodifiable pointer to
+ modifiable data. Given that C passes arguments by value,
+ <B><type></B> <B>*const</B> as a formal type is at best dubious. Some
+ compilers choke on the prototypes. Therefore, in this
+ implementation, they have been changed to <B>const</B> <B><type></B> <B>*</B>
+ globally.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <B><curses.h></B> automatically includes the
+ header files <B><stdio.h></B> and <B><unctrl.h></B>.
+
+ If standard output from a <B>ncurses</B> 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.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
+ Based on pcurses by Pavel Curtis.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ panel - panel stack extension for curses
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>#include</B> <B><panel.h></B>
+
+ <B>cc</B> <B>[flags]</B> <B>sourcefiles</B> <B>-lpanel</B> <B>-lncurses</B>
+
+ <B>PANEL</B> <B>*new_panel(WINDOW</B> <B>*win)</B>
+ <B>int</B> <B>bottom_panel(PANEL</B> <B>*pan)</B>
+ <B>int</B> <B>top_panel(PANEL</B> <B>*pan)</B>
+ <B>int</B> <B>show_panel(PANEL</B> <B>*pan)</B>
+ <B>void</B> <B>update_panels();</B>
+ <B>int</B> <B>hide_panel(PANEL</B> <B>*pan)</B>
+ <B>WINDOW</B> <B>*panel_window(const</B> <B>PANEL</B> <B>*pan)</B>
+ <B>int</B> <B>replace_panel(PANEL</B> <B>*pan,</B> <B>WINDOW</B> <B>*window)</B>
+ <B>int</B> <B>move_panel(PANEL</B> <B>*pan,</B> <B>int</B> <B>starty,</B> <B>int</B> <B>startx)</B>
+ <B>int</B> <B>panel_hidden(const</B> <B>PANEL</B> <B>*pan)</B>
+ <B>PANEL</B> <B>*panel_above(const</B> <B>PANEL</B> <B>*pan)</B>
+ <B>PANEL</B> <B>*panel_below(const</B> <B>PANEL</B> <B>*pan)</B>
+ <B>int</B> <B>set_panel_userptr(PANEL</B> <B>*pan,</B> <B>const</B> <B>void</B> <B>*ptr)</B>
+ <B>const</B> <B>void</B> <B>*panel_userptr(const</B> <B>PANEL</B> <B>*pan)</B>
+ <B>int</B> <B>del_panel(PANEL</B> <B>*pan)</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ Panels are <B><A HREF="ncurses.3x.html">curses(3x)</A></B> 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 <B>stdscr</B> 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 <B>stdscr</B>
+ 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, hides, and show panels,
+ as well as position a panel at any desired location in the
+ stack.
+
+ Panel routines are a functional layer added to <B><A HREF="ncurses.3x.html">curses(3x)</A></B>,
+ make only high-level curses calls, and work anywhere ter-
+ minfo curses does.
+
+
+</PRE>
+<H2>FUNCTIONS</H2><PRE>
+ <B>new_panel(win)</B>
+ allocates a <B>PANEL</B> structure, associates it with
+ <B>win</B>, 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.
+
+ <B>void</B> <B>update_panels()</B>
+ 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 func-
+ tion responsible for updating the physical screen.
+
+ <B>del_panel(pan)</B>
+ removes the given panel from the stack and deallo-
+ cates the <B>PANEL</B> structure (but not its associated
+ window).
+
+ <B>hide_panel(pan)</B>
+ removes the given panel from the panel stack and
+ thus hides it from view. The <B>PANEL</B> structure is not
+ lost, merely removed from the stack.
+
+ <B>show_panel(pan)</B>
+ makes a hidden panel visible by placing it on top
+ of the panels in the panel stack. See COMPATIBILITY
+ below.
+
+ <B>top_panel(pan)</B>
+ puts the given visible panel on top of all panels
+ in the stack. See COMPATIBILITY below.
+
+ <B>bottom_panel(pan)</B>
+ puts panel at the bottom of all panels.
+
+ <B>move_panel(pan,starty,startx)</B>
+ moves the given panel window so that its upper-left
+ corner is at <B>starty</B>, <B>startx</B>. It does not change
+ the position of the panel in the stack. Be sure to
+ use this function, not <B>mvwin()</B>, to move a panel
+ window.
+
+ <B>replace_panel(pan,window)</B>
+ replaces the current window of panel with <B>window</B>
+ (useful, for example if you want to resize a panel;
+ if you're using <B>ncurses</B>, you can call <B>replace_panel</B>
+ on the output of <B><A HREF="wresize.3x.html">wresize(3x)</A></B>). It does not change
+ the position of the panel in the stack.
+
+ <B>panel_above(pan)</B>
+ returns a pointer to the panel above pan. If the
+ panel argument is <B>(PANEL</B> <B>*)0</B>, it returns a pointer
+ to the bottom panel in the stack.
+
+ <B>panel_below(pan)</B>
+ returns a pointer to the panel just below pan. If
+ the panel argument is <B>(PANEL</B> <B>*)0</B>, it returns a
+ pointer to the top panel in the stack.
+
+ <B>set_panel_userptr(pan,ptr)</B>
+ sets the panel's user pointer.
+
+ <B>panel_userptr(pan)</B>
+ returns the user pointer for a given panel.
+
+ <B>panel_window(pan)</B>
+ returns a pointer to the window of the given panel.
+
+
+</PRE>
+<H2>DIAGNOSTICS</H2><PRE>
+ Each routine that returns a pointer returns <B>NULL</B> if an
+ error occurs. Each routine that returns an int value
+ returns <B>OK</B> if it executes successfully and <B>ERR</B> if not.
+
+
+</PRE>
+<H2>COMPATIBILITY</H2><PRE>
+ 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 program-
+ ming interface is unchanged). The <B>PANEL</B> data structures
+ are merely similar. The programmer is cautioned not to
+ directly use <B>PANEL</B> fields.
+
+ The functions <B>show_panel()</B> and <B>top_panel()</B> are identical
+ in this implementation, and work equally well with dis-
+ played or hidden panels. In the native System V implemen-
+ tation, <B>show_panel()</B> is intended for making a hidden panel
+ visible (at the top of the stack) and <B>top_panel()</B> 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>NOTE</H2><PRE>
+ 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 give you a link
+ error using GNU <B><A HREF="ld.1.html">ld(1)</A></B> and some other linkers).
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ panel.h interface for the panels library
+
+ libpanel.a the panels library itself
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>
+
+
+</PRE>
+<H2>AUTHOR</H2><PRE>
+ 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.
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>resizeterm</STRONG> - change the curses terminal size
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>resizeterm</B> - change the curses terminal size
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+ <B>#include</B> <B><curses.h></B>
- <STRONG>int</STRONG> <STRONG>resizeterm(int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
+ <B>int</B> <B>resizeterm(int</B> <B>lines,</B> <B>int</B> <B>columns);</B>
</PRE>
<H2>DESCRIPTION</H2><PRE>
This is an extension to the curses library. It provides
- callers with a hook into the <STRONG>ncurses</STRONG> data to resize win-
+ callers with a hook into the <B>ncurses</B> data to resize win-
dows, primarily for use by programs running in an X Window
- terminal (e.g., xterm). The function <STRONG>resizeterm</STRONG> resizes
+ terminal (e.g., xterm). The function <B>resizeterm</B> resizes
the standard and current windows to the specified dimen-
sions, and adjusts other bookkeeping data used by the
- <STRONG>ncurses</STRONG> library that record the window dimensions.
+ <B>ncurses</B> library that record the window dimensions.
When resizing the windows, the function blank-fills the
areas that are extended. The calling application should
</PRE>
<H2>RETURN VALUE</H2><PRE>
- The function returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
+ The function returns the integer <B>ERR</B> upon failure and <B>OK</B>
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 windows.
<H2>NOTES</H2><PRE>
While this function is intended to be used to support a
signal handler (i.e., for SIGWINCH), care should be taken
- to avoid invoking it in a context where <STRONG>malloc</STRONG> or <STRONG>realloc</STRONG>
+ to avoid invoking it in a context where <B>malloc</B> or <B>realloc</B>
may have been interrupted, since it uses those functions.
If ncurses is configured to supply its own SIGWINCH han-
- dler, the <STRONG>resizeterm</STRONG> function ungetch's a <STRONG>KEY_RESIZE</STRONG> which
- will be read on the next call to <STRONG>getch</STRONG>. This is used to
+ dler, the <B>resizeterm</B> function ungetch's a <B>KEY_RESIZE</B> which
+ will be read on the next call to <B>getch</B>. 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.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="wresize.3x.html">wresize(3X)</A></STRONG>.
+ <B><A HREF="wresize.3x.html">wresize(3x)</A></B>.
</PRE>
for BSD curses).
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ term - format of compiled term file.
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>term</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ Compiled terminfo descriptions are placed under the direc-
+ tory <B>@DATADIR@/terminfo</B>. In order to avoid a linear
+ search of a huge UNIX system directory, a two-level scheme
+ is used: <B>/c/name</B> where <I>name</I> is the name of the terminal,
+ and <I>c</I> is the first character of <I>name</I>. Thus, <I>act4</I> can be
+ found in the file <B>@DATADIR@/terminfo/a/act4</B>. Synonyms for
+ the same terminal are implemented by multiple links to the
+ same compiled file.
+
+ 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 <I>tic</I> program, and
+ read by the routine <I>setupterm</I>. 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 section; (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.
+
+ Note that it is possible for <I>setupterm</I> to expect a differ-
+ ent set of capabilities than are actually present in the
+ file. Either the database may have been updated since
+ <I>setupterm</I> 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 <I>setupterm</I>
+ 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 <B><A HREF="terminfo.5.html">terminfo(5)</A></B> for detailed discus-
+ sion of terminfo source compatibility issues.
+
+ 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==%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 ........ .
+
+
+ Some limitations: total compiled entries cannot exceed
+ 4096 bytes. The name field cannot exceed 128 bytes.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ @DATADIR@/terminfo/*/* compiled terminal capability data
+ base
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ term - conventions for naming terminal types
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The environment variable <B>TERM</B> 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 <B>TERM</B> value will be set on a per-line basis by
+ either <B>/etc/inittab</B> (Linux and System-V-like UNIXes) or
+ <B>/etc/ttys</B> (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 <B>TERM</B> 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 <B>TERM</B> set-
+ ting to your taste in your shell profile. The <B><A HREF="tset.1.html">tset(1)</A></B>
+ 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 <B>TERM</B> 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 @DATADIR@/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 <B>termcap</B> format they replace); to examine an entry,
+ you must use the <B><A HREF="infocmp.1.html">infocmp(1)</A></B> command. Invoke it as fol-
+ lows:
+
+ infocmp <I>entry-name</I>
+
+ where <I>entry-name</I> is the name of the type you wish to exam-
+ ine (and the name of its capability file the subdirectory
+ of @DATADIR@/terminfo named for its first letter). This
+ command dumps a capability file in the text format
+ described by <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+ The first line of a <B><A HREF="terminfo.5.html">terminfo(5)</A></B> 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 <I>primary</I>
+ <I>name</I>, and is the one to use when setting <B>TERM</B>. 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 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
+ <B>hp</B> for Hewlett-Packard, <B>wy</B> for Wyse, or <B>att</B> for AT&T ter-
+ minals), or a common name of the terminal line (<B>vt</B> for the
+ VT series of terminals from DEC, or <B>sun</B> for Sun Microsys-
+ tems workstation consoles, or <B>regent</B> 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 <B>vt100</B>, <B>hp2621</B>, <B>wy50</B>.
+
+ The root name for a PC-Unix console type should be the OS
+ name, i.e. <B>linux</B>, <B>bsdos</B>, <B>freebsd</B>, <B>netbsd</B>. It should <I>not</I>
+ be <B>console</B> 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 doesn't
+ fit one of the standard ANSI or vt100 types) should be the
+ program name or a readily recognizable abbreviation of it
+ (i.e. <B>versaterm</B>, <B>ctrm</B>).
+
+ 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
+ <B>fubar-30-rv</B> (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 <B>use</B> 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 <B>TERM</B>
+ environment variable when no -T option is specified.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ For maximum compatibility with older System V UNIXes,
+ names and aliases should be unique within the first 14
+ characters.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ @DATADIR@/terminfo/?/*
+ compiled terminal capability data base
+
+ /etc/inittab
+ tty line initialization (AT&T-like UNIXes).
+
+ /etc/ttys
+ tty line initialization (BSD-like UNIXes).
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>, <B><A HREF="term.5.html">term(5)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ terminfo - terminal capability data base
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ @DATADIR@/terminfo/*/*
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ <I>Terminfo</I> is a data base describing terminals, used by
+ screen-oriented programs such as <B><A HREF="nvi.1.html">nvi(1)</A></B>, <B><A HREF="rogue.1.html">rogue(1)</A></B> and
+ libraries such as <B><A HREF="ncurses.3x.html">curses(3x)</A></B>. <I>Terminfo</I> 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.
+
+ Entries in <I>terminfo</I> consist of a sequence of `,' separated
+ fields (embedded commas may be escaped with a backslash
+ or notated as \072). 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.
+
+ 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:
+
+ <B>Suffix</B> <B>Meaning</B> <B>Example</B>
+ -<I>nn</I> Number of lines on the screen aaa-60
+ -<I>n</I>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 (> 80 columns, usually 132) vt100-w
+
+ For more on terminal naming conventions, see the <B>term(7)</B>
+ manual page.
+
+ <B>Capabilities</B>
+ 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 <B>variable</B> is the name by which the programmer (at the
+ terminfo level) accesses the capability.
+
+ The <B>capname</B> 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 <B>termcap</B> 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 <B>Caps</B> 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>i</I>).
+
+ (P*) indicates that padding may vary in proportion to
+ the number of lines affected
+
+ (#<I>i</I>) indicates the <I>i</I>th parameter.
+
+
+ These are the boolean capabilities:
+
+ <B>Variable</B> <B>Cap-</B> <B>TCap</B> <B>Description</B>
+ <B>Booleans</B> <B>name</B> <B>Code</B>
+ 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 won't 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 won't 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 can't print ~'s
+ (hazeltine)
+ transparent_underline ul ul underline character
+ overstrikes
+ xon_xoff xon xo terminal uses
+ xon/xoff handshaking
+
+ These are the numeric capabilities:
+
+ <B>Variable</B> <B>Cap-</B> <B>TCap</B> <B>Description</B>
+ <B>Numeric</B> <B>name</B> <B>Code</B>
+ 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 can't 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.
+
+ <B>Variable</B> <B>Cap-</B> <B>TCap</B> <B>Description</B>
+ <B>Numeric</B> <B>name</B> <B>Code</B>
+ 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:
+
+ <B>Variable</B> <B>Cap-</B> <B>TCap</B> <B>Description</B>
+ <B>String</B> <B>name</B> <B>Code</B>
+ 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
+ change_line_pitch lpi ZB Change number of
+ lines per inch
+ change_res_horz chr ZC Change horizontal
+ resolution
+ change_res_vert cvr ZD Change vertical res-
+ olution
+ 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
+ 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
+ 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 at
+ (#1,#2)
+ 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 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
+ 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 #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
+
+
+
+ set_left_margin_parm smglp Zm Set left (right)
+ margin at column #1
+ (#2)
+ 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
+ (#2)
+ 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
+ stop_bit_image rbim Zs Stop printing bit
+ image graphics
+ stop_char_set_def rcsd Zt End definition of
+ character set
+ 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
+ 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.
+
+ <B>Variable</B> <B>Cap-</B> <B>TCap</B> <B>Description</B>
+ <B>String</B> <B>name</B> <B>Code</B>
+ 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 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 rectan-
+ gualar bit image
+ region
+ device_type devt dv Indicate lan-
+ guage/codeset sup-
+ port
+ display_pc_char dispc S1 Display PC charac-
+ ter
+ 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
+ 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 code set
+ 0 (EUC set 0,
+ ASCII)
+ set1_des_seq s1ds s1 Shift to code set
+ 1
+ set2_des_seq s2ds s2 Shift to code set
+ 2
+ set3_des_seq s3ds s3 Shift to code set
+ 3
+ set_a_background setab AB Set background
+ color using ANSI
+ escape
+ set_a_foreground setaf AF Set foreground
+ color 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
+ 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 <B>ncurses</B> 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!
+
+ <B>Variable</B> <B>Cap-</B> <B>TCap</B> <B>Description</B>
+ <B>String</B> <B>name</B> <B>Code</B>
+ 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
+
+
+ <B>A</B> <B>Sample</B> <B>Entry</B>
+ The following entry, describing an ANSI-standard terminal,
+ is representative of what a <B>terminfo</B> 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 <I>terminfo</I> 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.
+
+
+ <B>Types</B> <B>of</B> <B>Capabilities</B>
+ All capabilities have names. For instance, the fact that
+ ANSI-standard terminals have <I>automatic</I> <I>margins</I> (i.e., an
+ automatic return and line-feed when the end of a line is
+ reached) is indicated by the capability <B>am</B>. Hence the
+ description of ansi includes <B>am</B>. Numeric capabilities are
+ followed by the character `#' and then a positive value.
+ Thus <B>cols</B>, 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 <B>el</B> (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 <B>\E</B> and <B>\e</B> map to an ESCAPE character, <B>^x</B> maps to a
+ control-x for any appropriate x, and the sequences <B>\n</B> <B>\l</B>
+ <B>\r</B> <B>\t</B> <B>\b</B> <B>\f</B> <B>\s</B> give a newline, line-feed, return, tab,
+ backspace, form-feed, and space. Other escapes include <B>\^</B>
+ for <B>^</B>, <B>\\</B> for <B>\</B>, <B>\</B>, for comma, <B>\:</B> for <B>:</B>, and <B>\0</B> for null.
+ (<B>\0</B> will produce \200, which does not terminate a string
+ but behaves as a null character on most terminals, provid-
+ ing CS7 is specified. See <B><A HREF="stty.1.html">stty(1)</A></B>.) Finally, characters
+ may be given as three octal digits after a <B>\</B>.
+
+ A delay in milliseconds may appear anywhere in a string
+ capability, enclosed in $<..> brackets, as in <B>el</B>=\EK$<5>,
+ and padding characters are supplied by <I>tputs</I> 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 <I>lines</I>
+ affected.) Normally, padding is advisory if the device
+ has the <B>xon</B> 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 <B>xon</B> 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 <B>ind</B> in the example above.
+
+
+ <B>Fetching</B> <B>Compiled</B> <B>Descriptions</B>
+ 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 <B>ncurses</B> version of the
+ terminfo reader code will instead look in the directory
+ <B>$HOME/.terminfo</B> 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 <I>@DATADIR@/terminfo</I>). 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,
+ <I>@DATADIR@/terminfo</I>.
+
+ (Neither the <B>$HOME/.terminfo</B> lookups nor TERMINFO_DIRS
+ extensions are supported under stock System V ter-
+ minfo/curses.)
+
+
+ <B>Preparing</B> <B>Descriptions</B>
+ 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</I> and to build up a description gradually, using
+ partial descriptions with <I>vi</I> 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 <I>terminfo</I> 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.
+
+
+ <B>Basic</B> <B>Capabilities</B>
+ The number of columns on each line for the terminal is
+ given by the <B>cols</B> numeric capability. If the terminal is
+ a CRT, then the number of lines on the screen is given by
+ the <B>lines</B> 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 <B>am</B> capability. If the termi-
+ nal can clear its screen, leaving the cursor in the home
+ position, then this is given by the <B>clear</B> string capabil-
+ ity. If the terminal overstrikes (rather than clearing a
+ position when a character is struck over) then it should
+ have the <B>os</B> capability. If the terminal is a printing
+ terminal, with no soft copy unit, give it both <B>hc</B> and <B>os</B>.
+ (<B>os</B> 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 <B>cr</B>. (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 <B>bel</B>.
+
+ If there is a code to move the cursor one position to the
+ left (such as backspace) that capability should be given
+ as <B>cub1</B>. Similarly, codes to move to the right, up, and
+ down should be given as <B>cuf1</B>, <B>cuu1</B>, and <B>cud1</B>. These local
+ cursor motions should not alter the text they pass over,
+ for example, you would not normally use `<B>cuf1</B>= ' because
+ the space would erase the character moved over.
+
+ A very important point here is that the local cursor
+ motions encoded in <I>terminfo</I> are undefined at the left and
+ top edges of a CRT terminal. Programs should never
+ attempt to backspace around the left edge, unless <B>bw</B> 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</B> (index) string.
+
+ To scroll text down, a program goes to the top left corner
+ of the screen and sends the <B>ri</B> (reverse index) string.
+ The strings <B>ind</B> and <B>ri</B> are undefined when not on their
+ respective corners of the screen.
+
+ Parameterized versions of the scrolling sequences are <B>indn</B>
+ and <B>rin</B> which have the same semantics as <B>ind</B> and <B>ri</B> except
+ that they take one parameter, and scroll that many lines.
+ They are also undefined except at the appropriate edge of
+ the screen.
+
+ The <B>am</B> 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</B> from the last column.
+ The only local motion which is defined from the left edge
+ is if <B>bw</B> is given, then a <B>cub1</B> from the left edge will
+ move to the right edge of the previous row. If <B>bw</B> 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
+ <I>terminfo</I> file usually assumes that this is on; i.e., <B>am</B>.
+ If the terminal has a command which moves to the first
+ column of the next line, that command can be given as <B>nel</B>
+ (newline). It does not matter if the command clears the
+ remainder of the current line, so if the terminal has no
+ <B>cr</B> and <B>lf</B> it may still be possible to craft a working <B>nel</B>
+ 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,
+
+
+ <B>Parameterized</B> <B>Strings</B>
+ Cursor addressing and other strings requiring parameters
+ in the terminal are described by a parameterized string
+ capability, with <B><A HREF="printf.3S.html">printf(3S)</A></B> like escapes <B>%x</B> in it. For
+ example, to address the cursor, the <B>cup</B> 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 <B>mrcup</B>.
+
+ The parameter mechanism uses a stack and special <B>%</B> 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 <B>%</B> encodings have the following meanings:
+
+ %% outputs `%'
+ %<I>[[</I>:<I>]flags][width[.precision]][</I>doxXs<I>]</I>
+ as in <B>printf</B>, flags are [-+#] and space
+ %c print pop() like %c in printf()
+ %s print pop() like %s in printf()
+
+ %p[1-9] push <I>i</I>'th 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
+ %'<I>c</I>' char constant <I>c</I>
+ %{<I>nn</I>} integer constant <I>nn</I>
+ %l push strlen(pop)
+
+ %+ %- %* %/ %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 parameters (for ANSI terminals)
+
+ %? expr %t thenpart %e elsepart %;
+ if-then-else, %e elsepart is optional.
+ else-if's are possible a la Algol 68:
+ %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;
+ ci are conditions, bi are bodies.
+
+ 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 <B>cup</B> capability is "cup=6\E&%p2%2dc%p1%2dY".
+
+ The Microterm ACT-IV needs the current row and column sent
+ preceded by a <B>^T</B>, 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 (<B>cub1</B>), and to
+ move the cursor up one line on the screen (<B>cuu1</B>). This is
+ necessary because it is not always safe to transmit <B>\n</B> <B>^D</B>
+ and <B>\r</B>, 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.
+
+
+ <B>Cursor</B> <B>Motions</B>
+ If the terminal has a fast way to home the cursor (to very
+ upper left corner of screen) then this can be given as
+ <B>home</B>; similarly a fast way of getting to the lower left-
+ hand corner can be given as <B>ll</B>; this may involve going up
+ with <B>cuu1</B> from the home position, but a program should
+ never do this itself (unless <B>ll</B> 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 <B>home</B>.)
+
+ If the terminal has row or column absolute cursor address-
+ ing, these can be given as single parameter capabilities
+ <B>hpa</B> (horizontal position absolute) and <B>vpa</B> (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 <B>cup</B>. If there are parameter-
+ ized local motions (e.g., move <I>n</I> spaces to the right)
+ these can be given as <B>cud</B>, <B>cub</B>, <B>cuf</B>, and <B>cuu</B> with a single
+ parameter indicating how many spaces to move. These are
+ primarily useful if the terminal does not have <B>cup</B>, 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 <B>smcup</B> and <B>rmcup</B>. 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 <B>smcup</B> sets
+ the command character to be the one used by terminfo. If
+ the <B>smcup</B> sequence will not restore the screen after an
+ <B>rmcup</B> sequence is output (to the state prior to outputting
+ <B>rmcup</B>), specify <B>nrrmc</B>.
+
+
+ <B>Area</B> <B>Clears</B>
+ 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 <B>el</B>. 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
+ <B>el1</B>. If the terminal can clear from the current position
+ to the end of the display, then this should be given as
+ <B>ed</B>. <B>Ed</B> 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</B> is not available.)
+
+
+ <B>Insert/delete</B> <B>line</B> <B>and</B> <B>vertical</B> <B>motions</B>
+ If the terminal can open a new blank line before the line
+ where the cursor is, this should be given as <B>il1</B>; 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 <B>dl1</B>; this is done only from the first
+ position on the line to be deleted. Versions of <B>il1</B> and
+ <B>dl1</B> which take a single parameter and insert or delete
+ that many lines can be given as <B>il</B> and <B>dl</B>.
+
+ If the terminal has a settable scrolling region (like the
+ vt100) the command to set this can be described with the
+ <B>csr</B> 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 <B>csr</B> on a properly chosen region; the <B>sc</B> and <B>rc</B> (save
+ and restore cursor) commands may be useful for ensuring
+ that your synthesized insert/delete string does not move
+ the cursor. (Note that the <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B> library does this
+ synthesis automatically, so you need not compose
+ insert/delete strings for an entry with <B>csr</B>).
+
+ 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 <B>ri</B> or <B>ind</B> on many terminals without a
+ true insert/delete line, and is often faster even on ter-
+ minals with those features.
+
+ The boolean <B>non_dest_scroll_region</B> 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 <B>ri</B> followed by <B>dl1</B> or <B>ind</B>. If the data
+ scrolled off the bottom of the region by the <B>ri</B> re-
+ appears, then scrolling is non-destructive. System V and
+ XSI Curses expect that <B>ind</B>, <B>ri</B>, <B>indn</B>, and <B>rin</B> will simu-
+ late destructive scrolling; their documentation cautions
+ you not to define <B>csr</B> unless this is true. This <B>curses</B>
+ implementation is more liberal and will do explicit erases
+ after scrolling if <B>ndstr</B> 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 <B>wind</B>. 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
+ <B>da</B> capability should be given; if display memory can be
+ retained below, then <B>db</B> should be given. These indicate
+ that deleting a line or scrolling may bring non-blank
+ lines up from below or that scrolling back with <B>ri</B> may
+ bring down non-blank lines.
+
+
+ <B>Insert/Delete</B> <B>Character</B>
+ There are two basic kinds of intelligent terminals with
+ respect to insert/delete character which can be described
+ using <I>terminfo.</I> 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 <B>in</B>, which stands
+ for "insert null". While these are two logically separate
+ attributes (one line vs. multi-line insert mode, and spe-
+ cial treatment of untyped spaces) we have seen no termi-
+ nals 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 <B>smir</B> the
+ sequence to get into insert mode. Give as <B>rmir</B> the
+ sequence to leave insert mode. Now give as <B>ich1</B> any
+ sequence needed to be sent just before sending the charac-
+ ter to be inserted. Most terminals with a true insert
+ mode will not give <B>ich1</B>; 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 <B>ich1</B>. 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 <B>ich</B> sequences do not require previous smir,
+ and most smir insert modes do not require <B>ich1</B> before each
+ character. Therefore, the new <B>curses</B> actually assumes
+ this is the case and uses either <B>rmir</B>/<B>smir</B> or <B>ich</B>/<B>ich1</B> 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 <B>rmir</B>/<B>smir</B> sequences in <B>ich1</B>.
+
+ If post insert padding is needed, give this as a number of
+ milliseconds in <B>ip</B> (a string option). Any other sequence
+ which may need to be sent after an insert of a single
+ character may also be given in <B>ip</B>. If your terminal needs
+ both to be placed into an `insert mode' and a special code
+ to precede each inserted character, then both <B>smir</B>/<B>rmir</B>
+ and <B>ich1</B> can be given, and both will be used. The <B>ich</B>
+ capability, with one parameter, <I>n</I>, will repeat the effects
+ of <B>ich1</B> <I>n</I> times.
+
+ If padding is necessary between characters typed while not
+ in insert mode, give this as a number of milliseconds
+ padding in <B>rmp</B>.
+
+ 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 <B>mir</B> to speed up inserting in this case.
+ Omitting <B>mir</B> will affect only speed. Some terminals
+ (notably Datamedia's) must not have <B>mir</B> because of the way
+ their insert mode works.
+
+ Finally, you can specify <B>dch1</B> to delete a single charac-
+ ter, <B>dch</B> with one parameter, <I>n</I>, to delete <I>n</I> <I>characters,</I>
+ and delete mode by giving <B>smdc</B> and <B>rmdc</B> to enter and exit
+ delete mode (any mode the terminal needs to be placed in
+ for <B>dch1</B> to work).
+
+ A command to erase <I>n</I> characters (equivalent to outputting
+ <I>n</I> blanks without moving the cursor) can be given as <B>ech</B>
+ with one parameter.
+
+
+ <B>Highlighting,</B> <B>Underlining,</B> <B>and</B> <B>Visible</B> <B>Bells</B>
+ 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 <I>stand-</I>
+ <I>out</I> <I>mode</I>, 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
+ <B>smso</B> and <B>rmso</B>, 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 <B>xmc</B> should be given to tell how many spaces are left.
+
+ Codes to begin underlining and end underlining can be
+ given as <B>smul</B> and <B>rmul</B> 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 <B>uc</B>.
+
+ Other capabilities to enter various highlighting modes
+ include <B>blink</B> (blinking) <B>bold</B> (bold or extra bright) <B>dim</B>
+ (dim or half-bright) <B>invis</B> (blanking or invisible text)
+ <B>prot</B> (protected) <B>rev</B> (reverse video) <B>sgr0</B> (turn off <I>all</I>
+ attribute modes) <B>smacs</B> (enter alternate character set
+ mode) and <B>rmacs</B> (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 <B>sgr</B> (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 <B>sgr</B>, only those for which
+ corresponding separate attribute commands exist.
+
+ For example, the DEC vt220 supports most of the modes:
+
+ <B>tparm</B> <B>parameter</B> <B>attribute</B> <B>escape</B> <B>sequence</B>
+
+ 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
+
+ <B>sequence</B> <B>when</B> <B>to</B> <B>output</B> <B>terminfo</B> <B>translation</B>
+
+ \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.
+ Terminals with the ``magic cookie'' glitch (<B>xmc</B>) 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</B> 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 <B>flash</B>; 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 <B>cvvis</B>. If there
+ is a way to make the cursor completely invisible, give
+ that as <B>civis</B>. The capability <B>cnorm</B> 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 <B>ul</B>. If a
+ character overstriking another leaves both characters on
+ the screen, specify the capability <B>os</B>. If overstrikes are
+ erasable with a blank, then this should be indicated by
+ giving <B>eo</B>.
+
+
+ <B>Keypad</B> <B>and</B> <B>Function</B> <B>Keys</B>
+ 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 <B>smkx</B> and
+ <B>rmkx</B>. 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 <B>kcub1,</B> <B>kcuf1,</B>
+ <B>kcuu1,</B> <B>kcud1,</B> and <B>khome</B> respectively. If there are func-
+ tion keys such as f0, f1, ..., f10, the codes they send
+ can be given as <B>kf0,</B> <B>kf1,</B> <B>...,</B> <B>kf10</B>. If these keys have
+ labels other than the default f0 through f10, the labels
+ can be given as <B>lf0,</B> <B>lf1,</B> <B>...,</B> <B>lf10</B>. The codes transmit-
+ ted by certain other special keys can be given: <B>kll</B> (home
+ down), <B>kbs</B> (backspace), <B>ktbc</B> (clear all tabs), <B>kctab</B>
+ (clear the tab stop in this column), <B>kclr</B> (clear screen or
+ erase key), <B>kdch1</B> (delete character), <B>kdl1</B> (delete line),
+ <B>krmir</B> (exit insert mode), <B>kel</B> (clear to end of line), <B>ked</B>
+ (clear to end of screen), <B>kich1</B> (insert character or enter
+ insert mode), <B>kil1</B> (insert line), <B>knp</B> (next page), <B>kpp</B>
+ (previous page), <B>kind</B> (scroll forward/down), <B>kri</B> (scroll
+ backward/up), <B>khts</B> (set a tab stop in this column). In
+ addition, if the keypad has a 3 by 3 array of keys includ-
+ ing the four arrow keys, the other five keys can be given
+ as <B>ka1</B>, <B>ka3</B>, <B>kb2</B>, <B>kc1</B>, and <B>kc3</B>. 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 <B>pfkey</B>,
+ <B>pfloc</B>, and <B>pfx</B>. A string to program screen labels should
+ be specified as <B>pln</B>. 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 <B>pfkey</B> causes pressing the given key
+ to be the same as the user typing the given string; <B>pfloc</B>
+ causes the string to be executed by the terminal in local;
+ and <B>pfx</B> causes the string to be transmitted to the com-
+ puter.
+
+ The capabilities <B>nlab</B>, <B>lw</B> and <B>lh</B> 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 <B>smln</B> and <B>rmln</B>. <B>smln</B> is normally output after one
+ or more pln sequences to make sure that the change becomes
+ visible.
+
+
+ <B>Tabs</B> <B>and</B> <B>Initialization</B>
+ If the terminal has hardware tabs, the command to advance
+ to the next tab stop can be given as <B>ht</B> (usually control
+ I). A ``back-tab'' command which moves leftward to the
+ preceding tab stop can be given as <B>cbt</B>. 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</B> or <B>cbt</B> even if they are pre-
+ sent, since the user may not have the tab stops properly
+ set. If the terminal has hardware tabs which are ini-
+ tially set every <I>n</I> spaces when the terminal is powered up,
+ the numeric parameter <B>it</B> is given, showing the number of
+ spaces the tabs are set to. This is normally used by the
+ <I>tset</I> 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 <B>is1</B>, <B>is2</B>, and <B>is3</B>, initializa-
+ tion strings for the terminal, <B>iprog</B>, the path name of a
+ program to be run to initialize the terminal, and <B>if</B>, 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</I> option
+ of the <I>tput</I> program, each time the user logs in. They
+ will be printed in the following order: run the program
+ <B>iprog</B>; output <B>is1</B>; <B>is2</B>; set the margins using <B>mgc</B>, <B>smgl</B>and
+ <B>smgr</B>; set tabs using <B>tbc</B> and <B>hts</B>; print the file <B>if</B>; and
+ finally output <B>is3</B>.
+
+ Most initialization is done with <B>is2</B>. Special terminal
+ modes can be set up without duplicating strings by putting
+ the common sequences in <B>is2</B> and special cases in <B>is1</B> and
+ <B>is3</B>. A pair of sequences that does a harder reset from a
+ totally unknown state can be analogously given as <B>rs1</B>,
+ <B>rs2</B>, <B>rf</B>, and <B>rs3</B>, analogous to <B>is2</B> and <B>if</B>. These strings
+ are output by the <I>reset</I> program, which is used when the
+ terminal gets into a wedged state. Commands are normally
+ placed in <B>rs1</B>, <B>rs2</B> <B>rs3</B> and <B>rf</B> only if they produce annoy-
+ ing effects on the screen and are not necessary when log-
+ ging in. For example, the command to set the vt100 into
+ 80-column mode would normally be part of <B>is2</B>, but it
+ causes an annoying glitch of the screen and is not nor-
+ mally needed since the terminal is usually already in 80
+ column mode.
+
+ If there are commands to set and clear tab stops, they can
+ be given as <B>tbc</B> (clear all tab stops) and <B>hts</B> (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 <B>is2</B> or
+ <B>if</B>.
+
+ <B>Delays</B> <B>and</B> <B>Padding</B>
+ Many older and slower terminals don't 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 <B>xon</B>. This capa-
+ bility suppresses the emission of padding. You can also
+ set it for memory-mapped console devices effectively that
+ don't 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 <B>pb</B> (padding baud rate) is given, padding is suppressed
+ at baud rates below the value of <B>pb</B>. If the entry has no
+ padding baud rate, then whether padding is emitted or not
+ is completely controlled by <B>xon</B>.
+
+ If the terminal requires other than a null (zero) charac-
+ ter as a pad, then this can be given as <B>pad</B>. Only the
+ first character of the <B>pad</B> string is used.
+
+ <B>Status</B> <B>Lines</B>
+ Some terminals have an extra `status line' which is not
+ normally used by software (and thus not counted in the
+ terminal's <B>lines</B> 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 <B>hs</B> capability.
+
+ Some terminals with status lines need special sequences to
+ access the status line. These may be expressed as a
+ string with single parameter <B>tsl</B> which takes the cursor to
+ a given zero-origin column on the status line. The capa-
+ bility <B>fsl</B> must return to the main-screen cursor positions
+ before the last <B>tsl</B>. You may need to embed the string
+ values of <B>sc</B> (save cursor) and <B>rc</B> (restore cursor) in <B>tsl</B>
+ and <B>fsl</B> 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 <B>wsl</B>.
+
+ A command to erase or blank the status line may be speci-
+ fied as <B>dsl</B>.
+
+ The boolean capability <B>eslok</B> specifies that escape
+ sequences, tabs, etc. work ordinarily in the status line.
+
+ The <B>ncurses</B> implementation does not yet use any of these
+ capabilities. They are documented here in case they ever
+ become important.
+
+
+ <B>Line</B> <B>Graphics</B>
+ Many terminals have alternate character sets useful for
+ forms-drawing. Terminfo and <B>curses</B> 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 <B>acsc</B> capability.
+
+ <B>Glyph</B> <B>ACS</B> <B>Ascii</B> <B>VT100</B>
+ <B>Name</B> <B>Name</B> <B>Default</B> <B>Name</B>
+ 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
+ <B>smacs</B>/<B>rmacs</B> 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.
+
+
+ <B>Color</B> <B>Handling</B>
+ 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 <B>colors</B> and <B>pairs</B> specify
+ the maximum numbers of colors and color-pairs that can be
+ displayed simultaneously. The <B>op</B> (original pair) string
+ resets foreground and background colors to their default
+ values for the terminal. The <B>oc</B> 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 <B>bce</B>.
+
+ To change the current foreground or background color on a
+ Tektronix-type terminal, use <B>setaf</B> (set ANSI foreground)
+ and <B>setab</B> (set ANSI background) or <B>setf</B> (set foreground)
+ and <B>setb</B> (set background). These take one parameter, the
+ color number. The SVr4 documentation describes only
+ <B>setaf</B>/<B>setab</B>; the XPG4 draft says that "If the terminal
+ supports ANSI escape sequences to set background and fore-
+ ground, they should be coded as <B>setaf</B> and <B>setab</B>, respec-
+ tively. If the terminal supports other escape sequences
+ to set background and foreground, they should be coded as
+ <B>setf</B> and <B>setb</B>, respectively. The <I>vidputs()</I> function and
+ the refresh functions use <B>setaf</B> and <B>setab</B> if they are
+ defined."
+
+ The <B>setaf</B>/<B>setab</B> and <B>setf</B>/<B>setb</B> capabilities take a single
+ numeric argument each. Argument values 0-7 are portably
+ defined as follows (the middle column is the symbolic
+ #define available in the header for the <B>curses</B> or <B>ncurses</B>
+ libraries). The terminal hardware is free to map these as
+ it likes, but the RGB values indicate normal locations in
+ color space.
+
+ <B>Color</B> <B>#define</B> <B>Value</B> <B>RGB</B>
+ black <B>COLOR_BLACK</B> 0 0, 0, 0
+ red <B>COLOR_RED</B> 1 max,0,0
+ green <B>COLOR_GREEN</B> 2 0,max,0
+ yellow <B>COLOR_YELLOW</B> 3 max,max,0
+ blue <B>COLOR_BLUE</B> 4 0,0,max
+ magenta <B>COLOR_MAGENTA</B> 5 max,0,max
+ cyan <B>COLOR_CYAN</B> 6 0,max,max
+ white <B>COLOR_WHITE</B> 7 max,max,max
+
+ On an HP-like terminal, use <B>scp</B> with a color-pair number
+ parameter to set which color pair is current.
+
+ On a Tektronix-like terminal, the capability <B>ccc</B> may be
+ present to indicate that colors can be modified. If so,
+ the <B>initc</B> capability will take a color number (0 to <B>colors</B>
+ - 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 <B>hls</B>
+ is present, they are instead as HLS (Hue, Lightness, Satu-
+ ration) indices. The ranges are terminal-dependent.
+
+ On an HP-like terminal, <B>initp</B> may give a capability for
+ changing a color-pair value. It will take seven parame-
+ ters; a color-pair number (0 to <B>max_pairs</B> - 1), and two
+ triples describing first background and then foreground
+ colors. These parameters must be (Red, Green, Blue) or
+ (Hue, Lightness, Saturation) depending on <B>hls</B>.
+
+ On some color terminals, colors collide with highlights.
+ You can register these collisions with the <B>ncv</B> capability.
+ This is a bit-mask of attributes not to be used when col-
+ ors are enabled. The correspondence with the attributes
+ understood by <B>curses</B> is as follows:
+
+ <B>Attribute</B> <B>Bit</B> <B>Decimal</B>
+ 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 <B>ncv</B>
+ capability of 2.
+
+ SVr4 curses does nothing with <B>ncv</B>, ncurses recognizes it
+ and optimizes the output in favor of colors.
+
+
+ <B>Miscellaneous</B>
+ 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 <B>PC</B> variable;
+ though the application may set this value to something
+ other than a null, ncurses will test <B>npc</B> 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 <B>hu</B> (half-line up) and <B>hd</B> (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 <B>ff</B>
+ (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 <B>rep</B>. 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 <B>cmdch</B>. A
+ prototype command character is chosen which is used in all
+ capabilities. This character is given in the <B>cmdch</B> capa-
+ bility to identify it. The following convention is sup-
+ ported on some UNIX systems: The environment is to be
+ searched for a <B>CC</B> 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 <I>switch</I>, <I>dialup</I>, <I>patch</I>, and
+ <I>network</I>, should include the <B>gn</B> (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</I> 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 <B>km</B>. 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</B> and <B>rmm</B>.
+
+ 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 <B>lm</B>. A value of <B>lm</B>#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 <B>vt</B>.
+
+ Media copy strings which control an auxiliary printer con-
+ nected to the terminal can be given as <B>mc0</B>: print the con-
+ tents of the screen, <B>mc4</B>: turn off the printer, and <B>mc5</B>:
+ 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 <B>mc5p</B> 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 <B>mc4</B>, is transparently passed to the
+ printer while an <B>mc5p</B> is in effect.
+
+
+ <B>Glitches</B> <B>and</B> <B>Braindamage</B>
+ Hazeltine terminals, which do not allow `~' characters to
+ be displayed should indicate <B>hz</B>.
+
+ Terminals which ignore a line-feed immediately after an <B>am</B>
+ wrap, such as the Concept and vt100, should indicate <B>xenl</B>.
+
+ If <B>el</B> is required to get rid of standout (instead of
+ merely writing normal text on top of it), <B>xhp</B> should be
+ given.
+
+ Teleray terminals, where tabs turn all characters moved
+ over to blanks, should indicate <B>xt</B> (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 <B>xsb</B>, 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 <B>x</B><I>x</I>.
+
+
+ <B>Similar</B> <B>Terminals</B>
+ 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 <B>use</B> can be given with the name
+ of the base terminal. The capabilities given before <B>use</B>
+ override those in the base type named by <B>use</B>. If there
+ are multiple <B>use</B> capabilities, they are merged in reverse
+ order. That is, the rightmost <B>use</B> 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 <B>use</B> references.
+
+ A capability can be canceled by placing <B>xx@</B> to the left of
+ the use reference that imports it, where <I>xx</I> is the capa-
+ bility. For example, the entry
+
+ 2621-nl, smkx@, rmkx@, use=2621,
+
+ defines a 2621-nl that does not have the <B>smkx</B> or <B>rmkx</B>
+ 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.
+
+
+ <B>Pitfalls</B> <B>of</B> <B>Long</B> <B>Entries</B>
+ Long terminfo entries are unlikely to be a problem; to
+ date, no entry has even approached terminfo's 4K string-
+ table maximum. Unfortunately, the termcap translations
+ are much more strictly limited (to 1K), 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 1K buffer for the termcap
+ entry. The entry gets null-terminated by the termcap
+ library, so that makes the maximum safe length for a term-
+ cap entry 1k-1 (1023) bytes. Depending on what the appli-
+ cation 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
+ don't; others truncate the entries to 1023 bytes. Some
+ application programs allocate more than the recommended 1K
+ for the termcap entry; others don't.
+
+ 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 doesn't 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's 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 doesn't 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's 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's 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 <B>ncurses</B> imple-
+ mentation of <B><A HREF="tic.1.html">tic(1)</A></B> 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.
+
+ <B>Binary</B> <B>Compatibility</B>
+ 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>EXTENSIONS</H2><PRE>
+ Some SVr4 <B>curses</B> implementations, and all previous to
+ SVr4, don't interpret the %A and %O operators in parameter
+ strings.
+
+ SVr4/XPG4 do not specify whether <B>msgr</B> licenses movement
+ while in an alternate-character-set mode (such modes may,
+ among other things, map CR and NL to characters that don't
+ trigger local motions). The <B>ncurses</B> implementation
+ ignores <B>msgr</B> in <B>ALTCHARSET</B> mode. This raises the possi-
+ bility that an XPG4 implementation making the opposite
+ interpretation may need terminfo entries made for <B>ncurses</B>
+ to have <B>msgr</B> turned off.
+
+ The <B>ncurses</B> library handles insert-character and insert-
+ character modes in a slightly non-standard way in order to
+ get better update efficiency. See the <B>Insert/Delete</B> <B>Char-</B>
+ <B>acter</B> subsection above.
+
+ The parameter substitutions for <B>set_clock</B> and <B>dis-</B>
+ <B>play_clock</B> 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 <B>kmous</B> capability. The <B>ncurses</B>
+ wants to interpret it as <B>KEY_MOUSE</B>, 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:
+
+ <B>SVR4,</B> <B>Solaris,</B> <B>ncurses</B> -- These support all SVr4 capabili-
+ ties.
+
+ <B>SGI</B> -- Supports the SVr4 set, adds one undocumented
+ extended string capability (<B>set_pglen</B>).
+
+ <B>SVr1,</B> <B>Ultrix</B> -- These support a restricted subset of ter-
+ minfo capabilities. The booleans end with <B>xon_xoff</B>; the
+ numerics with <B>width_status_line</B>; and the strings with
+ <B>prtr_non</B>.
+
+ <B>HP/UX</B> -- Supports the SVr1 subset, plus the SVr[234]
+ numerics <B>num_labels</B>, <B>label_height</B>, <B>label_width</B>, plus func-
+ tion keys 11 through 63, plus <B>plab_norm</B>, <B>label_on</B>, and
+ <B>label_off</B>, plus some incompatible extensions in the string
+ table.
+
+ <B>AIX</B> -- Supports the SVr1 subset, plus function keys 11
+ through 63, plus a number of incompatible string table
+ extensions.
+
+ <B>OSF</B> -- Supports both the SVr4 set and the AIX extensions.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ @DATADIR@/terminfo/?/* files containing terminal
+ descriptions
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="tic.1m.html">tic(1m)</A></B>, <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="printf.3S.html">printf(3S)</A></B>, <B><A HREF="term.5.html">term(5)</A></B>.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
+ Based on pcurses by Pavel Curtis.
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>tic</B> - the <I>terminfo</I> entry-description compiler
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>tic</B> [<B>-1CINRTacfrsx</B>] [<B>-e</B> <I>names</I>] [<B>-o</B> <I>dir</I>] [<B>-v</B>[<I>n</I>]] [<B>-w</B>[<I>n</I>]]
+ <I>file</I>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The command <B>tic</B> translates a <B>terminfo</B> file from source
+ format into compiled format. The compiled format is nec-
+ essary for use with the library routines in <B><A HREF="ncurses.3x.html">ncurses(3x)</A></B>.
+
+ The results are normally placed in the system terminfo
+ directory <B>@DATADIR@/terminfo</B>. There are two ways to
+ change this behavior.
+
+ First, you may override the system default by setting the
+ variable <B>TERMINFO</B> in your shell environment to a valid
+ (existing) directory name.
+
+ Secondly, if <B>tic</B> cannot get access to <I>@DATADIR@/terminfo</I>
+ or your TERMINFO directory, it looks for the directory
+ <I>$HOME/.terminfo</I>; 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 <I>$HOME/.terminfo</I> if
+ TERMINFO is not set, and finally look in <I>@DATADIR@/ter-</I>
+ <I>minfo</I>.
+
+ <B>-a</B> tells <B>tic</B> to retain commented-out capabilities
+ rather than discarding them. Capabilities are com-
+ mented by prefixing them with a period. This sets
+ the <B>-x</B> option, because it treats the commented-out
+ entries as user-defined names.
+
+ <B>-c</B> tells <B>tic</B> to only check <I>file</I> for errors, including
+ syntax problems and bad use links. If you specify
+ <B>-C</B> (<B>-I</B>) 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.
+
+ <B>-v</B><I>n</I> specifies that (verbose) output be written to stan-
+ dard error trace information showing <B>tic</B>'s
+ progress. The optional integer <I>n</I> is a number from
+ 1 to 10, inclusive, indicating the desired level of
+ detail of information. If <I>n</I> is omitted, the
+ default level is 1. If <I>n</I> is specified and greater
+ than 1, the level of detail is increased.
+
+ <B>-o</B><I>dir</I> Write compiled entries to given directory.
+ Overrides the TERMINFO environment variable.
+
+ <B>-w</B><I>n</I> specifies the width of the output.
+
+ <B>-1</B> restricts the output to a single column
+
+ <B>-C</B> Force source translation to termcap format. Note:
+ this differs from the -C option of <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B> 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.
+
+ <B>-G</B> Display constant literals in decimal form rather
+ than their character equivalents.
+
+ <B>-I</B> Force source translation to terminfo format.
+
+ <B>-L</B> Force source translation to terminfo format using
+ the long C variable names listed in <<B>term.h</B>>
+
+ <B>-N</B> Disable smart defaults. Normally, when translating
+ from termcap to terminfo, the compiler makes a num-
+ ber of assumptions about the defaults of string
+ capabilities <B>reset1_string</B>, <B>carriage_return</B>, <B>cur-</B>
+ <B>sor_left</B>, <B>cursor_down</B>, <B>scroll_forward</B>, <B>tab</B>, <B>new-</B>
+ <B>line</B>, <B>key_backspace</B>, <B>key_left</B>, and <B>key_down</B>, then
+ attempts to use obsolete termcap capabilities to
+ deduce correct values. It also normally suppresses
+ output of obsolete termcap capabilities such as <B>bs</B>.
+ This option forces a more literal translation that
+ also preserves the obsolete capabilities.
+
+ <B>-R</B><I>subset</I>
+ 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 don't 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 <B><A HREF="terminfo.5.html">terminfo(5)</A></B> for details.
+
+ <B>-T</B> 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).
+
+ <B>-r</B> 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 up to version 1.3 or BSD
+ termcap up to 4.3BSD) that doesn't handle multiple
+ tc capabilities per entry.
+
+ <B>-e</B> 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.)
+
+ <B>-f</B> Display complex terminfo strings which contain
+ if/then/else/endif expressions indented for read-
+ ability.
+
+ <B>-g</B> Display constant character literals in quoted form
+ rather than their decimal equivalents.
+
+ <B>-s</B> Summarize the compile by showing the directory into
+ which entries are written, and the number of
+ entries which are compiled.
+
+ <B>-x</B> Treat unknown capabilities as user-defined. That
+ is, if you supply a capability name which <B>tic</B> does
+ not recognize, it will infer its type (boolean,
+ number or string) from the syntax and make an
+ extended table entry for that.
+
+ <I>file</I> contains one or more <B>terminfo</B> terminal descriptions
+ in source format [see <B><A HREF="terminfo.5.html">terminfo(5)</A></B>]. Each descrip-
+ tion in the file describes the capabilities of a
+ particular 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
+ table
+
+ If n is not given, it is taken to be one.
+
+ All but one of the capabilities recognized by <B>tic</B> are doc-
+ umented in <B><A HREF="terminfo.5.html">terminfo(5)</A></B>. The exception is the <B>use</B> capabil-
+ ity.
+
+ When a <B>use</B>=<I>entry</I>-<I>name</I> field is discovered in a terminal
+ entry currently being compiled, <B>tic</B> reads in the binary
+ from <B>@DATADIR@/terminfo</B> to complete the entry. (Entries
+ created from <I>file</I> will be used first. If the environment
+ variable <B>TERMINFO</B> is set, that directory is searched
+ instead of <B>@DATADIR@/terminfo</B>.) <B>tic</B> duplicates the capa-
+ bilities in <I>entry</I>-<I>name</I> for the current entry, with the
+ exception of those capabilities that explicitly are
+ defined in the current entry.
+
+ When an entry, e.g., <B>entry_name_1</B>, contains a
+ <B>use=</B><I>entry</I>_<I>name</I>_<I>2</I> field, any canceled capabilities in
+ <I>entry</I>_<I>name</I>_<I>2</I> must also appear in <B>entry_name_1</B> before <B>use=</B>
+ for these capabilities to be canceled in <B>entry_name_1</B>.
+
+ If the environment variable <B>TERMINFO</B> is set, the compiled
+ results are placed there instead of <B>@DATADIR@/terminfo</B>.
+
+ 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>COMPATIBILITY</H2><PRE>
+ There is some evidence that historic <B>tic</B> implementations
+ treated description fields with no whitespace in them as
+ additional aliases or short names. This <B>tic</B> does not do
+ that, but it does warn when description fields may be
+ treated that way and check them for dangerous characters.
+
+
+</PRE>
+<H2>EXTENSIONS</H2><PRE>
+ Unlike the stock SVr4 <B>tic</B> 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 <B><A HREF="terminfo.5.html">terminfo(5)</A></B> 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 <B>use</B> capabilities. This implementation of <B>tic</B>
+ will find <B>use</B> targets anywhere in the source file, or any-
+ where in the file tree rooted at <B>TERMINFO</B> (if <B>TERMINFO</B> is
+ defined), or in the user's <I>$HOME/.terminfo</I> directory (if
+ it exists), or (finally) anywhere in the system's file
+ tree of compiled entries.
+
+ The error messages from this <B>tic</B> have the same format as
+ GNU C error messages, and can be parsed by GNU Emacs's
+ compile facility.
+ The <B>-C</B>, <B>-G</B>, <B>-I</B>, <B>-N</B>, <B>-R</B>, <B>-T</B>, <B>-a</B>, <B>-e</B>, <B>-f</B>, <B>-g</B>, <B>-o</B>, <B>-r</B>, <B>-s</B> and
+ <B>-x</B> 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 <I>$HOME/.terminfo</I> directory unless TERMINFO is explic-
+ itly set to it.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ <B>@DATADIR@/terminfo/?/*</B>
+ Compiled terminal description database.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>, <B><A HREF="captoinfo.1m.html">captoinfo(1m)</A></B>, <B><A HREF="infotocap.1m.html">infotocap(1m)</A></B>, <B><A HREF="toe.1m.html">toe(1m)</A></B>,
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>toe</B> - table of (terminfo) entries
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>toe</B> [<B>-v</B>[<I>n</I>]] [<B>-huUV</B>] <I>file...</I>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ With no options, <B>toe</B> 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:
+
+ <B>-u</B> <I>file</I>
+ says to issue a report on dependencies in the given
+ file. This report condenses the `use' relation:
+ each line consists of the primary name of a termi-
+ nal that has use capabilities, followed by a colon,
+ followed by the whitespace-separated primary names
+ of all terminals which occur in those use capabili-
+ ties, followed by a newline
+
+ <B>-U</B> <I>file</I>
+ says to issue a report on reverse dependencies in
+ the given file. This report reverses the `use'
+ relation: each line consists of the primary name of
+ a terminal that occurs in use capabilities, fol-
+ lowed by a colon, followed by the whitespace-sepa-
+ rated primary names of all terminals which depend
+ on it, followed by a newline.
+
+ <B>-v</B><I>n</I> specifies that (verbose) output be written to stan-
+ dard error trace information showing <B>toe</B>'s
+ progress. The optional integer <I>n</I> is a number from
+ 1 to 10, interpreted as for <B><A HREF="tic.1.html">tic(1)</A></B>.
+
+ <B>-V</B> prints out the version of the program in use on stan-
+ dard error and exits.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ <B>@DATADIR@/terminfo/?/*</B>
+ Compiled terminal description database.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="tic.1m.html">tic(1m)</A></B>, <B><A HREF="infocmp.1m.html">infocmp(1m)</A></B>, <B><A HREF="captoinfo.1m.html">captoinfo(1m)</A></B>, <B><A HREF="infotocap.1m.html">infotocap(1m)</A></B>,
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B>, <B><A HREF="terminfo.5.html">terminfo(5)</A></B>.
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>tput</B> - initialize a terminal or query terminfo database
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <B>tput</B> [<B>-T</B><I>type</I>] <I>capname</I> [<I>parms</I> ... ]
+ <B>tput</B> [<B>-T</B><I>type</I>] <B>init</B>
+ <B>tput</B> [<B>-T</B><I>type</I>] <B>reset</B>
+ <B>tput</B> [<B>-T</B><I>type</I>] <B>longname</B>
+ <B>tput</B> <B>-S</B> <B><<</B>
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The <B>tput</B> utility uses the <B>terminfo</B> database to make the
+ values of terminal-dependent capabilities and information
+ available to the shell (see <B><A HREF="sh.1.html">sh(1)</A></B>), to initialize or reset
+ the terminal, or return the long name of the requested
+ terminal type. <B>tput</B> outputs a string if the attribute
+ (<I>cap</I>ability <I>name</I>) is of type string, or an integer if the
+ attribute is of type integer. If the attribute is of type
+ boolean, <B>tput</B> simply sets the exit code (<B>0</B> for TRUE if the
+ terminal has the capability, <B>1</B> for FALSE if it does not),
+ and produces no output. Before using a value returned on
+ standard output, the user should test the exit code [<B>$?</B>,
+ see <B><A HREF="sh.1.html">sh(1)</A></B>] to be sure it is <B>0</B>. (See the <B>EXIT</B> <B>CODES</B> and
+ <B>DIAGNOSTICS</B> sections.) For a complete list of capabili-
+ ties and the <I>capname</I> associated with each, see <B>ter-</B>
+ <B><A HREF="minfo.5.html">minfo(5)</A></B>.
+
+ <B>-T</B><I>type</I> indicates the <I>type</I> of terminal. Normally this
+ option is unnecessary, because the default is taken
+ from the environment variable <B>TERM</B>. If <B>-T</B> is spec-
+ ified, then the shell variables <B>LINES</B> and <B>COLUMNS</B>
+ will be ignored,and the operating system will not
+ be queried for the actual screen size.
+
+ <I>capname</I>
+ indicates the attribute from the <B>terminfo</B> database.
+ When <B>termcap</B> support is compiled in, the <B>termcap</B>
+ name for the attribute is also accepted.
+
+ <I>parms</I> If the attribute is a string that takes parameters,
+ the arguments <I>parms</I> will be instantiated into the
+ string. An all numeric argument will be passed to
+ the attribute as a number.
+
+ <B>-S</B> allows more than one capability per invocation of
+ <B>tput</B>. The capabilities must be passed to <B>tput</B> from
+ the standard input instead of from the command line
+ (see example). Only one <I>capname</I> is allowed per
+ line. The <B>-S</B> option changes the meaning of the <B>0</B>
+ and <B>1</B> boolean and string exit codes (see the EXIT
+ CODES section).
+
+ <B>init</B> If the <B>terminfo</B> database is present and an entry
+ for the user's terminal exists (see <B>-T</B><I>type</I>, above),
+ the following will occur: (1) if present, the ter-
+ minal's initialization strings will be output (<B>is1</B>,
+ <B>is2</B>, <B>is3</B>, <B>if</B>, <B>iprog</B>), (2) any delays (e.g., new-
+ line) 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.
+
+ <B>reset</B> Instead of putting out initialization strings, the
+ terminal's reset strings will be output if present
+ (<B>rs1</B>, <B>rs2</B>, <B>rs3</B>, <B>rf</B>). If the reset strings are not
+ present, but initialization strings are, the ini-
+ tialization strings will be output. Otherwise,
+ <B>reset</B> acts identically to <B>init</B>.
+
+ <B>longname</B>
+ If the <B>terminfo</B> database is present and an entry
+ for the user's terminal exists (see <B>-T</B><I>type</I> 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 <B>terminfo</B> database
+ [see <B><A HREF="term.5.html">term(5)</A></B>].
+
+
+</PRE>
+<H2>EXAMPLES</H2><PRE>
+ <B>tput</B> <B>init</B>
+ Initialize the terminal according to the type of ter-
+ minal in the environmental variable <B>TERM</B>. This com-
+ mand should be included in everyone's .profile after
+ the environmental variable <B>TERM</B> has been exported, as
+ illustrated on the <B><A HREF="profile.4.html">profile(4)</A></B> manual page.
+
+ <B>tput</B> <B>-T5620</B> <B>reset</B>
+ Reset an AT&T 5620 terminal, overriding the type of
+ terminal in the environmental variable <B>TERM</B>.
+
+ <B>tput</B> <B>cup</B> <B>0</B> <B>0</B>
+ Send the sequence to move the cursor to row <B>0</B>, column
+ <B>0</B> (the upper left corner of the screen, usually known
+ as the "home" cursor position).
+
+ <B>tput</B> <B>clear</B>
+ Echo the clear-screen sequence for the current termi-
+ nal.
+
+ <B>tput</B> <B>cols</B>
+ Print the number of columns for the current terminal.
+
+ <B>tput</B> <B>-T450</B> <B>cols</B>
+ Print the number of columns for the 450 terminal.
+
+
+ <B>bold=`tput</B> <B>smso`</B> <B>offbold=`tput</B> <B>rmso`</B>
+ Set the shell variables <B>bold</B>, to begin stand-out mode
+ sequence, and <B>offbold</B>, to end standout mode sequence,
+ for the current terminal. This might be followed by
+ a prompt: <B>echo</B> <B>"${bold}Please</B> <B>type</B> <B>in</B> <B>your</B> <B>name:</B>
+ <B>${offbold}\c"</B>
+
+ <B>tput</B> <B>hc</B>
+ Set exit code to indicate if the current terminal is
+ a hard copy terminal.
+
+ <B>tput</B> <B>cup</B> <B>23</B> <B>4</B>
+ Send the sequence to move the cursor to row 23, col-
+ umn 4.
+
+ <B>tput</B> <B>longname</B>
+ Print the long name from the <B>terminfo</B> database for
+ the type of terminal specified in the environmental
+ variable <B>TERM</B>.
+
+ <B>tput</B> <B>-S</B> <B><<!</B>
+ <B>></B> <B>clear</B>
+ <B>></B> <B>cup</B> <B>10</B> <B>10</B>
+ <B>></B> <B>bold</B>
+ <B>></B> <B>!</B>
+
+ This example shows tput processing several capabili-
+ ties in one invocation. This example 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 (<B>!</B>) on a line by itself.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ <B>@DATADIR@/terminfo</B>
+ compiled terminal description database
+
+ <B>/usr/include/curses.h</B>
+ <B><A HREF="ncurses.3x.html">curses(3x)</A></B> header file
+
+ <B>/usr/include/term.h</B>
+ <B>terminfo</B> header file
+
+ <B>@DATADIR@/tabset/*</B>
+ 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 <B><A HREF="terminfo.4.html">terminfo(4)</A></B>
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="clear.1.html">clear(1)</A></B>, <B><A HREF="stty.1.html">stty(1)</A></B>, <B><A HREF="tabs.5.html">tabs(5)</A></B>. <B><A HREF="profile.5.html">profile(5)</A></B>, <B><A HREF="terminfo.4.html">terminfo(4)</A></B> in
+ the <I>System</I> <I>Administrator</I>'<I>s</I> <I>Reference</I> <I>Manual</I>. Chapter 10
+ of the <I>Programmer</I>'<I>s</I> <I>Guide</I>.
+
+
+</PRE>
+<H2>EXIT CODES</H2><PRE>
+ If <I>capname</I> is of type boolean, a value of <B>0</B> is set for
+ TRUE and <B>1</B> for FALSE unless the <B>-S</B> option is used.
+
+ If <I>capname</I> is of type string, a value of <B>0</B> is set if the
+ <I>capname</I> is defined for this terminal <I>type</I> (the value of
+ <I>capname</I> is returned on standard output); a value of <B>1</B> is
+ set if <I>capname</I> is not defined for this terminal <I>type</I> (a
+ null value is returned on standard output).
+
+ If <I>capname</I> is of type boolean or string and the <B>-S</B> option
+ is used, a value of <B>0</B> is returned to indicate that all
+ lines were successful. No indication of which line failed
+ can be given so exit code <B>1</B> will never appear. Exit codes
+ <B>2</B>, <B>3</B>, and <B>4</B> retain their usual interpretation.
+
+ If <I>capname</I> is of type integer, a value of <B>0</B> is always set,
+ whether or not <I>capname</I> is defined for this terminal <I>type</I>.
+ To determine if <I>capname</I> is defined for this terminal <I>type</I>,
+ the user must test the value of standard output. A value
+ of <B>-1</B> means that <I>capname</I> is not defined for this terminal
+ <I>type</I>.
+
+ Any other exit code indicates an error; see the DIAGNOS-
+ TICS section.
+
+
+</PRE>
+<H2>DIAGNOSTICS</H2><PRE>
+ <B>tput</B> prints the following error messages and sets the cor-
+ responding exit codes.
+
+ exit code error message
+ <B>0</B> (<I>capname</I> is a numeric variable that is not specified in the
+ <B><A HREF="terminfo.5.html">terminfo(5)</A></B> database for this terminal type, e.g.
+ <B>tput</B> <B>-T450</B> <B>lines</B> and <B>tput</B> <B>-T2621</B> <B>xmc</B>)
+ <B>1</B> no error message is printed, see the <B>EXIT</B> <B>CODES</B> section.
+ <B>2</B> usage error
+ <B>3</B> unknown terminal <I>type</I> or no <B>terminfo</B> database
+ <B>4</B> unknown <B>terminfo</B> capability <I>capname</I>
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ The <B>longname</B> and <B>-S</B> options, and the parameter-substitu-
+ tion features used in the <B>cup</B> example, are not supported
+ in BSD curses or in AT&T/USL curses before SVr4.
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>tset</B> - terminal initialization
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ tset [-IQqrs] [-] [-e <I>ch</I>] [-i <I>ch</I>] [-k <I>ch</I>] [-m <I>mapping</I>]
+ [<I>terminal</I>]
+ reset [-IQqrs] [-] [-e <I>ch</I>] [-i <I>ch</I>] [-k <I>ch</I>] [-m <I>mapping</I>]
+ [<I>terminal</I>]
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ <B>Tset</B> initializes terminals. <B>Tset</B> first determines the
+ type of terminal that you are using. This determination
+ is done as follows, using the first terminal type found.
+
+ 1. The <B>terminal</B> argument specified on the command line.
+
+ 2. The value of the <B>TERM</B> environmental variable.
+
+ 3. (BSD systems only.) The terminal type associated with
+ the standard error output device in the <I>/etc/ttys</I> file.
+ (On Linux and System-V-like UNIXes, <I>getty</I> does this job by
+ setting <B>TERM</B> according to the type passed to it by
+ <I>/etc/inittab</I>.)
+
+ 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 below
+ 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 con-
+ firms 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.
+
+ 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.
+
+ When invoked as <B>reset</B>, <B>tset</B> 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
+
+ <B><LF>reset<LF></B>
+
+ (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:
+
+ -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.
+
+ -e Set the erase character to <I>ch</I>.
+
+ -I Do not send the terminal or tab initialization
+ strings to the terminal.
+
+ -i Set the interrupt character to <I>ch</I>.
+
+ -k Set the line kill character to <I>ch</I>.
+
+ -m Specify a mapping from a port type to a terminal.
+ See below for more information.
+
+ -Q Don't display any values for the erase, interrupt and
+ line kill characters.
+
+ -r Print the terminal type to the standard error output.
+
+ -s Print the sequence of shell commands to initialize
+ the environment variable <B>TERM</B> to the standard output.
+ See the section below on setting the environment for
+ details.
+
+ 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''.
+
+
+</PRE>
+<H2>SETTING THE ENVIRONMENT</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 -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 <B>SHELL</B> environmental variable
+ ends in ``csh'', the commands are for <B>csh</B>, otherwise, they
+ are for <B>sh</B>. Note, the <B>csh</B> commands set and unset the
+ shell variable <B>noglob</B>, leaving it unset. The following
+ line in the <B>.login</B> or <B>.profile</B> files will initialize the
+ environment correctly:
+
+ eval `tset -s options ... `
+
+
+
+</PRE>
+<H2>TERMINAL TYPE MAPPING</H2><PRE>
+ When the terminal is not hardwired into the system (or the
+ current system information is incorrect) the terminal type
+ derived from the <I>/etc/ttys</I> file or the <B>TERM</B> environmental
+ variable is often something generic like <B>network</B>, <B>dialup</B>,
+ or <B>unknown</B>. When <B>tset</B> 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 <B>tset</B> ``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:
+ <B>dialup>9600:vt100</B>. 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 <B>dialup</B>, and the baud rate
+ is greater than 9600 baud, a terminal type of <B>vt100</B> 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, <B>-m</B>
+ <B>dialup:vt100</B> <B>-m</B> <B>:?xterm</B> 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 <B>csh</B> users
+ insert a backslash character (``\'') before any exclama-
+ tion marks (``!'').
+
+
+</PRE>
+<H2>HISTORY</H2><PRE>
+ The <B>tset</B> command appeared in BSD 3.0. The <B>ncurses</B> imple-
+ mentation was lightly adapted from the 4.4BSD sources for
+ a terminfo environment by Eric S. Raymond <esr@snark.thyr-
+ sus.com>.
+
+
+</PRE>
+<H2>COMPATIBILITY</H2><PRE>
+ The <B>tset</B> utility has been provided for backward-compati-
+ bility with BSD environments (under most modern UNIXes,
+ <B>/etc/inittab</B> and <B><A HREF="getty.1.html">getty(1)</A></B> can set <B>TERM</B> appropriately for
+ each dial-up line; this obviates what was <B>tset</B>'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
+ <B>TERM</B>, not <B>TERMCAP</B>. Both these changes are because the
+ <B>TERMCAP</B> variable is no longer supported under terminfo-
+ based <B>ncurses</B>, which makes <B>tset</B> <B>-S</B> 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
+ <B>tset</B> 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 <B>tset</B> as <B>reset</B> no longer implies
+ the -Q option. Also, the interaction between the - option
+ and the <I>terminal</I> argument in some historic implementations
+ of <B>tset</B> has been removed.
+
+
+</PRE>
+<H2>ENVIRONMENT</H2><PRE>
+ The <B>tset</B> command uses the <B>SHELL</B> and <B>TERM</B> environment vari-
+ ables.
+
+
+</PRE>
+<H2>FILES</H2><PRE>
+ /etc/ttys
+ system port name to terminal type mapping database
+ (BSD versions only).
+
+ @DATADIR@/terminfo
+ terminal capability database
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <B><A HREF="csh.1.html">csh(1)</A></B>, <B><A HREF="sh.1.html">sh(1)</A></B>, <B><A HREF="stty.1.html">stty(1)</A></B>, <B><A HREF="tty.4.html">tty(4)</A></B>, <B><A HREF="termcap.5.html">termcap(5)</A></B>, <B><A HREF="ttys.5.html">ttys(5)</A></B>, envi-
+ <B><A HREF="ron.7.html">ron(7)</A></B>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
+</BODY>
+</HTML>
<HTML>
<BODY>
<PRE>
- <STRONG>wresize</STRONG> - resize a curses window
+<!-- Manpage converted by man2html 3.0.1 -->
+
+</PRE>
+<H2>NAME</H2><PRE>
+ <B>wresize</B> - resize a curses window
</PRE>
<H2>SYNOPSIS</H2><PRE>
- <STRONG>#include</STRONG> <STRONG><curses.h></STRONG>
+ <B>#include</B> <B><curses.h></B>
- <STRONG>int</STRONG> <STRONG>wresize(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
+ <B>int</B> <B>wresize(WINDOW</B> <B>*win,</B> <B>int</B> <B>lines,</B> <B>int</B> <B>columns);</B>
</PRE>
<H2>DESCRIPTION</H2><PRE>
- The <STRONG>wresize</STRONG> function reallocates storage for an <STRONG>ncurses</STRONG>
+ The <B>wresize</B> function reallocates storage for an <B>ncurses</B>
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>wbkgndset</STRONG>) merged into
+ background rendition (as set by <B>wbkgndset</B>) merged into
them.
</PRE>
<H2>RETURN VALUE</H2><PRE>
- The function returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
+ The function returns the integer <B>ERR</B> upon failure and <B>OK</B>
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.
<H2>NOTES</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
+ <B>curses</B> screen dimensions to simplify the logic of
+ <B>resizeterm</B>. The caller must ensure that the window's
dimensions fit within the actual screen dimensions.
</PRE>
<H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="resizeterm.3x.html">resizeterm(3X)</A></STRONG>.
+ <B><A HREF="resizeterm.3x.html">resizeterm(3x)</A></B>.
</PRE>
+
</PRE>
+<HR>
+<ADDRESS>
+Man(1) output converted with
+<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
+</ADDRESS>
</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<!--
- $Id: ncurses-intro.html,v 1.31 1999/05/16 17:02:31 juergen Exp $
+ $Id: ncurses-intro.html,v 1.34 2000/06/11 00:03:55 tom Exp $
-->
<HTML>
<HEAD>
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>
+X toolkit.
<H2><A NAME="history">A Brief History of Curses</A></H2>
possible to describe multiple video attributes, and colors and to handle far
more unusual terminals than possible with termcap. In the later AT&T
System V releases, <CODE>curses</CODE> evolved to use more facilities and offer
-more capabilities, going far beyond BSD curses in power and flexibility.<P>
+more capabilities, going far beyond BSD curses in power and flexibility.
<H2><A NAME="scope">Scope of This Document</A></H2>
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>
+It includes the following System V curses features:
<UL>
<LI>Support for multiple screen highlights (BSD curses could only
-handle one `standout' highlight, usually reverse-video). <P>
-<LI>Support for line- and box-drawing using forms characters. <P>
-<LI>Recognition of function keys on input. <P>
-<LI>Color support. <P>
+handle one `standout' highlight, usually reverse-video).
+<LI>Support for line- and box-drawing using forms characters.
+<LI>Recognition of function keys on input.
+<LI>Color support.
<LI>Support for pads (windows of larger than screen size on which the
screen or a subwindow defines a viewport).
</UL>
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@clark.net">Thomas Dickey</A>
+<A HREF="mailto:dickey@herndon4.his.com">Thomas Dickey</A>
and
<A HREF="mailto:juergen.pfeifer@gmx.net">Jürgen Pfeifer</A>.
<A HREF="mailto:florian@gnu.org">Florian La Roche</A>
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>
+forms.
<H2><A NAME="terminology">Terminology</A></H2>
<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. <P>
+screen, scrolling independently of other windows on the physical screen.
<DT> screens
<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. <P>
+of these, <CODE>stdscr</CODE>, is automatically provided for the programmer.
<DT> terminal screen
<DD>
The package's idea of what the terminal display currently looks like, i.e.,
overlapping windows. Also, changes can be made to windows in any order,
without regard to motion efficiency. Then, at will, the programmer can
effectively say ``make it look like this,'' and let the package implementation
-determine the most efficient way to repaint the screen. <P>
+determine the most efficient way to repaint the screen.
<H3><A NAME="stdscr">Standard Windows and Function Naming Conventions</A></H3>
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>
+parameter passed.
<H3><A NAME="variables">Variables</A></H3>
work on any window, providing you change the function names and parameters as
mentioned above. <P>
-Here is a sample program to motivate the discussion: <P>
+Here is a sample program to motivate the discussion:
<PRE>
#include <curses.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 */
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 */
+ (void) echo(); /* echo input - in color */
if (has_colors())
{
start_color();
/*
- * Simple color assignment, often all we need.
+ * 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(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK);
- init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
- init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK);
- init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
- init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK);
- init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
- init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
- init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
+ 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 */
}
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>
+applied to any window.
<H3><A NAME="output">Output</A></H3>
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>
+up.
<H3><A NAME="input">Input</A></H3>
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>
+<CODE>key_</CODE> capabilities in the terminal's terminfo entry.
<H3><A NAME="formschars">Using Forms Characters</A></H3>
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>
+recognizable (though ugly) set of ASCII defaults.
<H3><A NAME="attributes">Character Attributes and Color</A></H3>
Once you've 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>
+is itself a compile-time constant and can be used in initializers.
<H3><A NAME="mouse">Mouse Interfacing</A></H3>
code that illustrates how this can be done. <P>
See the manual page <CODE>curs_mouse(3X)</CODE> for full details of the
-mouse-interface functions. <P>
+mouse-interface functions.
<H3><A NAME="finishing">Finishing Up</A></H3>
<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>
+should be called before exiting.
<H2><A NAME="functions">Function Descriptions</A></H2>
exits. Otherwise it returns a pointer to stdscr. A few functions may be
called before initscr (<CODE>slk_init()</CODE>, <CODE>filter()</CODE>,
<CODE>ripofflines()</CODE>, <CODE>use_env()</CODE>, and, if you are using multiple
-terminals, <CODE>newterm()</CODE>.) <P>
+terminals, <CODE>newterm()</CODE>.)
<DT> <CODE>endwin()</CODE>
<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. <P>
+restore the ncurses screen from before the escape.
<DT> <CODE>newterm(type, ofp, ifp)</CODE>
<DD> A program which outputs to more than one terminal should use
<CODE>newterm()</CODE> instead of <CODE>initscr()</CODE>. <CODE>newterm()</CODE> should
<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. <P>
+opened using this function.
<DT> <CODE>set_term(new)</CODE>
<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. <P>
+function. All other calls affect only the current terminal.
<DT> <CODE>delscreen(sp)</CODE>
<DD> The inverse of <CODE>newterm()</CODE>; deallocates the data structures
associated with a given <CODE>SCREEN</CODE> reference.
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. <P>
+location of the window's cursor.
<DT> <CODE>doupdate()</CODE> and <CODE>wnoutrefresh(win)</CODE>
<DD> These two functions allow multiple updates with more efficiency
than wrefresh. To use them, it is important to understand how curses
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>
+distinguished by the fact that they are named in capital letters.
<H2><A NAME="hints">Hints, Tips, and Tricks</A></H2>
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>
+may not be obvious from the manual page descriptions.
<H3><A NAME="caution">Some Notes of Caution</A></H3>
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>
+in which case several screens could be open with different sizes.
<H3><A NAME="leaving">Temporarily Leaving NCURSES Mode</A></H3>
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>
+<CODE>def_shell_mode</CODE> and <CODE>def_prog_mode</CODE> on each tty yourself.
<H3><A NAME="testing">Testing for Terminal Capabilities</A></H3>
(cursor-addressable) or `stupid'. The right way to test this is to see
if the return value of <CODE>tigetstr("cup")</CODE> is non-NULL. Alternatively,
you can include the <CODE>term.h</CODE> file and test the value of the
-macro <CODE>cursor_address</CODE>. <P>
+macro <CODE>cursor_address</CODE>.
<H3><A NAME="tuning">Tuning for Speed</A></H3>
Use the <CODE>addchstr()</CODE> 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 <CODE>immedok()</CODE> option! <P>
+screens. Don't use the <CODE>immedok()</CODE> option!
<H3><A NAME="special">Special Features of NCURSES</A></H3>
do all the necessary <CODE>wnoutrfresh()</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>
+all your updates.
<H3><A NAME="backbug">Background Erase</A></H3>
or <CODE>wbkgdset()</CODE>. <P>
This change in behavior conforms <CODE>ncurses</CODE> to System V Release 4 and
-the XSI Curses standard. <P>
+the XSI Curses standard.
<H2><A NAME="xsifuncs">XSI Curses Conformance</A></H2>
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>
+<CODE>#undef</CODE>.
<H1><A NAME="panels">The Panels Library</A></H1>
<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'll generate a lot of unnecessary refresh
-activity and screen flicker. <P>
+activity and screen flicker.
<H2><A NAME="pstdscr">Panels, Input, and the Standard Screen</A></H2>
that the panel is totally unobscured. <P>
There is presently no way to display changes to one obscured panel without
-repainting all panels. <P>
+repainting all panels.
<H2><A NAME="hiding">Hiding Panels</A></H2>
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>
+Other panels operations are applicable.
<H2><A NAME="pmisc">Miscellaneous Other Facilities</A></H2>
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>
+details.
<H1><A NAME="menu">The Menu Library</A></H1>
The <CODE>menu</CODE> library first appeared in AT&T System V. The
version documented here is the <CODE>menu</CODE> code distributed
-with <CODE>ncurses</CODE>. <P>
+with <CODE>ncurses</CODE>.
<H2><A NAME="mcompile">Compiling With the menu Library</A></H2>
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>
+is good practice to code as though other option bits might be on.
<H2><A NAME="mdisplay">Menu Display</A></H2>
The menu library calculates a minimum display size for your window, based
-on the following variables: <P>
+on the following variables:
<UL>
<LI>The number and maximum length of the menu items
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>
+change (see the <CODE>menu_attribs(3x)</CODE> manual page.
<H2><A NAME="mwindows">Menu Windows</A></H2>
When you call <CODE>menu_post()</CODE>, you write the menu to its
subwindow. When you call <CODE>menu_unpost()</CODE>, you erase the
subwindow, However, neither of these actually modifies the screen. To
-do that, call <CODE>wrefresh()</CODE> or some equivalent. <P>
+do that, call <CODE>wrefresh()</CODE> or some equivalent.
<H2><A NAME="minput">Processing Menu Input</A></H2>
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>
+<CODE>menu_userptr(3x)</CODE>.
<H1><A NAME="form">The Forms Library</A></H1>
The <CODE>form</CODE> library first appeared in AT&T System V. The
version documented here is the <CODE>form</CODE> code distributed
-with <CODE>ncurses</CODE>. <P>
+with <CODE>ncurses</CODE>.
<H2><A NAME="fcompile">Compiling With the form Library</A></H2>
<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>
+to put <CODE>-lform</CODE> first and <CODE>-lncurses</CODE> second.
<H2><A NAME="foverview">Overview of Forms</A></H2>
In forms programs, however, the `process user requests' is somewhat more
complicated than for menus. Besides menu-like navigation operations,
-the menu driver loop has to support field editing and data validation. <P>
+the menu driver loop has to support field editing and data validation.
<H2><A NAME="fcreate">Creating and Freeing Fields and Forms</A></H2>
-The basic function for creating fields is <CODE>new_field()</CODE>: <P>
+The basic function for creating fields is <CODE>new_field()</CODE>:
<PRE>
FIELD *new_field(int height, int width, /* new field size */
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>
+field; your application can use them for its own purposes.
<PRE>
FIELD *dup_field(FIELD *field, /* field to copy */
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>
+<CODE>form_field_new(3X)</CODE> for details).
<PRE>
FIELD *link_field(FIELD *field, /* field to copy */
the field allocation is not possible due to an out-of-memory error or
out-of-bounds arguments. <P>
-To connect fields to a form, use <P>
+To connect fields to a form, use
<PRE>
FORM *new_form(FIELD **fields);
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>
+your form objects first.
<H2><A NAME="fattributes">Fetching and Changing Field Attributes</A></H2>
<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>
+as defaults until your forms application terminates.
<H3><A NAME="fsizes">Fetching Size and Location Data</A></H3>
-You can retrieve field sizes and locations through: <P>
+You can retrieve field sizes and locations through:
<PRE>
int field_info(FIELD *field, /* field from which to fetch */
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>
+from an existing one.
<H3><A NAME="flocation">Changing the Field Location</A></H3>
-It is possible to move a field's location on the screen: <P>
+It is possible to move a field's location on the screen:
<PRE>
int move_field(FIELD *field, /* field to alter */
<H3><A NAME="fjust">The Justification Attribute</A></H3>
One-line fields may be unjustified, justified right, justified left,
-or centered. Here is how you manipulate this attribute: <P>
+or centered. Here is how you manipulate this attribute:
<PRE>
int set_field_just(FIELD *field, /* field to alter */
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>
+<CODE>JUSTIFY_LEFT</CODE>, or <CODE>JUSTIFY_CENTER</CODE>.
<H3><A NAME="fdispatts">Field Display Attributes</A></H3>
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>
+in the field buffer.
<PRE>
int set_field_fore(FIELD *field, /* field to alter */
<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>
+a new form screen.
<H3><A NAME="foptions">Field Option Bits</A></H3>
However, options may be changed on posted fields that are not current. <P>
The option values are bit-masks and can be composed with logical-or in
-the obvious way. <P>
+the obvious way.
<H2><A NAME="fstatus">Field Status</A></H2>
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>
+be queried and set directly:
<PRE>
int set_field_status(FIELD *field, /* field to alter */
<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>
+processed by the forms driver.
<H2><A NAME="fuser">Field User Pointer</A></H2>
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>
+to initialize the new field's user pointer.
<H2><A NAME="fdynamic">Variable-Sized Fields</A></H2>
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>
+it with this function:
<PRE>
int set_max_field(FIELD *field, /* field to alter (may not be NULL) */
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>
+functions:
<PRE>
int set_field_type(FIELD *field, /* field to alter */
<CODE>NULL</CODE> field default will change the system default for validation of
newly-created fields. <P>
-Here are the pre-defined validation types: <P>
+Here are the pre-defined validation types:
<H3><A NAME="ftype_alpha">TYPE_ALPHA</A></H3>
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>
+characters (this is checked at character-entry time). It is set up with:
<PRE>
int set_field_type(FIELD *field, /* field to alter */
The <CODE>width</CODE> 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. <P>
+of zero makes field completion optional.
<H3><A NAME="ftype_alnum">TYPE_ALNUM</A></H3>
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>
+characters (this is checked at character-entry time). It is set up with:
<PRE>
int set_field_type(FIELD *field, /* field to alter */
The <CODE>width</CODE> 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. <P>
+minimum width of zero makes field completion optional.
<H3><A NAME="ftype_enum">TYPE_ENUM</A></H3>
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>
+states). It is set up with:
<PRE>
int set_field_type(FIELD *field, /* field to alter */
matches to be unique in order to be valid. <P>
The <CODE>REQ_NEXT_CHOICE</CODE> and <CODE>REQ_PREV_CHOICE</CODE> input requests
-can be particularly useful with these fields. <P>
+can be particularly useful with these fields.
<H3><A NAME="ftype_integer">TYPE_INTEGER</A></H3>
-This field type accepts an integer. It is set up as follows: <P>
+This field type accepts an integer. It is set up as follows:
<PRE>
int set_field_type(FIELD *field, /* field to alter */
<H3><A NAME="ftype_numeric">TYPE_NUMERIC</A></H3>
-This field type accepts a decimal number. It is set up as follows: <P>
+This field type accepts a decimal number. It is set up as follows:
<PRE>
int set_field_type(FIELD *field, /* field to alter */
<H3><A NAME="ftype_regexp">TYPE_REGEXP</A></H3>
This field type accepts data matching a regular expression. It is set up
-as follows: <P>
+as follows:
<PRE>
int set_field_type(FIELD *field, /* field to alter */
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>
+field buffer. You can find this out with:
<PRE>
char *field_buffer(FIELD *field, /* field to query */
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>
+by the forms driver.
<H2><A NAME="formattrs">Attributes of Forms</A></H2>
of these functions using a form-pointer argument of <CODE>NULL</CODE>. <P>
The principal attribute of a form is its field list. You can query
-and change this list with: <P>
+and change this list with:
<PRE>
int set_form_fields(FORM *form, /* form to alter */
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>
+is NULL.
<H2><A NAME="fdisplay">Control of Form Display</A></H2>
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: <P>
+information with:
<PRE>
int scale_form(FORM *form, /* form to query */
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>
+these functions:
<PRE>
int data_ahead(FORM *form); /* form to be queried */
left hand) character position is off-screen (not being displayed). <P>
Finally, there is a function to restore the form window's cursor to the
-value expected by the forms driver: <P>
+value expected by the forms driver:
<PRE>
int pos_form_cursor(FORM *) /* form to be queried */
</PRE>
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>
+handing control back to the forms driver in order to re-synchronize it.
<H2><A NAME="fdriver">Input Processing in the Forms Driver</A></H2>
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>
+HREF="#minput">menu input handling</A>).
<PRE>
int form_driver(FORM *form, /* form to pass input to */
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>
+that the input taken by the driver matched what was expected.
<H3><A NAME="fpage">Page Navigation Requests</A></H3>
These requests cause page-level moves through the form,
-triggering display of a new form screen. <P>
+triggering display of a new form screen.
<DL>
<DT> <CODE>REQ_NEXT_PAGE</CODE>
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>
+the first page goes to the last.
<H3><A NAME="#ffield">Inter-Field Navigation Requests</A></H3>
-These requests handle navigation between fields on the same page. <P>
+These requests handle navigation between fields on the same page.
<DL>
<DT> <CODE>REQ_NEXT_FIELD</CODE>
<DD> Move to the first field.
<DT> <CODE>REQ_LAST_FIELD</CODE>
<DD> Move to the last field.
-<P>
<DT> <CODE>REQ_SNEXT_FIELD</CODE>
<DD> Move to sorted next field.
<DT> <CODE>REQ_SPREV_FIELD</CODE>
<DD> Move to the sorted first field.
<DT> <CODE>REQ_SLAST_FIELD</CODE>
<DD> Move to the sorted last field.
-<P>
<DT> <CODE>REQ_LEFT_FIELD</CODE>
<DD> Move left to field.
<DT> <CODE>REQ_RIGHT_FIELD</CODE>
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>
+otherwise it will skip over B to C.
<H3><A NAME="#fifield">Intra-Field Navigation Requests</A></H3>
These requests drive movement of the edit cursor within the currently
-selected field. <P>
+selected field.
<DL>
<DT> <CODE>REQ_NEXT_CHAR</CODE>
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>
+look for the first or last non-pad character in their ranges.
<H3><A NAME="fscroll">Scrolling Requests</A></H3>
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>
</DL>
For scrolling purposes, a <EM>page</EM> of a field is the height
-of its visible part. <P>
+of its visible part.
<H3><A NAME="fedit">Editing Requests</A></H3>
(insertion is the default. <P>
The following requests support editing the field and changing the edit
-mode: <P>
+mode:
<DL>
<DT> <CODE>REQ_INS_MODE</CODE>
disabled and the forms driver just returns <CODE>E_REQUEST_DENIED</CODE>. <P>
See <A HREF="#frmoptions">Form Options</A> for discussion of how to set
-and clear the overload options. <P>
+and clear the overload options.
<H3><A NAME="forder">Order Requests</A></H3>
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>
+there are requests that can fetch that value into the field buffer:
<DL>
<DT> <CODE>REQ_NEXT_CHOICE</CODE>
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>
+our own ordering functions.
<H3><A NAME="fappcmds">Application Commands</A></H3>
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>
+value above <CODE>MAX_COMMAND</CODE>, the forms driver will ignore it.
<H2><A NAME="fhooks">Field Change Hooks</A></H2>
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>
+current field or form changes. Here are the functions that support this:
<PRE>
typedef void (*HOOK)(); /* pointer to function returning void */
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>
+of the hook call.
<DL>
<DT> form_init
each field change
<DT> field_term
<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. <P>
+the field is altered. It is also called when the form is unposted.
<DT> form_term
<DD> This hook is called when the form is unposted; also, just before
each page change operation.
a NULL first argument. <P>
You can disable any of these hooks by (re)setting them to NULL, the default
-value. <P>
+value.
<H2><A HREF="#ffocus">Field Change Commands</A></H2>
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>
+accomplish this:
<PRE>
int set_current_field(FORM *form, /* form to alter */
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>
-It is also possible to move around by pages. <P>
+It is also possible to move around by pages.
<PRE>
int set_form_page(FORM *form, /* form to alter */
</PRE>
The initial page of a newly-created form is 0. The function
-<CODE>set_form_fields()</CODE> resets this. <P>
+<CODE>set_form_fields()</CODE> resets this.
<H2><A NAME="frmoptions">Form Options</A></H2>
Like fields, forms may have control option bits. They can be changed
-or queried with these functions: <P>
+or queried with these functions:
<PRE>
int set_form_opts(FORM *form, /* form to alter */
</DL>
The option values are bit-masks and can be composed with logical-or in
-the obvious way. <P>
+the obvious way.
<H2><A NAME="fcustom">Custom Validation Types</A></H2>
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>
+functions.
<H3><A NAME="flinktypes">Union Types</A></H3>
The simplest way to create a custom data type is to compose it from two
-preexisting ones: <P>
+preexisting ones:
<PRE>
FIELD *link_fieldtype(FIELDTYPE *type1,
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>
+figure what type the buffer contents should be treated as.
<H3><A NAME="fnewtypes">New Field Types</A></H3>
To create a field type from scratch, you need to specify one or both of the
-following things: <P>
+following things:
<UL>
<LI>A character-validation function, to check each character as it is entered.
<LI>A field-validation function to be applied on exit from the field.
</UL>
-Here's how you do that: <P>
+Here's how you do that:
<PRE>
typedef int (*HOOK)(); /* pointer to function returning int */
the field. <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>
+It too should return TRUE if the character is valid, FALSE otherwise.
<H3><A NAME="fcheckargs">Validation Function Arguments</A></H3>
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>
-Here is how you make the association: <P>
+Here is how you make the association:
<PRE>
typedef char *(*PTRHOOK)(); /* pointer to function returning (char *) */
VOIDHOOK free_str); /* free structure storage */
</PRE>
-Here is how the storage-management hooks are used: <P>
+Here is how the storage-management hooks are used:
<DL>
<DT> <CODE>make_str</CODE>
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>
+should never see a NULL file pointer and need not check specially for it.
<H3><A NAME="fcustorder">Order Functions For Custom Types</A></H3>
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's how: <P>
+and <CODE>REQ_PREV_CHOICE</CODE> requests. Here's how:
<PRE>
typedef int (*INTHOOK)(); /* pointer to function returning int */
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>
+legal next or previous value was set) or FALSE to indicate failure.
<H3><A NAME="fcustprobs">Avoiding Problems</A></H3>
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.
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 */
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 */
+ (void) echo(); /* echo input - in color */
if (has_colors())
{
start_color();
/*
- * Simple color assignment, often all we need.
+ * 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(COLOR_BLACK, COLOR_BLACK, COLOR_BLACK);
- init_pair(COLOR_GREEN, COLOR_GREEN, COLOR_BLACK);
- init_pair(COLOR_RED, COLOR_RED, COLOR_BLACK);
- init_pair(COLOR_CYAN, COLOR_CYAN, COLOR_BLACK);
- init_pair(COLOR_WHITE, COLOR_WHITE, COLOR_BLACK);
- init_pair(COLOR_MAGENTA, COLOR_MAGENTA, COLOR_BLACK);
- init_pair(COLOR_BLUE, COLOR_BLUE, COLOR_BLACK);
- init_pair(COLOR_YELLOW, COLOR_YELLOW, COLOR_BLACK);
+ 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 */
}
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
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 */
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 */
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 */
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
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 */
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 */
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 */
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 */
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 */
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 */
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*/
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 */
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 */
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 */
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 */
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 */
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 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 */
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 */
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 */
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 */
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
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 */
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 */
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 */
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) */
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 */
The simplest way to create a custom data type is to compose it from
two preexisting ones:
-
FIELD *link_fieldtype(FIELDTYPE *type1,
FIELDTYPE *type2);
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 */
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 */
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 */
-# $Id: Makefile.in,v 1.25 1998/04/04 00:49:55 tom Exp $
+# $Id: Makefile.in,v 1.28 2000/05/28 01:40:18 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
LN_S = @LN_S@
CC = @CC@
+CPP = @CPP@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@ \
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib -L$(libdir)
-SHLIB_LIST = $(SHLIB_DIRS) -lncurses @SHLIB_LIST@
+SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
MK_SHARED_LIB = @MK_SHARED_LIB@
################################################################################
all \
+libs \
install :: $(AUTO_SRC) $(LIBRARIES)
sources : $(AUTO_SRC)
#include "form.priv.h"
-MODULE_ID("$Id: fty_enum.c,v 1.10 1999/05/16 17:23:14 juergen Exp $")
+MODULE_ID("$Id: fty_enum.c,v 1.11 2000/03/19 01:09:56 Bruno.Haible Exp $")
typedef struct {
char **kwds;
}
if (cnt<=0)
kwds = args->kwds;
- if ((cnt>=0) || (Compare((unsigned char *)dummy,bp,ccase)==EXACT))
+ if ((cnt>=0) || (Compare((const unsigned char *)dummy,bp,ccase)==EXACT))
{
set_field_buffer(field,0,*kwds);
return TRUE;
if (cnt<=0)
kwds = &args->kwds[args->count-1];
- if ((cnt>=0) || (Compare((unsigned char *)dummy,bp,ccase)==EXACT))
+ if ((cnt>=0) || (Compare((const unsigned char *)dummy,bp,ccase)==EXACT))
{
set_field_buffer(field,0,*kwds);
return TRUE;
# Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995
# and: Eric S. Raymond <esr@snark.thyrsus.com>
#
-# $Id: Caps,v 1.24 1999/01/17 02:01:44 tom Exp $
+# $Id: Caps,v 1.25 1999/11/27 20:13:55 tom Exp $
#
# This is the master termcap/terminfo capability table.
#
erase_overstrike eo bool eo YBCG- can erase overstrikes with a blank
generic_type gn bool gn YB-G- generic line type
hard_copy hc bool hc YBCG- hardcopy terminal
-has_meta_key km bool km YB-GE Has a meta key (shift, sets parity bit)
+has_meta_key km bool km YB-GE Has a meta key (i.e., sets 8th-bit)
has_status_line hs bool hs YB-G- has extra status line
insert_null_glitch in bool in YBCGE insert mode distinguishes nulls
memory_above da bool da YBCG- display may be retained above the screen
BEGIN {
print "/****************************************************************************"
- print " * Copyright (c) 1998 Free Software Foundation, Inc. *"
+ print " * Copyright (c) 1998,1999,2000 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 "/* and: Eric S. Raymond <esr@snark.thyrsus.com> */"
print "/****************************************************************************/"
print ""
- print "/* $Id: MKterm.h.awk.in,v 1.36 1999/09/01 22:36:52 Peter.Wemm Exp $ */"
+ print "/* $Id: MKterm.h.awk.in,v 1.37 2000/03/12 02:40:07 tom Exp $ */"
print ""
print "/*"
print "** term.h -- Definition of struct term"
/^#/ {next;}
+$1 == "acs_chars" {acsindex = StringCount}
+
$3 == "bool" {
printf "#define %-30s CUR Booleans[%d]\n", $1, 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 */"
-# $Id: Makefile.in,v 1.22 1998/02/11 12:13:46 tom Exp $
+# $Id: Makefile.in,v 1.23 2000/05/28 01:33:52 tom Exp $
##############################################################################
# Copyright (c) 1998 Free Software Foundation, Inc. #
# #
################################################################################
all \
+libs \
sources \
install :: $(AUTO_SRC)
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-/* $Id: capdefaults.c,v 1.8 1998/07/04 22:31:04 tom Exp $ */
+/* $Id: capdefaults.c,v 1.12 2000/01/02 02:34:56 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 offsets to different structures. See the file Caps for
- * explanations of these conversions.
- *
- * Note: This code is the functional inverse of the first part
- * of postprocess_entry().
- */
- {
- char *sp;
- int capval;
+ /*
+ * Compute obsolete capabilities. The reason this is an include file is
+ * that the two places where it's needed want the macros to generate
+ * offsets to different structures. See the file Caps for explanations of
+ * these conversions.
+ *
+ * Note: This code is the functional inverse of the first part of
+ * postprocess_termcap().
+ */
+{
+ char *sp;
+ int capval;
#define EXTRACT_DELAY(str) (sp = strchr(str, '*'), sp ? atoi(sp+1) : 0)
- /* current (4.4BSD) capabilities marked obsolete */
- if (VALID_STRING(carriage_return)
- && (capval = EXTRACT_DELAY(carriage_return)))
- carriage_return_delay = capval;
- if (VALID_STRING(newline) && (capval = EXTRACT_DELAY(newline)))
- new_line_delay = capval;
+ /* current (4.4BSD) capabilities marked obsolete */
+ if (VALID_STRING(carriage_return)
+ && (capval = EXTRACT_DELAY(carriage_return)))
+ carriage_return_delay = capval;
+ if (VALID_STRING(newline) && (capval = EXTRACT_DELAY(newline)))
+ new_line_delay = capval;
- /* current (4.4BSD) capabilities not obsolete */
- if (!VALID_STRING(termcap_init2) && VALID_STRING(init_3string))
- {
- termcap_init2 = init_3string;
- init_3string = (char *)0;
- }
- if (VALID_STRING(reset_1string)
- && !VALID_STRING(reset_2string)
- && VALID_STRING(reset_3string))
- {
- termcap_reset = reset_2string;
- reset_2string = (char *)0;
- }
-#if USE_XMC_SUPPORT
- if (magic_cookie_glitch_ul < 0 && magic_cookie_glitch && VALID_STRING(enter_underline_mode))
- magic_cookie_glitch_ul = magic_cookie_glitch;
-#else
- magic_cookie_glitch_ul = -1;
-#endif
+ /* current (4.4BSD) capabilities not obsolete */
+ if (!VALID_STRING(termcap_init2) && VALID_STRING(init_3string)) {
+ termcap_init2 = init_3string;
+ init_3string = ABSENT_STRING;
+ }
+ if (!VALID_STRING(termcap_reset)
+ && VALID_STRING(reset_2string)
+ && !VALID_STRING(reset_1string)
+ && !VALID_STRING(reset_3string)) {
+ termcap_reset = reset_2string;
+ reset_2string = ABSENT_STRING;
+ }
+ if (magic_cookie_glitch_ul == ABSENT_NUMERIC
+ && magic_cookie_glitch != ABSENT_NUMERIC
+ && VALID_STRING(enter_underline_mode))
+ magic_cookie_glitch_ul = magic_cookie_glitch;
- /* totally obsolete capabilities */
- linefeed_is_newline = VALID_STRING(newline)
- && (strcmp("\n", newline) == 0);
- if (VALID_STRING(cursor_left)
- && (capval = EXTRACT_DELAY(cursor_left)))
- backspace_delay = capval;
- if (VALID_STRING(tab) && (capval = EXTRACT_DELAY(tab)))
- horizontal_tab_delay = capval;
+ /* totally obsolete capabilities */
+ linefeed_is_newline = VALID_STRING(newline)
+ && (strcmp("\n", newline) == 0);
+ if (VALID_STRING(cursor_left)
+ && (capval = EXTRACT_DELAY(cursor_left)))
+ backspace_delay = capval;
+ if (VALID_STRING(tab) && (capval = EXTRACT_DELAY(tab)))
+ horizontal_tab_delay = capval;
#undef EXTRACT_DELAY
- }
+}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-/* $Id: curses.h.in,v 1.85 1999/10/23 12:33:54 tom Exp $ */
+/* $Id: curses.h.in,v 1.93 2000/07/08 11:07:26 tom Exp $ */
#ifndef __NCURSES_H
#define __NCURSES_H
#undef NCURSES_CONST
#define NCURSES_CONST @NCURSES_CONST@
+#undef NCURSES_COLOR_T
+#define NCURSES_COLOR_T short
+
+#undef NCURSES_SIZE_T
+#define NCURSES_SIZE_T short
+
typedef unsigned @cf_cv_typeof_chtype@ chtype;
#include <stdio.h>
struct ldat
{
chtype *text; /* text of the line */
- short firstchar; /* first changed character in the line */
- short lastchar; /* last changed character in the line */
- short oldindex; /* index of the line at last update */
+ NCURSES_SIZE_T firstchar; /* first changed character in the line */
+ NCURSES_SIZE_T lastchar; /* last changed character in the line */
+ NCURSES_SIZE_T oldindex; /* index of the line at last update */
};
struct _win_st
{
- short _cury, _curx; /* current cursor position */
+ NCURSES_SIZE_T _cury, _curx; /* current cursor position */
/* window location and size */
- short _maxy, _maxx; /* maximums of x and y, NOT window size */
- short _begy, _begx; /* screen coords of upper-left-hand corner */
+ 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 */
struct ldat *_line; /* the actual line data */
/* global screen state */
- short _regtop; /* top line of scrolling region */
- short _regbottom; /* bottom line of scrolling region */
+ 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 */
/* these are used only if this is a pad */
struct pdat
{
- short _pad_y, _pad_x;
- short _pad_top, _pad_left;
- short _pad_bottom, _pad_right;
+ NCURSES_SIZE_T _pad_y, _pad_x;
+ NCURSES_SIZE_T _pad_top, _pad_left;
+ NCURSES_SIZE_T _pad_bottom, _pad_right;
} _pad;
- short _yoffset; /* real begy is _begy + _yoffset */
+ NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */
};
extern WINDOW *stdscr;
*/
extern int ESCDELAY; /* ESC expire time in milliseconds */
+extern char ttytype[]; /* needed for backward compatibility */
+
+/*
+ * These functions are extensions - not in XSI Curses.
+ */
extern char *keybound (int, int);
extern const char *curses_version (void);
+extern int assume_default_colors (int, int);
extern int define_key (char *, int);
extern int keyok (int, bool);
extern int resizeterm (int, int);
extern int use_extended_names (bool);
extern int wresize (WINDOW *, int, int);
-extern char ttytype[]; /* needed for backward compatibility */
-
/*
* GCC (and some other compilers) define '__attribute__'; we're using this
* macro to alert the compiler to flag inconsistencies in printf/scanf-like
extern WINDOW *dupwin(WINDOW *); /* implemented */
extern int echo(void); /* implemented */
extern int echochar(const chtype); /* generated */
+extern int erase(void); /* generated */
#ifdef _XOPEN_SOURCE_EXTENDED
extern int echo_wchar(const cchar_t *); /* missing */
extern int erasewchar(wchar_t*); /* missing */
extern int tigetnum(NCURSES_CONST char *); /* implemented */
extern char *tigetstr(NCURSES_CONST char *); /* implemented */
extern void timeout(int); /* generated */
+extern int touchline(WINDOW *, int, int); /* generated */
+extern int touchwin(WINDOW *); /* generated */
extern char *tparm(NCURSES_CONST char *, ...); /* implemented */
extern int typeahead(int); /* implemented */
extern int ungetch(int); /* implemented */
#define winchstr(w, s) winchnstr(w, s, -1)
#define winsstr(w, s) winsnstr(w, s, -1)
-#define redrawwin(w) wredrawln(w, 0, w->_maxy+1)
+#define redrawwin(win) wredrawln(win, 0, (win)->_maxy+1)
#define waddstr(win,str) waddnstr(win,str,-1)
#define waddchstr(win,str) waddchnstr(win,str,-1)
#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_MAXIMUM 0xffff /* maximum trace level */
#if defined(TRACE) || defined(NCURSES_TEST)
#endif
#ifdef __cplusplus
+
+/* these names conflict with STL */
+#undef box
+#undef clear
+#undef erase
+#undef move
+#undef refresh
+
}
#endif
/****************************************************************************
* Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 *
****************************************************************************/
-/* $Id: nc_alloc.h,v 1.7 1999/04/03 23:15:13 tom Exp $ */
+/* $Id: nc_alloc.h,v 1.8 2000/04/08 23:42:57 tom Exp $ */
#ifndef NC_ALLOC_included
#define NC_ALLOC_included 1
#define ExitProgram(code) return code
#endif
+/* doalloc.c */
+extern void *_nc_doalloc(void *, size_t);
+#if !HAVE_STRDUP
+#define strdup _nc_strdup
+extern char *_nc_strdup(const char *);
+#endif
+
+#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))
+
#endif /* NC_ALLOC_included */
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
+/* $Id: term_entry.h,v 1.29 2000/03/19 02:04:15 tom Exp $ */
/*
* term_entry.h -- interface to entry-manipulation code
#include <term.h>
#define MAX_USES 32
+#define MAX_CROSSLINKS 16
typedef struct entry {
TERMTYPE tterm;
int nuses;
struct
{
- void *parent; /* (char *) or (ENTRY *) */
+ 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;
/* parse_entry.c: entry-parsing code */
#if NCURSES_XNAMES
extern bool _nc_user_definable;
+extern bool _nc_disable_period;
#endif
extern int _nc_parse_entry(ENTRY *, int, bool);
extern int _nc_capcmp(const char *, const char *);
/* comp_parse.c: entry list handling */
extern void _nc_read_entry_source(FILE*, char*, int, bool, bool (*)(ENTRY*));
extern bool _nc_entry_match(char *, char *);
-extern int _nc_resolve_uses(void);
+extern int _nc_resolve_uses(bool);
extern void _nc_free_entries(ENTRY *);
extern void (*_nc_check_termtype)(TERMTYPE *);
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
/* 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) << 12) /* see TRACE_MAXIMUM */
+
+#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 & (1 << (n - 1))) _tracef a
+#define DEBUG(n, a) if (_nc_tracing >= DEBUG_LEVEL(n)) _tracef a
#else
#define DEBUG(n, a) /*nothing*/
#endif
chtype code;
};
-#ifdef BROKEN_LINKER
+#if BROKEN_LINKER
#define _nc_tinfo_fkeys _nc_tinfo_fkeysf()
extern struct tinfo_fkeys *_nc_tinfo_fkeysf(void);
extern char *_nc_tic_expand(const char *, bool, int);
/* comp_scan.c: decode string from readable form */
-extern char _nc_trans_string(char *);
+extern char _nc_trans_string(char *, char *);
/* captoinfo.c: capability conversion */
extern char *_nc_captoinfo(const char *, const char *, int const);
#! /bin/sh
#
# install - install a program, script, or datafile
-# This comes from X11R5.
+# This comes from X11R5 (mit/util/scripts/install.sh).
+#
+# Copyright 1991 by the Massachusetts Institute of Technology
+#
+# Permission to use, copy, modify, distribute, and sell this software and its
+# documentation for any purpose is hereby granted without fee, provided that
+# the above copyright notice appear in all copies and that both that
+# copyright notice and this permission notice appear in supporting
+# documentation, and that the name of M.I.T. not be used in advertising or
+# publicity pertaining to distribution of the software without specific,
+# written prior permission. M.I.T. makes no representations about the
+# suitability of this software for any purpose. It is provided "as is"
+# without express or implied warranty.
#
# 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.
-#
+# from scratch. It can only install one file at a time, a restriction
+# shared with many OS's install programs.
# set DOITPROG to echo to test this script
rmprog="${RMPROG-rm}"
mkdirprog="${MKDIRPROG-mkdir}"
-tranformbasename=""
+transformbasename=""
transform_arg=""
instcmd="$mvprog"
chmodcmd="$chmodprog 0755"
#!/bin/sh
#***************************************************************************
-# Copyright (c) 1998 Free Software Foundation, Inc. *
+# 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 *
# authorization. *
#***************************************************************************
#
-# $Id: MKterminfo.sh,v 1.5 1998/09/06 00:20:01 tom Exp $
+# $Id: MKterminfo.sh,v 1.6 2000/01/25 11:31:57 tom Exp $
#
# MKterminfo.sh -- generate terminfo.5 from Caps tabular data
#
# \ 5 to \n because I couldn't get used to inserting linefeeds directly. There
# had better be no \ 5s in the table source text.
#
+# keep the order independent of locale:
+LANGUAGE=C
+LC_ALL=C
+export LANGUAGE
+export LC_ALL
+#
head=$1
caps=$2
tail=$3
-# $Id: Makefile.in,v 1.25 1998/02/11 12:13:49 tom Exp $
+# $Id: Makefile.in,v 1.26 2000/04/01 22:15:22 tom Exp $
##############################################################################
# Copyright (c) 1998 Free Software Foundation, Inc. #
# #
$(INSTALL_PREFIX)$(mandir) :
$(srcdir)/../mkinstalldirs $@
+EDITARGS = $(INSTALL_PREFIX)$(mandir) $(srcdir) terminfo.5 $(srcdir)/*.[0-9]*
+
install install.man : terminfo.5 $(INSTALL_PREFIX)$(mandir)
- sh ./edit_man.sh installing $(INSTALL_PREFIX)$(mandir) terminfo.5 $(srcdir)/*.[0-9]*
+ sh ./edit_man.sh installing $(EDITARGS)
uninstall uninstall.man :
- -sh ./edit_man.sh removing $(INSTALL_PREFIX)$(mandir) terminfo.5 $(srcdir)/*.[0-9]*
+ -sh ./edit_man.sh removing $(EDITARGS)
# We compose terminfo.5 from the real sources...
CAPLIST=$(srcdir)/../include/Caps
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: captoinfo.1m,v 1.13 1998/12/26 19:57:11 tom Exp $
+.\" $Id: captoinfo.1m,v 1.14 2000/03/19 02:20:28 tom Exp $
.TH captoinfo 1M ""
.ds n 5
.ds d @DATADIR@/terminfo
These will be discarded with a warning message.
.SH NOTES
This utility is actually a link to \fItic\fR(1M), running in \fI-I\fR mode.
+You can use other \fItic\fR options such as \fB-f\fR and \fB-x\fR.
The trace option isn't identical to SVr4's. Under SVr4, instead of following
the -v with a trace level n, you repeat it n times.
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addch.3x,v 1.16 1999/02/07 03:47:42 tom Exp $
+.\" $Id: curs_addch.3x,v 1.17 2000/07/01 19:53:01 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
+\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
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addchstr.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_addchstr.3x,v 1.7 2000/07/01 19:53:33 tom Exp $
.TH curs_addchstr 3X ""
.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
+\fBmvwaddchnstr\fR - add a string of characters (and attributes) to a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_addstr.3x,v 1.8 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_addstr.3x,v 1.9 2000/07/01 19:54:05 tom Exp $
.TH curs_addstr 3X ""
.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
+\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
.SH SYNOPSIS
\fB#include <curses.h>\fR
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_attr.3x,v 1.19 1998/12/26 19:25:35 tom Exp $
+.\" $Id: curs_attr.3x,v 1.22 2000/07/08 11:59:58 tom Exp $
.TH curs_attr 3X ""
.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 - \fBcurses\fR character and window attribute control routines
+\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
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
.br
\fBint wattr_on(WINDOW *win, attr_t attrs, void *opts);\fR
.br
-\fBint attr_set(attr_t attrs, void *opts);\fR
+\fBint attr_set(attr_t attrs, short pair, void *opts);\fR
.br
-\fBint wattr_set(WINDOW *win, attr_t attrs, void *opts);\fR
+\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
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_bkgd.3x,v 1.12 1998/03/14 23:43:31 tom Exp $
+.\" $Id: curs_bkgd.3x,v 1.14 2000/07/01 17:39:31 tom Exp $
.TH curs_bkgd 3X ""
.SH NAME
-\fBbkgdset\fR, \fBwbkgdset\fR, \fBbkgd\fR,
-\fBwbkgd\fR - \fBcurses\fR window background manipulation routines
+\fBbkgdset\fR, \fBwbkgdset\fR,
+\fBbkgd\fR, \fBwbkgd\fR,
+\fBgetbkgd\fR - \fBcurses\fR window background manipulation routines
..
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_border.3x,v 1.11 1999/01/30 23:11:47 tom Exp $
+.\" $Id: curs_border.3x,v 1.14 2000/07/01 19:54:58 tom Exp $
.TH curs_border 3X ""
.SH NAME
\fBborder\fR, \fBwborder\fR, \fBbox\fR,
-\fBhline\fR, \fBwhline\fR, \fBvline\fR, \fBwvline\fR - create
-\fBcurses\fR borders, horizontal and vertical lines
+\fBhline\fR, \fBwhline\fR,
+\fBvline\fR, \fBwvline\fR,
+\fBmvhline\fR, \fBmvwhline\fR,
+\fBmvvline\fR, \fBmvwvline\fR - create \fBcurses\fR borders, horizontal and vertical lines
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_color.3x,v 1.10 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_color.3x,v 1.15 2000/07/08 11:59:51 tom Exp $
.TH curs_color 3X ""
.SH NAME
-\fBstart_color\fR, \fBinit_pair\fR,
-\fBinit_color\fR, \fBhas_colors\fR, \fBcan_change_color\fR,
-\fBcolor_content\fR, \fBpair_content\fR - \fBcurses\fR color
-manipulation routines
+\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
.SH SYNOPSIS
\fB# include <curses.h>\fR
.br
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. The value of the first argument
-must be between \fB1\fR and \fBCOLOR_PAIRS-1\fR. The value of the second and
+color number, and the background color number.
+For portable applications:
+.TP 5
+-
+The value of the first argument
+must be between \fB1\fR and \fBCOLOR_PAIRS-1\fR.
+.TP 5
+-
+The value of the second and
third arguments must be between 0 and \fBCOLORS\fR (the 0 color pair is wired
-to white on black and cannot be changed). If the color-pair was previously
+to white on black and cannot be changed).
+.PP
+If the color-pair was previously
initialized, the screen is refreshed and all occurrences of that color-pair is
changed to the new definition.
+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.
+
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
scrolling operations, see \fBcurs_bkgd\fR(3X).
Several caveats apply on 386 and 486 machines with VGA-compatible graphics:
-
+.TP 5
+-
COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW combined with
the \fBA_BOLD\fR attribute.
-
+.TP 5
+-
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).
-
+.TP 5
+-
Color RGB values are not settable.
.SH PORTABILITY
This implementation satisfies XSI Curses's minimum maximums
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,
+..
.SH SEE ALSO
\fBcurses\fR(3X),
\fBcurs_initscr\fR(3X),
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_delch.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_delch.3x,v 1.7 2000/07/01 19:55:37 tom Exp $
.TH curs_delch 3X ""
.SH NAME
-\fBdelch\fR, \fBwdelch\fR, \fBmvdelch\fR, \fBmvwdelch\fR -
-delete character under the cursor in a \fBcurses\fR window
+\fBdelch\fR,
+\fBwdelch\fR,
+\fBmvdelch\fR,
+\fBmvwdelch\fR - delete character under the cursor in a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_deleteln.3x,v 1.5 1999/02/07 03:58:20 tom Exp $
+.\" $Id: curs_deleteln.3x,v 1.6 2000/07/01 19:56:12 tom Exp $
.TH curs_deleteln 3X ""
.SH NAME
-\fBdeleteln\fR, \fBwdeleteln\fR, \fBinsdelln\fR,
-\fBwinsdelln\fR, \fBinsertln\fR, \fBwinsertln\fR - delete and insert
-lines in a \fBcurses\fR window
+\fBdeleteln\fR,
+\fBwdeleteln\fR,
+\fBinsdelln\fR,
+\fBwinsdelln\fR,
+\fBinsertln\fR,
+\fBwinsertln\fR - delete and insert lines in a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
--- /dev/null
+.\"***************************************************************************
+.\" Copyright (c) 1999,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: Thomas E. Dickey <dickey@clark.net> 1999
+.\"
+.\" $Id: curs_extend.3x,v 1.4 2000/07/01 16:43:11 tom Exp $
+.TH use_default_colors 3X ""
+.SH NAME
+\fBcurs_extend\fR:
+\fBcurses_version\fP,
+\fBuse_extended_names\fP \- miscellaneous curses extensions
+..
+.SH SYNOPSIS
+\fB#include <curses.h>\fP
+
+\fBconst char * curses_version(void);\fP
+.br
+\fBint use_extended_names(bool enable);\fP
+..
+.SH DESCRIPTION
+These functions are extensions to the curses library
+which do not fit easily into other categories.
+.PP
+Use
+.I curses_version()
+to get the version number, including patch level of the library, e.g.,
+.B 5.0.19991023
+.PP
+The
+.I use_extended_names()
+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 descision
+is made by using the \fB-x\fP option of \fItic\fP to compile
+extended terminal definitions.
+However you can disable this feature
+to ensure compatiblity with other implementations of curses
+..
+.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_getch\fR(3X),
+\fBcurs_mouse\fR(3X),
+\fBcurs_print\fR(3X),
+\fBdefine_key\fR(3X),
+\fBdft_fgbg\fR(3X),
+\fBkeybound\fR(3X),
+\fBkeyok\fR(3X),
+\fBresizeterm\fR(3X),
+\fBwresize\fR(3X).
+..
+.SH AUTHOR
+Thomas Dickey.
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_getch.3x,v 1.15 1998/11/29 01:04:26 Rick.Ohnemus Exp $
+.\" $Id: curs_getch.3x,v 1.17 2000/07/01 16:45:36 tom Exp $
.TH curs_getch 3X ""
.SH NAME
-\fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR,
-\fBmvwgetch\fR, \fBungetch\fR - get (or push back) characters from
-\fBcurses\fR terminal keyboard
+\fBgetch\fR,
+\fBwgetch\fR,
+\fBmvgetch\fR,
+\fBmvwgetch\fR,
+\fBungetch\fR,
+\fBhas_key\fR \- get (or push back) characters from \fBcurses\fR terminal keyboard
.SH SYNOPSIS
\fB#include <curses.h>\fR
mode). In half-delay mode, the program waits until a character is typed or the
specified timeout has been reached.
-If \fBnoecho\fR has been set, then the character will also be echoed into the
+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
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_getstr.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_getstr.3x,v 1.9 2000/07/01 17:39:31 tom Exp $
.TH curs_getstr 3X ""
.SH NAME
-\fBgetstr\fR, \fBwgetstr\fR, \fBmvgetstr\fR,
-\fBmvwgetstr\fR, \fBwgetnstr\fR - accept character strings from
-\fBcurses\fR terminal keyboard
+\fBgetstr\fR,
+\fBgetnstr\fR,
+\fBwgetstr\fR,
+\fBwgetnstr\fR,
+\fBmvgetstr\fR,
+\fBmvgetnstr\fR,
+\fBmvwgetstr\fR,
+\fBmvwgetnstr\fR - accept character strings from \fBcurses\fR terminal keyboard
.SH SYNOPSIS
\fB#include <curses.h>\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 mvwgetnstr(WINDOW *, int y, int x, char *str, int n);\fR
.br
-\fBint wgetnstr(WINDOW *win, 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
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_inchstr.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_inchstr.3x,v 1.8 2000/07/01 20:16:18 tom Exp $
.TH curs_inchstr 3X ""
.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
+\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
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_initscr.3x,v 1.8 1999/09/18 23:52:30 tom Exp $
+.\" $Id: curs_initscr.3x,v 1.10 2000/07/08 12:47:39 tom Exp $
.TH curs_initscr 3X ""
.SH NAME
-\fBinitscr\fR, \fBnewterm\fR, \fBendwin\fR,
-\fBisendwin\fR, \fBset_term\fR, \fBdelscreen\fR - \fBcurses\fR screen
-initialization and manipulation routines
+\fBinitscr\fR,
+\fBnewterm\fR,
+\fBendwin\fR,
+\fBisendwin\fR,
+\fBset_term\fR,
+\fBdelscreen\fR - \fBcurses\fR screen initialization and manipulation routines
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
\fBint endwin(void);\fR
.br
-\fBint isendwin(void);\fR
+\fBbool isendwin(void);\fR
.br
\fBSCREEN *newterm(const char *type, FILE *outfd, FILE *infd);\fR
.br
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_insch.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_insch.3x,v 1.7 2000/07/01 19:57:21 tom Exp $
.TH curs_insch 3X ""
.SH NAME
-\fBinsch\fR, \fBwinsch\fR, \fBmvinsch\fR, \fBmvwinsch\fR -
-insert a character before cursor in a \fBcurses\fR window
+\fBinsch\fR,
+\fBwinsch\fR,
+\fBmvinsch\fR,
+\fBmvwinsch\fR - insert a character before cursor in a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_insstr.3x,v 1.10 1998/07/25 20:32:57 Todd.Miller Exp $
+.\" $Id: curs_insstr.3x,v 1.11 2000/07/01 19:57:49 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
+\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
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_instr.3x,v 1.8 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_instr.3x,v 1.9 2000/07/01 20:05:03 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
+\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
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_kernel.3x,v 1.11 1998/06/27 21:56:38 tom Exp $
+.\" $Id: curs_kernel.3x,v 1.12 2000/02/27 01:37:46 tom Exp $
.TH curs_kernel 3X ""
.SH NAME
\fBdef_prog_mode\fR, \fBdef_shell_mode\fR,
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.
+
+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
+visible 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.
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,1999,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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.'" $Id: curs_mouse.3x,v 1.13 1999/09/11 17:28:28 tom Exp $
+.'" $Id: curs_mouse.3x,v 1.15 2000/07/08 12:50:08 tom Exp $
.TH curs_mouse 3X ""
.SH NAME
\fBgetmouse\fR, \fBungetmouse\fR,
\fBmousemask\fR, \fBwenclose\fR,
-\fBwmouse_trafo\fR, \fBmouseinterval\fR - mouse interface through curses
+\fBmouse_trafo\fR, \fBwmouse_trafo\fR,
+\fBmouseinterval\fR - mouse interface through curses
.SH SYNOPSIS
.nf
\fB#include <curses.h>\fR
.br
\fBbool wenclose(WINDOW *win, int y, int x);\fR
.br
-\fBbool wmouse_trafo(const WINDOW* win, int* pY, int* pX, bool to_screen);\fR
+\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
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_outopts.3x,v 1.13 1998/12/26 20:02:04 tom Exp $
+.\" $Id: curs_outopts.3x,v 1.14 2000/02/27 01:41:58 tom Exp $
.TH curs_outopts 3X ""
.SH NAME
\fBclearok\fR, \fBidlok\fR, \fBidcok immedok\fR,
The XSI Curses standard does not mention that the cursor should be
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.
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_overlay.3x,v 1.8 1998/12/26 20:08:30 tom Exp $
+.\" $Id: curs_overlay.3x,v 1.9 2000/07/01 20:05:31 tom Exp $
.TH curs_overlay 3X ""
.SH NAME
-\fBoverlay\fR, \fBoverwrite\fR, \fBcopywin\fR - overlay and
-manipulate overlapped \fBcurses\fR windows
+\fBoverlay\fR,
+\fBoverwrite\fR,
+\fBcopywin\fR - overlay and manipulate overlapped \fBcurses\fR windows
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_pad.3x,v 1.8 1998/12/26 20:09:03 tom Exp $
+.\" $Id: curs_pad.3x,v 1.9 2000/07/04 22:38:13 tom Exp $
.TH curs_pad 3X ""
.SH NAME
\fBnewpad\fR, \fBsubpad\fR, \fBprefresh\fR,
-\fBpnoutrefresh\fR, \fBpechochar\fR - create and display \fBcurses\fR
-pads
+\fBpnoutrefresh\fR, \fBpechochar\fR - create and display \fBcurses\fR pads
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_printw.3x,v 1.8 1998/12/26 20:09:36 tom Exp $
+.\" $Id: curs_printw.3x,v 1.11 2000/07/01 20:11:32 tom Exp $
.TH curs_printw 3X ""
.SH NAME
-\fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR,
-\fBmvwprintw\fR, \fBvwprintw\fR - print formatted output in
-\fBcurses\fR windows
+\fBprintw\fR,
+\fBwprintw\fR,
+\fBmvprintw\fR,
+\fBmvwprintw\fR,
+\fBvwprintw\fR, \fBvw_printw\fR - print formatted output in \fBcurses\fR windows
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
\fBint vwprintw(WINDOW *win, char *fmt, varglist);\fR
.br
+\fBint vw_printw(WINDOW *win, char *fmt, varglist);\fR
+.br
.SH DESCRIPTION
The \fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR and \fBmvwprintw\fR
routines are analogous to \fBprintf\fR [see \fBprintf\fR(3S)]. In
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_refresh.3x,v 1.7 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_refresh.3x,v 1.8 2000/07/01 20:06:14 tom Exp $
.TH curs_refresh 3X ""
.SH NAME
-\fBrefresh\fR, \fBwrefresh\fR, \fBwnoutrefresh\fR,
-\fBdoupdate\fR, \fBredrawwin\fR, \fBwredrawln\fR - refresh
-\fBcurses\fR windows and lines
+\fBrefresh\fR,
+\fBwrefresh\fR,
+\fBwnoutrefresh\fR,
+\fBdoupdate\fR,
+\fBredrawwin\fR,
+\fBwredrawln\fR - refresh \fBcurses\fR windows and lines
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_scanw.3x,v 1.8 1998/12/26 20:10:12 tom Exp $
+.\" $Id: curs_scanw.3x,v 1.10 2000/07/01 20:06:29 tom Exp $
.TH curs_scanw 3X ""
.SH NAME
-\fBscanw\fR, \fBwscanw\fR, \fBmvscanw\fR,
-\fBmvwscanw\fR, \fBvwscanw\fR - convert formatted input from a
-\fBcurses\fR widow
+\fBscanw\fR,
+\fBwscanw\fR,
+\fBmvscanw\fR,
+\fBmvwscanw\fR,
+\fBvwscanw\fR, \fBvw_scanw\fR - convert formatted input from a \fBcurses\fR widow
.SH SYNOPSIS
\fB#include <curses.h>\fR
\fBint mvwscanw(WINDOW *win, int y, int x,\fR
\fBchar *fmt\fR [\fB, arg]\fR \fB...);\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
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_scr_dump.3x,v 1.1 1998/03/11 21:12:53 tom Exp $
+.\" $Id: curs_scr_dump.3x,v 1.2 2000/07/01 20:06:53 tom Exp $
.TH curs_scr_dump 3X ""
.SH NAME
-\fBscr_dump\fR, \fBscr_restore\fR,
-\fBscr_init\fR, \fBscr_set\fR - read (write) a \fBcurses\fR screen
-from (to) a file
+\fBscr_dump\fR,
+\fBscr_restore\fR,
+\fBscr_init\fR,
+\fBscr_set\fR - read (write) a \fBcurses\fR screen from (to) a file
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_scroll.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_scroll.3x,v 1.8 2000/07/01 17:54:23 tom Exp $
.TH curs_scroll 3X ""
.SH NAME
-\fBscroll\fR, \fBsrcl\fR, \fBwscrl\fR - scroll a \fBcurses\fR window
+\fBscroll\fR, \fBscrl\fR, \fBwscrl\fR - scroll a \fBcurses\fR window
.SH SYNOPSIS
\fB#include <curses.h>\fR
that this will occur, in order to leave open the possibility of smarter
optimization of multiple scroll actions on the next update.
-Neither the SVr4 documentation specifies whether the current attribute or
+Neither the SVr4 nor the XSI documentation specify whether the current
+attribute or
current color-pair of blanks generated by the scroll function is zeroed.
Under this implementation it is.
.SH PORTABILITY
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_slk.3x,v 1.9 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_slk.3x,v 1.10 2000/07/01 17:52:44 tom Exp $
.TH curs_slk 3X ""
.SH NAME
\fBslk_init\fR, \fBslk_set\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_color\fR -
-\fBcurses\fR soft label routines
+\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
.SH SYNOPSIS
\fB#include <curses.h>\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
-\fBattr_t slk_attr(void);\fR
+\fBint slk_attr_on(attr_t attrs, void* opts);\fR
.br
-\fBint slk_attroff(const chtype attrs);\fR
+\fBint slk_attr_off(const attr_t attrs, void * opts);\fR
+.br
+\fBint slk_attr_set(const attr_t attrs,\fR
+.br
+ \fBshort color_pair_number, void* opts);\fR
+.br
+\fBattr_t slk_attr(void);\fR
.br
\fBint slk_color(short color_pair_number);\fR
.br
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_termattrs.3x,v 1.4 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_termattrs.3x,v 1.6 2000/07/08 12:53:34 tom Exp $
.TH curs_termattrs 3X ""
.SH NAME
\fBbaudrate\fR, \fBerasechar\fR, \fBhas_ic\fR,
.br
\fBchar erasechar(void);\fR
.br
-\fBint has_ic(void);\fR
+\fBbool has_ic(void);\fR
.br
-\fBint has_il(void);\fR
+\fBbool has_il(void);\fR
.br
\fBchar killchar(void);\fR
.br
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_termcap.3x,v 1.12 1999/09/05 01:02:07 tom Exp $
+.\" $Id: curs_termcap.3x,v 1.13 2000/07/01 20:10:57 tom Exp $
.TH curs_termcap 3X ""
.ds n 5
.SH NAME
-\fBtgetent\fR, \fBtgetflag\fR, \fBtgetnum\fR,
-\fBtgetstr\fR, \fBtgoto\fR, \fBtputs\fR - direct \fBcurses\fR
-interface to the terminfo capability database
+\fBtgetent\fR,
+\fBtgetflag\fR,
+\fBtgetnum\fR,
+\fBtgetstr\fR,
+\fBtgoto\fR,
+\fBtputs\fR - direct \fBcurses\fR interface to the terminfo capability database
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
.\"***************************************************************************
-.\" Copyright (c) 1999 Free Software Foundation, Inc. *
+.\" Copyright (c) 1999,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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_terminfo.3x,v 1.12 1999/10/17 01:11:59 tom Exp $
+.\" $Id: curs_terminfo.3x,v 1.13 2000/07/01 20:07:34 tom Exp $
.TH curs_terminfo 3X ""
.ds n 5
.SH NAME
-\fBsetupterm\fR, \fBsetterm\fR,
-\fBset_curterm\fR, \fBdel_curterm\fR, \fBrestartterm\fR, \fBtparm\fR,
-\fBtputs\fR, \fBputp\fR, \fBvidputs\fR, \fBvidattr\fR, \fBmvcur\fR,
-\fBtigetflag\fR, \fBtigetnum\fR, \fBtigetstr\fR - \fBcurses\fR
-interfaces to terminfo database
+\fBsetupterm\fR,
+\fBsetterm\fR,
+\fBset_curterm\fR,
+\fBdel_curterm\fR,
+\fBrestartterm\fR,
+\fBtparm\fR,
+\fBtputs\fR,
+\fBputp\fR,
+\fBvidputs\fR,
+\fBvidattr\fR,
+\fBmvcur\fR,
+\fBtigetflag\fR,
+\fBtigetnum\fR,
+\fBtigetstr\fR - \fBcurses\fR interfaces to terminfo database
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_touch.3x,v 1.6 1998/03/11 21:12:53 juergen Exp $
+.\" $Id: curs_touch.3x,v 1.8 2000/07/08 11:07:57 tom Exp $
.TH curs_touch 3X ""
.SH NAME
-\fBtouchwin\fR, \fBtouchline\fR, \fBuntouchwin\fR,
-\fBwtouchln\fR, \fBis_linetouched\fR, \fBis_wintouched\fR -
-\fBcurses\fR refresh control routines
+\fBtouchwin\fR,
+\fBtouchline\fR,
+\fBuntouchwin\fR,
+\fBwtouchln\fR,
+\fBis_linetouched\fR,
+\fBis_wintouched\fR - \fBcurses\fR refresh control routines
.SH SYNOPSIS
\fB#include <curses.h>\fR
.br
.br
\fBint wtouchln(WINDOW *win, int y, int n, int changed);\fR
.br
-\fBint is_linetouched(WINDOW *win, int line);\fR
+\fBbool is_linetouched(WINDOW *win, int line);\fR
.br
-\fBint is_wintouched(WINDOW *win);\fR
+\fBbool is_wintouched(WINDOW *win);\fR
.br
.SH DESCRIPTION
The \fBtouchwin\fR and \fBtouchline\fR routines throw away all
--- /dev/null
+.\"***************************************************************************
+.\" 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. *
+.\"***************************************************************************
+.\"
+.\" $Id: curs_trace.3x,v 1.2 2000/07/08 12:42:51 tom Exp $
+.TH curs_trace 3X ""
+.SH NAME
+\fB_tracef\fR,
+\fB_tracedump\fR,
+\fB_traceattr\fR,
+\fB_traceattr2\fR,
+\fB_nc_tracebits\fR,
+\fB_tracechar\fR,
+\fB_tracechtype\fR,
+\fB_tracechtype2\fR,
+\fB_tracemouse\fR,
+\fBtrace\fR - \fBcurses\fR debugging routines
+.SH SYNOPSIS
+\fB#include <curses.h>\fR
+.br
+\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 *_tracechar(const unsigned char 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.
+
+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.
+
+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<curses.h>\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_MAXIMUM
+maximum trace level, enables all of the separate trace features.
+
+Some tracing features are enabled whenever the \fBtrace\fR parameter
+is nonzero. Some features overlap.
+The specific names are used as a guideline.
+..
+.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).
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: curs_window.3x,v 1.8 1999/03/20 22:38:46 tom Exp $
+.\" $Id: curs_window.3x,v 1.9 2000/07/01 20:08:37 tom Exp $
.TH curs_window 3X ""
.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
+\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
.SH SYNOPSIS
\fB#include <curses.h>\fR
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,1999,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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" Author: Thomas E. Dickey <dickey@clark.net> 1997
+.\" Author: Thomas E. Dickey <dickey@clark.net> 1997,1999
.\"
-.\" $Id: dft_fgbg.3x,v 1.6 1998/03/14 23:43:15 tom Exp $
+.\" $Id: dft_fgbg.3x,v 1.12 2000/07/04 22:31:56 tom Exp $
.TH use_default_colors 3X ""
.SH NAME
-\fBdft_fgbg\fR \- use terminal's default colors
+\fBdft_fgbg\fR:
+\fBuse_default_colors\fR,
+\fBassume_default_colors\fR \- use terminal's default colors
..
.SH SYNOPSIS
\fB#include <curses.h>\fP
\fBint use_default_colors(void);\fP
+.br
+\fBint assume_default_colors(int fg, int bg);\fP
..
.SH DESCRIPTION
-This is an extension to the curses library.
-It is used with terminals that support ISO 6429 color, or equivalent.
+The
+.I use_default_colors()
+and
+.I assume_default_colors()
+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).
-Because they are designed to support this, their design usually includes
-features to change the default foreground or background colors so that
-they do not match the assumption in XSI curses of white on black.
.PP
Applications that paint a colored background over the whole screen
-are not adversely impacted by this type of terminal design.
-However, there are applications that are designed to work with
-the default background.
+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 \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
+foreground color.
+Full-screen applications that use default colors can achieve similar
+visual effects.
+.PP
+The first function,
+.I 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.
+.PP
+The other,
+.I assume_default_colors()
+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.
+.PP
+The following are equivalent:
+.RS
+.br
+.I use_default_colors();
+.br
+.I assume_default_colors(-1,-1);
+.RE
+.PP
+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.
+.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()
+or
+.I assume_default_colors()
+ncurses will paint a white foreground (text) with black background
+for color pair 0.
..
.SH RETURN VALUE
-The function returns the integer \fBERR\fP upon failure and \fBOK\fP on success.
-It will fail if either the terminal does not support
+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 found, this causes an
error as well.
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: form_field_info.3x,v 1.5 1998/11/29 01:06:24 Rick.Ohnemus Exp $
+.\" $Id: form_field_info.3x,v 1.6 2000/04/15 22:21:31 tom Exp $
.TH form_field_info 3X ""
.SH NAME
\fBform_field_info\fR - retrieve field characteristics
.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.
'\" t
.\"***************************************************************************
-.\" Copyright (c) 1998 Free Software Foundation, Inc. *
+.\" 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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: infocmp.1m,v 1.21 1999/06/15 23:12:25 tom Exp $
+.\" $Id: infocmp.1m,v 1.25 2000/06/11 02:08:16 tom Exp $
.TH infocmp 1M ""
.ds n 5
.ds d @DATADIR@/terminfo
.SH NAME
\fBinfocmp\fR - compare or print out \fIterminfo\fR descriptions
.SH SYNOPSIS
-\fBinfocmp\fR [\fB-dceEGgnpILCuV1\fR] [\fB-v\fR \fIn\fR] [\fB-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR]
+\fBinfocmp\fR [\fB-dceEGgnpqrILCuV1\fR] [\fB-v\fR \fIn\fR] [\fB-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR]
.br
[\fB-w\fR\ \fIwidth\fR] [\fB-A\fR\ \fIdirectory\fR] [\fB-B\fR\ \fIdirectory\fR]
.br
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.
+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
\fB-G\fR
Display constant literals in decimal form
rather than their character equivalents.
+.TP
+\fB-a\fR
+tells \fBinfocmp\fP to retain commented-out capabilities rather than discarding
+them. Capabilities are commented by prefixing them with a period.
+.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 don't support
-the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX
+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
\fB-G\fR,
\fB-R\fR,
\fB-T\fR,
+\fB-a\fR,
\fB-e\fR,
\fB-f\fR,
\fB-g\fR,
-\fB-i\fR, and
-\fB-p\fR
+\fB-i\fR,
+\fB-p\fR, and
+\fB-q\fR
options are not supported in SVr4 curses.
The \fB-r\fR option's notion of `termcap' capabilities is System V Release 4's.
.SH AUTHOR
Eric S. Raymond <esr@snark.thyrsus.com>
and
-Thomas E. Dickey <dickey@clark.net>
+Thomas E. Dickey <dickey@herndon4.his.com>
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
--- /dev/null
+'\" t
+.\"***************************************************************************
+.\" Copyright (c) 1999,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: infotocap.1m,v 1.2 2000/03/19 02:19:49 tom Exp $
+.TH infotocap 1M ""
+.ds n 5
+.ds d @DATADIR@/terminfo
+.SH NAME
+\fBinfotocap\fR - convert a \fIterminfo\fR description into a \fItermcap\fR description
+.SH SYNOPSIS
+\fBinfotocap\fR [\fB-v\fR\fIn\fR \fIwidth\fR] [\fB-V\fR] [\fB-1\fR] [\fB-w\fR \fIwidth\fR] \fIfile\fR . . .
+.SH DESCRIPTION
+\fBinfotocap\fR looks in \fIfile\fR for \fBterminfo\fR descriptions. For each
+one found, an equivalent \fBtermcap\fR description is written to standard
+output. Terminfo \fBuse\fR capabilities are translated directly to termcap
+\fBtc\fR capabilities.
+.TP 5
+\fB-v\fR
+print out tracing information on standard error as the program runs.
+.TP 5
+\fB-V\fR
+print out the version of the program in use on standard error and exit.
+.TP 5
+\fB-1\fR
+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.
+.TP 5
+\fB-w\fR
+change the output to \fIwidth\fR characters.
+.SH FILES
+.TP 20
+\*d
+Compiled terminal description database.
+.SH NOTES
+This utility is actually a link to \fItic\fR(1M), running in \fI-C\fR mode.
+You can use other \fItic\fR options such as \fB-f\fR and \fB-x\fR.
+.SH SEE ALSO
+\fBcurses\fR(3X),
+\fBtic\fR(1M),
+\fBinfocmp\fR(1M),
+\fBterminfo\fR(\*n)
+.\"#
+.\"# The following sets edit modes for GNU EMACS
+.\"# Local Variables:
+.\"# mode:nroff
+.\"# fill-column:79
+.\"# End:
-# $Id: man_db.renames,v 0.15 1999/10/02 23:28:13 tom Exp $
+# $Id: man_db.renames,v 0.19 2000/07/08 12:11:31 tom Exp $
# Manual-page renamings for the man_db program
#
captoinfo.1m captoinfo.1
curs_color.3x color.3ncurses
curs_delch.3x delch.3ncurses
curs_deleteln.3x deleteln.3ncurses
+curs_extend.3x extensions.3ncurses
curs_getch.3x getch.3ncurses
curs_getstr.3x getstr.3ncurses
curs_getyx.3x getyx.3ncurses
curs_termcap.3x termcap.3ncurses
curs_terminfo.3x terminfo.3ncurses
curs_touch.3x touch.3ncurses
+curs_trace.3x trace.3ncurses
curs_util.3x util.3ncurses
curs_window.3x window.3ncurses
curses.3x ncurses.3ncurses
form_userptr.3x userptr.3form
form_win.3x win.3form
infocmp.1m infocmp.1
+infotocap.1m infotocap.1
keybound.3x keybound.3ncurses
keyok.3x keyok.3ncurses
menu.3x menu.3menu
term.5 term.5
term.7 term.7
terminfo.5 terminfo.5
+terminfo.\\\*n terminfo.5
tic.1m tic.1
toe.1m toe.1
tput.1 tput.1
--- /dev/null
+# $Id: manlinks.sed,v 1.7 2000/07/01 19:50:06 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. #
+##############################################################################
+# Given a manpage (nroff) as input, writes a list of the names that are
+# listed in the "NAME" section, i.e., the names that we would like to use
+# as aliases for the manpage -T.Dickey
+/^'\\"/d
+/\.\\"/d
+/^\.br/d
+/^\.sp/d
+s/\\f.//g
+s/[:,]/ /g
+s/^[ ][ ]*//
+s/[ ][ ]*$//
+s/[ ][ ]*/ /g
+s/\.SH[ ][ ]*/.SH_(/
+#
+/^\.SH_(NAME/,/^\.SH_(SYNOPSIS/{
+s/\\-.*/ -/
+/ -/{
+ s/ -.*//
+ s/ /\
+/g
+}
+/^-/{
+ d
+}
+s/ /\
+/g
+}
+:syn
+/^\.SH_(SYNOPSIS/,/^\.SH_(DESCRIPTION/{
+ /^#/d
+ /^[^(]*$/d
+ s/^\([^ (]\+ [*]*\)\+//g
+ s/\.SH_(/.SH_/
+ s/(.*//
+ s/\.SH_/.SH_(/
+}
+/^\.SH_(DESCRIPTION/,${
+ d
+}
+/^\./d
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: ncurses.3x,v 1.35 1999/10/23 19:50:07 tom Exp $
+.\" $Id: ncurses.3x,v 1.40 2000/07/08 13:10:31 tom Exp $
.hy 0
.TH ncurses 3X ""
.ds n 5
l l .
\fBcurses\fR Routine Name/Manual Page Name
=
+COLOR_PAIR/\fBcurs_color\fR(3X)
+PAIR_NUMBER/\fBcurs_attr\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)*
addch/\fBcurs_addch\fR(3X)
addchnstr/\fBcurs_addchstr\fR(3X)
addchstr/\fBcurs_addchstr\fR(3X)
addnstr/\fBcurs_addstr\fR(3X)
addstr/\fBcurs_addstr\fR(3X)
+assume_default_colors/\fBdft_fgbg\fR(3X)*
attr_get/\fBcurs_attr\fR(3X)
attr_off/\fBcurs_attr\fR(3X)
attr_on/\fBcurs_attr\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)*
is_linetouched/\fBcurs_touch\fR(3X)
is_wintouched/\fBcurs_touch\fR(3X)
isendwin/\fBcurs_initscr\fR(3X)
+keybound/\fBkeybound\fR(3X)*
keyname/\fBcurs_util\fR(3X)
keyok/\fBkeyok\fR(3X)*
keypad/\fBcurs_inopts\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)
mvinstr/\fBcurs_instr\fR(3X)
mvprintw/\fBcurs_printw\fR(3X)
mvscanw/\fBcurs_scanw\fR(3X)
+mvvline/\fBcurs_border\fR(3X)
mvwaddch/\fBcurs_addch\fR(3X)
mvwaddchnstr/\fBcurs_addchstr\fR(3X)
mvwaddchstr/\fBcurs_addchstr\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)
ungetch/\fBcurs_getch\fR(3X)
untouchwin/\fBcurs_touch\fR(3X)
use_default_colors/\fBdft_fgbg\fR(3X)*
use_env/\fBcurs_util\fR(3X)
+use_extended_names/\fBcurs_extend\fR(3X)*
vidattr/\fBcurs_terminfo\fR(3X)
vidputs/\fBcurs_terminfo\fR(3X)
vline/\fBcurs_border\fR(3X)
winsnstr/\fBcurs_insstr\fR(3X)
winsstr/\fBcurs_insstr\fR(3X)
winstr/\fBcurs_instr\fR(3X)
-wmouse_trafo/\fBcurs_mouse\fR(3X)
+wmouse_trafo/\fBcurs_mouse\fR(3X)*
wmove/\fBcurs_move\fR(3X)
wnoutrefresh/\fBcurs_refresh\fR(3X)
wprintw/\fBcurs_printw\fR(3X)
Use the \fBuse_env\fR function to disable this feature.
.TP 5
-DISPLAY
-Provides a hint to ncurses that your terminal is an X terminal
-emulator such as \fBxterm\fP.
-If the \fBkmous\fP capability is set to the beginning of the xterm
-mouse response, e.g., "kmous=\E[M", then ncurses will send the terminal
-xterm's mouse initialization strings and allow appropriate replies.
-See the \fBcurs_mouse\fR(3X) manual page for programming information.
-.TP 5
ESCDELAY
Specifies the total time, in milliseconds, for which ncurses will
await a character sequence, e.g., a function key.
-.\" $Id: terminfo.tail,v 1.29 1999/03/07 02:09:07 tom Exp $
+.\" $Id: terminfo.tail,v 1.32 2000/04/15 20:04:58 tom Exp $
.\" Beginning of terminfo.tail file
.ps +1
.PP
\s-1%% outputs `%'
%\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP
as in \fBprintf\fP, flags are [-+#] and space
- %c print pop() gives %c
+ %c print pop() like %c in printf()
+ %s print pop() like %s in printf()
%p[1-9] push \fIi\fP'th parm
%P[a-z] set dynamic variable [a-z] to 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)
+ %i add 1 to first two parameters (for ANSI terminals)
%? expr %t thenpart %e elsepart %;
if-then-else, %e elsepart is optional.
.PP
.SS Similar Terminals
.PP
-If there are two very similar terminals,
-one can be defined as being just like the other with certain exceptions.
-The string capability \fBuse\fR can be given
-with the name of the similar terminal.
-The capabilities given before
+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 terminal type invoked by
+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
-capability definition, where xx is the capability.
+use reference that imports it, where \fIxx\fP is the capability.
For example, the entry
.PP
2621-nl, smkx@, rmkx@, use=2621,
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
-The %x operator in parameterized strings is unique to the ncurses implementation
-of \fBtparm\fR (it is required in order to support an unfortunate choice of
-\fBinitc\fR format on the Linux console).
-.PP
Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, don't
interpret the %A and %O operators in parameter strings.
.PP
.\"***************************************************************************
-.\" Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998,1999,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 *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tic.1m,v 1.25 1999/03/07 02:07:06 tom Exp $
+.\" $Id: tic.1m,v 1.26 2000/03/19 02:18:18 tom Exp $
.TH tic 1M ""
.ds n 5
.ds d @DATADIR@/terminfo
N\
R\
T\
+a\
c\
f\
r\
directory first, look at \fI$HOME/.terminfo\fR if TERMINFO is not set, and
finally look in \fI\*d\fR.
.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.
+.TP
\fB-c\fR
-specifies to only check \fIfile\fR for errors, including syntax problems and
+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
.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.
.TP
\fIfile\fR
contains one or more \fBterminfo\fR terminal descriptions in source
error messages, and can be parsed by GNU Emacs's compile facility.
The
-\fB-o\fR,
+\fB-C\fR,
\fB-G\fR,
\fB-I\fR,
-\fB-C\fR,
\fB-N\fR,
\fB-R\fR,
+\fB-T\fR,
+\fB-a\fR,
\fB-e\fR,
\fB-f\fR,
\fB-g\fR,
-\fB-T\fR,
+\fB-o\fR,
\fB-r\fR,
\fB-s\fR and
\fB-x\fR
-# $Id: Makefile.in,v 1.25 1998/11/10 19:08:30 juergen Exp $
+# $Id: Makefile.in,v 1.28 2000/05/28 01:40:08 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
LN_S = @LN_S@
CC = @CC@
+CPP = @CPP@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@ \
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib -L$(libdir)
-SHLIB_LIST = $(SHLIB_DIRS) -lncurses @SHLIB_LIST@
+SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
MK_SHARED_LIB = @MK_SHARED_LIB@
################################################################################
all \
+libs \
install :: $(AUTO_SRC) $(LIBRARIES)
sources : $(AUTO_SRC)
LIBRARY form5 INITINSTANCE TERMINSTANCE\r
-DESCRIPTION "NCurses-5-0-990828, module form"\r
+DESCRIPTION "NCurses-5-1-20000704, module form"\r
CODE LOADONCALL\r
DATA LOADONCALL NONSHARED MULTIPLE\r
EXPORTS\r
--- /dev/null
+/* Use this with indent 2.0 (2.1 is not acceptable, since it has more bugs) */
+/* indent 4 columns */
+-i4
+/* tab stops every 8 columns */
+-ts8
+/* cuddle 'else' */
+-ce
+/* force blank lines after procedure body */
+-bap
+/* do not force newline after comma in declaration */
+-nbc
+/* do not force blank line after declarations */
+-nbad
+/* format braces inline */
+-br
+/* do not line up parentheses */
+-nlp
+/* put the type of a procedure on the line before its name */
+-psl
+/* do not insert a space between procedure name and '(' */
+-npcs
+/* leave preprocessor space */
+-lps
+/* swallow optional blank lines */
+-sob
+/* continuation indent of 0 spaces */
+-ci0
+/* force space before semicolon on same line */
+-ss
+
+/* for vile */
+-T size_t
+-T LINE
+-T BUFFER
+-T WINDOW
LIBRARY menu5 INITINSTANCE TERMINSTANCE\r
-DESCRIPTION "NCurses-5-0-990828, module menu"\r
+DESCRIPTION "NCurses-5-1-20000704, module menu"\r
CODE LOADONCALL\r
DATA LOADONCALL NONSHARED MULTIPLE\r
EXPORTS\r
LIBRARY ncurses5 INITINSTANCE TERMINSTANCE\r
-DESCRIPTION "NCurses-5-0-990828, module ncurses"\r
+DESCRIPTION "NCurses-5-1-20000704, module ncurses"\r
CODE LOADONCALL\r
DATA LOADONCALL NONSHARED MULTIPLE\r
EXPORTS\r
"_nc_curr_file_pos" @817 NONAME\r
"_nc_curr_line" @815 NONAME\r
"_nc_curr_token" @803 NONAME\r
+ "_nc_disable_period" @23 NONAME\r
"_nc_do_color" @1037 NONAME\r
- "_nc_do_xmc_glitch" @23 NONAME\r
"_nc_doalloc" @25 NONAME\r
"_nc_entry_match" @710 NONAME\r
"_nc_err_abort" @826 NONAME\r
"_nc_find_entry" @809 NONAME\r
"_nc_find_type_entry" @810 NONAME\r
"_nc_first_name" @622 NONAME\r
+ "_nc_flush" @54 NONAME\r
"_nc_free_entries" @712 NONAME\r
- "_nc_free_termtype" @54 NONAME\r
- "_nc_freeall" @58 NONAME\r
- "_nc_freewin" @59 NONAME\r
- "_nc_get_hash_table" @60 NONAME\r
+ "_nc_free_termtype" @58 NONAME\r
+ "_nc_freeall" @59 NONAME\r
+ "_nc_freewin" @60 NONAME\r
+ "_nc_get_hash_table" @63 NONAME\r
"_nc_get_table" @808 NONAME\r
"_nc_get_token" @811 NONAME\r
- "_nc_get_tty_mode" @63 NONAME\r
+ "_nc_get_tty_mode" @65 NONAME\r
"_nc_get_type" @823 NONAME\r
- "_nc_getenv_num" @65 NONAME\r
- "_nc_has_mouse" @67 NONAME\r
- "_nc_hash_map" @73 NONAME\r
+ "_nc_getenv_num" @67 NONAME\r
+ "_nc_has_mouse" @73 NONAME\r
+ "_nc_hash_map" @84 NONAME\r
"_nc_head" @700 NONAME\r
- "_nc_home_terminfo" @84 NONAME\r
+ "_nc_home_terminfo" @91 NONAME\r
"_nc_info_hash_table" @804 NONAME\r
"_nc_infoalias_table" @807 NONAME\r
"_nc_infotocap" @830 NONAME\r
- "_nc_init_acs" @91 NONAME\r
+ "_nc_init_acs" @92 NONAME\r
"_nc_init_entry" @702 NONAME\r
- "_nc_init_keytry" @92 NONAME\r
- "_nc_keep_tic_dir" @93 NONAME\r
- "_nc_key_names" @95 NONAME\r
+ "_nc_init_keytry" @93 NONAME\r
+ "_nc_keep_tic_dir" @95 NONAME\r
+ "_nc_key_names" @96 NONAME\r
"_nc_keypad" @1024 NONAME\r
- "_nc_lib_traceatr" @96 NONAME\r
- "_nc_lib_tracedmp" @97 NONAME\r
- "_nc_lib_tracemouse" @98 NONAME\r
- "_nc_make_oldhash" @103 NONAME\r
+ "_nc_make_oldhash" @97 NONAME\r
"_nc_makenew" @1025 NONAME\r
- "_nc_memmove" @106 NONAME\r
+ "_nc_memmove" @98 NONAME\r
"_nc_merge_entry" @704 NONAME\r
- "_nc_msec_cost" @116 NONAME\r
+ "_nc_msec_cost" @103 NONAME\r
"_nc_mvcur_init" @1014 NONAME\r
- "_nc_mvcur_resume" @117 NONAME\r
+ "_nc_mvcur_resume" @106 NONAME\r
"_nc_mvcur_wrap" @1015 NONAME\r
"_nc_name_match" @623 NONAME\r
- "_nc_nulls_sent" @118 NONAME\r
- "_nc_oldnums" @119 NONAME\r
- "_nc_ospeed" @120 NONAME\r
+ "_nc_nulls_sent" @116 NONAME\r
+ "_nc_oldnums" @117 NONAME\r
+ "_nc_ospeed" @118 NONAME\r
"_nc_outch" @1026 NONAME\r
"_nc_outstr" @1033 NONAME\r
- "_nc_panelhook" @127 NONAME\r
+ "_nc_panelhook" @119 NONAME\r
"_nc_panic_mode" @814 NONAME\r
"_nc_parse_entry" @706 NONAME\r
- "_nc_printf_string" @129 NONAME\r
+ "_nc_printf_string" @120 NONAME\r
"_nc_push_token" @812 NONAME\r
"_nc_read_entry" @620 NONAME\r
"_nc_read_entry_source" @709 NONAME\r
"_nc_read_file_entry" @621 NONAME\r
- "_nc_read_termcap" @130 NONAME\r
- "_nc_remove_key" @132 NONAME\r
- "_nc_remove_string" @137 NONAME\r
+ "_nc_read_termcap" @127 NONAME\r
+ "_nc_remove_key" @129 NONAME\r
+ "_nc_remove_string" @130 NONAME\r
"_nc_render" @1027 NONAME\r
"_nc_reset_input" @813 NONAME\r
"_nc_resolve_uses" @711 NONAME\r
- "_nc_ripoffline" @142 NONAME\r
+ "_nc_ripoffline" @132 NONAME\r
"_nc_save_str" @703 NONAME\r
- "_nc_screen_chain" @143 NONAME\r
- "_nc_screen_init" @144 NONAME\r
- "_nc_screen_resume" @145 NONAME\r
- "_nc_screen_wrap" @146 NONAME\r
- "_nc_scroll_oldhash" @147 NONAME\r
+ "_nc_screen_chain" @137 NONAME\r
+ "_nc_screen_init" @142 NONAME\r
+ "_nc_screen_resume" @143 NONAME\r
+ "_nc_screen_wrap" @144 NONAME\r
+ "_nc_scroll_oldhash" @145 NONAME\r
"_nc_scroll_optimize" @1029 NONAME\r
"_nc_scroll_window" @1030 NONAME\r
- "_nc_scrolln" @148 NONAME\r
- "_nc_set_buffer" @152 NONAME\r
+ "_nc_scrolln" @146 NONAME\r
+ "_nc_set_buffer" @147 NONAME\r
"_nc_set_source" @822 NONAME\r
- "_nc_set_tty_mode" @158 NONAME\r
+ "_nc_set_tty_mode" @148 NONAME\r
"_nc_set_type" @824 NONAME\r
- "_nc_set_writedir" @159 NONAME\r
+ "_nc_set_writedir" @152 NONAME\r
"_nc_setupscreen" @1031 NONAME\r
- "_nc_sigaction" @160 NONAME\r
+ "_nc_sigaction" @158 NONAME\r
"_nc_signal_handler" @1034 NONAME\r
- "_nc_slk_format" @161 NONAME\r
- "_nc_slk_initialize" @162 NONAME\r
+ "_nc_slk_format" @159 NONAME\r
+ "_nc_slk_initialize" @160 NONAME\r
"_nc_start_line" @821 NONAME\r
"_nc_suppress_warnings" @828 NONAME\r
"_nc_synchook" @1035 NONAME\r
"_nc_syntax" @820 NONAME\r
"_nc_syserr_abort" @825 NONAME\r
"_nc_tail" @701 NONAME\r
- "_nc_tic_dir" @167 NONAME\r
- "_nc_tic_expand" @169 NONAME\r
- "_nc_tic_written" @170 NONAME\r
+ "_nc_tic_dir" @161 NONAME\r
+ "_nc_tic_expand" @162 NONAME\r
+ "_nc_tic_written" @167 NONAME\r
"_nc_timed_wait" @1036 NONAME\r
- "_nc_tinfo_fkeys" @172 NONAME\r
- "_nc_trace_buf" @178 NONAME\r
- "_nc_trace_tries" @183 NONAME\r
- "_nc_trace_xnames" @184 NONAME\r
- "_nc_tracebits" @185 NONAME\r
+ "_nc_tinfo_fkeys" @169 NONAME\r
"_nc_tracing" @1010 NONAME\r
- "_nc_trans_string" @186 NONAME\r
- "_nc_user_definable" @187 NONAME\r
+ "_nc_trans_string" @170 NONAME\r
+ "_nc_user_definable" @172 NONAME\r
"_nc_visbuf" @1012 NONAME\r
- "_nc_visbuf2" @188 NONAME\r
- "_nc_vsscanf" @189 NONAME\r
+ "_nc_visbuf2" @178 NONAME\r
+ "_nc_vsscanf" @183 NONAME\r
"_nc_waddch_nosync" @1028 NONAME\r
"_nc_warning" @827 NONAME\r
"_nc_wrap_entry" @705 NONAME\r
"_nc_write_entry" @708 NONAME\r
- "_tracechar" @403 NONAME\r
"acs_map" @506 NONAME\r
"addch" @1 NONAME\r
"addchnstr" @2 NONAME\r
"addchstr" @3 NONAME\r
"addnstr" @4 NONAME\r
"addstr" @5 NONAME\r
+ "assume_default_colors" @184 NONAME\r
"attr_get" @14 NONAME\r
- "attr_off" @193 NONAME\r
- "attr_on" @211 NONAME\r
+ "attr_off" @185 NONAME\r
+ "attr_on" @186 NONAME\r
"attr_set" @17 NONAME\r
"attroff" @11 NONAME\r
"attron" @12 NONAME\r
"clrtobot" @33 NONAME\r
"clrtoeol" @34 NONAME\r
"color_content" @35 NONAME\r
- "color_set" @234 NONAME\r
+ "color_set" @187 NONAME\r
"copywin" @37 NONAME\r
"cur_term" @515 NONAME\r
"curs_set" @38 NONAME\r
"curscr" @501 NONAME\r
+ "curses_version" @188 NONAME\r
"def_prog_mode" @39 NONAME\r
"def_shell_mode" @40 NONAME\r
- "define_key" @238 NONAME\r
+ "define_key" @189 NONAME\r
"del_curterm" @641 NONAME\r
"delay_output" @41 NONAME\r
"delch" @42 NONAME\r
"echo" @49 NONAME\r
"echochar" @50 NONAME\r
"endwin" @52 NONAME\r
+ "erase" @193 NONAME\r
"erasechar" @53 NONAME\r
"filter" @55 NONAME\r
"flash" @56 NONAME\r
"flushinp" @57 NONAME\r
- "getbkgd" @240 NONAME\r
+ "getbkgd" @211 NONAME\r
"getch" @61 NONAME\r
"getmouse" @356 NONAME\r
"getnstr" @62 NONAME\r
"has_colors" @69 NONAME\r
"has_ic" @70 NONAME\r
"has_il" @71 NONAME\r
- "has_key" @242 NONAME\r
+ "has_key" @234 NONAME\r
"hline" @72 NONAME\r
"idcok" @74 NONAME\r
"idlok" @75 NONAME\r
"is_linetouched" @100 NONAME\r
"is_wintouched" @101 NONAME\r
"isendwin" @99 NONAME\r
- "keybound" @251 NONAME\r
+ "keybound" @238 NONAME\r
"keyname" @102 NONAME\r
- "keyok" @263 NONAME\r
+ "keyok" @240 NONAME\r
"keypad" @104 NONAME\r
"killchar" @105 NONAME\r
"leaveok" @107 NONAME\r
"longname" @108 NONAME\r
- "mcprint" @266 NONAME\r
+ "mcprint" @242 NONAME\r
"meta" @109 NONAME\r
- "mouse_trafo" @270 NONAME\r
+ "mouse_trafo" @251 NONAME\r
"mouseinterval" @360 NONAME\r
"mousemask" @358 NONAME\r
"move" @110 NONAME\r
"reset_prog_mode" @222 NONAME\r
"reset_shell_mode" @223 NONAME\r
"resetty" @221 NONAME\r
- "resizeterm" @272 NONAME\r
+ "resizeterm" @263 NONAME\r
"restartterm" @643 NONAME\r
"ripoffline" @224 NONAME\r
"savetty" @225 NONAME\r
"set_term" @236 NONAME\r
"setscrreg" @235 NONAME\r
"setupterm" @644 NONAME\r
- "slk_attr" @274 NONAME\r
- "slk_attr_set" @276 NONAME\r
+ "slk_attr" @266 NONAME\r
+ "slk_attr_set" @270 NONAME\r
"slk_attroff" @237 NONAME\r
"slk_attron" @239 NONAME\r
"slk_attrset" @241 NONAME\r
"slk_clear" @243 NONAME\r
- "slk_color" @278 NONAME\r
+ "slk_color" @272 NONAME\r
"slk_init" @244 NONAME\r
"slk_label" @245 NONAME\r
"slk_noutrefresh" @246 NONAME\r
"tigetflag" @260 NONAME\r
"tigetnum" @261 NONAME\r
"tigetstr" @262 NONAME\r
- "timeout" @284 NONAME\r
+ "timeout" @274 NONAME\r
"tparm" @653 NONAME\r
"tputs" @655 NONAME\r
- "trace" @405 NONAME\r
"ttytype" @514 NONAME\r
"typeahead" @264 NONAME\r
"unctrl" @361 NONAME\r
"ungetch" @265 NONAME\r
"ungetmouse" @357 NONAME\r
"untouchwin" @267 NONAME\r
- "use_default_colors" @285 NONAME\r
+ "use_default_colors" @276 NONAME\r
"use_env" @268 NONAME\r
- "use_extended_names" @286 NONAME\r
+ "use_extended_names" @278 NONAME\r
"vidattr" @269 NONAME\r
"vidputs" @271 NONAME\r
"vline" @273 NONAME\r
- "vw_printw" @287 NONAME\r
- "vw_scanw" @294 NONAME\r
+ "vw_printw" @284 NONAME\r
+ "vw_scanw" @285 NONAME\r
"vwprintw" @275 NONAME\r
"vwscanw" @277 NONAME\r
"waddch" @279 NONAME\r
"wattr_get" @291 NONAME\r
"wattr_off" @293 NONAME\r
"wattr_on" @292 NONAME\r
- "wattr_set" @297 NONAME\r
+ "wattr_set" @286 NONAME\r
"wattroff" @289 NONAME\r
"wattron" @288 NONAME\r
"wattrset" @290 NONAME\r
"wclear" @302 NONAME\r
"wclrtobot" @303 NONAME\r
"wclrtoeol" @304 NONAME\r
- "wcolor_set" @298 NONAME\r
+ "wcolor_set" @287 NONAME\r
"wcursyncup" @305 NONAME\r
"wdelch" @306 NONAME\r
"wdeleteln" @307 NONAME\r
"winsnstr" @328 NONAME\r
"winsstr" @329 NONAME\r
"winstr" @330 NONAME\r
- "wmouse_trafo" @300 NONAME\r
+ "wmouse_trafo" @294 NONAME\r
"wmove" @338 NONAME\r
"wnoutrefresh" @339 NONAME\r
"wprintw" @340 NONAME\r
LIBRARY panel5 INITINSTANCE TERMINSTANCE\r
-DESCRIPTION "NCurses-5-0-990828, module panel"\r
+DESCRIPTION "NCurses-5-1-20000704, module panel"\r
CODE LOADONCALL\r
DATA LOADONCALL NONSHARED MULTIPLE\r
EXPORTS\r
- "_nc_calculate_obscure" @16 NONAME\r
- "_nc_free_obscure" @17 NONAME\r
- "_nc_override" @18 NONAME\r
- "_nc_panel_is_linked" @19 NONAME\r
- "_nc_panel_link_bottom" @20 NONAME\r
"bottom_panel" @7 NONAME\r
"del_panel" @5 NONAME\r
"hide_panel" @3 NONAME\r
#!/bin/sh
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
#
# Author: Thomas E. Dickey <dickey@clark.net> 1996
#
-# $Id: run_tic.sh,v 1.10 1998/05/31 00:29:34 mooney Exp $
+# $Id: run_tic.sh,v 1.12 2000/07/01 19:25:13 tom Exp $
# 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.
#
SRC=$TMP
fi
+cat <<EOF
+Running tic to install $TERMINFO ...
+
+ You may see messages regarding unknown capabilities, e.g., AX.
+ These are extended terminal capabilities which can be compiled
+ using
+ tic -x
+ Read the INSTALL document before doing this - it can cause
+ problems for older ncurses applications.
+
+EOF
if ( $srcdir/shlib tic -s $SRC )
then
echo '** built new '$TERMINFO
#!/bin/sh
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
#
# Author: Thomas E. Dickey <dickey@clark.net> 1996
#
-# $Id: shlib,v 1.5 1998/05/31 00:29:38 mooney Exp $
+# $Id: shlib,v 1.6 2000/05/20 23:01:17 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,
# Using a conventional link, with -L and -l options on Linux results in a
# statically linked executable, which we don't want at all.
#
+# Special cases:
+#
+# BeOS R4.5 uses $LIBRARY_PATH rather than $LD_LIBRARY_PATH.
#
# Make sure that we use the PATH that was set in run_tic.sh
if test -n "$q" ; then
if test -n "$LD_LIBRARY_PATH"; then
LD_LIBRARY_PATH="$q:$LD_LIBRARY_PATH"
+ elif test -n "$LIBRARY_PATH" ; then
+ LIBRARY_PATH="$q:$LIBRARY_PATH"
else
LD_LIBRARY_PATH="$q"
fi
######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE
#
# This version of terminfo.src is distributed with ncurses.
+# Report bugs to
+# bug-ncurses@gnu.org
#
# Version 10.2.1
-# $Date: 1999/10/24 00:28:48 $
+# $Date: 2000/07/01 21:23:58 $
# terminfo syntax
#
# Eric S. Raymond (current maintainer)
# John Kunze, Berkeley
# Craig Leres, Berkeley
#
-# Please e-mail changes to terminfo@ccil.org; the old termcap@berkeley.edu
+# 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://earthspace.net/terminfo>.
+# <http://www.tuxedo.org/terminfo>.
#
# PURPOSE OF THIS FILE:
#
# termcap/terminfo versions.
#
# Pointers to related resources (including the ncurses distribution) may
-# be found at <http://earthspace.net/terminfo>.
+# be found at <http://www.tuxedo.org/terminfo>.
#
# INTERNATIONALIZATION:
#
# 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 tac(1m), the terminfo action checker soon
-# to be distributed with ncurses.
+# These capabilities are used by tack(1m), the terminfo action checker
+# (distributed with ncurses 5.0).
#
# TABSET FILES
#
# 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, free-Unix consoles,
+# 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
######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES
#
-# This section describes terminal classes and maker brands that are still
+# This section describes terminal classes and brands that are still
# quite common.
#
unknown|unknown terminal type,
gn, use=dumb,
lpr|printer|line printer,
- hc, os,
+ 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,
- am,
+ OTbs, am,
cols#80,
- bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ht=^I, kbs=^H,
- kcub1=^H, kcud1=^J, nel=^M^J,
+ bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ht=^I, kcub1=^H,
+ kcud1=^J, nel=^M^J, .kbs=^H,
+
+vanilla,
+ OTbs,
+ bel=^G, cr=^M, cud1=^J, ind=^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[2g,
+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, 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;%;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;%;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 <acsc> string can use the
# ROM graphics for control characters such as the diamond, up- and down-arrow.
# 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,
# Attribute control for ECMA-48-compatible terminals
ecma+sgr|attribute capabilities for true ECMA-48 terminals,
- rmso=\E[27m, rmul=\E[24m,
- use=klone+sgr,
+ rmso=\E[27m, rmul=\E[24m, use=klone+sgr,
# For comparison, here are all the capabilities implied by the Intel
# Binary Compatibility Standard (level 2) that fit within terminfo.
# 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,
- 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,
+ 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
#
#
# 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,
- am, mir,
+ 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, ri=\EM,
- rmir=\E[4l, rmso=\E[m, rmul=\E[m, smir=\E[4h, smso=\E[7m,
- smul=\E[4m,
+ 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 <cuu>, <cuf>, <cud>, <cub>, and
# 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),
- am, mir, msgr,
+ 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,
# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995
ansi|ansi/pc-term compatible with color,
u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c,
- u9=\E[c,
- use=ecma+color, use=klone+sgr, use=ansi-m,
+ u9=\E[c, use=ecma+color, use=klone+sgr, 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
#
# keys F1-F10 (%p1 values outside this range will yield unpredictable results).
# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 7 1995
ansi.sys-old|ANSI.SYS under PC-DOS 2.1,
- am, mir, msgr, xon,
+ 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", 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+sgr,
+ u7=\E[6n, use=klone+color, use=klone+sgr,
ansi.sys|ANSI.SYS 3.1 and later versions,
el=\E[K, use=ansi.sys-old,
# 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,
+ 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,
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, 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, 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, rmso=\E[m, rmul=\E[24m, rs1=\Ec, sc=\E7,
+ 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, smso=\E[7m, smul=\E[4m,
- u6=\E[%i%p1%d;%p2%dR, u7=\E[6n, vpa=\E[%i%p1%dd,
+ 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. *
+# * *
+# ***************************************************************************
+#
+# 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 back-portable to SV curses and not supported in ncurses versions before
+# 1.9.9. All linux kernels since 1.2.13 (at least) set the screen size
+# themselves; this entry assumes that capability.
+#
# This entry is good for the 1.2.13 or later version of the Linux console.
#
# ***************************************************************************
# reported by Frank Heckenbach <frank@g-n-u.de>.
linux|linux console,
am, bce, eo, mir, msgr, xenl, xon,
- it#8, ncv#2,
+ it#8, ncv#18,
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, civis=\E[?25l\E[?1c, clear=\E[H\E[J,
cnorm=\E[?25h\E[?0c, cr=^M, csr=\E[%i%p1%d;%p2%dr,
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, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l, rmso=\E[27m,
- rmul=\E[24m, rs1=\Ec\E]R, sc=\E7,
+ 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, 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,
smir=\E[4h, smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR,
u7=\E[6n, u8=\E[?6c, u9=\E[c, vpa=\E[%i%p1%dd,
linux-c-nc|linux console 1.3.x hack for ncurses only,
ccc,
initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
- oc=\E]R,
- use=linux,
+ oc=\E]R, use=linux,
# From: Dennis Henriksen <opus@osrl.dk>, 9 July 1996
linux-c|linux console 1.3.6+ with private palette for each virtual console,
ccc,
colors#8, pairs#64,
initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}%&%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}%&%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}%&%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,
+ oc=\E]R, 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,
+ 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.
# 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,
- kbs=^H, kcub1=^H, kcud1=^J,
use=linux, use=klone+koi8acs,
-# From: Matthew Vernon <mcv21@pick.sel.cam.ac.uk>
+# 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,
+
+#### Mach
+#
+
+# From: Matthew Vernon <mcv21@pick.sel.cam.ac.uk>
mach|Mach Console,
am, km,
cols#80, it#8, lines#25,
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, nel=^M^J, rev=\E[7m, rmso=\E[0m, sgr0=\E[0m,
- smso=\E[7m,
+ 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,
+ 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,
-# 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,
+#### 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
# F25-F36 are control F1-F12
# F37-F48 are shift+control F1-F12
scoansi|SCO Extended ANSI standard crt,
- am, eo, xon,
+ OTbs, am, eo, xon,
colors#8, cols#80, it#8, lines#25, pairs#64,
acsc=0[5566778899\:\:;;<<==>>FFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`ja0fxgqh2jYk?lZm@nEqDtCu4vAwBx3~y,
blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J,
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[2g, vpa=\E[%i%p1%dd,
- use=klone+color,
+ tbc=\E[2g, 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,
- am, xon,
+ 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,
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,
+ 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)
# ":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,
- am, msgr,
+ 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+sgr,
+ kpp=\E[Z, use=klone+acs, use=klone+sgr,
+#### QNX
+#
# QNX 4.0 Console
# Michael's original version of this entry had <am@>, <smcup=\Ei>,
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,
+ rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, use=qnx4,
#### NetBSD consoles
#
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$<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,
+ 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,
colors#8, pairs#64,
op=\E[m, setab=\E[4%dm, setaf=\E[3%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 <ache@astral.msk.su> 29 Mar 1996
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, rev=\E[7m,
- ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, rs1=\E[x\E[m\Ec,
+ ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, rs2=\E[x\E[m\Ec,
setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[m,
smso=\E[7m, vpa=\E[%i%p1%dd,
cons25|ansis|ansi80x25|freebsd console (25-line ansi mode),
use=cons25w,
cons25-m|ansis-mono|ansi80x25-mono|freebsd console (25-line mono ansi mode),
colors@, pairs@,
- bold@, dim@, op@, rmul=\E[m, setab@, setaf@, smul=\E[4m, use=cons25,
+ bold@, dim@, op@, rmul=\E[m, setab@, setaf@, 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),
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@, smul=\E[4m, use=cons25l1,
+ bold@, dim@, op@, rmul=\E[m, setab@, setaf@, 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),
# Some places it's named oldpc3|oldibmpc3.
# From: Alex R.N. Wetmore <aw2t@andrew.cmu.edu>
origpc3|origibmpc3|IBM PC 386BSD Console,
- am, bw, eo, xon,
+ 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,
# description of BSD/386 console emulator in version 1.0 (supplied by BSDI)
oldpc3|oldibmpc3|old IBM PC BSD/386 Console,
- km,
+ 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,
# "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,
- am, eo, km, xon,
+ 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,
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+sgr, use=klone+color,
-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,
+ use=klone+sgr,
# Old names for BSD/OS PC console used in releases before 4.1.
pc3|BSD/OS on the PC Console,
bsdos-ppc|PowerPC BSD/OS Console,
use=bsdos-pc,
+#### DEC VT52
+# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
+vt52|dec vt52,
+ OTbs,
+ cols#80, it#8, lines#24,
+ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
+ 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 (and the vt52, way obsolete but still
-# the basis of some emulations) are collected here. Older DEC terminals and
-# micro consoles can be found in the `obsolete' section. More details on
+# 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.
#
# its name to Boundless Technologies; see http://www.boundless.com.
#
-# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr)
-vt52|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%{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,
-
# 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
# 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
#
# (vt100: I added <rmam>/<smam> based on the init string, also <OTbs>. -- esr)
vt100|vt100-am|dec vt100 (w/advanced video),
- am, msgr, xenl, xon,
+ OTbs, am, msgr, xenl, xon,
cols#80, it#8, lines#24, vt#3,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>,
vt100-nav|vt100 without advanced video option,
xmc#1,
blink@, bold@, rev@, rmso=\E[m, rmul@, sgr@, sgr0@, smso=\E[7m,
- smul@,
- use=vt100,
+ 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,
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,
+ 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,
mir,
- dch1=\E[P, dl1=\E[M, il1=\E[L, rmir=\E[4l, smir=\E[4h, use=vt100,
+ 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,
# 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,
+ sgr@, sgr0=\E[m, use=vt102,
# VT125 Graphics CRT. Clear screen also erases graphics
vt125|vt125 graphics terminal,
# 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,
- am, xenl,
+ 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,
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,
+ ip=$<7>, rmir=\E[4h, smir=\E[4l, use=vt100,
-# vt220:
# 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|vt200|DEC VT220 in vt100 emulation mode,
- am, mir, xenl, xon,
+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,
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$<2>, smacs=\E(0$<2>, smam=\E[?7h, smir=\E[4h,
smso=\E[7m, smul=\E[4m,
-vt220-w|vt200-w|DEC vt220 in wide mode,
- cols#132,
- rs3=\E[?3h, use=vt220,
-
-#
-# 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,
-
-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,
-# This is misnamed (see xterm-8bit for an example of 8-bit controls)
-vt220-8|dec vt220 8 bit terminal,
- am, mc5i, mir, msgr, xenl, xon,
- cols#80, it#8, lines#24,
+# 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,
khome=\E[H, 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=^O, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m,
- rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, smacs=^N,
+ rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m,
+ rmul=\E[24m, rs1=\E[?3l, sc=\E7, sgr0=\E[m, 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=^O, rmam=\233?7l,
+ rmir=\2334l, rmso=\23327m, rmul=\23324m, rs1=\233?3l,
+ sc=\E7, sgr0=\233m, smacs=^N, 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!)
# 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)
vt200-js|vt220-js|dec vt200 series with jump scroll,
am,
cols#80,
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,
+ kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=^M\ED, rc=\E8,
rf=/usr/lib/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, smdc=,
+ 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
# 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 <thompson@xanth.magic.mb.ca> Sept 10 1995
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
# (vt320: uncommented <fsl> --esr)
vt320|vt300|dec vt320 7 bit terminal,
am, eslok, hs, mir, msgr, xenl,
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,
+ 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=%?%p2%{19}%=%t\E\023\021%e%p2%{32}%<%t\E%p2%c%e%p2%{127}%=%t\E\177%e%p2%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,
+ 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~,
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~, kf0=\E[29~, 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~,
+ 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,
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~, kf0=\E[29~, 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~,
+ 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,
# 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 <thompson@xanth.magic.mb.ca> Sept 10 1995
+# 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,
# CRT is shareware. It implements some xterm features, including mouse.
crt|crt-vt220|CRT 2.3 emulating VT220,
bce, msgr,
- colors#8, pairs#64,
- hts=\EH, op=\E[39;49m, setab=\E[4%p1%dm,
- setaf=\E[3%p1%dm, setb=\E[4%p1%dm, setf=\E[3%p1%dm,
- u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
- use=vt220,
+ ncv@,
+ hts=\EH, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
+ use=vt220, use=ecma+color,
# 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
kpp=\E[5~, kslt=\E[4~, op=\E[100m, rev=\E[7m, ri=\EM,
rmso=\E[27m, rmul=\E[24m, sgr0=\E[m, smso=\E[7m,
smul=\E[4m, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
- vpa=\E[%i%p1%dd,
- use=klone+color, use=vt100,
+ vpa=\E[%i%p1%dd, use=klone+color, use=vt100,
# Tested with WinNT 4.0, the telnet application assumes the screensize is
# 25x80. This entry uses the 'Terminal' font, to get line-drawing characters.
# 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),
- am, km, mir, msgr, xenl, xon,
+ 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,
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 based on the R5 xterm code - TD
+# 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,
- am, km, msgr, xenl,
+ 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,
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,
+ smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
+ u8=\E[?1;2c, u9=\E[c,
# Compatible with the R6 xterm
# (from XFree86 3.2 distribution, <acsc> and <it> added, <blink@> removed)
-# added khome/kend - TD
+# 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,
- am, km, mir, msgr, xenl,
+ 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,
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, il=\E[%p1%dL,
+ el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, 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>, kbs=^H,
kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
- kdch1=\E[3~, kf1=\EOP, kf10=\E[21~, kf11=\E[23~,
+ 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=\EOQ, kf20=\E[34~, kf3=\EOR, kf4=\EOS, 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,
+ 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=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, 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,
# 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),
- am, bce, km, mir, msgr, xenl,
- colors#8, cols#80, it#8, lines#24, pairs#64,
+ 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,
- cvvis=\E[?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,
- enacs=\E(B\E)0, flash=\E[?5h\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,
+ 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>,
ka1=\EOw, ka3=\EOu, kb2=\EOy, kbeg=\EOE, kbs=^H, kc1=\EOq,
kc3=\EOs, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
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, op=\E[39;49m, 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,
+ 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\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\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=\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, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
- vpa=\E[%i%p1%dd,
+ vpa=\E[%i%p1%dd, use=ecma+color,
# 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,
+ 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~, kend=\E[4~,
- kfnd@, khome=\E[1~, 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>,
+ 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,
+ smcup=\E[?1048h\E[?1047h, use=xterm-xf86-v33,
# This beta version will probably be released in XFree86 4.0.
xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System),
- ka1=\EOH, ka3=\E[5~, kb2=\EOE, kc1=\EOF, kc3=\E[6~,
- kdch1=\177, kend=\EOF, khome=\EOH, rmcup=\E[?1049l,
- smcup=\E[?1049h,
- use=xterm-xf86-v333,
+ 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,
xterm-xfree86|xterm-new|xterm terminal emulator (XFree86 4.0 Window System),
use=xterm-xf86-v40,
# From: David J. MacKenzie <djm@va.pubnix.com>, 14 Nov 1997
xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1,
- rmso=\E[m, rmul=\E[m,
- use=xterm-xf86-v33,
+ rmso=\E[m, rmul=\E[m, use=xterm-xf86-v33,
# This is one of the variants of XFree86 3.3 xterm, updated for 4.0 (T.Dickey)
xterm-16color|xterm with 16 colors like aixterm,
- colors#16, ncv#32, pairs#256,
+ 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,
use=xterm-xf86-v40,
+# These variants of XFree86 3.9.16 xterm are built as a configure option.
+xterm-256color|xterm with 256 colors,
+ ccc,
+ colors#256, pairs#256,
+ initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
+ setab=\E[48;5;%p1%dm, setaf=\E[38;5;%p1%dm,
+ setb=\E[48;5;%p1%dm, setf=\E[38;5;%p1%dm,
+ use=xterm-xfree86,
+xterm-88color|xterm with 88 colors,
+ colors#88, pairs#88, use=xterm-256color,
+
# 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.
# CSI \E [ \233
#
xterm-8bit|xterm terminal emulator 8-bit controls (X Window System),
- am, bce, km, mc5i, mir, msgr, xenl,
+ OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl,
colors#8, cols#80, it#8, lines#24, pairs#64,
acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z,
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?25h, dch=\233%p1%dP, dch1=\233P,
- dl=\233%p1%dM, dl1=\233M, ech=\233%p1%dX, ed=\233J,
- el=\233K, el1=\2331K, enacs=\E(B\E)0,
- flash=\233?5h\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,
+ dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M,
+ ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K,
+ enacs=\E(B\E)0, 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=\E7\E G\233r\233m\233?7h\233?1;3;4;6l\2334l\E8\E>,
ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kbs=^H,
kc1=\217q, kc3=\217s, kcub1=\217D, kcud1=\217B,
tbc=\2333g, u6=\233[%i%d;%dR, u7=\E[6n, u8=\233[?1;2c,
u9=\E[c, vpa=\233%i%p1%dd,
+xterm-hp|XFree86 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-xfree86,
+
+xterm-vt220|XFree86 xterm emulating vt220,
+ ka1=\EOw, ka3=\EOy, kbeg=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs,
+ kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
+ kdch1=\E[3~, kend=\E[4~, kent=\EOM, 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~,
+ use=xterm-xfree86,
+
+xterm-vt52|XFree86 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,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, rmcup@,
+ rmkx=\E>, smcup@, smkx=\E=, use=xterm,
+
xterm-24|vs100|xterms|xterm terminal emulator (X Window System),
- lines#24, use=xterm,
+ lines#24, use=xterm-r6,
# This is xterm for ncurses.
xterm|xterm terminal emulator (X Window System),
- acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
- kmous=\E[M, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c,
use=xterm-r6,
+# use=xterm-xfree86,
# 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,
#
# 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,
+ smso=\E[7m, smul=\E[1m, use=xterm,
# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr)
# (kterm should not invoke DEC Graphics as the alternate character set
# -- Kenji Rikitake)
kterm|kterm kanji terminal emulator (X window system),
eslok, hs,
acsc@, csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs@, fsl=\E[?F,
- kmous=\E[M, op=\E[39;49m, rc=\E8, rmacs@, sc=\E7, smacs@,
- tsl=\E[?E\E[?%i%dT,
- use=xterm-r6, use=klone+color,
+ kmous=\E[M, rc=\E8, rmacs@, sc=\E7, smacs@,
+ tsl=\E[?E\E[?%i%dT, use=xterm-r6, 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,
+ 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,
+ 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.
# 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,
- am, km, mir, msgr, xenl,
- colors#8, cols#80, it#8, lines#65, pairs#64,
+ OTbs, am, km, mir, msgr, xenl,
+ 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,
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~, op=\E[39;49m, 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,
+ 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, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+ 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, smacs=^N, smam=\E[?7h,
smcup=\E[?1;41s\E[?1;41h\E=, smir=\E[4h, smso=\E[7m,
- smul=\E[4m,
+ smul=\E[4m, use=ecma+color,
-# The 'nxterm' distributed with Redhat Linux is a slight rehack of
+# 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.
nxterm|xterm-color|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|Gnome terminal,
+ bce,
+ kdch1=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS,
+ use=xterm-color,
+
+# 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,
+
# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
# Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
# Notes:
# Since rxvt is not really compatible with xterm, it should be configured as
# "rxvt" (monochrome) and "rxvt-color".
rxvt-basic|rxvt terminal base (X Window System),
- am, bce, eo, km, mir, msgr, xenl, xon,
+ OTbs, am, bce, eo, km, mir, msgr, xenl, xon,
cols#80, it#8, lines#24,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l,
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[?25h, 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\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,
+ 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\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,
kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kLFT=\E[d, kNXT=\E[6$,
kPRV=\E[5$, kRIT=\E[c, ka1=\EOw, ka3=\EOy, kb2=\EOu, kbs=^H,
kc1=\EOq, kc3=\EOs, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kel=\E[8\^,
- kend=\E[8~, kent=\EOM, kf0=\E[21~, kf1=\E[11~, kf10=\E[21~,
+ kend=\E[8~, kent=\EOM, 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~,
smcup=\E7\E[?47h, smir=\E[4h, smkx=\E=, smso=\E[7m,
smul=\E[4m, tbc=\E[3g,
rxvt|rxvt terminal emulator (X Window System),
- colors#8, pairs#64,
- op=\E[39;49m, setab=\E[%p1%{40}%+%dm,
- setaf=\E[%p1%{30}%+%dm, sgr0=\E[m\017, use=rxvt-basic,
+ ncv@,
+ sgr0=\E[m\017, use=rxvt-basic, use=ecma+color,
+
+# From: Michael Jennings <mej@valinux.com>
+# removed kf0 which conflicts with kf10 -TD
+# remove cvvis which conflicts with cnorm -TD
+# There's no u6 because Eterm appears to lack CPR (cursor position report).
+Eterm|Eterm-color|Eterm with xterm-style color support (X Window System),
+ am, bce, bw, eo, km, mc5i, mir, msgr, xenl, xon,
+ 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,
+ flash=\E[?5h\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, 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$, kLFT=\E[d, kNXT=\E[6$,
+ kPRV=\E[5$, kRIT=\E[c, ka1=\E[7~, ka3=\E[5~, kb2=\EOu,
+ kbeg=\EOu, kbs=^H, kc1=\E[8~, kc3=\E[6~, kcbt=\E[Z,
+ kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
+ kdch1=\E[3~, kel=\E[8\^, kend=\E[8~, kent=\EOM, 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~,
+ khome=\E[7~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
+ kslt=\E[4~, 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>,
+ 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,
+ u7=\E[6n, u8=\E[?1;2c, u9=\E[c, vpa=\E[%i%p1%dd,
+ use=ecma+color,
# 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),
- am, km, mir, msgr, xenl,
+ 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,
# 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,
+ smul=\E[4m\E[42m, use=xterm+sl, use=xterm-r6,
# HP ships this, 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)
kf40=\E[217z, kf42=\E[219z, kf44=\E[221z, 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,
+ knp=\E[222z, kpp=\E[216z, kund=\E[195z, use=xterm,
xterms-sun|small (80x24) xterm with sunFunctionKeys true,
cols#80, lines#24, use=xterm-sun,
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=\ED, cup=\EE%p1%d;%p2%d;,
- cuu=\Ep-%p1%d;, cuu1=\EA, cvvis=\Ea, dch=\EI%p1%d;,
- dch1=\EI1;, dl=\ER%p1%d;, dl1=\ER1;, ech=\Ej%p1%d;, ed=\EN,
- el=\EK, el1=\EL, enacs=\0, home=\EE0;0;, ht=^I, hts=\Eh,
+ 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, enacs=\0, 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,
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=\E197z, kend=\E[220z, kent=\E[250z,
+ 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,
+ 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,
+ khome=\E[1~, knp=\E[6~, kpp=\E[5~, use=mgr,
######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS
#
# UNIX 4.0 and successors as line discipline 1 (?), but is
# undocumented and does not really work quite right.
cbunix|cb unix virtual terminal,
- am, da, db,
+ 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,
pty|4bsd pseudo teletype,
cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!,
- smso=\Ea$, smul=\Ea!,
- use=cbunix,
+ 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,
sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m,
smul=\E[4m,
-# Entries for use by the FSF's `screen' program. The screen and
+# 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).
screen|VT 100/ANSI X3.64 virtual terminal,
- am, km, mir, msgr, xenl,
+ OTbs, OTpt, am, km, mir, msgr, xenl, G0,
colors#8, cols#80, it#8, lines#24, pairs#64,
acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
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=\E23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, khlp=\E[1~,
+ 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=^O, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l,
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,
+ kf8=\E[19~, kf9=\E[20~, use=ncsa,
#### Pilot Pro Palm-Top
#
# :is1: resets scrolling region in case a previous user had used "tset vt100"
oldsun|Sun Microsystems Workstation console,
- am, km, mir, msgr,
+ 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,
kund=\E[195z, rev=\E[7m, rmso=\E[m, rmul@, rs2=\E[s,
sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m,
sgr0=\E[m, smso=\E[7m, smul@, u8=\E[1t, u9=\E[11t,
-# On a SparcStation 5, <il1>/<il> flake out on the last line.
-# Unfortunately, without them the terminal has no way to scroll.
-sun-ss5|Sun SparcStation 5 console,
+# 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,
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,
+ 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,
# Finally, removed suboptimal <clear>=\EH\EJ and added <cud1> &
# <flash> from BRL -- esr)
wsiris|iris40|iris emulating a 40 line visual 50 (approximately),
- am,
- cols#80, it#8, lines#40,
- 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,
+ 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,
# Entry for NeWS's psterm from Eric Messick & Hugh Daniel
# (psterm: unknown ":sl=\EOl:el=\ENl:" removed -- esr)
psterm|psterm-basic|NeWS psterm-80x34,
- am, hs, km, ul,
+ 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,
# 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),
- am, hs, km, ul,
+ 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,
# (news-unk: this had :KB=news: -- esr)
news-unk|SONY NEWS vt100 emulator common entry,
- am, xenl,
+ OTbs, OTpt, am, xenl,
cols#80,
- 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,
+ 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/lib/tabset/vt100, il=\E[%p1%dL, il1=\E[L,
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, sc=\E7, sgr0=\E[m,
- smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+ 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,
#
# (news-old-unk: this had :KB=news:TY=sjis: --esr)
news-old-unk|SONY NEWS vt100 emulator common entry,
- am, xenl,
+ OTbs, OTpt, am, xenl,
cols#80, vt#3,
- 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,
+ 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/lib/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, sc=\E7, sgr0=\E[m,
- smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m,
+ 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|sony vt100 emulator 40 lines,
+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,
+ 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,
+ 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;40r\E8, use=news-old-unk,
+ 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,
+ 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 <OTbs>; --esr)
# also the alias vt100-bm.
-nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|sony vt100 emulator 33 lines,
+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,
+ 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 <OTbs>; also the alias vt100-bm --esr)
-nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|sony vt100 emulator 33 lines,
+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,
+ 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 <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;28r\E8, use=news-old-unk,
+ 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,
+ 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,
- am, xenl,
+ OTbs, OTpt, am, xenl,
cols#80, lines#24,
clear=\E[;H\E[2J$<20/>, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M,
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,
- dsl=\E[1$~, fsl=\E[0$},
+ 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,
+ 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,
- dsl=\E[1$~, fsl=\E[0$},
+ 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,
- tsl=\E[1$}\E[;%df,
- use=vt200,
+ rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h,
+ tsl=\E[1$}\E[;%df, use=vt200,
#### Common Desktop Environment
#
# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov <lav@video.yars.free.net>
dtterm|CDE desktop terminal,
am, mir, msgr, xenl, xon,
- colors#8, cols#80, it#8, lines#24, lm#0, pairs#64,
+ 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,
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, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM,
- rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m,
- rmul=\E[24m, sc=\E7, setab=\E[%p1%{40}%+%dm,
- setaf=\E[%p1%{30}%+%dm,
+ 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,
+ smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, use=ecma+color,
#### Non-Unix Consoles
#
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/>,
######## COMMON TERMINAL TYPES
#
# :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,
+ blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2,
altos4|alt4|altos-4|altos IV,
use=wy50,
# (altos7: had extension capabilities:
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,
+ rmir=\Er, smir=\Eq, use=adm+sgr,
altos7pc|alt7pc|altos PC VII,
kend=\ET, use=altos7,
# 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,
- am, da, db, mir, xhp,
+ 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,
# 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,
+ 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,
+ is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl,
hp2621-fl|hp 2621,
xhp@, xon,
pb#19200,
# 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,
+ 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,
+ 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,
+ kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@,
+ use=hp2621-fl,
# Needed for UCB ARPAVAX console, since lsi-11 expands tabs
# (wrong).
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,
+ 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.
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,
+ 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
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,
+ 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,
+ 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,
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,
+ 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,
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,
+ 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.
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,
+ 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,
+ 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,
- use=hp2622,
+ OTbs, use=hp2622,
# HP 2382a terminals, "the little ones." They don't have any
# alternate character set support and sending out ^N/^O will
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,
+ 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,
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,
+ tbc=\E3, use=newhpkeyboard,
memhp|memory relative addressing for new HP ttys,
vt#6,
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,
+ smln=\E&jB, use=hp2621,
hp2621b-p|hp 2621b with printer,
use=hp+printer, use=hp2621b,
# <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,
+ is2=\E&w6f80X, use=memhp, use=hp+labels, use=hp+color,
# HP 700/44 Setup parameters:
# Terminal Mode HP-PCterm
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,
+ 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,
# HP 236 console
# From: <ddavis@ic.berkeley.edu>
hp236|hp236 internal terminal emulator,
- am,
+ OTbs, am,
cols#80, lines#24,
clear=\EF, cnorm=\EDE, cub1=^H,
cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\EDB,
# This works on a hp300 console running Utah 4.3 BSD
# From: Craig Leres <leres@okeeffe.berkeley.edu>
hp300h|HP Catseye console,
- am, da, db, mir, xhp,
+ 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,
vpa=\E&a%p1%dY,
# From: Greg Couch <gregc@ernie.berkeley.edu>
hp9837|hp98720|hp98721|HP 9000/300 workstations,
- am, da, db, mir, xhp,
+ 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,
# HP 9845 desktop computer from BRL
# (hp9845: removed unknown capability :gu: -- esr)
hp9845|HP 9845,
- am, da, db, eo, mir, xhp,
+ OTbs, am, da, db, eo, mir, xhp,
cols#80, lines#21,
- clear=\EH\EJ, cuf1=\EC, cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA,
- dch1=\EP, dl1=\EM, ed=\EJ, el=\EK,
+ OTbc=\ED, clear=\EH\EJ, 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,
- am, da, db, mir, xhp,
+ 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,
# (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,
- am, bw, mir, msgr,
+ 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,
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: added empty <acsc> to avoid warnings re <smacs>/<rmacs> --esr)
-hp70092|hp70092a|hp70092A|70092|HP 700/92,
+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,
cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^,
ind=^J,
adm2|lsi adm2,
- am,
+ 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,
kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^,
# (adm3: removed obsolete ":ma=^K^P:" -- esr)
adm3|lsi adm3,
- am,
+ 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:
#
# (adm3a: some capabilities merged in from BRl entry -- esr)
adm3a|lsi adm3a,
- am,
+ OTbs, 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, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rs1=^N,
+ 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+,
+ 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
# (adm11: <smul>=\EG4 was obviously erroneous because it also said
# <rev>=\EG4. Looking at other ADMs confirms this -- esr)
adm11|LSI ADM-11,
- am, hs,
- cols#80, lines#24,
- 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),
+ 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 <bandy@lll-crg.ARPA>
# Corrected by Olaf Siebert <rhialto@polder.ubc.kun.nl>, 11 May 1995
# 20 - 6,8
#
adm12|lsi adm12,
- am, mir,
- cols#80, it#8, lines#24,
+ 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,
use=adm+sgr,
# (adm20: removed obsolete ":kn#7:" -- esr)
adm20|lear siegler adm20,
- am,
+ 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,
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,
+ 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 <cup>. -- esr)
adm22|lsi adm22,
- am,
+ 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,
# 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,
- am, mir,
+ 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,
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/lib/tabset/vt100,
- is2=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l, use=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,
- am,
+ 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,
+ 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)
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,
+ 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,
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,
+ 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)
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,
+ 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,
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,
+ 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,
# (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,
- am, msgr,
+ 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,
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,
+ 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,
- am, msgr,
+ 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,
tvi920b|tvi920c|new televideo 920,
dl1=\ER$<5*>, il1=\EE$<5*>, 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,
- use=tvi912,
+ kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, use=tvi912,
# 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,
- am, hs, xenl, xhp,
+ 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,
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,
+ 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)
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,
+ 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,
+ 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
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,
+ 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,
#
#
# (tvi925: BSD has <clear=\E*>. I got <is2> and <ri> from there -- esr)
tvi925|televideo 925,
- am, bw, hs, ul,
+ 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,
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,
+ 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,
# 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,
- am, hs, mir, msgr, xenl, xon,
+ 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,
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,
+ smkx=\El, use=tvi950,
#
# is for 950 with four pages adds the following:
# set 96 line page (\E\\3)
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,
+ smkx=\El, use=tvi950,
#
# <is2> for reverse video 950 changes the following:
# set reverse video (\Ed)
#
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,
+ 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,
+ 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,
+ 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
# If the BSD termcap file was right, <cup=\E=%p1%{32}%+%c%p2%{32}%+%c> would
# also work.
tvi955|televideo 955,
- mc5i, msgr@,
+ 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,
# use half-intensity as normal mode, full intensity as <bold>
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,
+ 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.
# it does to the function keys. I deduced <rmam>/<smam>.
# also added empty <acsc> to suppress tic warning, -- esr)
tvi970|televideo 970,
- am, da, db, mir, msgr,
+ 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,
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,
+ 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,
# 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,
- am,
+ 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*>,
# Note especially the <il1> function. <kf4>-<kf6> are really l4-l6 in
# disguise; <kf7>-<kf9> are really l1-l3.
vi50|visual 50,
- am, da, db, msgr,
+ OTbs, OTpt, am, da, db, msgr,
cols#80, it#8, lines#24,
- 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,
+ 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,
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 <jbs@athena.mit.edu>
+# From: Jeff Siegal <jbs@quiotix.com>
vi55|Visual 55,
- am, mir, msgr,
+ 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,
# 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,
- am, mir, msgr,
- cols#80, it#8, lines#24,
+ 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,
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,
+ 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.
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,
+ 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,
+ 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,
+ bel@, use=wy50-w,
#
# The Wyse 350 is a Wyse 50 with color.
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,
+ 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,
+ 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,
+ bel@, use=wy350-w,
#
# This terminfo description is untested.
# The wyse100 emulates an adm31, so the adm31 entry should work.
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,
+ 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!
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,
+ 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,
pln@, rs3=\EwG\Ee)$<100>, use=wy120-w,
#
wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell,
- bel@,
- use=wy120,
+ 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,
+ 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
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,
+ tbc=\E0, tsl=\EF, use=adm+sgr,
#
wy60-w|wyse60-w|wyse 60 132-column,
cols#132, lw#7, nlab#16, wsl#97,
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,
+ 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,
+ 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@,
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,
+ 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"
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,
+ 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,
+ 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@,
bel@, use=wy99gt,
#
wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell,
- bel@,
- use=wy99gt-w,
+ bel@, use=wy99gt-w,
# Can't set tabs! Other bugs (ANSI mode only):
# - can't redefine function keys (anyway, key redefinition in ANSI mode
# 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,
+ 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;
# 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,
+ hts=\E1, tbc=\E0, use=wy99f,
#
# The Wyse 160 is combination of the WY-60 and the WY-99gt.
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,
+ tbc=\E0, tsl=\EF, use=adm+sgr,
#
wy160-w|wyse160-w|wyse 160 132-column,
cols#132, lw#7, nlab#16, wsl#90,
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,
+ 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,
+ rs2=\EeF$<150>\E`;$<150>, use=wy160-42,
#
wy160-43|wyse160-43|wyse 160 80-column 43-lines,
lh@, lines#43, lw@, nlab@,
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,
+ bel@, use=wy160-w,
#
# The Wyse 75 is a vt100 lookalike without advanced video.
#
#
# Wyse 85 in 132-column mode with visual bell.
wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns,
- bel@,
- use=wy85-w,
+ 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 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.
#
# 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,
+ 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,
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,
+ 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,
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,
+ tsl=\EF, use=adm+sgr,
#
# lines 24 columns 80 vb
# lines 25 columns 132 vb
#
wy325-w-vb|wy325-wvb|wyse325-wvb|wyse-325 wide mode reverse video,
- bel@,
- use=wy325-w,
+ bel@, use=wy325-w,
#
# lines 42 columns 80
# lines 42 columns 132 vb
#
wy325-42w-vb|wy325-42wvb|wyse-325 42 lines wide mode visual bell,
- bel@,
- use=wy325-w,
+ bel@, use=wy325-w,
#
# lines 43 columns 80
#
# lines 43 columns 132 vb
#
wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell,
- bel@,
- use=wy325-w,
+ bel@, use=wy325-w,
# Wyse 370 -- 24 line screen with status line.
#
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,
+ knp=\E[U, kpp=\E[V, use=wy370-nk,
#
# Function key set for the VT-320 (and wy85) compatible keyboard
#
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,
+ 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,
#
# 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,
+ flash=\E[30h\E\,\E[30l$<300>, use=wy370-w,
wy370-rv|Wyse 370 reverse video,
rs3=\E[32h\E[?5h, use=wy370,
#
#
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,
+ home=^]8`g @\037, use=wy99gt-tek,
#
# Wyse 370 Tektronix 4010/4014 emulator,
#
# 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,
+ 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,
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,
+ 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,
+ flash=\E[30h\E\,\E[30l$<100>, use=wy520-w,
#
#
# Wyse 520 emulating a vt420 7 bit mode.
#
# 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,
+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,
+ 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,
- flash=\E[30h\E\,\E[30l$<100>,
- use=wy520-epc,
+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,
+ 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,
- flash=\E[30h\E\,\E[30l$<100>,
- use=wy520-epc-w,
+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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+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,
+ 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,
- am,
+ 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,
# 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=^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,
+ kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr,
#### Kermit terminal emulations
#
# (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, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
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,
+ 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
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,
+ 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.
# (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,
- am@,
+ 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,
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,
+ 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 <sgr> for highlights.
# Define function keys.
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,
+ 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.
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\E4i\E?4i\E[m\E[r\E[2$~,
+ 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,
ind=^J, invis=^V^A\0, rep=\031%p1%c%p2%d, rev=^A^Vp,
rs2=^L,
sgr=\026\001%{0}%?%p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p4%t{128}%|%;%?%p6%t%{16}%|%;,
- sgr0=^V^A^G, smacs=, smso=^A^Vp, smul=^V^A,
- use=klone+acs,
+ sgr0=^V^A^G, smacs=, smso=^A^Vp, smul=^V^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+,
+ rmam=^V", rmir=^V^P, smam=^V$, use=avatar0+,
#### RBcomm
#
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,
+ 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,
+ kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm,
######## OLDER TERMINAL TYPES
#
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,
+ mc0@, mc4@, mc5@, use=att2300,
# Must setup RETURN KEY - CR, REC'VD LF - INDEX.
# Seems upward compatible with vt100, plus ins/del line/char.
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,
# 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,
- db, mir, xon,
+ 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,
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,
+ 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,
+ 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
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,
+ 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,
+ 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,
+ 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,
+ 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,
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,
+ 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,
is1=\E[?3h, use=att5418,
att4420|tty4420|teletype 4420,
- da, db, eo, msgr, ul, xon,
+ 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,
#
# (att4424: commented out <smcup>=\E[1m, we don't need bright locked on -- esr)
att4424|tty4424|teletype 4424,
- am, xon,
+ OTbs, am, xon,
cols#80, lines#24,
acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=^M,
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,
+ 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,
# 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|5620 terminal 88 columns,
- am, msgr, npc, xon,
+ 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,
lines#34, use=att5620,
# 5620 layer running the "S" system's downloaded graphics handler:
att5620-s|tty5620-s|layer|vitty|5620 S layer,
- am,
+ 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,
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,
+ 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,
+ 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
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,
+ 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,
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,
+ 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,
+ 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,
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,
+ 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,
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,
+ 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,
+ 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,
+ 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,
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,
+ 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,
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,
+ 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,
+ 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:
# 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,
- am, da, db, mir, msgr, npc, xon,
+ 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,
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,
+ 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,
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=\E2K, home=\E[H, ht=^I,
+ 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[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=\E24s, kf26=\E26s,
+ 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,
# 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,
- am, bw, ul,
+ 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,
# 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,
+ kbs=^_, use=ampex175,
# From: Richard Bascove <atd!dsd!rcb@ucbvax.berkeley.edu>
# (ampex210: removed obsolete ":kn#10:" -- esr)
ampex210|a210|ampex a210,
- am, hs, xenl,
+ 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,
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,
+ 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,
#
annarbor4080|aa4080|ann arbor 4080,
- am,
+ 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,
# 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),
- am, km, mc5i, mir, xon,
+ 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,
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,
+ 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,
+ 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,
+ 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,
+ 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,
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,
+ 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,
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,
+ 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,
+ 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,
- cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h,
- use=aaa-30,
+ 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,
+ 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,
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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
+ 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,
# Regent: lowest common denominator, works on all regents.
# (regent: renamed ":bc:" to ":le:" -- esr)
regent|Adds Regent Series,
- am,
+ 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,
# down shift key it gets confused, so we avoid escape.
regent100|Adds Regent 100,
xmc#1,
- bel=^G, cup=\013%p1%{32}%+%c%p2%p2%{6}%*%+\020%c,
+ 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,
+ 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,
+ 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,
+ 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,
+ smul=\E0`, use=regent25,
regent40+|Adds Regent 40+,
is2=\EB, use=regent40,
regent60|regent200|Adds Regent 60,
# 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,
- am,
+ 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,
# the status line
# Function key and label capabilities merged in from SCO.
vp90|viewpoint90|adds viewpoint 90,
- bw, msgr, xhp,
+ 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,
# 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,
- am,
+ 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,
# the delay times and do an auto tab set rather than the indirect
# file used in vt100.
cit80|cit-80|citoh 80,
- am,
+ OTbs, am,
cols#80, lines#24,
clear=\E[H\EJ, cr=^M, cub1=^H, cuf1=\E[C,
cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L,
# 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,
- am, xenl,
+ OTbs, am, xenl,
cols#80, lines#24,
bel=^G, clear=\E[H\E[2J, cnorm=\E[V\E8, cub1=^H, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, cvvis=\E7\E[U,
# 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,
- am, mir, msgr,
+ 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,
cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A,
cit101e-rv|Citoh CIT-101e (sets reverse video),
am, eo, mir, msgr, xenl, xon,
cols#80, it#8, lines#24,
- 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,
+ 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,
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,
+ 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,
+ 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
# "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,
- mir, msgr, xon,
- cols#80, it#8, lines#64, vt#3,
+ 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,
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,
+ 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,
+ 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,
+ 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,
#
cdc456|cdc 456 terminal,
- am,
+ 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,
# Assorted CDC terminals from BRL (improvements by DAG & Ferd Brundick)
cdc721|CDC Viking,
- am,
+ 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,
- am,
+ 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,
- am, bw, xhp,
+ 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,
# 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,
- am, bw,
- cols#80, lines#24,
+ 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,
#
# (cdc721: changed :ri: to :sr: -- esr)
cdc721-esc|Control Data 721,
- am, bw, msgr, xon,
- cols#80, it#8, lines#30,
+ 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,
#
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,
+ rmcup=\Ev \001\177p\Ep\r\n, use=c108-4p,
c108-4p|concept108-4p|concept 108 w/4 pages,
- eslok, hs, xon,
+ 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,
# 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,
- am, eo, mir, ul, xenl,
+ 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=,
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,
+ smso=\EE, use=c100,
oc100|oconcept|c100-1p|old 1 page concept 100,
in,
is3@, use=c100,
# <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,
- am, eo, mir, ul, xenl, xon,
+ 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,
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=\E8m, ip=$<4>, is1=\E[=103l\E[=205l,
+ 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,
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=\E4l,
- rmkx=\E[!z\E[0;2u, rmso=\E[7!{, rmul=\E[4!{, sc=\E7,
+ 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=\E1, smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m,
+ smir=\E[4h, smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m,
tbc=\E[2g, 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-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,
+ 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
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,
+ 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,
+ 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,
+ smcup=\E[H\E[1;24;1;132w, use=avt+s, use=avt-ns,
#### Contel Business Systems.
#
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,
+ 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
# maybe they were originally nuls (which would fit).
dg200|data general dasher 200,
- am, bw,
+ 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,
dg210|dg-ansi|Data General 210/211,
am,
cols#80, lines#24,
- clear=\E[2J, cud1=\E[B, 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,
+ OTnl=\E[B, clear=\E[2J, cud1=\E[B, 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.
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
+ 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
# grounds that there is no matching ":ml:"
# fixed garbled ":k9=\E[00\:z:" capability -- esr)
dg460-ansi|Data General Dasher 460 in ANSI-mode,
- am, msgr, ul,
+ OTbs, am, msgr, ul,
cols#80, it#8, lines#24,
- 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 <mcnc!rti-sel!rtp47!throopw>
+ 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 <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!
# 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,
- am, bw, ul,
+ OTbs, am, bw, ul,
cols#80, lines#24,
- 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,
+ 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,
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,
+ 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.
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,
+ 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.
#
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,
+ 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
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,
+ 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+,
#
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,
+ 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,
+ 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)
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,
+ 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.
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,
+ smul=\E[4;50m, use=dgkeys+7b, use=d220,
d230c-dg|d230-dg|Data General DASHER D230C in DG mode,
use=d220-dg,
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,
+ sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211,
# Initialization string 2 sets:
# \E[3;2;2;0;1;0v
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,
+ 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,
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,
+ 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,
+ 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,
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+,
+ 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,
+ 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+,
+ 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+,
+ 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+,
+ cud1@, cuu1@, ll@, use=d462+,
d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode,
use=d412-unix,
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,
+ 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 in 1993.
-# As of early 1996, at least one company called `Datamedia' has been taken
-# over by:
-#
-# Axent Technologies, Inc.
-# 2400 Research Boulevard
-# Rockville, Maryland 20850
-# voice: +1 301/258-5043
-# fax: +1 301/330-5756
-# email: <info@axent.com>
-#
-# makers of OmniGuard client/server security software. They are a software
-# only company and no longer make terminals. However, the operator there
-# told me that she had once spoken to a customer looking for Datamedia
-# terminals who'd mentioned a Datamedia in New Jersey. This is backed up
-# by comp.terminals posting describing the ID plate on the back of a
-# "Datamedia 3000" terminal. Was this an earlier incarnation of Axent?
-# Inquiring minds want to know...
+# 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,
# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr)
dm1520|dm1521|datamedia 1520,
- am, xenl,
+ 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=^],
# 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=^^^^\177, cub1=^H, cud1=^J, cuf1=^\,
cup=\014%p2%{96}%^%c%p1%{96}%^%c, cuu1=^Z,
il1=\020\n\030\035\030\035$<1*/>, use=dm2500,
# (dm3025: ":MT:" changed to ":km:" -- esr)
dm3025|datamedia 3025a,
- km,
+ 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,
is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP,
smir=\EP, smso=\EO1,
dm3045|datamedia 3045a,
- am, eo, km@, ul, xenl,
+ 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,
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 <thompson@xanth.magic.mb.ca> Sept 10 1995
+# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995
dt80-sas|Datamedia DT803/DTX for SAS usage,
am, bw,
cols#80, lines#24,
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,
+ smir=\E[4h, use=dt80,
#### Falco
#
# 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,
- am,
+ 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,
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,
- am, da, db, mir, msgr, ul,
+ 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,
# 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,
- am, bw, hs, mir, msgr, xon,
+ 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,
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,
+ 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,
dch1@, use=f110,
# (f200: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr)
f200|freedom200|Liberty Freedom 200,
- am, eslok, hs, mir, msgr, xon,
+ 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,
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,
+ 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
# 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, cuf1=\E[C,
cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
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,
+ 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,
- am, mir, xenl,
+ 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,
# not AEP!
#
sb1|beehive superbee,
- am, bw, da, db, mir, ul, xsb,
+ 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,
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,
+ 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.
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,
- am, mir,
+ 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,
# (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,
- am,
+ 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,
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,
- am,
+ 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,
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,
+ kf8=\177, kf9=\Ee, use=bee,
# (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation
# in :is: -- esr)
ha8686|harris 8686,
# 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: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981
hz1420|hazeltine 1420,
- am,
+ 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,
# freakout with out-of-range args and tn3270. No hz since it needs to
# receive tildes.
hz1500|hazeltine 1500,
- am, hz,
+ 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,
# <smso=\E^Y>, but these caps were commented out in 8.3; also,
# removed incorrect and overridden ":do=^J:" -- esr)
hz1510|hazeltine 1510,
- am,
+ 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,
# Other switches may be set for operator convenience or communication
# requirements.
hz1520|Hazeltine 1520,
- am, bw, msgr,
+ 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,
# 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,
+ 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,
- am,
+ 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,
# 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,
- am, bw,
+ 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,
# that the terminal would work somewhat if the auto LF/CR was turned off.
# (hmod1: removed :dn=~^K: -- esr)
hmod1|Hazeltine Modular 1,
- am, hz,
+ 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,
# from Will Martin <control@ALMSA-1.ARPA> via BRL
# Like VT100, except for different "am" behavior.
hazel|exec80|h80|he80|Hazeltine Executive 80,
- am,
+ OTbs, OTpt, am,
cols#80, it#8, lines#24, vt#3,
- bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>,
+ 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/>,
clear=^M^J, el=^M, home=^M,
ibm3101|i3101|IBM 3101-10,
- am, xon,
+ 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,
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,
+ 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
-# I've commented out or translated some IBM extensions.
+# removed kend, knp, kpp -TD
ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display,
- am, mir, msgr,
+ 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,
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, kend=\E2, kf1=\Ea\r, kf10=\Ej\r,
+ 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,
- knp=\EI, kpp=\EL, ktbc=\E 1, mc4=^P^T, mc5=^P^R, rev=\E4A,
- rmcup=\E>A, rmso=\E4@, rmul=\E4@,
+ 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,
+ 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,
- rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A,
- setb=\E4 %p1%{64}%+%c,
- setf=\E4%?%p1%t %p1%{32}%+%c%e!'%;@,
+ 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[2J, cr=^M,
+ 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,
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, kf0=\E[010q, 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, rc=\E[u, rev=\E[7m, ri=\E[T,
- rin=\E[%p1%dT, rmir=\E[4l, rmso=\E[m, rmul=\E[m, rs2=\Ec,
- sc=\E[s,
+ 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,
- am, eo, msgr,
+ 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,
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,
+ 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,
+ 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%;,
ibm5154|IBM 5154 Color display,
- colors#8, pairs#64,
+ 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,
+ 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,
+ 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,
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,
+ 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,
+ 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,
+ sgr0=\E[0;10m, use=ibm5151,
ibm6153-90|IBM 6153 Black & White display,
cols#90, lines#36,
blink@, bold@, use=ibm5151,
am, mir, msgr,
cols#80, it#8, lines#25,
acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m,
- clear=\E[H\E[2J, cub1=\E[D, cud1=^J, cuf1=\E[C,
+ 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,
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=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,
+ 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,
+ 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,
#
# AIX entries. IBM ships these with AIX 3.2.5.
-# AIX extension caps are commented out,
-# except for box1 which has been translated to an <acsc> string.
-#
-aixterm|IBM Aixterm Terminal Eemulator,
+# -- added rc, sc based on manpage -TD
+aixterm|IBM Aixterm 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%;%?%p7%t;8%;m,
- sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT,
- use=ibm6154,
+ 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,
+ 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,
+ 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,
+ acsc@, use=aixterm-m,
#### 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),
- am,
+ 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,
- am,
+ OTbs, am,
cols#80, lines#25,
bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C,
cup=%i\E[%p1%3d;%p2%3dH, cuu1=\E[A,
# foreground, black background, normal highlight.
#
icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372,
- am, hs,
+ OTbs, am, hs,
cols#80, lines#24,
bel=^G, blink=\E[2ZZ, cbt=\EI, civis=\E.0, clear=\E*,
cnorm=\E.3, cr=^M,
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,
+ rs2=\Eo1, use=icl6404,
#### Interactive Systems Corp
#
# (intext: removed obsolete ":ma=^K^P^R^L^L ::bc=^_:", also the
# ":le=^_:" later overridden -- esr)
intext|Interactive Systems Corporation modified owl 1200,
- am,
+ 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=^\,
# Kimtron ABM 85 added by Dual Systems
# (abm85: removed duplicated ":kd=^J:" -- esr)
abm85|Kimtron ABM 85,
- am, bw, msgr,
+ 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,
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,
+ 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,
+ 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,
+ 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,
- am,
+ 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,
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,
+ 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
#
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,
+ vpa=\E[%i%p1%dd, use=p4,
# p8-w: Prism-8 in 132 column mode
# --------------------------------
# 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,
- am,
+ 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,
# 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,
+ 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,
# 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,
- am,
+ 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,
# 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),
- am,
+ 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,
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,
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,
+ 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
# 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 basicly a
+# 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 basicly a
+ 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 basicly a DEC
-# vt200/300 with color capabilities added.
+ 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,
+ 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,
+ 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
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,
+ smkx=\E=, use=ncr260vt100an,
ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+ kybd,
cols#132,
cup=\E[%i%p1%d;%p2%dH$<30>,
# 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|ncr 7900 model 1,
am, bw, ul,
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 <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,
#
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,
- am,
+ 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,
- am, in,
+ 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,
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,
+ rmul=\E!\0, smso=\Eb2, smul=\E!\s, use=pe7000m,
#### Sperry Univac
#
# (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,
- am, da, db, hs,
+ 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,
#
tek|tek4012|tektronix 4012,
- os,
+ OTbs, os,
cols#75, lines#35,
bel=^G, clear=\E\014$<1000>, cr=^M, cub1=^H, cud1=^J,
ff=\014$<1000>, is2=\E^O,
# 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,
- am,
- cols#80, lines#24, vt#4, xmc#1,
- 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,
+ 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
# and didn't seem necessary.
#
tek4024|tek4025|tek4027|tektronix 4024/4025/4027,
- am, da, db,
+ 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,
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,
+ 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,
+ 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
# (tek4025a: removed obsolete ":xx:". This may mean the tek4025a entry won't
# work any more. -- esr)
tek4025a|Tektronix 4025A,
- am, bw, da, db, xon,
+ 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;,
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.
# 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,
- am,
+ 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,
# :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,
+ rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025,
tek4105|tektronix 4105,
- am, mir, msgr, ul, xenl, xt,
+ 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, cud1=\E[1B, cuf1=\E[1C,
# "IC" cannot be used in combination with "im" & "ei".
# "tek4105a" is just a guess:
tek4105a|Tektronix 4105,
- msgr, xon,
- cols#80, it#8, lines#30, vt#3,
+ 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,
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, sc=\E7,
- sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h,
+ 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,
#
smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, tbc=\E[3g,
tek4107|tek4109|tektronix terminals 4107 4109,
- am, mir, msgr, ul, xenl, xt,
+ 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,
rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0,
# The 4112 with the ANSI compatibility enhancement
tek4112|tek4114|tektronix 4110 series,
- am, db,
+ OTbs, am, db,
cols#80, lines#34,
cbt=\E[Z, clear=\E[2J\E[0;0H, cub1=^H, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\EM, dch1=\E[P, dl1=\E[M,
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,
# 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,
- am, da, eo,
+ 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,
# 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,
- am, eo,
+ OTbs, am, eo,
cols#80, it#8, lines#34,
clear=\E^L, cub1=^H, cud1=^J, cuf1=^I, cuu1=^K,
cvvis=\ELZ\EKA0,
# This entry is from Tek. Inc. (Brian Biehl)
# (tek4115: :bc: renamed to :le:, <rmam>/<smam> added based on init string -- esr)
otek4115|Tektronix 4115,
- am, da, db, eo,
+ 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,
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,
+ rc@, sc@, smkx=\E=, use=vt100,
# From: <jcoker@ucbic>
# (tek4207: This was the termcap file's entry for the 4107/4207, but SCO
# (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=^J, cuf1=\E[C,
cols#72,
bel=^G, cr=^M, cud1=^J, ind=^J,
tty37|model 37 teletype,
- hc, os, xon,
+ OTbs, hc, os, xon,
bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8,
ind=^J,
# 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,
- xon,
+ 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>,
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,
- am, hc, os, xon,
+ OTbs, am, hc, os, xon,
cols#132,
bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H,
# Missing in vc303a and vc303 descriptions: they scroll 2 lines at a time
# every other linefeed.
vc303|vc103|vc203|volker-craig 303,
- am,
+ 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,
home=\031$<40>, kcuf1=^U, kcuu1=^Z, ll=^P, use=vc303,
# (vc404: removed obsolete ":ma=^Z^P^U :" -- esr)
vc404|volker-craig 404,
- am,
+ 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,
# 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.,
- am,
+ 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,
# 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,
- am,
+ 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
-# (commented out <smir>=\200R because we don't know <rmir> -- esr)
+# (ibmpc: commented out <smir>=\200R because we don't know <rmir> -- esr)
ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS),
- am,
+ 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,
- am, bw, eo, hs, km, msgr, ul,
+ 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,
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, 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,
+ 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,
# 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,
- am, bw, eo, msgr,
+ 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=^],
# 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,
+ 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,
- am, bw, msgr, nxon, xon,
+ 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=^],
kcuf1=^U, kcuu1=^K, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N,
smso=^O,
appleII|apple ii plus,
- am,
+ 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,
# 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,
- am, bw,
+ 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=^_,
# 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,
- am, xenl,
+ 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=^],
# controlled by ASCII Express: Pro.
# From Dave Shaver <isucs1!shaver>
apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell,
- am, eo, xt,
+ OTbs, am, eo, xt,
cols#80, lines#24,
acsc=, clear=^L, cuf1=^\,
cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
is2=^V4^W06\017\rVisible Bell Installed.\016\r\n,
rmso=^N, smso=^O,
apple-uterm|Ultraterm for Apple micros,
- am, eo, xt,
+ OTbs, am, eo, xt,
cols#80, lines#24,
acsc=, clear=^L, cuf1=^\,
cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^],
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,
- am,
+ OTbs, am,
cols#80, lines#24,
clear=\Ev, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
cuu1=\EA, el=\Ex, home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
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/>, 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=^_,
# (lisa: changed <cvvis> to <cnorm> -- esr)
lisa|apple lisa console display (black on white),
- am, eo, msgr,
+ 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,
# You can type "reset" to get them set.
#
lisaterm|Apple Lisa or Lisa/2 running LisaTerm vt100 emulation,
- am, xenl, xon,
- cols#80, it#8, lines#24, vt#3,
+ 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,
# 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,
# 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,
- am,
+ 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,
sgr0=\037!\E\:\0, smso=^_\s, smul=^_",
# (trs2: removed obsolete ":nl=^_:" -- esr)
trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M,
- am, msgr,
+ 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,
# :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@:
# I also deleted the unnecessary ":kn#2:", ":sg#0:" -- esr)
trs16|trs-80 model 16 console,
- am,
+ 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,
# From: Simson L. Garfinkel <simsong@media-lab.mit.edu>
atari|atari st,
- am,
+ 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,
# 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,
+ 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
# 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.
# (amiga: removed obsolete :kn#10:,
# also added empty <acsc> to suppress a warning --esr)
amiga|Amiga ANSI,
- am, bw, xenl,
+ 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,
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=\ED,
- kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\E9~, kf1=\E0~,
- kf2=\E1~, kf3=\E2~, kf4=\E3~, kf5=\E4~, kf6=\E5~, kf7=\E6~,
- kf8=\E7~, kf9=\E8~, 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,
+ 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 <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,
- bw, msgr,
+ 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,
# From: Henning 'Faroul' Peters <Faroul@beyond.kn-bremen.de>, 25 Sep 1999
amiga-8bit|Amiga ANSI using 8-bit controls,
acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L,
- ind=\204, indn@, ri=\215, rin@,
- use=amiga-h,
+ ind=\204, indn@, 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
#
commodore|b-128|Commodore B-128 micro,
am, bw,
- cols#80, lines#24, pb#150,
- clear=\E\006$<10/>, cr=^M, cud1=^J, cuf1=^F,
- cup=\E\013%p1%2d\,%p2%2d\,$<20/>, cuu1=^P,
+ 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=,
#
# 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/>,
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,
- am, mir, msgr, ul, xhp,
- cols#80, lines#24,
+ 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,
# Similar to tvi920
# Added by David Milligan and Tom Smith (SMU)
osexec|Osborne executive,
- am,
- cols#80, lines#24, xmc#1,
- bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L,
+ 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,
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=^J, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E),
- smso=\E(,
- use=adm3a,
+ smso=\E(, use=adm3a,
# luna's BMC terminal emulator
luna|luna68k|LUNA68K Bitmap console,
cols#88, lines#46, use=ansi-mini,
#
# 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,
- eslok, hs, xenl,
+ 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,
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,
+ smir=\E[4h, smkx=\E;iYA\E;jYC, use=minitel1,
# <rmkx> posait des problemes (logout en sortant de vi).
minitel1b-80|minitel 1-bistandard (standard teleinformatique),
am@, bw@, hz@,
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,
+ sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, use=minitel1b,
######## OBSOLETE VDT TYPES
#
# but these caps were commented out in 8.3; also, removed overridden
# ":do=^J:" -- esr)
abm80|amtek business machines 80,
- am, bw,
+ 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,
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,
+ smul=\EU", use=blit,
oblit|ojerq|first version of blit rom,
am, da, db, eo, mir, ul, xon,
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),
- xenl,
+ 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,
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,
+ 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,
+ 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,
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=^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%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=^J, 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[2g,
+ 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,
+ cvvis=\E[?25h, 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=^O, 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=^N, 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: <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, civis=\233?25l,
+ clear=\233H\233J, cnorm=\233?25h, cr=^M,
+ csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cud=\233%p1%dB,
+ cuf=\233%p1%dC, cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA,
+ cvvis=\233?25h, 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 ^[[<p
+# PRES print adapter reset ^[[2p
+# SSPR multi-part. reset ^[[<>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[<p,
+ mc5=\E[3p, nel=^M, 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
#
# This entry has correct padding and the undocumented "ri" capability
cyb83|xl83|cybernex xl-83,
- am,
+ 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,
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,
- am,
+ 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,
#
dp3360|datapoint|datapoint 3360,
- am,
+ OTbs, am,
cols#82, lines#25,
bel=^G, clear=^]^_, cr=^M, cub1=^H, cud1=^J, cuf1=^X, cuu1=^Z,
ed=^_, el=^^, home=^], ind=^J,
#
gt40|dec gt40,
- os,
+ OTbs, os,
cols#72, lines#30,
bel=^G, cr=^M, cub1=^H, cud1=^J,
gt42|dec gt42,
- os,
+ 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,
# 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,
- am, xenl,
+ 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,
# 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,
rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D,
dw1|decwriter I,
- hc, os,
+ OTbs, hc, os,
cols#72,
bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J,
dw2|decwriter|dw|decwriter II,
- hc, os,
+ 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 !)
# The dw3 does standout with wide characters.
#
dw3|la120|decwriter III,
- hc, os,
+ 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,
- am, hc, os,
+ 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,
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,
+ kcud1=^J, nel=^M^J, use=ln03,
#### Delta Data (dd)
#
# There are BSD-derived termcap entries floating around for this puppy
# that are *certainly* wrong.
delta|dd5000|delta data 5000,
- am,
+ 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,
# (ddr: I added <rmam>/<smam> based on the init string -- esr)
ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator,
- am, xenl,
+ 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,
#
terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200,
- hc, os,
+ OTbs, hc, os,
cols#120,
bel=^G, cr=^M, cud1=^J, ind=^J,
# (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,
- am, mir, msgr,
+ 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,
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,
+ 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
# 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,
- am, eslok, hs, mir, msgr,
+ OTbs, am, eslok, hs, mir, msgr,
cols#80, it#8, lines#24,
acsc=, bel=^G, clear=\EE, cnorm=\Ey4, cr=^M, cub1=^H, cud1=\EB,
cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA,
# (z29: added empty <acsc> to suppress a tic warning, merged in
# status line capabilities from BRL entry --esr)
z29|zenith29|z29b|zenith z29b,
- am, eslok, hs, mir, msgr,
- cols#80, lines#24,
- acsc=, bel=^G, cbt=\E-, clear=\EE$<14>, cnorm=\Ey4, cr=^M,
- cub1=^H, cud1=\EB, cuf1=\EC,
+ 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,
# (z29a: replaced nonexistent <if=/usr/share/tabset/zenith29> befause <hts>
# looks vt100-compatible -- esr)
z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode,
- am, eslok, hs, mir, msgr,
- cols#80, it#8, lines#24,
- 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,
+ 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,
# 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,
+ 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,
- mir, msgr,
- cols#80, it#8, lines#24,
+ OTbs, OTpt, mir, msgr,
+ OTkn#10, cols#80, it#8, lines#24,
acsc=, 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*/>,
# From: <ucscc!B.fiatlux@ucbvax.berkeley.edu>
# (ztx: removed duplicate :sr: -- esr)
ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10 or 11,
- am, eslok, hs,
+ 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,
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,
+ 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,
+ kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv,
ims-ansi|ultima2|ultimaII|IMS Ultima II,
- am,
+ OTbs, am,
cols#80, it#8, lines#24,
clear=\E[H\E[2J, cub1=^H, cud1=\ED,
cup=\E[%i%p1%2d;%p2%2dH, cuu1=\EM, ed=\E[0J, el=\E[0K,
#
superbrain|intertec superbrain,
- am, bw,
+ OTbs, am, bw,
cols#80, lines#24,
- bel=^G, clear=\014$<5*>, cr=^M, cub1=^H, cud1=^J, cuf1=^F,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K,
+ 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,
- am,
+ 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,
# 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,
+ ll=^K^X\r, vpa=\013%p1%c, use=intertube,
#### Ithaca Intersystems
#
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,
+ 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,
# the first line disappears but a ctrl-l shows that it did work
# correctly.
modgraph48|mod|Modgraph w/48 lines,
- am, xenl,
+ OTbs, OTpt, am, xenl,
cols#80, it#8, lines#48, vt#3,
- 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,
+ 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,
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,
+ 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,
- am, bw,
- cols#80, lines#24,
+ OTbs, am, bw,
+ OTkn#5, OTug#1, cols#80, lines#24,
cbt=\E[, clear=\EX, cud1=\EB, cuf1=\ED,
cup=\EE%p1%{32}%+%c%p2%{32}%+%c, ed=\ET, el=\EU,
home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H,
# This company is still around in 1995, manufacturing point-of-sale systems.
omron|Omron 8025AG,
- am, da, db,
+ 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,
# 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,
- msgr, xon,
- cols#80, it#8, lines#24, vt#3,
+ 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,
# 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,
# to enable DC3/DC1 flow control!
# I commented out the scrolling capabilities since they are too slow.
hirez100|Selanar HiREZ-100,
- mir, msgr, xon,
- cols#80, it#8, lines#48, vt#3,
+ 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,
# (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,
+ kcuf1=^L, kcuu1=^K, use=adm3a,
soroc140|iq140|soroc iq140,
- am, mir,
+ 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,
# compatible but looks more vt100-like.
tab132|tab|tab132-15|tab 132/15,
da, db,
- cols#80, lines#24, lm#96,
+ 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,
+ 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,
+ is2=\E[?7h\E[?3h\E[?5h, use=tab132-w,
#### Teleray
#
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,
- am, km, xhp, xt,
+ 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,
# 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,
- km, xhp, xt,
+ OTbs, km, xhp, xt,
cols#80, it#8, lines#24, xmc#2,
clear=\Ej$<30/>, cub1=^H, cuf1=\EC,
cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ,
# 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,
- hc, os,
+ OTbs, hc, os,
cols#80,
bel=^G, cr=\r$<162>, cub1=^H, cud1=^J, ind=^J,
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,
- smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, use=vt220,
+ smacs=\016$<2>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd,
+ use=vt220,
#
# Texas Instruments 916 VDT 8 bit control mode
#
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,
+ kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916,
#
# Texas Instruments 916 VDT 8859/1 7 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,
- am, xon,
+ 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,
ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode,
cols#132, use=ti924-8,
ti931|Texas Instruments 931 VDT,
- am, xon,
+ 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,
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,
+ 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,
+ 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,
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,
+ kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi,
#
# 928 VDT 8 bit control mode
#
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,
+ kpp=\233T, kprt=\23335~, use=ti_ansi,
#### Zentec (zen)
#
# dim-reverse using ADM12-style attributes. ADM12 <smul>/<rmul> and
# <invis> might work-- esr)
zen30|z30|zentec 30,
- am, mir, ul,
+ 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,
+ 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,
- am,
+ 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,
+ 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,
- am, bw,
+ 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,
# From: Gary Darland <goodmanc@garnet.berkeley.edu>
apollo|apollo console,
- am, mir,
+ 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,
# (aws: removed unknown :dn=^K: -- esr)
aws|Convergent Technologies AWS workstation under UTX and Xenix,
am,
- cols#80, lines#28, xmc#0,
- 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,
+ 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,
- cols#80, lines#24, xmc#0,
- 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,
+ 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
#
# 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,
- am,
+ OTbs, am,
cols#128, lines#57,
clear=\032$<1/>, cub1=^H, cud1=^J, cuf1=^L,
cup=\E=%p1%c%p2%c, cuu1=^K,
# "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,
- am, bw,
+ 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>,
# (masscomp: ":MT:" changed to ":km:"; -- esr)
masscomp|masscomp workstation console,
- km, mir,
+ 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,
# and a date on the serial-number plate) please send it!
cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars,
- am,
+ 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,
- am,
+ 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,
# mode (which is what this entry looks like) and several other lesser-known
# emulations.
d800|Direct 800/A,
- am, da, db, msgr, xhp,
+ 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,
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,
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, use=vt100,
+ sgr=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m,
+ 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,
- am, os,
+ 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 <thompson@xanth.magic.mb.ca> tells us:
+# 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,
# color terminals built for IBM bisync protocols.
# From: Paul Leondis <unllab@amber.berkeley.edu>
ifmr|Informer D304,
- am,
+ 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\\,
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%p1%c\EG0,
- use=adm+sgr,
+ uc=\EG8%p1%c\EG0, use=adm+sgr,
teletec|Teletec Datascreen,
- am,
+ OTbs, am,
cols#80, lines#24,
bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^K,
home=^^, ind=^J,
# 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,
- am, mir, xenl,
+ OTbs, am, mir, xenl,
cols#80, it#8, lines#24,
clear=\E[H\E[J, cub1=^H, cuf1=\E[C,
cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M,
# 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-256 color
+#
+# 2000/6/10
+# * add kmous capability to linux to use Joerg Schoen's gpm patch.
+#
+# 2000/7/1
+# * add Eterm (Michael Jennings)
+#
# The following sets edit modes for GNU EMACS.
# Local Variables:
# fill-prefix:"\t"
-# $Id: mk-0th.awk,v 1.7 1998/02/11 12:13:52 tom Exp $
+# $Id: mk-0th.awk,v 1.8 2000/01/09 00:29:10 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
print ""
print "# generated by mk-0th.awk"
print ""
+ print ".SUFFIXES: .c .h .i"
+ print ".c.i :"
+ printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
+ print ".h.i :"
+ printf "\t$(CPP) $(CPPFLAGS) $< >$@\n"
+ print ""
found = 0;
}
!/^[@#]/ {
-# $Id: mk-1st.awk,v 1.39 1998/05/09 21:54:02 tom Exp $
+# $Id: mk-1st.awk,v 1.44 2000/07/07 00:27:51 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
+# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,2000
#
# Generate list of objects for a given model library
# Variables:
# depend (optional dependencies for all objects, e.g, ncurses_cfg.h)
# subset ("none", "base", "base+ext_funcs" or "termlib")
# target (cross-compile target, if any)
+# ShlibVer ("rel", "abi" or "auto", to augment DoLinks variable)
# DoLinks ("yes", "reverse" or "no", flag to add symbolic links)
# rmSoLocs ("yes" or "no", flag to add extra clean target)
# overwrite ("yes" or "no", flag to add link to libcurses.a
#
function symlink(src,dst) {
if ( src != dst ) {
- if ( DoLinks == "reverse" ) {
- printf "rm -f %s; ", src
- printf "$(LN_S) %s %s; ", dst, src
- } else {
- printf "rm -f %s; ", dst
- printf "$(LN_S) %s %s; ", src, dst
- }
+ printf "rm -f %s; ", dst
+ printf "$(LN_S) %s %s; ", src, dst
}
}
-function sharedlinks(directory, add) {
- if ( end_name != lib_name ) {
- if ( DoLinks == "yes" ) {
- abi_name = sprintf("%s.$(ABI_VERSION)", lib_name);
- } else {
- abi_name = end_name;
- }
- if (add) {
- printf "\tcd %s && (", directory
- if ( abi_name != end_name ) {
- symlink(end_name, abi_name);
+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);
}
- symlink(abi_name, lib_name);
- printf ")\n"
- } else {
- if ( abi_name != end_name ) {
- printf "\t-@rm -f %s/%s\n", directory, abi_name
+ } else {
+ if ( ShlibVer == "rel" ) {
+ rmlink(directory, abi_name);
+ rmlink(directory, lib_name);
+ } else if ( ShlibVer == "abi" ) {
+ rmlink(directory, lib_name);
}
- printf "\t-@rm -f %s/%s\n", directory, lib_name
- }
}
}
-function removelinks() {
- if ( end_name != lib_name ) {
- if ( abi_name != end_name ) {
- printf "\t-rm -f ../lib/%s\n", abi_name
+function sharedlinks(directory) {
+ if ( ShlibVer != "auto" ) {
+ 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 "\t-rm -f ../lib/%s\n", end_name
+ printf ")\n"
}
}
BEGIN {
}
}
}
- !/^[@#]/ {
+ /^[@#]/ {
+ next
+ }
+ $1 ~ /trace/ {
+ if (traces != "all" && traces != MODEL && $1 != "lib_trace")
+ next
+ }
+ {
if (using \
&& ( $2 == "lib" \
|| $2 == "progs" \
lib_name = sprintf("%s%s%s", prefix, name, suffix)
if ( MODEL == "SHARED" )
{
- if ( DoLinks == "yes" ) {
- end_name = sprintf("%s.$(REL_VERSION)", lib_name);
- } else if ( DoLinks == "reverse") {
- tmp_name = sprintf("%s.$(ABI_VERSION)", lib_name);
+ abi_name = sprintf("%s.$(ABI_VERSION)", lib_name);
+ rel_name = sprintf("%s.$(REL_VERSION)", lib_name);
+ if ( DoLinks == "reverse") {
end_name = lib_name;
- lib_name = tmp_name;
} else {
- end_name = lib_name;
+ if ( ShlibVer == "rel" ) {
+ end_name = rel_name;
+ } else if ( ShlibVer == "abi" ) {
+ end_name = abi_name;
+ } else {
+ end_name = lib_name;
+ }
}
- printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS
+ printf "../lib/%s : $(%s_OBJS)\n", end_name, OBJS
print "\t-@rm -f $@"
if ( subset == "termlib") {
printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(TINFO_LIST)\n", OBJS
} else {
printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(SHLIB_LIST)\n", OBJS
}
- sharedlinks("../lib", 1)
- print ""
- if ( end_name != lib_name ) {
- printf "../lib/%s : ../lib/%s\n", end_name, lib_name
- }
+ sharedlinks("../lib")
print ""
print "install \\"
print "install.libs \\"
printf "install.%s :: $(INSTALL_PREFIX)$(libdir) ../lib/%s\n", name, end_name
- printf "\t@echo installing ../lib/%s as $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, end_name
- if ( DoLinks == "reverse") {
- printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name
- printf "\t$(INSTALL_LIB) ../lib/%s $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, lib_name
- } else {
- printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s \n", end_name
- printf "\t$(INSTALL_LIB) ../lib/%s $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, end_name
- }
- sharedlinks("$(INSTALL_PREFIX)$(libdir)", 1)
+ printf "\t@echo installing ../lib/%s as $(INSTALL_PREFIX)$(libdir)/%s\n", end_name, end_name
+ printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s\n", end_name
+ printf "\t$(INSTALL_LIB) ../lib/%s $(INSTALL_PREFIX)$(libdir)/%s\n", end_name, end_name
+ sharedlinks("$(INSTALL_PREFIX)$(libdir)")
if ( overwrite == "yes" && name == "ncurses" )
{
ovr_name = sprintf("libcurses%s", suffix)
- printf "\t@echo linking %s to %s\n", lib_name, ovr_name
- printf "\tcd $(INSTALL_PREFIX)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, lib_name, ovr_name
+ printf "\t@echo linking %s to %s\n", end_name, ovr_name
+ printf "\tcd $(INSTALL_PREFIX)$(libdir) && (rm -f %s; $(LN_S) %s %s; )\n", ovr_name, end_name, ovr_name
}
if ( ldconfig != "" ) {
printf "\t- test -z \"$(INSTALL_PREFIX)\" && %s\n", ldconfig
print "uninstall \\"
print "uninstall.libs \\"
printf "uninstall.%s ::\n", name
- printf "\t@echo uninstalling $(INSTALL_PREFIX)$(libdir)/%s \n", end_name
- printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s\n", end_name
- sharedlinks("$(INSTALL_PREFIX)$(libdir)", 0)
+ printf "\t@echo uninstalling $(INSTALL_PREFIX)$(libdir)/%s\n", end_name
+ removelinks("$(INSTALL_PREFIX)$(libdir)")
if ( overwrite == "yes" && name == "ncurses" )
{
ovr_name = sprintf("libcurses%s", suffix)
- printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s \n", ovr_name
+ printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/%s\n", ovr_name
}
if ( rmSoLocs == "yes" ) {
print ""
print "install \\"
print "install.libs \\"
printf "install.%s :: $(INSTALL_PREFIX)$(libdir) ../lib/%s\n", name, lib_name
- printf "\t@echo installing ../lib/%s as $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, lib_name
- printf "\t$(INSTALL_DATA) ../lib/%s $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name, lib_name
+ printf "\t@echo installing ../lib/%s as $(INSTALL_PREFIX)$(libdir)/%s\n", lib_name, lib_name
+ printf "\t$(INSTALL_DATA) ../lib/%s $(INSTALL_PREFIX)$(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 $(INSTALL_PREFIX)$(libdir)/libcurses.a \n"
+ printf "\t@echo linking libcurses.a to libncurses.a\n"
+ printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/libcurses.a\n"
printf "\t(cd $(INSTALL_PREFIX)$(libdir) && $(LN_S) libncurses.a libcurses.a)\n"
}
printf "\t$(RANLIB) $(INSTALL_PREFIX)$(libdir)/%s\n", lib_name
print "uninstall \\"
print "uninstall.libs \\"
printf "uninstall.%s ::\n", name
- printf "\t@echo uninstalling $(INSTALL_PREFIX)$(libdir)/%s \n", lib_name
+ printf "\t@echo uninstalling $(INSTALL_PREFIX)$(libdir)/%s\n", lib_name
printf "\t-@rm -f $(INSTALL_PREFIX)$(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 $(INSTALL_PREFIX)$(libdir)/libcurses.a \n"
+ printf "\t@echo linking libcurses.a to libncurses.a\n"
+ printf "\t-@rm -f $(INSTALL_PREFIX)$(libdir)/libcurses.a\n"
}
if ( target == "vxworks" )
{
}
print ""
print "clean ::"
- printf "\t-rm -f ../lib/%s\n", lib_name
+ removelinks("../lib");
print ""
print "mostlyclean::"
printf "\t-rm -f $(%s_OBJS)\n", OBJS
- print ""
- print "clean ::"
- removelinks();
}
else if ( found == 2 )
{
-# $Id: mk-2nd.awk,v 1.11 1998/10/17 21:54:21 Alexander.V.Lukyanov Exp $
+# $Id: mk-2nd.awk,v 1.12 2000/04/01 20:50:36 tom Exp $
##############################################################################
# Copyright (c) 1998 Free Software Foundation, Inc. #
# #
}
}
}
- !/^[@#]/ {
+ /^[@#]/ {
+ next
+ }
+ $1 ~ /trace/ {
+ if (traces != "all" && traces != MODEL && $1 != "lib_trace")
+ next
+ }
+ {
if ($0 != "" \
&& using != 0) {
found = 1
# Created: 1993-05-16
# Last modified: 1994-03-25
# Public domain
+#
-umask 022
errstatus=0
+umask 022
-for file in ${1+"$@"} ; do
+for file in ${1+"$@"} ; do
set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
shift
if test ! -d "$pathcomp"; then
echo "mkdir $pathcomp" 1>&2
- mkdir "$pathcomp" || errstatus=$?
+ case "$pathcomp" in
+ [a-zA-Z]: ) ;; # DOSISH systems
+ * ) mkdir "$pathcomp" || errstatus=$? ;;
+ esac
fi
pathcomp="$pathcomp/"
-# $Id: Makefile.in,v 1.63 1999/09/01 22:35:53 tom Exp $
+# $Id: Makefile.in,v 1.66 2000/05/28 01:39:56 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# Copyright (c) 1998,1999,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"), #
./names.c \
./unctrl.c
-TEST_DEPS = @LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
+TEST_DEPS = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
TEST_ARGS = -L../lib -lncurses@DFT_ARG_SUFFIX@
TEST_LDFLAGS = @LD_MODEL@ $(TEST_ARGS) @LIBS@ @EXTRA_LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@
trace = $(srcdir)/trace
################################################################################
-all :: $(AUTO_SRC) ../lib $(LIBRARIES)
+all \
+libs :: $(AUTO_SRC) ../lib $(LIBRARIES)
sources: $(AUTO_SRC)
-# $Id: MKunctrl.awk,v 1.6 1998/06/06 18:18:07 tom Exp $
+# $Id: MKunctrl.awk,v 1.7 2000/04/01 19:49:26 tom Exp $
##############################################################################
# Copyright (c) 1998 Free Software Foundation, Inc. #
# #
printf "\"^\\%03o\"", ch + 64
} else if (ch == 127) {
printf "\"^?\""
+ } else if (ch >= 128 && ch < 160) {
+ printf "\"~\\%03o\"", ch - 64
} else {
printf "\"\\%03o\"", ch
gap = gap " "
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_addch.c,v 1.42 1999/07/24 20:01:05 tom Exp $")
+MODULE_ID("$Id: lib_addch.c,v 1.44 2000/05/20 21:13:11 tom Exp $")
/*
* Ugly microtweaking alert. Everything from here to end of module is
/* Return bit mask for clearing color pair number if given ch has color */
#define COLOR_MASK(ch) (~(chtype)((ch)&A_COLOR?A_COLOR:0))
-static inline chtype render_char(WINDOW *win, chtype ch)
+static inline chtype
+render_char(WINDOW *win, chtype ch)
/* compute a rendition of the given char correct for the current context */
{
- chtype a = win->_attrs;
-
- if (ch == ' ')
- {
- /* color in attrs has precedence over bkgd */
- ch = a | (win->_bkgd & COLOR_MASK(a));
- }
- else
- {
- /* color in attrs has precedence over bkgd */
- a |= (win->_bkgd & A_ATTRIBUTES) & COLOR_MASK(a);
- /* color in ch has precedence */
- ch |= (a & COLOR_MASK(ch));
- }
-
- TR(TRACE_VIRTPUT, ("bkg = %lx, attrs = %lx -> ch = %lx", win->_bkgd,
- win->_attrs, ch));
-
- return(ch);
+ chtype a = win->_attrs;
+
+ if (ch == ' ') {
+ /* color in attrs has precedence over bkgd */
+ ch = a | (win->_bkgd & COLOR_MASK(a));
+ } else {
+ /* color in attrs has precedence over bkgd */
+ a |= (win->_bkgd & A_ATTRIBUTES) & COLOR_MASK(a);
+ /* color in ch has precedence */
+ ch |= (a & COLOR_MASK(ch));
+ }
+
+ TR(TRACE_VIRTPUT, ("bkg = %lx, attrs = %lx -> ch = %lx", win->_bkgd,
+ win->_attrs, ch));
+
+ return (ch);
}
-chtype _nc_background(WINDOW *win)
+chtype
+_nc_background(WINDOW *win)
/* make render_char() visible while still allowing us to inline it below */
{
- return (win->_bkgd);
+ return (win->_bkgd);
}
-chtype _nc_render(WINDOW *win, chtype ch)
+chtype
+_nc_render(WINDOW *win, chtype ch)
/* make render_char() visible while still allowing us to inline it below */
{
- return render_char(win, ch);
+ return render_char(win, ch);
}
/* check if position is legal; if not, return error */
return(ERR); \
}
#else
-#define CHECK_POSITION(win, x, y) /* nothing */
+#define CHECK_POSITION(win, x, y) /* nothing */
#endif
-static inline
-int waddch_literal(WINDOW *win, chtype ch)
+static inline int
+waddch_literal(WINDOW *win, chtype ch)
{
- int x;
- struct ldat *line;
+ int x;
+ struct ldat *line;
+
+ x = win->_curx;
+
+ CHECK_POSITION(win, x, win->_cury);
+
+ /*
+ * If we're trying to add a character at the lower-right corner more
+ * than once, fail. (Moving the cursor will clear the flag).
+ */
+#if 0 /* Solaris 2.6 allows updating the corner more than once */
+ if (win->_flags & _WRAPPED) {
+ if (x >= win->_maxx)
+ return (ERR);
+ win->_flags &= ~_WRAPPED;
+ }
+#endif
+
+ ch = render_char(win, ch);
+ TR(TRACE_VIRTPUT, ("win attr = %s", _traceattr(win->_attrs)));
- x = win->_curx;
+ line = win->_line + win->_cury;
- CHECK_POSITION(win, x, win->_cury);
+ CHANGED_CELL(line, x);
+ line->text[x++] = ch;
+
+ TR(TRACE_VIRTPUT, ("(%d, %d) = %s", win->_cury, x, _tracechtype(ch)));
+ if (x > win->_maxx) {
/*
- * If we're trying to add a character at the lower-right corner more
- * than once, fail. (Moving the cursor will clear the flag).
+ * The _WRAPPED flag is useful only for telling an application that
+ * we've just 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). Unlike SVr4, we can
+ * successfully add a character to the lower-right corner (Solaris 2.6
+ * does this also, however).
*/
- if (win->_flags & _WRAPPED) {
- if (x >= win->_maxx)
- return (ERR);
- win->_flags &= ~_WRAPPED;
- }
-
- ch = render_char(win, ch);
- TR(TRACE_VIRTPUT, ("win attr = %s", _traceattr(win->_attrs)));
-
- line = win->_line+win->_cury;
-
- CHANGED_CELL(line,x);
-
- line->text[x++] = ch;
-
- TR(TRACE_VIRTPUT, ("(%d, %d) = %s", win->_cury, x, _tracechtype(ch)));
- if (x > win->_maxx) {
- /*
- * The _WRAPPED flag is useful only for telling an application
- * that we've just 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). Unlike SVr4, we can successfully
- * add a character to the lower-right corner.
- */
- win->_flags |= _WRAPPED;
- if (++win->_cury > win->_regbottom) {
- win->_cury = win->_regbottom;
- win->_curx = win->_maxx;
- if (!win->_scroll)
- return (ERR);
- scroll(win);
- }
- win->_curx = 0;
- return (OK);
+ win->_flags |= _WRAPPED;
+ if (++win->_cury > win->_regbottom) {
+ win->_cury = win->_regbottom;
+ win->_curx = win->_maxx;
+ if (!win->_scroll)
+ return (ERR);
+ scroll(win);
}
- win->_curx = x;
- return OK;
+ win->_curx = 0;
+ return (OK);
+ }
+ win->_curx = x;
+ return OK;
}
-static inline
-int waddch_nosync(WINDOW *win, const chtype ch)
+static inline int
+waddch_nosync(WINDOW *win, const chtype ch)
/* the workhorse function -- add a character to the given window */
{
- int x, y;
- int t = 0;
- const char *s = 0;
-
- if ((ch & A_ALTCHARSET)
- || ((t = TextOf(ch)) > 127)
- || ((s = unctrl(t))[1] == 0))
- return waddch_literal(win, ch);
-
- x = win->_curx;
- y = win->_cury;
-
- switch (t) {
- case '\t':
- x += (TABSIZE-(x%TABSIZE));
-
- /*
- * Space-fill the tab on the bottom line so that we'll get the
- * "correct" cursor position.
- */
- if ((! win->_scroll && (y == win->_regbottom))
- || (x <= win->_maxx)) {
- chtype blank = (' ' | AttrOf(ch));
- while (win->_curx < x) {
- if (waddch_literal(win, blank) == ERR)
- return(ERR);
- }
- break;
- } else {
- wclrtoeol(win);
- win->_flags |= _WRAPPED;
- if (++y > win->_regbottom) {
- x = win->_maxx;
- y--;
- if (win->_scroll) {
- scroll(win);
- x = 0;
- }
- } else {
- x = 0;
- }
- }
- break;
- case '\n':
- wclrtoeol(win);
- if (++y > win->_regbottom) {
- y--;
- if (win->_scroll)
- scroll(win);
- else
- return (ERR);
+ int x, y;
+ int t = 0;
+ const char *s = 0;
+
+ if ((ch & A_ALTCHARSET)
+ || ((t = TextOf(ch)) > 127)
+ || ((s = unctrl(t))[1] == 0))
+ return waddch_literal(win, ch);
+
+ x = win->_curx;
+ y = win->_cury;
+
+ switch (t) {
+ case '\t':
+ x += (TABSIZE - (x % TABSIZE));
+
+ /*
+ * Space-fill the tab on the bottom line so that we'll get the
+ * "correct" cursor position.
+ */
+ if ((!win->_scroll && (y == win->_regbottom))
+ || (x <= win->_maxx)) {
+ chtype blank = (' ' | AttrOf(ch));
+ while (win->_curx < x) {
+ if (waddch_literal(win, blank) == ERR)
+ return (ERR);
+ }
+ break;
+ } else {
+ wclrtoeol(win);
+ win->_flags |= _WRAPPED;
+ if (++y > win->_regbottom) {
+ x = win->_maxx;
+ y--;
+ if (win->_scroll) {
+ scroll(win);
+ x = 0;
}
- /* FALLTHRU */
- case '\r':
+ } else {
x = 0;
- win->_flags &= ~_WRAPPED;
- break;
- case '\b':
- if (x == 0)
- return (OK);
- x--;
- win->_flags &= ~_WRAPPED;
- break;
- default:
- while (*s)
- if (waddch_literal(win, (*s++)|AttrOf(ch)) == ERR)
- return ERR;
- return(OK);
+ }
}
-
- win->_curx = x;
- win->_cury = y;
-
- return(OK);
+ break;
+ case '\n':
+ wclrtoeol(win);
+ if (++y > win->_regbottom) {
+ y--;
+ if (win->_scroll)
+ scroll(win);
+ else
+ return (ERR);
+ }
+ /* FALLTHRU */
+ case '\r':
+ x = 0;
+ win->_flags &= ~_WRAPPED;
+ break;
+ case '\b':
+ if (x == 0)
+ return (OK);
+ x--;
+ win->_flags &= ~_WRAPPED;
+ break;
+ default:
+ while (*s)
+ if (waddch_literal(win, (*s++) | AttrOf(ch)) == ERR)
+ return ERR;
+ return (OK);
+ }
+
+ win->_curx = x;
+ win->_cury = y;
+
+ return (OK);
}
-int _nc_waddch_nosync(WINDOW *win, const chtype c)
+int
+_nc_waddch_nosync(WINDOW *win, const chtype c)
/* export copy of waddch_nosync() so the string-put functions can use it */
{
- return(waddch_nosync(win, c));
+ return (waddch_nosync(win, c));
}
/*
/* These are actual entry points */
-int waddch(WINDOW *win, const chtype ch)
+int
+waddch(WINDOW *win, const chtype ch)
{
- int code = ERR;
+ int code = ERR;
- TR(TRACE_VIRTPUT|TRACE_CCALLS, (T_CALLED("waddch(%p, %s)"), win, _tracechtype(ch)));
+ TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("waddch(%p, %s)"), win,
+ _tracechtype(ch)));
- if (win && (waddch_nosync(win, ch) != ERR))
- {
- _nc_synchook(win);
- code = OK;
- }
+ if (win && (waddch_nosync(win, ch) != ERR)) {
+ _nc_synchook(win);
+ code = OK;
+ }
- TR(TRACE_VIRTPUT|TRACE_CCALLS, (T_RETURN("%d"), code));
- return(code);
+ TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
+ return (code);
}
-int wechochar(WINDOW *win, const chtype ch)
+int
+wechochar(WINDOW *win, const chtype ch)
{
- int code = ERR;
-
- TR(TRACE_VIRTPUT|TRACE_CCALLS, (T_CALLED("wechochar(%p, %s)"), win, _tracechtype(ch)));
-
- if (win && (waddch_nosync(win, ch) != ERR))
- {
- bool save_immed = win->_immed;
- win->_immed = TRUE;
- _nc_synchook(win);
- win->_immed = save_immed;
- code = OK;
- }
- TR(TRACE_VIRTPUT|TRACE_CCALLS, (T_RETURN("%d"), code));
- return(code);
+ int code = ERR;
+
+ TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_CALLED("wechochar(%p, %s)"), win,
+ _tracechtype(ch)));
+
+ if (win && (waddch_nosync(win, ch) != ERR)) {
+ bool save_immed = win->_immed;
+ win->_immed = TRUE;
+ _nc_synchook(win);
+ win->_immed = save_immed;
+ code = OK;
+ }
+ TR(TRACE_VIRTPUT | TRACE_CCALLS, (T_RETURN("%d"), code));
+ return (code);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
-MODULE_ID("$Id: lib_addstr.c,v 1.16 1998/06/28 00:38:29 tom Exp $")
+MODULE_ID("$Id: lib_addstr.c,v 1.17 2000/04/29 21:15:55 tom Exp $")
int
waddnstr(WINDOW *win, const char *const astr, int n)
{
-unsigned const char *str = (unsigned const char *)astr;
-int code = ERR;
+ unsigned const char *str = (unsigned const char *) astr;
+ int code = ERR;
- T((T_CALLED("waddnstr(%p,%s,%d)"), win, _nc_visbuf(astr), n));
-
- if (win && (str != 0)) {
- T(("... current %s", _traceattr(win->_attrs)));
- TR(TRACE_VIRTPUT, ("str is not null"));
- code = OK;
- if (n < 0)
- n = (int)strlen(astr);
-
- while((n-- > 0) && (*str != '\0')) {
+ T((T_CALLED("waddnstr(%p,%s,%d)"), win, _nc_visbuf(astr), n));
+
+ if (win && (str != 0)) {
+ T(("... current %s", _traceattr(win->_attrs)));
+ TR(TRACE_VIRTPUT, ("str is not null"));
+ code = OK;
+ if (n < 0)
+ n = (int) strlen(astr);
+
+ while ((n-- > 0) && (*str != '\0')) {
TR(TRACE_VIRTPUT, ("*str = %#x", *str));
- if (_nc_waddch_nosync(win, (chtype)*str++) == ERR) {
- code = ERR;
- break;
+ if (_nc_waddch_nosync(win, (chtype) * str++) == ERR) {
+ code = ERR;
+ break;
}
- }
- _nc_synchook(win);
}
- TR(TRACE_VIRTPUT, ("waddnstr returns %d", code));
- returnCode(code);
+ _nc_synchook(win);
+ }
+ TR(TRACE_VIRTPUT, ("waddnstr returns %d", code));
+ returnCode(code);
}
int
-waddchnstr(WINDOW *win, const chtype *const astr, int n)
+waddchnstr(WINDOW *win, const chtype * const astr, int n)
{
-short y = win->_cury;
-short x = win->_curx;
-int code = OK;
-struct ldat *line;
+ NCURSES_SIZE_T y = win->_cury;
+ NCURSES_SIZE_T x = win->_curx;
+ int code = OK;
+ struct ldat *line;
- T((T_CALLED("waddchnstr(%p,%p,%d)"), win, astr, n));
+ T((T_CALLED("waddchnstr(%p,%p,%d)"), win, astr, n));
- if (!win)
- returnCode(ERR);
+ if (!win)
+ returnCode(ERR);
- if (n < 0) {
- const chtype *str;
- n = 0;
- for (str=(const chtype *)astr; *str!=0; str++)
- n++;
- }
- if (n > win->_maxx - x + 1)
- n = win->_maxx - x + 1;
- if (n == 0)
- returnCode(code);
+ if (n < 0) {
+ const chtype *str;
+ n = 0;
+ for (str = (const chtype *) astr; *str != 0; str++)
+ n++;
+ }
+ if (n > win->_maxx - x + 1)
+ n = win->_maxx - x + 1;
+ if (n == 0)
+ returnCode(code);
- line = &(win->_line[y]);
- memcpy(line->text+x, astr, n*sizeof(*astr));
- CHANGED_RANGE(line, x, x+n-1);
+ line = &(win->_line[y]);
+ memcpy(line->text + x, astr, n * sizeof(*astr));
+ CHANGED_RANGE(line, x, x + n - 1);
- _nc_synchook(win);
- returnCode(code);
+ _nc_synchook(win);
+ returnCode(code);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
** lib_box.c
**
#include <curses.priv.h>
-MODULE_ID("$Id: lib_box.c,v 1.10 1998/02/11 12:13:56 tom Exp $")
+MODULE_ID("$Id: lib_box.c,v 1.11 2000/04/29 21:12:37 tom Exp $")
-int wborder(WINDOW *win, 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)
{
-short i;
-short endx, endy;
+ NCURSES_SIZE_T i;
+ NCURSES_SIZE_T endx, endy;
T((T_CALLED("wborder(%p,%s,%s,%s,%s,%s,%s,%s,%s)"),
- win,
- _tracechtype2(1,ls),
- _tracechtype2(2,rs),
- _tracechtype2(3,ts),
- _tracechtype2(4,bs),
- _tracechtype2(5,tl),
- _tracechtype2(6,tr),
- _tracechtype2(7,bl),
- _tracechtype2(8,br)));
-
- if (!win)
- returnCode(ERR);
-
- if (ls == 0) ls = ACS_VLINE;
- if (rs == 0) rs = ACS_VLINE;
- if (ts == 0) ts = ACS_HLINE;
- if (bs == 0) bs = ACS_HLINE;
- if (tl == 0) tl = ACS_ULCORNER;
- if (tr == 0) tr = ACS_URCORNER;
- if (bl == 0) bl = ACS_LLCORNER;
- if (br == 0) br = ACS_LRCORNER;
-
- ls = _nc_render(win, ls);
- rs = _nc_render(win, rs);
- ts = _nc_render(win, ts);
- bs = _nc_render(win, bs);
- tl = _nc_render(win, tl);
- tr = _nc_render(win, tr);
- bl = _nc_render(win, bl);
- br = _nc_render(win, br);
-
- T(("using %#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx", ls, rs, ts, bs, tl, tr, bl, br));
-
- endx = win->_maxx;
- endy = win->_maxy;
-
- for (i = 0; i <= endx; i++) {
- win->_line[0].text[i] = ts;
- win->_line[endy].text[i] = bs;
- }
- win->_line[endy].firstchar = win->_line[0].firstchar = 0;
- win->_line[endy].lastchar = win->_line[0].lastchar = endx;
-
- for (i = 0; i <= endy; i++) {
- win->_line[i].text[0] = ls;
- win->_line[i].text[endx] = rs;
- win->_line[i].firstchar = 0;
- win->_line[i].lastchar = endx;
- }
- win->_line[0].text[0] = tl;
- win->_line[0].text[endx] = tr;
- win->_line[endy].text[0] = bl;
- win->_line[endy].text[endx] = br;
-
- _nc_synchook(win);
- returnCode(OK);
+ win,
+ _tracechtype2(1, ls),
+ _tracechtype2(2, rs),
+ _tracechtype2(3, ts),
+ _tracechtype2(4, bs),
+ _tracechtype2(5, tl),
+ _tracechtype2(6, tr),
+ _tracechtype2(7, bl),
+ _tracechtype2(8, br)));
+
+ if (!win)
+ returnCode(ERR);
+
+ if (ls == 0)
+ ls = ACS_VLINE;
+ if (rs == 0)
+ rs = ACS_VLINE;
+ if (ts == 0)
+ ts = ACS_HLINE;
+ if (bs == 0)
+ bs = ACS_HLINE;
+ if (tl == 0)
+ tl = ACS_ULCORNER;
+ if (tr == 0)
+ tr = ACS_URCORNER;
+ if (bl == 0)
+ bl = ACS_LLCORNER;
+ if (br == 0)
+ br = ACS_LRCORNER;
+
+ ls = _nc_render(win, ls);
+ rs = _nc_render(win, rs);
+ ts = _nc_render(win, ts);
+ bs = _nc_render(win, bs);
+ tl = _nc_render(win, tl);
+ tr = _nc_render(win, tr);
+ bl = _nc_render(win, bl);
+ br = _nc_render(win, br);
+
+ T(("using %#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx, %#lx",
+ ls, rs, ts, bs, tl, tr, bl, br));
+
+ endx = win->_maxx;
+ endy = win->_maxy;
+
+ for (i = 0; i <= endx; i++) {
+ win->_line[0].text[i] = ts;
+ win->_line[endy].text[i] = bs;
+ }
+ win->_line[endy].firstchar = win->_line[0].firstchar = 0;
+ win->_line[endy].lastchar = win->_line[0].lastchar = endx;
+
+ for (i = 0; i <= endy; i++) {
+ win->_line[i].text[0] = ls;
+ win->_line[i].text[endx] = rs;
+ win->_line[i].firstchar = 0;
+ win->_line[i].lastchar = endx;
+ }
+ win->_line[0].text[0] = tl;
+ win->_line[0].text[endx] = tr;
+ win->_line[endy].text[0] = bl;
+ win->_line[endy].text[endx] = br;
+
+ _nc_synchook(win);
+ returnCode(OK);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
-MODULE_ID("$Id: lib_clrbot.c,v 1.14 1998/06/28 00:36:26 tom Exp $")
+MODULE_ID("$Id: lib_clrbot.c,v 1.15 2000/04/29 21:15:26 tom Exp $")
-int wclrtobot(WINDOW *win)
+int
+wclrtobot(WINDOW *win)
{
-int code = ERR;
+ int code = ERR;
- T((T_CALLED("wclrtobot(%p)"), win));
+ T((T_CALLED("wclrtobot(%p)"), win));
- if (win) {
- short y;
- short startx = win->_curx;
- chtype blank = _nc_background(win);
+ if (win) {
+ NCURSES_SIZE_T y;
+ NCURSES_SIZE_T startx = win->_curx;
+ chtype blank = _nc_background(win);
- T(("clearing from y = %d to y = %d with maxx = %d", win->_cury, win->_maxy, win->_maxx));
+ T(("clearing from y = %d to y = %d with maxx = %d",
+ win->_cury, win->_maxy, win->_maxx));
- for (y = win->_cury; y <= win->_maxy; y++) {
- struct ldat *line = &(win->_line[y]);
- chtype *ptr = &(line->text[startx]);
- chtype *end = &(line->text[win->_maxx]);
+ for (y = win->_cury; y <= win->_maxy; y++) {
+ struct ldat *line = &(win->_line[y]);
+ chtype *ptr = &(line->text[startx]);
+ chtype *end = &(line->text[win->_maxx]);
- CHANGED_TO_EOL(line, startx, win->_maxx);
+ CHANGED_TO_EOL(line, startx, win->_maxx);
- while (ptr <= end)
- *ptr++ = blank;
+ while (ptr <= end)
+ *ptr++ = blank;
- startx = 0;
- }
- _nc_synchook(win);
- code = OK;
+ startx = 0;
}
- returnCode(code);
+ _nc_synchook(win);
+ code = OK;
+ }
+ returnCode(code);
}
-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
** lib_clreol.c
**
#include <curses.priv.h>
-MODULE_ID("$Id: lib_clreol.c,v 1.15 1998/06/28 00:32:20 tom Exp $")
+MODULE_ID("$Id: lib_clreol.c,v 1.16 2000/04/29 21:14:54 tom Exp $")
-int wclrtoeol(WINDOW *win)
+int
+wclrtoeol(WINDOW *win)
{
-int code = ERR;
+ int code = ERR;
- T((T_CALLED("wclrtoeol(%p)"), win));
+ T((T_CALLED("wclrtoeol(%p)"), win));
- if (win) {
- chtype blank;
- chtype *ptr, *end;
- struct ldat *line;
- short y = win->_cury;
- short x = win->_curx;
+ if (win) {
+ chtype blank;
+ chtype *ptr, *end;
+ struct ldat *line;
+ NCURSES_SIZE_T y = win->_cury;
+ NCURSES_SIZE_T x = win->_curx;
- /*
- * If we have just wrapped the cursor, the clear applies to the
- * new line, unless we are at the lower right corner.
- */
- if (win->_flags & _WRAPPED
- && y < win->_maxy) {
- win->_flags &= ~_WRAPPED;
- }
+ /*
+ * If we have just wrapped the cursor, the clear applies to the
+ * new line, unless we are at the lower right corner.
+ */
+ if (win->_flags & _WRAPPED
+ && y < win->_maxy) {
+ win->_flags &= ~_WRAPPED;
+ }
- /*
- * There's no point in clearing if we're not on a legal
- * position, either.
- */
- if (win->_flags & _WRAPPED
- || y > win->_maxy
- || x > win->_maxx)
- returnCode(ERR);
+ /*
+ * There's no point in clearing if we're not on a legal
+ * position, either.
+ */
+ if (win->_flags & _WRAPPED
+ || y > win->_maxy
+ || x > win->_maxx)
+ returnCode(ERR);
- blank = _nc_background(win);
- line = &win->_line[y];
- CHANGED_TO_EOL(line, x, win->_maxx);
+ blank = _nc_background(win);
+ line = &win->_line[y];
+ CHANGED_TO_EOL(line, x, win->_maxx);
- ptr = &(line->text[x]);
- end = &(line->text[win->_maxx]);
+ ptr = &(line->text[x]);
+ end = &(line->text[win->_maxx]);
- while (ptr <= end)
- *ptr++ = blank;
+ while (ptr <= end)
+ *ptr++ = blank;
- _nc_synchook(win);
- code = OK;
- }
- returnCode(code);
+ _nc_synchook(win);
+ code = OK;
+ }
+ returnCode(code);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
/* lib_color.c
*
* Handles color emulation of SYS V curses
- *
*/
#include <curses.priv.h>
#include <term.h>
+#include <tic.h>
-MODULE_ID("$Id: lib_color.c,v 1.36 1999/10/03 00:20:37 Philippe.Blain Exp $")
+MODULE_ID("$Id: lib_color.c,v 1.51 2000/05/20 20:09:22 tom Exp $")
/*
* These should be screen structure members. They need to be globals for
- * hystorical reasons. So we assign them in start_color() and also in
+ * historical reasons. So we assign them in start_color() and also in
* set_term()'s screen-switching logic.
*/
-int COLOR_PAIRS;
-int COLORS;
+int COLOR_PAIRS = 0;
+int COLORS = 0;
/*
* Given a RGB range of 0..1000, we'll normally set the individual values
*/
#define RGB_ON 680
#define RGB_OFF 0
-
+/* *INDENT-OFF* */
static const color_t cga_palette[] =
{
- /* R G B */
- {RGB_OFF, RGB_OFF, RGB_OFF}, /* COLOR_BLACK */
- {RGB_ON, RGB_OFF, RGB_OFF}, /* COLOR_RED */
- {RGB_OFF, RGB_ON, RGB_OFF}, /* COLOR_GREEN */
- {RGB_ON, RGB_ON, RGB_OFF}, /* COLOR_YELLOW */
- {RGB_OFF, RGB_OFF, RGB_ON}, /* COLOR_BLUE */
- {RGB_ON, RGB_OFF, RGB_ON}, /* COLOR_MAGENTA */
- {RGB_OFF, RGB_ON, RGB_ON}, /* COLOR_CYAN */
- {RGB_ON, RGB_ON, RGB_ON}, /* COLOR_WHITE */
+ /* R G B */
+ {RGB_OFF, RGB_OFF, RGB_OFF}, /* COLOR_BLACK */
+ {RGB_ON, RGB_OFF, RGB_OFF}, /* COLOR_RED */
+ {RGB_OFF, RGB_ON, RGB_OFF}, /* COLOR_GREEN */
+ {RGB_ON, RGB_ON, RGB_OFF}, /* COLOR_YELLOW */
+ {RGB_OFF, RGB_OFF, RGB_ON}, /* COLOR_BLUE */
+ {RGB_ON, RGB_OFF, RGB_ON}, /* COLOR_MAGENTA */
+ {RGB_OFF, RGB_ON, RGB_ON}, /* COLOR_CYAN */
+ {RGB_ON, RGB_ON, RGB_ON}, /* COLOR_WHITE */
};
+
static const color_t hls_palette[] =
{
- /* H L S */
- {0, 0, 0}, /* COLOR_BLACK */
- {120, 50, 100}, /* COLOR_RED */
- {240, 50, 100}, /* COLOR_GREEN */
- {180, 50, 100}, /* COLOR_YELLOW */
- {330, 50, 100}, /* COLOR_BLUE */
- {60, 50, 100}, /* COLOR_MAGENTA */
- {300, 50, 100}, /* COLOR_CYAN */
- {0, 50, 100}, /* COLOR_WHITE */
+ /* H L S */
+ { 0, 0, 0}, /* COLOR_BLACK */
+ { 120, 50, 100}, /* COLOR_RED */
+ { 240, 50, 100}, /* COLOR_GREEN */
+ { 180, 50, 100}, /* COLOR_YELLOW */
+ { 330, 50, 100}, /* COLOR_BLUE */
+ { 60, 50, 100}, /* COLOR_MAGENTA */
+ { 300, 50, 100}, /* COLOR_CYAN */
+ { 0, 50, 100}, /* COLOR_WHITE */
};
+/* *INDENT-ON* */
+
+#ifdef 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(void)
+{
+ return (SP != 0) ? SP->_default_fg : COLOR_WHITE;
+}
+
+static int
+default_bg(void)
+{
+ return SP != 0 ? SP->_default_bg : COLOR_BLACK;
+}
+#else
+#define default_fg() COLOR_WHITE
+#define default_bg() COLOR_BLACK
+#endif
/*
* 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)
+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};
+ {0, 4, 2, 6, 1, 5, 3, 7,
+ 8, 12, 10, 14, 9, 13, 11, 15};
c = table[c];
}
return c;
}
-static void set_background_color(int bg, int (*outc)(int))
+static void
+set_background_color(int bg, int (*outc) (int))
{
- if (set_a_background)
- {
- TPUTS_TRACE("set_a_background");
- tputs(tparm(set_a_background, bg), 1, outc);
- }
- else
- {
- TPUTS_TRACE("set_background");
- tputs(tparm(set_background, toggled_colors(bg)), 1, outc);
- }
+ if (set_a_background) {
+ TPUTS_TRACE("set_a_background");
+ tputs(tparm(set_a_background, bg), 1, outc);
+ } else {
+ TPUTS_TRACE("set_background");
+ tputs(tparm(set_background, toggled_colors(bg)), 1, outc);
+ }
}
-static void set_foreground_color(int fg, int (*outc)(int))
+static void
+set_foreground_color(int fg, int (*outc) (int))
{
- if (set_a_foreground)
- {
- TPUTS_TRACE("set_a_foreground");
- tputs(tparm(set_a_foreground, fg), 1, outc);
- }
- else
- {
- TPUTS_TRACE("set_foreground");
- tputs(tparm(set_foreground, toggled_colors(fg)), 1, outc);
- }
+ if (set_a_foreground) {
+ TPUTS_TRACE("set_a_foreground");
+ tputs(tparm(set_a_foreground, fg), 1, outc);
+ } else {
+ TPUTS_TRACE("set_foreground");
+ tputs(tparm(set_foreground, toggled_colors(fg)), 1, outc);
+ }
}
-static bool set_original_colors(void)
+static bool
+set_original_colors(void)
{
- if (orig_pair != 0) {
- TPUTS_TRACE("orig_pair");
- putp(orig_pair);
- return TRUE;
- }
- else if (orig_colors != NULL)
- {
- TPUTS_TRACE("orig_colors");
- putp(orig_colors);
- return TRUE;
- }
- return FALSE;
+ if (orig_pair != 0) {
+ TPUTS_TRACE("orig_pair");
+ putp(orig_pair);
+ return TRUE;
+ } else if (orig_colors != NULL) {
+ TPUTS_TRACE("orig_colors");
+ putp(orig_colors);
+ return TRUE;
+ }
+ return FALSE;
}
-int start_color(void)
+int
+start_color(void)
{
- T((T_CALLED("start_color()")));
+ int n;
+ const color_t *tp;
+
+ T((T_CALLED("start_color()")));
- if (set_original_colors() != TRUE)
- {
- set_foreground_color(COLOR_WHITE, _nc_outch);
- set_background_color(COLOR_BLACK, _nc_outch);
+ if (set_original_colors() != TRUE) {
+ set_foreground_color(default_fg(), _nc_outch);
+ set_background_color(default_bg(), _nc_outch);
+ }
+
+ if (VALID_NUMERIC(max_pairs))
+ COLOR_PAIRS = SP->_pair_count = max_pairs;
+ else
+ returnCode(ERR);
+ if ((SP->_color_pairs = typeCalloc(unsigned short, max_pairs)) == 0)
+ returnCode(ERR);
+ SP->_color_pairs[0] = PAIR_OF(default_fg(), default_bg());
+ if (VALID_NUMERIC(max_colors))
+ COLORS = SP->_color_count = max_colors;
+ else
+ returnCode(ERR);
+ SP->_coloron = 1;
+
+ if ((SP->_color_table = typeMalloc(color_t, COLORS)) == 0)
+ returnCode(ERR);
+ tp = (hue_lightness_saturation) ? hls_palette : cga_palette;
+ for (n = 0; n < COLORS; n++) {
+ if (n < 8) {
+ SP->_color_table[n] = tp[n];
+ } else {
+ SP->_color_table[n] = tp[n % 8];
+ if (hue_lightness_saturation) {
+ SP->_color_table[n].green = 100;
+ } else {
+ if (SP->_color_table[n].red)
+ SP->_color_table[n].red = 1000;
+ if (SP->_color_table[n].green)
+ SP->_color_table[n].green = 1000;
+ if (SP->_color_table[n].blue)
+ SP->_color_table[n].blue = 1000;
+ }
}
+ }
- if (max_pairs != -1)
- COLOR_PAIRS = SP->_pair_count = max_pairs;
- else
- returnCode(ERR);
- if ((SP->_color_pairs = typeCalloc(unsigned short, max_pairs)) == 0)
- returnCode(ERR);
- SP->_color_pairs[0] = PAIR_OF(COLOR_WHITE, COLOR_BLACK);
- if (max_colors != -1)
- COLORS = SP->_color_count = max_colors;
- else
- returnCode(ERR);
- SP->_coloron = 1;
-
- if ((SP->_color_table = typeMalloc(color_t, COLORS)) == 0)
- returnCode(ERR);
- if (hue_lightness_saturation)
- memcpy(SP->_color_table, hls_palette, sizeof(color_t) * COLORS);
- else
- memcpy(SP->_color_table, cga_palette, sizeof(color_t) * COLORS);
-
- T(("started color: COLORS = %d, COLOR_PAIRS = %d", COLORS, COLOR_PAIRS));
-
- returnCode(OK);
+ T(("started color: COLORS = %d, COLOR_PAIRS = %d", COLORS, COLOR_PAIRS));
+
+ returnCode(OK);
}
/* This function was originally written by Daniel Weaver <danw@znyx.com> */
-static void rgb2hls(short r, short g, short b, short *h, short *l, short *s)
+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;
+ 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 */
- {
+ 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);
+ 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
- if (g == max)
- t = 240 + ((b - r) * 60) / (max - min);
- else
- t = 360 + ((r - g) * 60) / (max - min);
+ t = 360 + ((r - g) * 60) / (max - min);
*h = t % 360;
}
* Extension (1997/1/18) - Allow negative f/b values to set default color
* values.
*/
-int init_pair(short pair, short f, short b)
+int
+init_pair(short pair, short f, short b)
{
- unsigned result;
-
- T((T_CALLED("init_pair(%d,%d,%d)"), pair, f, b));
-
- if ((pair < 1) || (pair >= COLOR_PAIRS))
- returnCode(ERR);
- if (SP->_default_color)
- {
- if (f < 0)
- f = C_MASK;
- if (b < 0)
- b = C_MASK;
- if (f >= COLORS && f != C_MASK)
- returnCode(ERR);
- if (b >= COLORS && b != C_MASK)
- returnCode(ERR);
- }
- else
+ unsigned result;
+
+ T((T_CALLED("init_pair(%d,%d,%d)"), pair, f, b));
+
+ if ((pair < 0) || (pair >= COLOR_PAIRS))
+ returnCode(ERR);
+#ifdef NCURSES_EXT_FUNCS
+ if (SP->_default_color) {
+ if (f < 0)
+ f = C_MASK;
+ if (b < 0)
+ b = C_MASK;
+ if (f >= COLORS && f != C_MASK)
+ returnCode(ERR);
+ if (b >= COLORS && b != C_MASK)
+ returnCode(ERR);
+ } else
+#endif
+ {
if ((f < 0) || (f >= COLORS)
- || (b < 0) || (b >= COLORS))
- 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 (SP->_color_pairs[pair] != 0
- && SP->_color_pairs[pair] != result) {
- int y, x;
- attr_t z = COLOR_PAIR(pair);
-
- for (y = 0; y <= curscr->_maxy; y++) {
- struct ldat *ptr = &(curscr->_line[y]);
- bool changed = FALSE;
- for (x = 0; x <= curscr->_maxx; x++) {
- if ((ptr->text[x] & A_COLOR) == z) {
- /* Set the old cell to zero to ensure it will be
- updated on the next doupdate() */
- ptr->text[x] = 0;
- CHANGED_CELL(ptr,x);
- changed = TRUE;
- }
+ || (b < 0) || (b >= COLORS)
+ || (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 (SP->_color_pairs[pair] != 0
+ && SP->_color_pairs[pair] != result) {
+ int y, x;
+ attr_t z = COLOR_PAIR(pair);
+
+ for (y = 0; y <= curscr->_maxy; y++) {
+ struct ldat *ptr = &(curscr->_line[y]);
+ bool changed = FALSE;
+ for (x = 0; x <= curscr->_maxx; x++) {
+ if ((ptr->text[x] & A_COLOR) == z) {
+ /* Set the old cell to zero to ensure it will be
+ updated on the next doupdate() */
+ ptr->text[x] = 0;
+ CHANGED_CELL(ptr, x);
+ changed = TRUE;
}
- if (changed)
- _nc_make_oldhash(y);
}
+ if (changed)
+ _nc_make_oldhash(y);
}
- SP->_color_pairs[pair] = result;
-
- if (initialize_pair)
- {
- const color_t *tp = hue_lightness_saturation ? hls_palette : cga_palette;
-
- T(("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));
-
- if (initialize_pair)
- {
- TPUTS_TRACE("initialize_pair");
- putp(tparm(initialize_pair,
- pair,
- tp[f].red, tp[f].green, tp[f].blue,
- tp[b].red, tp[b].green, tp[b].blue));
- }
+ }
+ SP->_color_pairs[pair] = result;
+ if ((int) (SP->_current_attr & A_COLOR) == COLOR_PAIR(pair))
+ SP->_current_attr |= A_COLOR; /* force attribute update */
+
+ if (initialize_pair) {
+ const color_t *tp = hue_lightness_saturation ? hls_palette : cga_palette;
+
+ T(("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));
+
+ if (initialize_pair) {
+ TPUTS_TRACE("initialize_pair");
+ putp(tparm(initialize_pair,
+ pair,
+ tp[f].red, tp[f].green, tp[f].blue,
+ tp[b].red, tp[b].green, tp[b].blue));
}
+ }
- returnCode(OK);
+ returnCode(OK);
}
-int init_color(short color, short r, short g, short b)
+int
+init_color(short color, short r, short g, short b)
{
- T((T_CALLED("init_color(%d,%d,%d,%d)"), color, r, g, b));
-
- if (initialize_color == NULL)
- returnCode(ERR);
-
- if (color < 0 || color >= COLORS)
- returnCode(ERR);
- if (r < 0 || r > 1000 || g < 0 || g > 1000 || b < 0 || b > 1000)
- returnCode(ERR);
-
- if (hue_lightness_saturation)
- 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;
- }
+ T((T_CALLED("init_color(%d,%d,%d,%d)"), color, r, g, b));
- if (initialize_color)
- {
- TPUTS_TRACE("initialize_color");
- putp(tparm(initialize_color, color, r, g, b));
- }
- returnCode(OK);
+ if (initialize_color == NULL)
+ returnCode(ERR);
+
+ if (color < 0 || color >= COLORS)
+ returnCode(ERR);
+ if (r < 0 || r > 1000 || g < 0 || g > 1000 || b < 0 || b > 1000)
+ returnCode(ERR);
+
+ if (hue_lightness_saturation)
+ 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;
+ }
+
+ if (initialize_color) {
+ TPUTS_TRACE("initialize_color");
+ putp(tparm(initialize_color, color, r, g, b));
+ }
+ returnCode(OK);
}
-bool can_change_color(void)
+bool
+can_change_color(void)
{
- T((T_CALLED("can_change_color()")));
- returnCode ((can_change != 0) ? TRUE : FALSE);
+ T((T_CALLED("can_change_color()")));
+ returnCode((can_change != 0) ? TRUE : FALSE);
}
-bool has_colors(void)
+bool
+has_colors(void)
{
- T((T_CALLED("has_colors()")));
- returnCode (((max_colors != -1) && (max_pairs != -1)
- && (((set_foreground != NULL)
- && (set_background != NULL))
- || ((set_a_foreground != NULL)
- && (set_a_background != NULL))
- || set_color_pair)) ? TRUE : FALSE);
+ T((T_CALLED("has_colors()")));
+ returnCode((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);
}
-int color_content(short color, short *r, short *g, short *b)
+int
+color_content(short color, short *r, short *g, short *b)
{
T((T_CALLED("color_content(%d,%p,%p,%p)"), color, r, g, b));
if (color < 0 || color >= COLORS)
returnCode(ERR);
- if (r) *r = SP->_color_table[color].red;
- if (g) *g = SP->_color_table[color].green;
- if (b) *b = SP->_color_table[color].blue;
+ if (r)
+ *r = SP->_color_table[color].red;
+ if (g)
+ *g = SP->_color_table[color].green;
+ if (b)
+ *b = SP->_color_table[color].blue;
returnCode(OK);
}
-int pair_content(short pair, short *f, short *b)
+int
+pair_content(short pair, short *f, short *b)
{
- T((T_CALLED("pair_content(%d,%p,%p)"), pair, f, b));
+ T((T_CALLED("pair_content(%d,%p,%p)"), pair, f, b));
- if ((pair < 0) || (pair >= COLOR_PAIRS))
- returnCode(ERR);
- if (f) *f = ((SP->_color_pairs[pair] >> C_SHIFT) & C_MASK);
- if (b) *b = (SP->_color_pairs[pair] & C_MASK);
+ if ((pair < 0) || (pair >= COLOR_PAIRS))
+ returnCode(ERR);
+ if (f)
+ *f = ((SP->_color_pairs[pair] >> C_SHIFT) & C_MASK);
+ if (b)
+ *b = (SP->_color_pairs[pair] & C_MASK);
- returnCode(OK);
+ returnCode(OK);
}
-void _nc_do_color(int pair, bool reverse, int (*outc)(int))
+void
+_nc_do_color(int old_pair, int pair, bool reverse, int (*outc) (int))
{
- short fg, bg;
+ NCURSES_COLOR_T fg = C_MASK, bg = C_MASK;
+ NCURSES_COLOR_T old_fg, old_bg;
- if (pair == 0)
- {
- if (orig_pair)
- {
- TPUTS_TRACE("orig_pair");
- tputs(orig_pair, 1, outc);
- }
- else if (set_color_pair)
- {
+ if (pair < 0 || pair >= COLOR_PAIRS) {
+ return;
+ } else if (pair != 0) {
+ if (set_color_pair) {
TPUTS_TRACE("set_color_pair");
tputs(tparm(set_color_pair, pair), 1, outc);
- }
- else
- {
- set_foreground_color(COLOR_WHITE, outc);
- set_background_color(COLOR_BLACK, outc);
+ return;
+ } else if (SP != 0) {
+ pair_content(pair, &fg, &bg);
}
}
- else
- {
- if (set_color_pair)
- {
- TPUTS_TRACE("set_color_pair");
- tputs(tparm(set_color_pair, pair), 1, outc);
+
+ if (old_pair >= 0 && SP != 0) {
+ pair_content(old_pair, &old_fg, &old_bg);
+ if ((fg == C_MASK && old_fg != C_MASK)
+ || (bg == C_MASK && old_bg != C_MASK)) {
+#ifdef 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 && old_bg == C_MASK && old_fg != C_MASK) {
+ tputs("\033[39m", 1, outc);
+ } else if (SP->_has_sgr_39_49 && old_fg == C_MASK && old_bg != C_MASK) {
+ tputs("\033[49m", 1, outc);
+ } else
+#endif
+ set_original_colors();
}
- else
- {
- pair_content(pair, &fg, &bg);
- if (reverse) {
- short xx = fg;
- fg = bg;
- bg = xx;
- }
+ } else {
+ set_original_colors();
+ if (old_pair < 0)
+ return;
+ }
- T(("setting colors: pair = %d, fg = %d, bg = %d", pair, fg, bg));
+#ifdef NCURSES_EXT_FUNCS
+ if (fg == C_MASK)
+ fg = default_fg();
+ if (bg == C_MASK)
+ bg = default_bg();
+#endif
+
+ if (reverse) {
+ NCURSES_COLOR_T xx = fg;
+ fg = bg;
+ bg = xx;
+ }
- if (fg == C_MASK || bg == C_MASK)
- {
- if (set_original_colors() != TRUE)
- {
- if (fg == C_MASK)
- set_foreground_color(COLOR_WHITE, outc);
- if (bg == C_MASK)
- set_background_color(COLOR_BLACK, outc);
- }
- }
- if (fg != C_MASK)
- {
- set_foreground_color(fg, outc);
- }
- if (bg != C_MASK)
- {
- set_background_color(bg, outc);
- }
- }
+ T(("setting colors: pair = %d, fg = %d, bg = %d", pair, fg, bg));
+
+ if (fg != C_MASK) {
+ set_foreground_color(fg, outc);
+ }
+ if (bg != C_MASK) {
+ set_background_color(bg, outc);
}
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1997 *
+ * Author: Thomas E. Dickey <dickey@clark.net> 1997,1999 *
****************************************************************************/
+
#include <curses.priv.h>
#include <term.h>
-MODULE_ID("$Id: lib_dft_fgbg.c,v 1.3 1998/02/11 12:13:54 tom Exp $")
+MODULE_ID("$Id: lib_dft_fgbg.c,v 1.13 2000/07/07 16:50:27 tom Exp $")
/*
* Modify the behavior of color-pair 0 so that the library doesn't assume that
- * it is black on white. This is an extension to XSI curses.
- *
- * Invoke this function after 'start_color()'.
+ * it is white on black. This is an extension to XSI curses.
*/
int
use_default_colors(void)
{
- T((T_CALLED("use_default_colors()")));
+ T((T_CALLED("use_default_colors()")));
+ returnCode(assume_default_colors(C_MASK, C_MASK));
+}
- if (!SP->_coloron)
- returnCode(ERR);
+/*
+ * Modify the behavior of color-pair 0 so that the library assumes that it
+ * is something specific, possibly not white on black.
+ */
+int
+assume_default_colors(int fg, int bg)
+{
+ T((T_CALLED("assume_default_colors(%d,%d)"), fg, bg));
- if (!orig_pair && !orig_colors)
- returnCode(ERR);
+ if (!orig_pair && !orig_colors)
+ returnCode(ERR);
- if (initialize_pair) /* don't know how to handle this */
- returnCode(ERR);
+ if (initialize_pair) /* don't know how to handle this */
+ returnCode(ERR);
- SP->_default_color = TRUE;
- SP->_color_pairs[0] = PAIR_OF(C_MASK, C_MASK);
- returnCode(OK);
+ SP->_default_color = (fg < 0 || fg == C_MASK) || (bg < 0 || bg == C_MASK);
+ SP->_has_sgr_39_49 = (tigetflag("AX") == TRUE);
+ SP->_default_fg = (fg >= 0) ? (fg & C_MASK) : C_MASK;
+ SP->_default_bg = (bg >= 0) ? (bg & C_MASK) : C_MASK;
+ if (SP->_color_pairs != 0)
+ init_pair(0, fg, bg);
+ returnCode(OK);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
extern int malloc_errfd; /* FIXME */
#endif
-MODULE_ID("$Id: lib_freeall.c,v 1.15 1999/10/22 21:40:10 tom Exp $")
+MODULE_ID("$Id: lib_freeall.c,v 1.16 1999/11/28 01:34:11 tom Exp $")
-static void free_slk(SLK *p)
+static void
+free_slk(SLK *p)
{
- if (p != 0) {
- FreeIfNeeded(p->ent);
- FreeIfNeeded(p->buffer);
- free(p);
- }
+ if (p != 0) {
+ FreeIfNeeded(p->ent);
+ FreeIfNeeded(p->buffer);
+ free(p);
+ }
}
-static void free_tries(struct tries *p)
+static void
+free_tries(struct tries *p)
{
- struct tries *q;
-
- while (p != 0) {
- q = p->sibling;
- if (p->child != 0)
- free_tries(p->child);
- free(p);
- p = q;
- }
+ struct tries *q;
+
+ while (p != 0) {
+ q = p->sibling;
+ if (p->child != 0)
+ free_tries(p->child);
+ free(p);
+ p = q;
+ }
}
/*
* Free all ncurses data. This is used for testing only (there's no practical
* use for it as an extension).
*/
-void _nc_freeall(void)
+void
+_nc_freeall(void)
{
- WINDOWLIST *p, *q;
+ WINDOWLIST *p, *q;
#if NO_LEAKS
- _nc_free_tparm();
+ _nc_free_tparm();
#endif
+ if (SP != 0) {
while (_nc_windows != 0) {
- /* Delete only windows that're not a parent */
- for (p = _nc_windows; p != 0; p = p->next) {
- bool found = FALSE;
-
- for (q = _nc_windows; q != 0; q = q->next) {
- if ((p != q)
- && (q->win->_flags & _SUBWIN)
- && (p->win == q->win->_parent)) {
- found = TRUE;
- break;
- }
- }
-
- if (!found) {
- delwin(p->win);
- break;
- }
+ /* Delete only windows that're not a parent */
+ for (p = _nc_windows; p != 0; p = p->next) {
+ bool found = FALSE;
+
+ for (q = _nc_windows; q != 0; q = q->next) {
+ if ((p != q)
+ && (q->win->_flags & _SUBWIN)
+ && (p->win == q->win->_parent)) {
+ found = TRUE;
+ break;
+ }
}
+
+ if (!found) {
+ delwin(p->win);
+ break;
+ }
+ }
}
- if (SP != 0) {
- free_tries (SP->_keytry);
- free_tries (SP->_key_ok);
- free_slk(SP->_slk);
- FreeIfNeeded(SP->_color_pairs);
- FreeIfNeeded(SP->_color_table);
+ free_tries(SP->_keytry);
+ free_tries(SP->_key_ok);
+ free_slk(SP->_slk);
+ FreeIfNeeded(SP->_color_pairs);
+ FreeIfNeeded(SP->_color_table);
#if !BROKEN_LINKER
- FreeAndNull(SP);
+ FreeAndNull(SP);
#endif
- }
-
- if (cur_term != 0) {
- _nc_free_termtype(&(cur_term->type));
- free(cur_term);
- }
+ }
+ if (cur_term != 0) {
+ _nc_free_termtype(&(cur_term->type));
+ free(cur_term);
+ }
#ifdef TRACE
- (void) _nc_trace_buf(-1, 0);
+ (void) _nc_trace_buf(-1, 0);
#endif
#if HAVE_LIBDBMALLOC
- malloc_dump(malloc_errfd);
+ malloc_dump(malloc_errfd);
#elif HAVE_LIBDMALLOC
#elif HAVE_PURIFY
- purify_all_inuse();
+ purify_all_inuse();
#endif
}
-void _nc_free_and_exit(int code)
+void
+_nc_free_and_exit(int code)
{
- _nc_freeall();
- exit(code);
+ _nc_freeall();
+ exit(code);
}
+
#else
-void _nc_freeall(void) { }
+void
+_nc_freeall(void)
+{
+}
#endif
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
-MODULE_ID("$Id: lib_getch.c,v 1.43 1999/03/08 02:35:10 tom Exp $")
+MODULE_ID("$Id: lib_getch.c,v 1.48 2000/07/08 11:21:51 tom Exp $")
#include <fifo_defs.h>
-int ESCDELAY = 1000; /* max interval betw. chars in funkeys, in millisecs */
+int ESCDELAY = 1000; /* max interval betw. chars in funkeys, in millisecs */
#ifdef USE_EMX_MOUSE
# include <sys/select.h>
static int
kbd_mouse_read(unsigned char *p)
{
-fd_set fdset;
-int nums = SP->_ifd+1;
-
- for (;;) {
- FD_ZERO(&fdset);
- FD_SET(SP->_checkfd, &fdset);
- if (SP->_mouse_fd >= 0) {
- FD_SET(SP->_mouse_fd, &fdset);
- if (SP->_mouse_fd > SP->_checkfd)
- nums = SP->_mouse_fd+1;
- }
- if (select(nums, &fdset, NULL, NULL, NULL) >= 0) {
- int n;
-
- if (FD_ISSET(SP->_mouse_fd, &fdset)) /* Prefer mouse */
- n = read(SP->_mouse_fd, p, 1);
- else
- n = read(SP->_ifd, p, 1);
- return n;
- }
- if (errno != EINTR)
- return -1;
+ fd_set fdset;
+ int nums = SP->_ifd + 1;
+
+ for (;;) {
+ FD_ZERO(&fdset);
+ FD_SET(SP->_ifd, &fdset);
+ if (SP->_checkfd >= 0) {
+ FD_SET(SP->_checkfd, &fdset);
+ if (SP->_checkfd >= nums)
+ nums = SP->_checkfd + 1;
}
+ if (SP->_mouse_fd >= 0) {
+ FD_SET(SP->_mouse_fd, &fdset);
+ if (SP->_mouse_fd >= nums)
+ nums = SP->_mouse_fd + 1;
+ }
+ if (select(nums, &fdset, NULL, NULL, NULL) >= 0) {
+ int n;
+
+ if (SP->_mouse_fd >= 0
+ && FD_ISSET(SP->_mouse_fd, &fdset)) { /* Prefer mouse */
+ n = read(SP->_mouse_fd, p, 1);
+ } else {
+ n = read(SP->_ifd, p, 1);
+ }
+ return n;
+ }
+ if (errno != EINTR) {
+ return -1;
+ }
+ }
}
-#endif /* USE_EMX_MOUSE */
+#endif /* USE_EMX_MOUSE */
-static inline int fifo_peek(void)
+static inline int
+fifo_peek(void)
{
- int ch = SP->_fifo[peek];
- T(("peeking at %d", peek));
+ int ch = SP->_fifo[peek];
+ T(("peeking at %d", peek));
- p_inc();
- return ch;
+ p_inc();
+ return ch;
}
-
-static inline int fifo_pull(void)
+static inline int
+fifo_pull(void)
{
-int ch;
- ch = SP->_fifo[head];
- T(("pulling %d from %d", ch, head));
+ int ch;
+ ch = SP->_fifo[head];
+ T(("pulling %d from %d", ch, head));
- if (peek == head)
- {
- h_inc();
- peek = head;
- }
- else
- h_inc();
+ if (peek == head) {
+ h_inc();
+ peek = head;
+ } else
+ h_inc();
#ifdef TRACE
- if (_nc_tracing & TRACE_IEVENT) _nc_fifo_dump();
+ if (_nc_tracing & TRACE_IEVENT)
+ _nc_fifo_dump();
#endif
- return ch;
+ return ch;
}
-static inline int fifo_push(void)
+static inline int
+fifo_push(void)
{
-int n;
-unsigned int ch;
+ int n;
+ unsigned int ch;
- if (tail == -1) return ERR;
+ if (tail == -1)
+ return ERR;
#ifdef HIDE_EINTR
-again:
- errno = 0;
+ again:
+ errno = 0;
#endif
#if USE_GPM_SUPPORT
- if ((SP->_mouse_fd >= 0)
- && (_nc_timed_wait(3, -1, (int *)0) & 2))
- {
- SP->_mouse_event(SP);
- ch = KEY_MOUSE;
- n = 1;
- } else
+ if ((SP->_mouse_fd >= 0)
+ && (_nc_timed_wait(3, -1, (int *) 0) & 2)) {
+ SP->_mouse_event(SP);
+ ch = KEY_MOUSE;
+ n = 1;
+ } else
#endif
- {
- unsigned char c2=0;
+ {
+ unsigned char c2 = 0;
#ifdef USE_EMX_MOUSE
- n = kbd_mouse_read(&c2);
+ n = kbd_mouse_read(&c2);
#else
- n = read(SP->_ifd, &c2, 1);
+ n = read(SP->_ifd, &c2, 1);
#endif
- ch = c2 & 0xff;
- }
+ ch = c2 & 0xff;
+ }
#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)
- goto again;
+ /*
+ * 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)
+ goto again;
#endif
- if ((n == -1) || (n == 0))
- {
- T(("read(%d,&ch,1)=%d, errno=%d", SP->_ifd, n, errno));
- return ERR;
- }
- T(("read %d characters", n));
-
- SP->_fifo[tail] = ch;
- SP->_fifohold = 0;
- if (head == -1)
- head = peek = tail;
- t_inc();
- T(("pushed %#x at %d", ch, tail));
+ if ((n == -1) || (n == 0)) {
+ T(("read(%d,&ch,1)=%d, errno=%d", SP->_ifd, n, errno));
+ ch = ERR;
+ }
+ T(("read %d characters", n));
+
+ SP->_fifo[tail] = ch;
+ SP->_fifohold = 0;
+ if (head == -1)
+ head = peek = tail;
+ t_inc();
+ T(("pushed %#x at %d", ch, tail));
#ifdef TRACE
- if (_nc_tracing & TRACE_IEVENT) _nc_fifo_dump();
+ if (_nc_tracing & TRACE_IEVENT)
+ _nc_fifo_dump();
#endif
- return ch;
+ return ch;
}
-static inline void fifo_clear(void)
+static inline void
+fifo_clear(void)
{
-int i;
- for (i = 0; i < FIFO_SIZE; i++)
- SP->_fifo[i] = 0;
- head = -1; tail = peek = 0;
+ int i;
+ for (i = 0; i < FIFO_SIZE; i++)
+ SP->_fifo[i] = 0;
+ head = -1;
+ tail = peek = 0;
}
static int kgetch(WINDOW *);
int
wgetch(WINDOW *win)
{
-int ch;
+ int ch;
- T((T_CALLED("wgetch(%p)"), win));
+ T((T_CALLED("wgetch(%p)"), win));
- if (!win)
- returnCode(ERR);
+ if (!win)
+ returnCode(ERR);
- if (cooked_key_in_fifo())
- {
- if (wgetch_should_refresh(win))
- wrefresh(win);
+ if (cooked_key_in_fifo()) {
+ if (wgetch_should_refresh(win))
+ wrefresh(win);
- ch = fifo_pull();
- T(("wgetch returning (pre-cooked): %#x = %s", ch, _trace_key(ch));)
- returnCode(ch);
- }
+ ch = fifo_pull();
+ T(("wgetch returning (pre-cooked): %#x = %s", ch, _trace_key(ch)));
+ returnCode(ch);
+ }
- /*
- * Handle cooked mode. Grab a string from the screen,
- * stuff its contents in the FIFO queue, and pop off
- * the first character to return it.
- */
- if (head == -1 && !SP->_raw && !SP->_cbreak)
- {
- char buf[MAXCOLUMNS], *sp;
+ /*
+ * Handle cooked mode. Grab a string from the screen,
+ * stuff its contents in the FIFO queue, and pop off
+ * the first character to return it.
+ */
+ if (head == -1 && !SP->_raw && !SP->_cbreak) {
+ char buf[MAXCOLUMNS], *sp;
- T(("filling queue in cooked mode"));
+ T(("filling queue in cooked mode"));
- wgetnstr(win, buf, MAXCOLUMNS);
+ wgetnstr(win, buf, MAXCOLUMNS);
- /* ungetch in reverse order */
- ungetch('\n');
- for (sp = buf+strlen(buf); sp>buf; sp--)
- ungetch(sp[-1]);
+ /* ungetch in reverse order */
+ ungetch('\n');
+ for (sp = buf + strlen(buf); sp > buf; sp--)
+ ungetch(sp[-1]);
- returnCode(fifo_pull());
- }
+ returnCode(fifo_pull());
+ }
- if (wgetch_should_refresh(win))
- wrefresh(win);
+ if (wgetch_should_refresh(win))
+ wrefresh(win);
- if (!win->_notimeout && (win->_delay >= 0 || SP->_cbreak > 1))
- {
- int delay;
+ if (!win->_notimeout && (win->_delay >= 0 || SP->_cbreak > 1)) {
+ int delay;
- T(("timed delay in wgetch()"));
- if (SP->_cbreak > 1)
- delay = (SP->_cbreak - 1) * 100;
- else
- delay = win->_delay;
+ T(("timed delay in wgetch()"));
+ if (SP->_cbreak > 1)
+ delay = (SP->_cbreak - 1) * 100;
+ else
+ delay = win->_delay;
- T(("delay is %d milliseconds", delay));
+ T(("delay is %d milliseconds", delay));
- if (head == -1) /* fifo is empty */
- if (!_nc_timed_wait(3, delay, (int *)0))
- returnCode(ERR);
- /* else go on to read data available */
- }
+ if (head == -1) /* fifo is empty */
+ if (!_nc_timed_wait(3, delay, (int *) 0))
+ returnCode(ERR);
+ /* else go on to read data available */
+ }
- if (win->_use_keypad)
- {
- /*
- * 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)
- * there's a detectable time lapse after one.
- *
- * Note: if the mouse code starts failing to compose
- * press/release events into clicks, you should probably
- * increase the wait with mouseinterval().
- */
- int runcount = 0;
-
- do {
- ch = kgetch(win);
- if (ch == KEY_MOUSE)
- {
- ++runcount;
- if (SP->_mouse_inline(SP))
- break;
- }
- } while
- (ch == KEY_MOUSE
- && (_nc_timed_wait(3, SP->_maxclick, (int *)0)
- || !SP->_mouse_parse(runcount)));
- if (runcount > 0 && ch != KEY_MOUSE)
- {
- /* mouse event sequence ended by keystroke, push it */
- ungetch(ch);
- ch = KEY_MOUSE;
- }
- } else {
- if (head == -1)
- fifo_push();
- ch = fifo_pull();
+ if (win->_use_keypad) {
+ /*
+ * 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)
+ * there's a detectable time lapse after one.
+ *
+ * Note: if the mouse code starts failing to compose
+ * press/release events into clicks, you should probably
+ * increase the wait with mouseinterval().
+ */
+ int runcount = 0;
+
+ do {
+ ch = kgetch(win);
+ if (ch == KEY_MOUSE) {
+ ++runcount;
+ if (SP->_mouse_inline(SP))
+ break;
+ }
+ } while
+ (ch == KEY_MOUSE
+ && (_nc_timed_wait(3, SP->_maxclick, (int *) 0)
+ || !SP->_mouse_parse(runcount)));
+ if (runcount > 0 && ch != KEY_MOUSE) {
+ /* mouse event sequence ended by keystroke, push it */
+ ungetch(ch);
+ ch = KEY_MOUSE;
}
+ } else {
+ if (head == -1)
+ fifo_push();
+ ch = fifo_pull();
+ }
- if (ch == ERR)
- {
+ if (ch == ERR) {
#if USE_SIZECHANGE
- if(SP->_sig_winch)
- {
- _nc_update_screensize();
- /* resizeterm can push KEY_RESIZE */
- if(cooked_key_in_fifo())
- {
- ch = fifo_pull();
- T(("wgetch returning (pre-cooked): %#x = %s", ch, _trace_key(ch));)
- returnCode(ch);
- }
+ if (SP->_sig_winch) {
+ _nc_update_screensize();
+ /* resizeterm can push KEY_RESIZE */
+ if (cooked_key_in_fifo()) {
+ ch = fifo_pull();
+ T(("wgetch returning (pre-cooked): %#x = %s", ch, _trace_key(ch)));
+ returnCode(ch);
}
-#endif
- T(("wgetch returning ERR"));
- returnCode(ERR);
}
-
- /*
- * Simulate ICRNL mode
- */
- if ((ch == '\r') && SP->_nl)
- ch = '\n';
-
- /* Strip 8th-bit if so desired. We do this only for characters that
- * are in the range 128-255, to provide compatibility with terminals
- * that display only 7-bit characters. Note that 'ch' may be a
- * function key at this point, so we mustn't strip _those_.
- */
- if ((ch < KEY_MIN) && (ch & 0x80))
- if (!SP->_use_meta)
- ch &= 0x7f;
-
- if (SP->_echo && ch < KEY_MIN && !(win->_flags & _ISPAD))
- wechochar(win, (chtype)ch);
-
- T(("wgetch returning : %#x = %s", ch, _trace_key(ch)));
-
- returnCode(ch);
+#endif
+ T(("wgetch returning ERR"));
+ returnCode(ERR);
+ }
+
+ /*
+ * If echo() is in effect, display the printable version of the
+ * key on the screen. Carriage return and backspace are treated
+ * specially by Solaris curses:
+ *
+ * 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.
+ * We echo before translating carriage return based on nonl(),
+ * since the visual result simply moves the cursor to column 0.
+ *
+ * Backspace is a different matter. Solaris curses does not
+ * translate it to KEY_BACKSPACE if kbs=^H. This does not depend
+ * on the stty modes, but appears to be a hardcoded special case.
+ * This is a difference from ncurses, which uses the terminfo entry.
+ * However, we provide the same visual result as Solaris, moving the
+ * cursor to the left.
+ */
+ if (SP->_echo && !(win->_flags & _ISPAD)) {
+ chtype backup = (ch == KEY_BACKSPACE) ? '\b' : ch;
+ if (backup < KEY_MIN)
+ wechochar(win, backup);
+ }
+
+ /*
+ * Simulate ICRNL mode
+ */
+ if ((ch == '\r') && SP->_nl)
+ ch = '\n';
+
+ /* Strip 8th-bit if so desired. We do this only for characters that
+ * are in the range 128-255, to provide compatibility with terminals
+ * that display only 7-bit characters. Note that 'ch' may be a
+ * function key at this point, so we mustn't strip _those_.
+ */
+ if ((ch < KEY_MIN) && (ch & 0x80))
+ if (!SP->_use_meta)
+ ch &= 0x7f;
+
+ T(("wgetch returning : %#x = %s", ch, _trace_key(ch)));
+
+ returnCode(ch);
}
-
/*
** int
** kgetch()
static int
kgetch(WINDOW *win GCC_UNUSED)
{
-struct tries *ptr;
-int ch = 0;
-int timeleft = ESCDELAY;
-
- TR(TRACE_IEVENT, ("kgetch(%p) called", win));
-
- ptr = SP->_keytry;
-
- for(;;)
- {
- if (!raw_key_in_fifo())
- {
- if(fifo_push() == ERR)
- {
- peek = head; /* the keys stay uninterpreted */
- return ERR;
- }
- }
- ch = fifo_peek();
- if (ch >= KEY_MIN)
- {
- peek = head;
- /* assume the key is the last in fifo */
- t_dec(); /* remove the key */
- return ch;
- }
-
- TR(TRACE_IEVENT, ("ch: %s", _trace_key((unsigned char)ch)));
- while ((ptr != NULL) && (ptr->ch != (unsigned char)ch))
- ptr = ptr->sibling;
+ struct tries *ptr;
+ int ch = 0;
+ int timeleft = ESCDELAY;
+
+ TR(TRACE_IEVENT, ("kgetch(%p) called", win));
+
+ ptr = SP->_keytry;
+
+ for (;;) {
+ if (!raw_key_in_fifo()) {
+ if (fifo_push() == ERR) {
+ peek = head; /* the keys stay uninterpreted */
+ return ERR;
+ }
+ }
+ ch = fifo_peek();
+ if (ch >= KEY_MIN) {
+ peek = head;
+ /* assume the key is the last in fifo */
+ t_dec(); /* remove the key */
+ return ch;
+ }
+
+ TR(TRACE_IEVENT, ("ch: %s", _trace_key((unsigned char) ch)));
+ while ((ptr != NULL) && (ptr->ch != (unsigned char) ch))
+ ptr = ptr->sibling;
#ifdef TRACE
- if (ptr == NULL)
- {TR(TRACE_IEVENT, ("ptr is null"));}
- else
- TR(TRACE_IEVENT, ("ptr=%p, ch=%d, value=%d",
- ptr, ptr->ch, ptr->value));
+ if (ptr == NULL) {
+ TR(TRACE_IEVENT, ("ptr is null"));
+ } else
+ TR(TRACE_IEVENT, ("ptr=%p, ch=%d, value=%d",
+ ptr, ptr->ch, ptr->value));
#endif /* TRACE */
- if (ptr == NULL)
- break;
-
- if (ptr->value != 0) { /* sequence terminated */
- TR(TRACE_IEVENT, ("end of sequence"));
- if (peek == tail)
- fifo_clear();
- else
- head = peek;
- return(ptr->value);
- }
-
- ptr = ptr->child;
-
- if (!raw_key_in_fifo())
- {
- TR(TRACE_IEVENT, ("waiting for rest of sequence"));
- if (!_nc_timed_wait(3, timeleft, &timeleft)) {
- TR(TRACE_IEVENT, ("ran out of time"));
- break;
- }
- }
+ if (ptr == NULL)
+ break;
+
+ if (ptr->value != 0) { /* sequence terminated */
+ TR(TRACE_IEVENT, ("end of sequence"));
+ if (peek == tail)
+ fifo_clear();
+ else
+ head = peek;
+ return (ptr->value);
}
- ch = fifo_pull();
- peek = head;
- return ch;
+
+ ptr = ptr->child;
+
+ if (!raw_key_in_fifo()) {
+ TR(TRACE_IEVENT, ("waiting for rest of sequence"));
+ if (!_nc_timed_wait(3, timeleft, &timeleft)) {
+ TR(TRACE_IEVENT, ("ran out of time"));
+ break;
+ }
+ }
+ }
+ ch = fifo_pull();
+ peek = head;
+ return ch;
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
** lib_hline.c
**
#include <curses.priv.h>
-MODULE_ID("$Id: lib_hline.c,v 1.4 1998/06/28 00:11:01 tom Exp $")
+MODULE_ID("$Id: lib_hline.c,v 1.6 2000/07/04 14:08:09 Philippe.Blain Exp $")
-int whline(WINDOW *win, chtype ch, int n)
+int
+whline(WINDOW *win, chtype ch, int n)
{
-int code = ERR;
-short start;
-short end;
+ int code = ERR;
+ NCURSES_SIZE_T start;
+ NCURSES_SIZE_T end;
- T((T_CALLED("whline(%p,%s,%d)"), win, _tracechtype(ch), n));
+ T((T_CALLED("whline(%p,%s,%d)"), win, _tracechtype(ch), n));
- if (win) {
- struct ldat *line = &(win->_line[win->_cury]);
+ if (win) {
+ struct ldat *line = &(win->_line[win->_cury]);
- start = win->_curx;
- end = start + n - 1;
- if (end > win->_maxx)
- end = win->_maxx;
+ start = win->_curx;
+ end = start + n - 1;
+ if (end > win->_maxx)
+ end = win->_maxx;
- CHANGED_RANGE(line, start, end);
+ CHANGED_RANGE(line, start, end);
- if (ch == 0)
- ch = ACS_HLINE;
- ch = _nc_render(win, ch);
+ if (ch == 0)
+ ch = ACS_HLINE;
+ ch = _nc_render(win, ch);
- while ( end >= start) {
- line->text[end] = ch;
- end--;
- }
- code = OK;
+ while (end >= start) {
+ line->text[end] = ch;
+ end--;
}
- returnCode(code);
+
+ _nc_synchook(win);
+ code = OK;
+ }
+ returnCode(code);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
** lib_insstr.c
**
#include <curses.priv.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_insstr.c,v 1.13 1999/03/14 00:27:21 tom Exp $")
+MODULE_ID("$Id: lib_insstr.c,v 1.14 2000/04/29 21:16:41 tom Exp $")
-int winsnstr(WINDOW *win, const char *s, int n)
+int
+winsnstr(WINDOW *win, const char *s, int n)
{
-int code = ERR;
-short oy;
-short ox ;
-const unsigned char *str = (const unsigned char *)s;
-const unsigned char *cp;
+ 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)"), win, _nc_visbuf(s), n));
+ T((T_CALLED("winsnstr(%p,%s,%d)"), win, _nc_visbuf(s), n));
- if (win && str) {
- oy = win->_cury; ox = win->_curx;
- for (cp = str; *cp && (n <= 0 || (cp - str) < n); cp++) {
+ if (win && str) {
+ oy = win->_cury;
+ ox = win->_curx;
+ for (cp = str; *cp && (n <= 0 || (cp - str) < n); cp++) {
if (*cp == '\n' || *cp == '\r' || *cp == '\t' || *cp == '\b')
- _nc_waddch_nosync(win, (chtype)(*cp));
+ _nc_waddch_nosync(win, (chtype) (*cp));
else if (is7bits(*cp) && iscntrl(*cp)) {
- winsch(win, ' ' + (chtype)(*cp));
- winsch(win, '^');
- win->_curx += 2;
+ winsch(win, ' ' + (chtype) (*cp));
+ winsch(win, '^');
+ win->_curx += 2;
} else {
- winsch(win, (chtype)(*cp));
- win->_curx++;
+ winsch(win, (chtype) (*cp));
+ win->_curx++;
}
if (win->_curx > win->_maxx)
- win->_curx = win->_maxx;
- }
-
- win->_curx = ox;
- win->_cury = oy;
- _nc_synchook(win);
- code = OK;
+ win->_curx = win->_maxx;
}
- returnCode(code);
+
+ win->_curx = ox;
+ win->_cury = oy;
+ _nc_synchook(win);
+ code = OK;
+ }
+ returnCode(code);
}
/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
*/
#ifdef __EMX__
-# include "io.h"
-# include "fcntl.h"
+# include <io.h>
# define INCL_DOS
# define INCL_VIO
# define INCL_KBD
#endif
#endif
-MODULE_ID("$Id: lib_mouse.c,v 1.45 1999/10/22 21:39:02 tom Exp $")
+MODULE_ID("$Id: lib_mouse.c,v 1.52 2000/06/29 23:02:26 tom Exp $")
#define MY_TRACE TRACE_ICALLS|TRACE_IEVENT
#define INVALID_EVENT -1
-static int mousetype;
+static int mousetype;
#define M_XTERM -1 /* use xterm's mouse tracking? */
#define M_NONE 0 /* no mouse device */
#define M_GPM 1 /* use GPM */
#endif
#endif
-static mmask_t eventmask; /* current event mask */
+static mmask_t eventmask; /* current event mask */
static bool _nc_mouse_parse(int);
static void _nc_mouse_resume(SCREEN *);
* wgetch() may refer to the size and call _nc_mouse_parse() before circular
* list overflow.
*/
-static MEVENT events[EV_MAX]; /* hold the last mouse event seen */
-static MEVENT *eventp = events; /* next free slot in event queue */
+static MEVENT events[EV_MAX]; /* hold the last mouse event seen */
+static MEVENT *eventp = events; /* next free slot in event queue */
#define NEXT(ep) ((ep == events + EV_MAX - 1) ? events : ep + 1)
#define PREV(ep) ((ep == events) ? events + EV_MAX - 1 : ep - 1)
#ifdef TRACE
-static void _trace_slot(const char *tag)
+static void
+_trace_slot(const char *tag)
{
- MEVENT *ep;
+ MEVENT *ep;
- _tracef(tag);
+ _tracef(tag);
- for (ep = events; ep < events + EV_MAX; ep++)
- _tracef("mouse event queue slot %ld = %s",
- (long) (ep - events),
- _tracemouse(ep));
+ for (ep = events; ep < events + EV_MAX; ep++)
+ _tracef("mouse event queue slot %ld = %s",
+ (long) (ep - events),
+ _tracemouse(ep));
}
#endif
static int mouse_wfd;
static int mouse_thread;
static int mouse_activated;
-static char mouse_buttons[] = { 0, 1, 3, 2};
-
+static char mouse_buttons[] =
+{0, 1, 3, 2};
# define M_FD(sp) sp->_mouse_fd
unsigned long ignore;
/* open the handle for the mouse */
- if (MouOpen(NULL,&hmou) == 0) {
+ if (MouOpen(NULL, &hmou) == 0) {
- if (MouSetEventMask(&mask,hmou) == 0
- && MouDrawPtr(hmou) == 0) {
+ if (MouSetEventMask(&mask, hmou) == 0
+ && MouDrawPtr(hmou) == 0) {
for (;;) {
/* sit and wait on the event queue */
- if (MouReadEventQue(&mouev,&fWait,hmou))
- break;
+ if (MouReadEventQue(&mouev, &fWait, hmou))
+ break;
if (!mouse_activated)
goto finish;
/*
* OS/2 numbers a 3-button mouse inconsistently from other
* platforms:
- * 1 = left
- * 2 = right
- * 3 = middle.
+ * 1 = left
+ * 2 = right
+ * 3 = middle.
*/
if ((mouev.fs ^ oldstate) & MOUSE_BN1_DOWN)
- write_event(mouev.fs & MOUSE_BN1_DOWN,
- mouse_buttons[1], mouev.col, mouev.row);
+ write_event(mouev.fs & MOUSE_BN1_DOWN,
+ mouse_buttons[1], mouev.col, mouev.row);
if ((mouev.fs ^ oldstate) & MOUSE_BN2_DOWN)
- write_event(mouev.fs & MOUSE_BN2_DOWN,
- mouse_buttons[3], mouev.col, mouev.row);
+ write_event(mouev.fs & MOUSE_BN2_DOWN,
+ mouse_buttons[3], mouev.col, mouev.row);
if ((mouev.fs ^ oldstate) & MOUSE_BN3_DOWN)
- write_event(mouev.fs & MOUSE_BN3_DOWN,
- mouse_buttons[2], mouev.col, mouev.row);
+ write_event(mouev.fs & MOUSE_BN3_DOWN,
+ mouse_buttons[2], mouev.col, mouev.row);
finish:
oldstate = mouev.fs;
DosWrite(2, errmess, strlen(errmess), &ignore);
MouClose(hmou);
}
- DosExit(EXIT_THREAD, 0L );
+ DosExit(EXIT_THREAD, 0L);
}
static void
server_state(const int state)
-{ /* It would be nice to implement pointer-off and stop looping... */
+{ /* It would be nice to implement pointer-off and stop looping... */
mouse_activated = state;
}
static int initialized;
-static void _nc_mouse_init(void)
-/* initialize the mouse */
+static void
+initialize_mousetype(void)
{
- int i;
-
- if (initialized) {
- return;
- }
- initialized = TRUE;
-
- TR(MY_TRACE, ("_nc_mouse_init() called"));
-
- for (i = 0; i < EV_MAX; i++)
- events[i].id = INVALID_EVENT;
-
- /* we know how to recognize mouse events under xterm */
- if (key_mouse != 0
- && getenv("DISPLAY") != 0)
- mousetype = M_XTERM;
+ static const char *xterm_kmous = "\033[M";
+ /* Try gpm first, because gpm may be configured to run in xterm */
#if USE_GPM_SUPPORT
- else if (!strncmp(cur_term->type.term_names, "linux", 5))
- {
- /* GPM: initialize connection to gpm server */
- gpm_connect.eventMask = GPM_DOWN|GPM_UP;
- gpm_connect.defaultMask = ~(gpm_connect.eventMask|GPM_HARD);
- gpm_connect.minMod = 0;
- gpm_connect.maxMod = ~((1<<KG_SHIFT)|(1<<KG_SHIFTL)|(1<<KG_SHIFTR));
- if (Gpm_Open (&gpm_connect, 0) >= 0) { /* returns the file-descriptor */
- mousetype = M_GPM;
- SP->_mouse_fd = gpm_fd;
- }
+ /* GPM: initialize connection to gpm server */
+ gpm_connect.eventMask = GPM_DOWN | GPM_UP;
+ gpm_connect.defaultMask = ~(gpm_connect.eventMask | GPM_HARD);
+ gpm_connect.minMod = 0;
+ gpm_connect.maxMod = ~((1 << KG_SHIFT) | (1 << KG_SHIFTL) | (1 << KG_SHIFTR));
+ if (Gpm_Open(&gpm_connect, 0) >= 0) { /* returns the file-descriptor */
+ mousetype = M_GPM;
+ SP->_mouse_fd = gpm_fd;
+ return;
}
#endif
/* OS/2 VIO */
#ifdef USE_EMX_MOUSE
- if (!mouse_thread && mousetype != M_XTERM && key_mouse) {
+ if (!mouse_thread
+ && strstr(cur_term->type.term_names, "xterm") == 0
+ && key_mouse) {
int handles[2];
if (pipe(handles) < 0) {
perror("mouse pipe error");
setmode(handles[0], O_BINARY);
setmode(handles[1], O_BINARY);
/* Do not use CRT functions, we may single-threaded. */
- rc = DosCreateThread((unsigned long*)&mouse_thread, mouse_server, 0, 0, 8192);
- if (rc)
+ rc = DosCreateThread((unsigned long *) &mouse_thread,
+ mouse_server, 0, 0, 8192);
+ if (rc) {
printf("mouse thread error %d=%#x", rc, rc);
- else
+ } else {
mousetype = M_XTERM;
+ return;
+ }
}
}
#endif
- T(("_nc_mouse_init() set mousetype to %d", mousetype));
+ /* we know how to recognize mouse events under "xterm" */
+ if (key_mouse != 0) {
+ if (!strcmp(key_mouse, xterm_kmous)) {
+ mousetype = M_XTERM;
+ return;
+ }
+ } else if (strstr(cur_term->type.term_names, "xterm") != 0) {
+ (void) _nc_add_to_try(&(SP->_keytry), xterm_kmous, KEY_MOUSE);
+ mousetype = M_XTERM;
+ return;
+ }
+}
+
+static void
+_nc_mouse_init(void)
+/* initialize the mouse */
+{
+ int i;
+
+ if (!initialized) {
+ initialized = TRUE;
+
+ TR(MY_TRACE, ("_nc_mouse_init() called"));
+
+ for (i = 0; i < EV_MAX; i++)
+ events[i].id = INVALID_EVENT;
+
+ initialize_mousetype();
+
+ T(("_nc_mouse_init() set mousetype to %d", mousetype));
+ }
}
-static bool _nc_mouse_event(SCREEN *sp GCC_UNUSED)
+static bool
+_nc_mouse_event(SCREEN * sp GCC_UNUSED)
/* query to see if there is a pending mouse event */
{
#if USE_GPM_SUPPORT
Gpm_Event ev;
if (gpm_fd >= 0
- && _nc_timed_wait(2, 0, (int *)0)
- && Gpm_GetEvent(&ev) == 1)
- {
+ && (_nc_timed_wait(3, 0, (int *) 0) & 2) != 0
+ && Gpm_GetEvent(&ev) == 1) {
eventp->id = 0; /* there's only one mouse... */
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;
+ 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;
+ 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;
#endif
/* xterm: never have to query, mouse events are in the keyboard stream */
- return(FALSE); /* no event waiting */
+ return (FALSE); /* no event waiting */
}
-static bool _nc_mouse_inline(SCREEN *sp)
+static bool
+_nc_mouse_inline(SCREEN * sp)
/* mouse report received in the keyboard stream -- parse its info */
{
TR(MY_TRACE, ("_nc_mouse_inline() called"));
- if (mousetype == M_XTERM)
- {
- unsigned char kbuf[4];
- MEVENT *prev;
- size_t grabbed;
- int res;
+ if (mousetype == M_XTERM) {
+ unsigned char kbuf[4];
+ MEVENT *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
* single clist item. It always does under Linux but often
* fails to under Solaris.
*/
- for (grabbed = 0; grabbed < 3; grabbed += res)
- {
+ for (grabbed = 0; grabbed < 3; grabbed += res) {
- /* For VIO mouse we add extra bit 64 to disambiguate button-up. */
+ /* For VIO mouse we add extra bit 64 to disambiguate button-up. */
#ifdef USE_EMX_MOUSE
- res = read( M_FD(sp) >= 0 ? M_FD(sp) : sp->_ifd, &kbuf, 3);
+ res = read(M_FD(sp) >= 0 ? M_FD(sp) : sp->_ifd, &kbuf, 3);
#else
- res = read(sp->_ifd, kbuf + grabbed, 3-grabbed);
+ res = read(sp->_ifd, kbuf + grabbed, 3 - grabbed);
#endif
- if (res == -1)
- break;
+ if (res == -1)
+ break;
}
kbuf[3] = '\0';
- TR(TRACE_IEVENT, ("_nc_mouse_inline sees the following xterm data: '%s'", kbuf));
+ TR(TRACE_IEVENT,
+ ("_nc_mouse_inline sees the following xterm data: '%s'", kbuf));
eventp->id = 0; /* there's only one mouse... */
/* processing code goes here */
eventp->bstate = 0;
- switch (kbuf[0] & 0x3)
- {
+ switch (kbuf[0] & 0x3) {
case 0x0:
eventp->bstate = BUTTON1_PRESSED;
#ifdef USE_EMX_MOUSE
*/
eventp->bstate =
(BUTTON1_RELEASED |
- BUTTON2_RELEASED |
- BUTTON3_RELEASED);
+ BUTTON2_RELEASED |
+ BUTTON3_RELEASED);
/*
* ...however, because there are no kinds of mouse events under
* xterm that can intervene between press and release, we can
*/
prev = PREV(eventp);
if (!(prev->bstate & BUTTON1_PRESSED))
- eventp->bstate &=~ BUTTON1_RELEASED;
+ eventp->bstate &= ~BUTTON1_RELEASED;
if (!(prev->bstate & BUTTON2_PRESSED))
- eventp->bstate &=~ BUTTON2_RELEASED;
+ eventp->bstate &= ~BUTTON2_RELEASED;
if (!(prev->bstate & BUTTON3_PRESSED))
- eventp->bstate &=~ BUTTON3_RELEASED;
+ eventp->bstate &= ~BUTTON3_RELEASED;
break;
}
eventp->x = (kbuf[1] - ' ') - 1;
eventp->y = (kbuf[2] - ' ') - 1;
- TR(MY_TRACE, ("_nc_mouse_inline: primitive mouse-event %s has slot %ld",
+ TR(MY_TRACE,
+ ("_nc_mouse_inline: primitive mouse-event %s has slot %ld",
_tracemouse(eventp),
(long) (eventp - events)));
/* bump the next-free pointer into the circular list */
eventp = NEXT(eventp);
-#if 0 /* this return would be needed for QNX's mods to lib_getch.c */
- return(TRUE);
+#if 0 /* this return would be needed for QNX's mods to lib_getch.c */
+ return (TRUE);
#endif
}
- return(FALSE);
+ return (FALSE);
}
-static void mouse_activate(bool on)
+static void
+mouse_activate(bool on)
{
if (!on && !initialized)
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_event = _nc_mouse_event;
SP->_mouse_inline = _nc_mouse_inline;
- SP->_mouse_parse = _nc_mouse_parse;
+ SP->_mouse_parse = _nc_mouse_parse;
SP->_mouse_resume = _nc_mouse_resume;
- SP->_mouse_wrap = _nc_mouse_wrap;
+ SP->_mouse_wrap = _nc_mouse_wrap;
} else {
*
**************************************************************************/
-static bool _nc_mouse_parse(int runcount)
+static bool
+_nc_mouse_parse(int runcount)
/* parse a run of atomic mouse events into a gesture */
{
- MEVENT *ep, *runp, *next, *prev = PREV(eventp);
- int n;
- bool merge;
+ MEVENT *ep, *runp, *next, *prev = PREV(eventp);
+ int n;
+ bool merge;
TR(MY_TRACE, ("_nc_mouse_parse(%d) called", runcount));
* 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",
- _tracemouse(prev),
- (long) (prev - events)));
+ if (runcount == 1) {
+ TR(MY_TRACE,
+ ("_nc_mouse_parse: returning simple mouse event %s at slot %ld",
+ _tracemouse(prev),
+ (long) (prev - events)));
return (prev->id >= 0)
- ? ((prev->bstate & eventmask) ? TRUE : FALSE)
- : FALSE;
+ ? ((prev->bstate & eventmask) ? TRUE : FALSE)
+ : FALSE;
}
/* find the start of the run */
}
#ifdef TRACE
- if (_nc_tracing & TRACE_IEVENT)
- {
+ if (_nc_tracing & TRACE_IEVENT) {
_trace_slot("before mouse press/release merge:");
_tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
(long) (runp - events),
- (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+ (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
runcount);
}
#endif /* TRACE */
/* first pass; merge press/release pairs */
do {
merge = FALSE;
- for (ep = runp; next = NEXT(ep), next != eventp; ep = next)
- {
+ for (ep = runp; next = NEXT(ep), next != eventp; ep = next) {
if (ep->x == next->x && ep->y == next->y
- && (ep->bstate & (BUTTON1_PRESSED|BUTTON2_PRESSED|BUTTON3_PRESSED))
+ && (ep->bstate & (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED))
&& (!(ep->bstate & BUTTON1_PRESSED)
== !(next->bstate & BUTTON1_RELEASED))
&& (!(ep->bstate & BUTTON2_PRESSED)
== !(next->bstate & BUTTON2_RELEASED))
&& (!(ep->bstate & BUTTON3_PRESSED)
== !(next->bstate & BUTTON3_RELEASED))
- )
- {
+ ) {
if ((eventmask & BUTTON1_CLICKED)
- && (ep->bstate & BUTTON1_PRESSED))
- {
- ep->bstate &=~ BUTTON1_PRESSED;
+ && (ep->bstate & BUTTON1_PRESSED)) {
+ ep->bstate &= ~BUTTON1_PRESSED;
ep->bstate |= BUTTON1_CLICKED;
merge = TRUE;
}
if ((eventmask & BUTTON2_CLICKED)
- && (ep->bstate & BUTTON2_PRESSED))
- {
- ep->bstate &=~ BUTTON2_PRESSED;
+ && (ep->bstate & BUTTON2_PRESSED)) {
+ ep->bstate &= ~BUTTON2_PRESSED;
ep->bstate |= BUTTON2_CLICKED;
merge = TRUE;
}
if ((eventmask & BUTTON3_CLICKED)
- && (ep->bstate & BUTTON3_PRESSED))
- {
- ep->bstate &=~ BUTTON3_PRESSED;
+ && (ep->bstate & BUTTON3_PRESSED)) {
+ ep->bstate &= ~BUTTON3_PRESSED;
ep->bstate |= BUTTON3_CLICKED;
merge = TRUE;
}
(merge);
#ifdef TRACE
- if (_nc_tracing & TRACE_IEVENT)
- {
+ if (_nc_tracing & TRACE_IEVENT) {
_trace_slot("before mouse click merge:");
_tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
(long) (runp - events),
- (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+ (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
runcount);
}
#endif /* TRACE */
* which would get us into portability trouble.
*/
do {
- MEVENT *follower;
+ MEVENT *follower;
merge = FALSE;
for (ep = runp; next = NEXT(ep), next != eventp; ep = next)
- if (ep->id != INVALID_EVENT)
- {
+ if (ep->id != INVALID_EVENT) {
if (next->id != INVALID_EVENT)
continue;
follower = NEXT(next);
if ((ep->bstate &
(BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))
&& (follower->bstate &
- (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED)))
- {
+ (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))) {
if ((eventmask & BUTTON1_DOUBLE_CLICKED)
- && (follower->bstate & BUTTON1_CLICKED))
- {
- follower->bstate &=~ BUTTON1_CLICKED;
+ && (follower->bstate & BUTTON1_CLICKED)) {
+ follower->bstate &= ~BUTTON1_CLICKED;
follower->bstate |= BUTTON1_DOUBLE_CLICKED;
merge = TRUE;
}
if ((eventmask & BUTTON2_DOUBLE_CLICKED)
- && (follower->bstate & BUTTON2_CLICKED))
- {
- follower->bstate &=~ BUTTON2_CLICKED;
+ && (follower->bstate & BUTTON2_CLICKED)) {
+ follower->bstate &= ~BUTTON2_CLICKED;
follower->bstate |= BUTTON2_DOUBLE_CLICKED;
merge = TRUE;
}
if ((eventmask & BUTTON3_DOUBLE_CLICKED)
- && (follower->bstate & BUTTON3_CLICKED))
- {
- follower->bstate &=~ BUTTON3_CLICKED;
+ && (follower->bstate & BUTTON3_CLICKED)) {
+ follower->bstate &= ~BUTTON3_CLICKED;
follower->bstate |= BUTTON3_DOUBLE_CLICKED;
merge = TRUE;
}
/* merge double-click events forward */
if ((ep->bstate &
(BUTTON1_DOUBLE_CLICKED
- | BUTTON2_DOUBLE_CLICKED
- | BUTTON3_DOUBLE_CLICKED))
+ | BUTTON2_DOUBLE_CLICKED
+ | BUTTON3_DOUBLE_CLICKED))
&& (follower->bstate &
- (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED)))
- {
+ (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED))) {
if ((eventmask & BUTTON1_TRIPLE_CLICKED)
- && (follower->bstate & BUTTON1_CLICKED))
- {
- follower->bstate &=~ BUTTON1_CLICKED;
+ && (follower->bstate & BUTTON1_CLICKED)) {
+ follower->bstate &= ~BUTTON1_CLICKED;
follower->bstate |= BUTTON1_TRIPLE_CLICKED;
merge = TRUE;
}
if ((eventmask & BUTTON2_TRIPLE_CLICKED)
- && (follower->bstate & BUTTON2_CLICKED))
- {
- follower->bstate &=~ BUTTON2_CLICKED;
+ && (follower->bstate & BUTTON2_CLICKED)) {
+ follower->bstate &= ~BUTTON2_CLICKED;
follower->bstate |= BUTTON2_TRIPLE_CLICKED;
merge = TRUE;
}
if ((eventmask & BUTTON3_TRIPLE_CLICKED)
- && (follower->bstate & BUTTON3_CLICKED))
- {
- follower->bstate &=~ BUTTON3_CLICKED;
+ && (follower->bstate & BUTTON3_CLICKED)) {
+ follower->bstate &= ~BUTTON3_CLICKED;
follower->bstate |= BUTTON3_TRIPLE_CLICKED;
merge = TRUE;
}
(merge);
#ifdef TRACE
- if (_nc_tracing & TRACE_IEVENT)
- {
+ if (_nc_tracing & TRACE_IEVENT) {
_trace_slot("before mouse event queue compaction:");
_tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
(long) (runp - events),
- (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+ (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
runcount);
}
#endif /* TRACE */
if (prev->id == INVALID_EVENT || !(prev->bstate & eventmask)) {
eventp = prev;
}
-
#ifdef TRACE
- if (_nc_tracing & TRACE_IEVENT)
- {
+ if (_nc_tracing & TRACE_IEVENT) {
_trace_slot("after mouse event queue compaction:");
_tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d",
(long) (runp - events),
- (long) ((eventp - events) + (EV_MAX-1)) % EV_MAX,
+ (long) ((eventp - events) + (EV_MAX - 1)) % EV_MAX,
runcount);
}
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",
- _tracemouse(ep),
- (long) (ep - events)));
+ TR(MY_TRACE,
+ ("_nc_mouse_parse: returning composite mouse event %s at slot %ld",
+ _tracemouse(ep),
+ (long) (ep - events)));
#endif /* TRACE */
/* after all this, do we have a valid event? */
- return(PREV(eventp)->id != INVALID_EVENT);
+ return (PREV(eventp)->id != INVALID_EVENT);
}
-static void _nc_mouse_wrap(SCREEN *sp GCC_UNUSED)
+static void
+_nc_mouse_wrap(SCREEN * sp GCC_UNUSED)
/* release mouse -- called by endwin() before shellout/exit */
{
TR(MY_TRACE, ("_nc_mouse_wrap() called"));
break;
#if USE_GPM_SUPPORT
/* GPM: pass all mouse events to next client */
- case M_GPM:
- break;
+ case M_GPM:
+ break;
#endif
}
}
-static void _nc_mouse_resume(SCREEN *sp GCC_UNUSED)
+static void
+_nc_mouse_resume(SCREEN * sp GCC_UNUSED)
/* re-connect to mouse -- called by doupdate() after shellout */
{
TR(MY_TRACE, ("_nc_mouse_resume() called"));
*
**************************************************************************/
-int getmouse(MEVENT *aevent)
+int
+getmouse(MEVENT * aevent)
/* grab a copy of the current mouse event */
{
T((T_CALLED("getmouse(%p)"), aevent));
- if (aevent && (mousetype != M_NONE))
- {
+ if (aevent && (mousetype != M_NONE)) {
/* compute the current-event pointer */
- MEVENT *prev = PREV(eventp);
+ MEVENT *prev = PREV(eventp);
/* copy the event we find there */
*aevent = *prev;
TR(TRACE_IEVENT, ("getmouse: returning event %s from slot %ld",
- _tracemouse(prev),
- (long) (prev - events)));
+ _tracemouse(prev),
+ (long) (prev - events)));
prev->id = INVALID_EVENT; /* so the queue slot becomes free */
returnCode(OK);
returnCode(ERR);
}
-int ungetmouse(MEVENT *aevent)
+int
+ungetmouse(MEVENT * aevent)
/* enqueue a synthesized mouse event to be seen by the next wgetch() */
{
/* stick the given event in the next-free slot */
return ungetch(KEY_MOUSE);
}
-mmask_t mousemask(mmask_t newmask, mmask_t *oldmask)
+mmask_t
+mousemask(mmask_t newmask, mmask_t * oldmask)
/* set the mouse event mask */
{
mmask_t result = 0;
returnCode(0);
_nc_mouse_init();
- if ( mousetype != M_NONE )
- {
+ if (mousetype != M_NONE) {
eventmask = newmask &
(BUTTON_ALT | BUTTON_CTRL | BUTTON_SHIFT
- | BUTTON1_PRESSED | BUTTON1_RELEASED | BUTTON1_CLICKED
- | BUTTON1_DOUBLE_CLICKED | BUTTON1_TRIPLE_CLICKED
- | BUTTON2_PRESSED | BUTTON2_RELEASED | BUTTON2_CLICKED
- | BUTTON2_DOUBLE_CLICKED | BUTTON2_TRIPLE_CLICKED
- | BUTTON3_PRESSED | BUTTON3_RELEASED | BUTTON3_CLICKED
- | BUTTON3_DOUBLE_CLICKED | BUTTON3_TRIPLE_CLICKED);
+ | BUTTON1_PRESSED | BUTTON1_RELEASED | BUTTON1_CLICKED
+ | BUTTON1_DOUBLE_CLICKED | BUTTON1_TRIPLE_CLICKED
+ | BUTTON2_PRESSED | BUTTON2_RELEASED | BUTTON2_CLICKED
+ | BUTTON2_DOUBLE_CLICKED | BUTTON2_TRIPLE_CLICKED
+ | BUTTON3_PRESSED | BUTTON3_RELEASED | BUTTON3_CLICKED
+ | BUTTON3_DOUBLE_CLICKED | BUTTON3_TRIPLE_CLICKED);
mouse_activate(eventmask != 0);
returnCode(result);
}
-bool wenclose(const WINDOW *win, int y, int x)
+bool
+wenclose(const WINDOW *win, int y, int x)
/* check to see if given window encloses given screen location */
{
- if (win)
- {
+ if (win) {
y -= win->_yoffset;
return ((win->_begy <= y &&
- win->_begx <= x &&
- (win->_begx + win->_maxx) >= x &&
- (win->_begy + win->_maxy) >= y) ? TRUE : FALSE);
+ win->_begx <= x &&
+ (win->_begx + win->_maxx) >= x &&
+ (win->_begy + win->_maxy) >= y) ? TRUE : FALSE);
}
return FALSE;
}
-int mouseinterval(int maxclick)
+int
+mouseinterval(int maxclick)
/* set the maximum mouse interval within which to recognize a click */
{
int oldval;
oldval = DEFAULT_MAXCLICK;
}
- return(oldval);
+ return (oldval);
}
/* This may be used by other routines to ask for the existence of mouse
support */
-int _nc_has_mouse(void) {
- return (mousetype==M_NONE ? 0:1);
+int
+_nc_has_mouse(void)
+{
+ return (mousetype == M_NONE ? 0 : 1);
}
-bool wmouse_trafo(const WINDOW* win, int* pY, int* pX, bool to_screen)
+bool
+wmouse_trafo(const WINDOW *win, int *pY, int *pX, bool to_screen)
{
- bool result = FALSE;
-
- 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;
+ bool result = FALSE;
+
+ 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;
+ if (result) {
+ *pX = x;
+ *pY = y;
}
}
- return(result);
+ return (result);
}
/* lib_mouse.c ends here */
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
** lib_move.c
**
#include <curses.priv.h>
-MODULE_ID("$Id: lib_move.c,v 1.8 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_move.c,v 1.9 2000/04/29 21:11:19 tom Exp $")
int
wmove(WINDOW *win, int y, int x)
{
- T((T_CALLED("wmove(%p,%d,%d)"), win, y, x));
-
- if (win &&
- x >= 0 && x <= win->_maxx &&
- y >= 0 && y <= win->_maxy)
- {
- win->_curx = (short)x;
- win->_cury = (short)y;
-
- win->_flags &= ~_WRAPPED;
- win->_flags |= _HASMOVED;
- returnCode(OK);
- } else
- returnCode(ERR);
+ T((T_CALLED("wmove(%p,%d,%d)"), win, y, x));
+
+ if (win &&
+ x >= 0 && x <= win->_maxx &&
+ y >= 0 && y <= win->_maxy) {
+ win->_curx = (NCURSES_SIZE_T) x;
+ win->_cury = (NCURSES_SIZE_T) y;
+
+ win->_flags &= ~_WRAPPED;
+ win->_flags |= _HASMOVED;
+ returnCode(OK);
+ } else
+ returnCode(ERR);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
** lib_newterm.c
**
#define _POSIX_SOURCE
#endif
-#include <term.h> /* clear_screen, cup & friends, cur_term */
+#include <term.h> /* clear_screen, cup & friends, cur_term */
+#include <tic.h>
-MODULE_ID("$Id: lib_newterm.c,v 1.41 1999/07/24 20:07:48 tom Exp $")
+MODULE_ID("$Id: lib_newterm.c,v 1.46 2000/07/01 22:26:22 tom Exp $")
-#ifndef ONLCR /* Allows compilation under the QNX 4.2 OS */
+#ifndef ONLCR /* Allows compilation under the QNX 4.2 OS */
#define ONLCR 0
#endif
* The newterm function also initializes terminal settings, and since initscr
* is supposed to behave as if it calls newterm, we do it here.
*/
-static inline int _nc_initscr(void)
+static inline int
+_nc_initscr(void)
{
- /* for extended XPG4 conformance requires cbreak() at this point */
- /* (SVr4 curses does this anyway) */
- cbreak();
+ /* for extended XPG4 conformance requires cbreak() at this point */
+ /* (SVr4 curses does this anyway) */
+ cbreak();
#ifdef TERMIOS
- cur_term->Nttyb.c_lflag &= ~(ECHO|ECHONL);
- cur_term->Nttyb.c_iflag &= ~(ICRNL|INLCR|IGNCR);
- cur_term->Nttyb.c_oflag &= ~(ONLCR);
+ cur_term->Nttyb.c_lflag &= ~(ECHO | ECHONL);
+ cur_term->Nttyb.c_iflag &= ~(ICRNL | INLCR | IGNCR);
+ cur_term->Nttyb.c_oflag &= ~(ONLCR);
#else
- cur_term->Nttyb.sg_flags &= ~(ECHO|CRMOD);
+ cur_term->Nttyb.sg_flags &= ~(ECHO | CRMOD);
#endif
- return _nc_set_tty_mode(&cur_term->Nttyb);
+ return _nc_set_tty_mode(&cur_term->Nttyb);
}
/*
*/
static int filter_mode = FALSE;
-void filter(void)
+void
+filter(void)
{
filter_mode = TRUE;
}
-SCREEN * newterm(NCURSES_CONST char *name, FILE *ofp, FILE *ifp)
+SCREEN *
+newterm(NCURSES_CONST char *name, FILE * ofp, FILE * ifp)
{
-int errret;
-int slk_format = _nc_slk_format;
-SCREEN* current;
+ int errret;
+ int slk_format = _nc_slk_format;
+ SCREEN *current;
#ifdef TRACE
-int t = _nc_getenv_num("NCURSES_TRACE");
+ int t = _nc_getenv_num("NCURSES_TRACE");
- if (t >= 0)
- trace(t);
+ if (t >= 0)
+ trace(t);
#endif
- T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp));
+ T((T_CALLED("newterm(\"%s\",%p,%p)"), name, ofp, ifp));
- /* this loads the capability entry, then sets LINES and COLS */
- if (setupterm(name, fileno(ofp), &errret) == ERR)
- return 0;
+ /* this loads the capability entry, then sets LINES and COLS */
+ if (setupterm(name, fileno(ofp), &errret) == ERR)
+ return 0;
- /* implement filter mode */
- if (filter_mode) {
- LINES = 1;
+ /* implement filter mode */
+ if (filter_mode) {
+ LINES = 1;
- if (init_tabs != -1)
- TABSIZE = init_tabs;
- else
- TABSIZE = 8;
+ if (VALID_NUMERIC(init_tabs))
+ TABSIZE = init_tabs;
+ else
+ TABSIZE = 8;
- T(("TABSIZE = %d", TABSIZE));
+ T(("TABSIZE = %d", TABSIZE));
- clear_screen = 0;
- cursor_down = parm_down_cursor = 0;
- cursor_address = 0;
- cursor_up = parm_up_cursor = 0;
- row_address = 0;
+ 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;
- }
+ cursor_home = carriage_return;
+ }
- /* If we must simulate soft labels, grab off the line to be used.
- We assume that we must simulate, if it is none of the standard
- formats (4-4 or 3-2-3) for which there may be some hardware
- support. */
- if (num_labels <= 0 || !SLK_STDFMT(slk_format))
- if (slk_format)
- {
- if (ERR==_nc_ripoffline(-SLK_LINES(slk_format),
- _nc_slk_initialize))
- return 0;
- }
- /* this actually allocates the screen structure, and saves the
- * original terminal settings.
- */
- current = SP;
- _nc_set_screen(0);
- if (_nc_setupscreen(LINES, COLS, ofp) == ERR) {
- _nc_set_screen(current);
+ /* If we must simulate soft labels, grab off the line to be used.
+ We assume that we must simulate, if it is none of the standard
+ formats (4-4 or 3-2-3) for which there may be some hardware
+ support. */
+ if (num_labels <= 0 || !SLK_STDFMT(slk_format))
+ if (slk_format) {
+ if (ERR == _nc_ripoffline(-SLK_LINES(slk_format),
+ _nc_slk_initialize))
return 0;
}
-
- /* if the terminal type has real soft labels, set those up */
- if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
- _nc_slk_initialize(stdscr, COLS);
-
- SP->_ifd = fileno(ifp);
- SP->_checkfd = fileno(ifp);
- typeahead(fileno(ifp));
+ /* this actually allocates the screen structure, and saves the
+ * original terminal settings.
+ */
+ current = SP;
+ _nc_set_screen(0);
+ if (_nc_setupscreen(LINES, COLS, ofp) == ERR) {
+ _nc_set_screen(current);
+ return 0;
+ }
+
+ /* if the terminal type has real soft labels, set those up */
+ if (slk_format && num_labels > 0 && SLK_STDFMT(slk_format))
+ _nc_slk_initialize(stdscr, COLS);
+
+ SP->_ifd = fileno(ifp);
+ SP->_checkfd = fileno(ifp);
+ typeahead(fileno(ifp));
#ifdef TERMIOS
- SP->_use_meta = ((cur_term->Ottyb.c_cflag & CSIZE) == CS8 &&
- !(cur_term->Ottyb.c_iflag & ISTRIP));
+ SP->_use_meta = ((cur_term->Ottyb.c_cflag & CSIZE) == CS8 &&
+ !(cur_term->Ottyb.c_iflag & ISTRIP));
#else
- SP->_use_meta = FALSE;
+ SP->_use_meta = FALSE;
#endif
- SP->_endwin = FALSE;
-
- /* 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)));
-
- baudrate(); /* sets a field in the SP structure */
-
- SP->_keytry = 0;
-
- /*
- * 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->_endwin = FALSE;
+
+ /* 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)));
+
+ baudrate(); /* sets a field in the SP structure */
+
+ SP->_keytry = 0;
+
+ /*
+ * 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.
+ */
#define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode))
- SP->_use_rmso = SGR0_TEST(exit_standout_mode);
- SP->_use_rmul = SGR0_TEST(exit_underline_mode);
+ SP->_use_rmso = SGR0_TEST(exit_standout_mode);
+ SP->_use_rmul = SGR0_TEST(exit_underline_mode);
+
+#ifdef USE_WIDEC_SUPPORT
+ /*
+ * XFree86 xterm can be configured to support UTF-8 based on environment
+ * variable settings.
+ */
+ {
+ char *s;
+ if (((s = getenv("LC_ALL")) != 0
+ || (s = getenv("LC_CTYPE")) != 0
+ || (s = getenv("LANG")) != 0)
+ && strstr(s, "UTF-8") != 0) {
+ SP->_outch = _nc_utf8_outch;
+ }
+ }
+#endif
- /* compute movement costs so we can do better move optimization */
- _nc_mvcur_init();
+ /* compute movement costs so we can do better move optimization */
+ _nc_mvcur_init();
- /* initialize terminal to a sane state */
- _nc_screen_init();
+ /* initialize terminal to a sane state */
+ _nc_screen_init();
- /* Initialize the terminal line settings. */
- _nc_initscr();
+ /* Initialize the terminal line settings. */
+ _nc_initscr();
- _nc_signal_handler(TRUE);
+ _nc_signal_handler(TRUE);
- T((T_RETURN("%p"), SP));
- return(SP);
+ T((T_RETURN("%p"), SP));
+ return (SP);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
** lib_newwin.c
**
#include <curses.priv.h>
-MODULE_ID("$Id: lib_newwin.c,v 1.21 1999/10/03 00:42:03 tom Exp $")
+MODULE_ID("$Id: lib_newwin.c,v 1.24 2000/04/29 18:49:51 tom Exp $")
-void _nc_freewin(WINDOW *win)
+void
+_nc_freewin(WINDOW *win)
{
-WINDOWLIST *p, *q;
-int i;
-
- if (win != 0) {
- for (p = _nc_windows, q = 0; p != 0; q = p, p = p->next) {
- if (p->win == win) {
- if (q == 0)
- _nc_windows = p->next;
- else
- q->next = p->next;
- free(p);
-
- if (! (win->_flags & _SUBWIN)) {
- for (i = 0; i <= win->_maxy && win->_line[i].text; i++)
- FreeIfNeeded(win->_line[i].text);
- }
- free(win->_line);
- free(win);
-
- if (win == curscr) curscr = 0;
- if (win == stdscr) stdscr = 0;
- if (win == newscr) newscr = 0;
-
- T(("...deleted win=%p", win));
- break;
- }
+ WINDOWLIST *p, *q;
+ int i;
+
+ if (win != 0) {
+ for (p = _nc_windows, q = 0; p != 0; q = p, p = p->next) {
+ if (p->win == win) {
+ if (q == 0)
+ _nc_windows = p->next;
+ else
+ q->next = p->next;
+ free(p);
+
+ if (!(win->_flags & _SUBWIN)) {
+ for (i = 0; i <= win->_maxy; i++)
+ FreeIfNeeded(win->_line[i].text);
}
+ free(win->_line);
+ free(win);
+
+ if (win == curscr)
+ curscr = 0;
+ if (win == stdscr)
+ stdscr = 0;
+ if (win == newscr)
+ newscr = 0;
+
+ T(("...deleted win=%p", win));
+ break;
+ }
}
+ }
}
-WINDOW * newwin(int num_lines, int num_columns, int begy, int begx)
+WINDOW *
+newwin(int num_lines, int num_columns, int begy, int begx)
{
-WINDOW *win;
-chtype *ptr;
-int i;
+ WINDOW *win;
+ chtype *ptr;
+ int i;
- T((T_CALLED("newwin(%d,%d,%d,%d)"), num_lines, num_columns, begy, begx));
+ T((T_CALLED("newwin(%d,%d,%d,%d)"), num_lines, num_columns, begy, begx));
- if (begy < 0 || begx < 0 || num_lines < 0 || num_columns < 0)
- returnWin(0);
+ if (begy < 0 || begx < 0 || num_lines < 0 || num_columns < 0)
+ returnWin(0);
- if (num_lines == 0)
- num_lines = SP->_lines_avail - begy;
- if (num_columns == 0)
- num_columns = screen_columns - begx;
+ if (num_lines == 0)
+ num_lines = SP->_lines_avail - begy;
+ if (num_columns == 0)
+ num_columns = screen_columns - begx;
- if (num_columns + begx > SP->_columns || num_lines + begy > SP->_lines_avail)
- returnWin(0);
+ if (num_columns + begx > SP->_columns || num_lines + begy > SP->_lines_avail)
+ returnWin(0);
- if ((win = _nc_makenew(num_lines, num_columns, begy, begx, 0)) == 0)
- returnWin(0);
+ if ((win = _nc_makenew(num_lines, num_columns, begy, begx, 0)) == 0)
+ returnWin(0);
- for (i = 0; i < num_lines; i++) {
- if ((win->_line[i].text = typeCalloc(chtype, (unsigned)num_columns)) == 0) {
- _nc_freewin(win);
- returnWin(0);
- }
- for (ptr = win->_line[i].text; ptr < win->_line[i].text + num_columns; )
- *ptr++ = ' ';
+ for (i = 0; i < num_lines; i++) {
+ win->_line[i].text = typeCalloc(chtype, (unsigned) num_columns);
+ if (win->_line[i].text == 0) {
+ _nc_freewin(win);
+ returnWin(0);
}
+ for (ptr = win->_line[i].text; ptr < win->_line[i].text +
+ num_columns;)
+ *ptr++ = ' ';
+ }
- T(("newwin: returned window is %p", win));
+ T(("newwin: returned window is %p", win));
- returnWin(win);
+ returnWin(win);
}
-WINDOW * derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx)
+WINDOW *
+derwin(WINDOW *orig, int num_lines, int num_columns, int begy, int begx)
{
-WINDOW *win;
-int i;
-int flags = _SUBWIN;
+ WINDOW *win;
+ int i;
+ int flags = _SUBWIN;
- T((T_CALLED("derwin(%p,%d,%d,%d,%d)"), orig, num_lines, num_columns, begy, begx));
+ T((T_CALLED("derwin(%p,%d,%d,%d,%d)"), orig, num_lines, num_columns,
+ begy, begx));
- /*
- ** make sure window fits inside the original one
- */
- if ( begy < 0 || begx < 0 || orig == 0 || num_lines < 0 || num_columns < 0)
- returnWin(0);
- if ( begy + num_lines > orig->_maxy + 1
- || begx + num_columns > orig->_maxx + 1)
- returnWin(0);
+ /*
+ ** make sure window fits inside the original one
+ */
+ if (begy < 0 || begx < 0 || orig == 0 || num_lines < 0 || num_columns < 0)
+ returnWin(0);
+ if (begy + num_lines > orig->_maxy + 1
+ || begx + num_columns > orig->_maxx + 1)
+ returnWin(0);
- if (num_lines == 0)
- num_lines = orig->_maxy + 1 - begy;
+ if (num_lines == 0)
+ num_lines = orig->_maxy + 1 - begy;
- if (num_columns == 0)
- num_columns = orig->_maxx + 1 - begx;
+ if (num_columns == 0)
+ num_columns = orig->_maxx + 1 - begx;
- if (orig->_flags & _ISPAD)
- flags |= _ISPAD;
+ if (orig->_flags & _ISPAD)
+ flags |= _ISPAD;
- if ((win = _nc_makenew(num_lines, num_columns, orig->_begy + begy, orig->_begx + begx, flags)) == 0)
- returnWin(0);
+ if ((win = _nc_makenew(num_lines, num_columns, orig->_begy + begy,
+ orig->_begx + begx, flags)) == 0)
+ returnWin(0);
- win->_pary = begy;
- win->_parx = begx;
- win->_attrs = orig->_attrs;
- win->_bkgd = orig->_bkgd;
+ win->_pary = begy;
+ win->_parx = begx;
+ win->_attrs = orig->_attrs;
+ win->_bkgd = orig->_bkgd;
- for (i = 0; i < num_lines; i++)
- win->_line[i].text = &orig->_line[begy++].text[begx];
+ for (i = 0; i < num_lines; i++)
+ win->_line[i].text = &orig->_line[begy++].text[begx];
- win->_parent = orig;
+ win->_parent = orig;
- T(("derwin: returned window is %p", win));
+ T(("derwin: returned window is %p", win));
- returnWin(win);
+ returnWin(win);
}
-
-WINDOW *subwin(WINDOW *w, int l, int c, int y, int x)
+WINDOW *
+subwin(WINDOW *w, int l, int c, int y, int x)
{
- T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), w, l, c, y, x));
- T(("parent has begy = %d, begx = %d", w->_begy, w->_begx));
+ T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), w, l, c, y, x));
+ T(("parent has begy = %d, begx = %d", w->_begy, w->_begx));
+
+ returnWin(derwin(w, l, c, y - w->_begy, x - w->_begx));
+}
- returnWin(derwin(w, l, c, y - w->_begy, x - w->_begx));
+static bool
+dimension_limit(int value)
+{
+ NCURSES_SIZE_T test = value;
+ return (test == value && value > 0);
}
WINDOW *
_nc_makenew(int num_lines, int num_columns, int begy, int begx, int flags)
{
-int i;
-WINDOWLIST *wp;
-WINDOW *win;
-bool is_pad = (flags & _ISPAD);
-
- T(("_nc_makenew(%d,%d,%d,%d)", num_lines, num_columns, begy, begx));
-
- if (num_lines <= 0 || num_columns <= 0)
- return 0;
-
- if ((wp = typeCalloc(WINDOWLIST, 1)) == 0)
- return 0;
-
- if ((win = typeCalloc(WINDOW, 1)) == 0)
- return 0;
-
- if ((win->_line = typeCalloc(struct ldat, ((unsigned)num_lines))) == 0) {
- free(win);
- return 0;
- }
-
- win->_curx = 0;
- win->_cury = 0;
- win->_maxy = num_lines - 1;
- win->_maxx = num_columns - 1;
- win->_begy = begy;
- win->_begx = begx;
- win->_yoffset = SP->_topstolen;
-
- win->_flags = flags;
- win->_attrs = A_NORMAL;
- win->_bkgd = BLANK;
-
- win->_clear = is_pad ? FALSE : (num_lines == screen_lines && num_columns == screen_columns);
- win->_idlok = FALSE;
- win->_idcok = TRUE;
- win->_scroll = FALSE;
- win->_leaveok = FALSE;
- win->_use_keypad = FALSE;
- win->_delay = -1;
- win->_immed = FALSE;
- win->_sync = 0;
- win->_parx = -1;
- win->_pary = -1;
- win->_parent = 0;
-
- win->_regtop = 0;
- win->_regbottom = num_lines - 1;
-
- win->_pad._pad_y = -1;
- win->_pad._pad_x = -1;
- win->_pad._pad_top = -1;
- win->_pad._pad_bottom = -1;
- win->_pad._pad_left = -1;
- win->_pad._pad_right = -1;
-
- for (i = 0; i < num_lines; i++)
- {
- /*
- * This used to do
- *
- * win->_line[i].firstchar = win->_line[i].lastchar = _NOCHANGE;
- *
- * which marks the whole window unchanged. That's how
- * SVr1 curses did it, but SVr4 curses marks the whole new
- * window changed.
- *
- * With the old SVr1-like code, say you have stdscr full of
- * characters, then create a new window with newwin(),
- * then do a printw(win, "foo ");, the trailing spaces are
- * completely ignored by the following refreshes. So, you
- * get "foojunkjunk" on the screen instead of "foo " as
- * you actually intended.
- *
- * SVr4 doesn't do this. Instead the spaces are actually written.
- * So that's how we want ncurses to behave.
- */
- win->_line[i].firstchar = 0;
- win->_line[i].lastchar = num_columns-1;
-
- if_USE_SCROLL_HINTS(win->_line[i].oldindex = i);
- }
-
- if (!is_pad && (begx + num_columns == screen_columns)) {
- win->_flags |= _ENDLINE;
-
- if (begx == 0 && num_lines == screen_lines && begy == 0)
- win->_flags |= _FULLWIN;
-
- if (begy + num_lines == screen_lines)
- win->_flags |= _SCROLLWIN;
- }
-
- wp->next = _nc_windows;
- wp->win = win;
- _nc_windows = wp;
-
- T((T_CREATE("window %p"), win));
-
- return(win);
+ int i;
+ WINDOWLIST *wp;
+ WINDOW *win;
+ bool is_pad = (flags & _ISPAD);
+
+ T(("_nc_makenew(%d,%d,%d,%d)", num_lines, num_columns, begy, begx));
+
+ if (!dimension_limit(num_lines) || !dimension_limit(num_columns))
+ return 0;
+
+ if ((wp = typeCalloc(WINDOWLIST, 1)) == 0)
+ return 0;
+
+ if ((win = typeCalloc(WINDOW, 1)) == 0)
+ return 0;
+
+ if ((win->_line = typeCalloc(struct ldat, ((unsigned) num_lines))) == 0) {
+ free(win);
+ return 0;
+ }
+
+ win->_curx = 0;
+ win->_cury = 0;
+ win->_maxy = num_lines - 1;
+ win->_maxx = num_columns - 1;
+ win->_begy = begy;
+ win->_begx = begx;
+ win->_yoffset = SP->_topstolen;
+
+ win->_flags = flags;
+ win->_attrs = A_NORMAL;
+ win->_bkgd = BLANK;
+
+ win->_clear = is_pad ? FALSE : (num_lines == screen_lines && num_columns
+ == screen_columns);
+ win->_idlok = FALSE;
+ win->_idcok = TRUE;
+ win->_scroll = FALSE;
+ win->_leaveok = FALSE;
+ win->_use_keypad = FALSE;
+ win->_delay = -1;
+ win->_immed = FALSE;
+ win->_sync = 0;
+ win->_parx = -1;
+ win->_pary = -1;
+ win->_parent = 0;
+
+ win->_regtop = 0;
+ win->_regbottom = num_lines - 1;
+
+ win->_pad._pad_y = -1;
+ win->_pad._pad_x = -1;
+ win->_pad._pad_top = -1;
+ win->_pad._pad_bottom = -1;
+ win->_pad._pad_left = -1;
+ win->_pad._pad_right = -1;
+
+ for (i = 0; i < num_lines; i++) {
+ /*
+ * This used to do
+ *
+ * win->_line[i].firstchar = win->_line[i].lastchar = _NOCHANGE;
+ *
+ * which marks the whole window unchanged. That's how
+ * SVr1 curses did it, but SVr4 curses marks the whole new
+ * window changed.
+ *
+ * With the old SVr1-like code, say you have stdscr full of
+ * characters, then create a new window with newwin(),
+ * then do a printw(win, "foo ");, the trailing spaces are
+ * completely ignored by the following refreshes. So, you
+ * get "foojunkjunk" on the screen instead of "foo " as
+ * you actually intended.
+ *
+ * SVr4 doesn't do this. Instead the spaces are actually written.
+ * So that's how we want ncurses to behave.
+ */
+ win->_line[i].firstchar = 0;
+ win->_line[i].lastchar = num_columns - 1;
+
+ if_USE_SCROLL_HINTS(win->_line[i].oldindex = i);
+ }
+
+ if (!is_pad && (begx + num_columns == screen_columns)) {
+ win->_flags |= _ENDLINE;
+
+ if (begx == 0 && num_lines == screen_lines && begy == 0)
+ win->_flags |= _FULLWIN;
+
+ if (begy + num_lines == screen_lines)
+ win->_flags |= _SCROLLWIN;
+ }
+
+ wp->next = _nc_windows;
+ wp->win = win;
+ _nc_windows = wp;
+
+ T((T_CREATE("window %p"), win));
+
+ return (win);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* nl.c
*
#include <curses.priv.h>
-MODULE_ID("$Id: lib_nl.c,v 1.4 1999/10/22 22:31:51 tom Exp $")
+MODULE_ID("$Id: lib_nl.c,v 1.6 2000/02/13 00:59:39 tom Exp $")
#ifdef __EMX__
#include <io.h>
-#include <fcntl.h>
#endif
-int nl(void)
+int
+nl(void)
{
- T((T_CALLED("nl()")));
+ T((T_CALLED("nl()")));
- SP->_nl = TRUE;
+ SP->_nl = TRUE;
#ifdef __EMX__
- _nc_flush();
- _fsetmode(NC_OUTPUT, "t");
+ _nc_flush();
+ _fsetmode(NC_OUTPUT, "t");
#endif
- returnCode(OK);
+ returnCode(OK);
}
-int nonl(void)
+int
+nonl(void)
{
- T((T_CALLED("nonl()")));
+ T((T_CALLED("nonl()")));
- SP->_nl = FALSE;
+ SP->_nl = FALSE;
#ifdef __EMX__
- _nc_flush();
- _fsetmode(NC_OUTPUT, "b");
+ _nc_flush();
+ _fsetmode(NC_OUTPUT, "b");
#endif
- returnCode(OK);
+ returnCode(OK);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* lib_pad.c
* newpad -- create a new pad
#include <curses.priv.h>
-MODULE_ID("$Id: lib_pad.c,v 1.27 1998/06/28 00:10:16 tom Exp $")
+MODULE_ID("$Id: lib_pad.c,v 1.29 2000/04/29 21:19:44 tom Exp $")
-WINDOW *newpad(int l, int c)
+WINDOW *
+newpad(int l, int c)
{
-WINDOW *win;
-chtype *ptr;
-int i;
+ WINDOW *win;
+ chtype *ptr;
+ int i;
- T((T_CALLED("newpad(%d, %d)"), l, c));
+ T((T_CALLED("newpad(%d, %d)"), l, c));
- if (l <= 0 || c <= 0)
- returnWin(0);
+ if (l <= 0 || c <= 0)
+ returnWin(0);
- if ((win = _nc_makenew(l,c,0,0,_ISPAD)) == NULL)
- returnWin(0);
+ if ((win = _nc_makenew(l, c, 0, 0, _ISPAD)) == NULL)
+ returnWin(0);
- for (i = 0; i < l; i++) {
- if_USE_SCROLL_HINTS(win->_line[i].oldindex = _NEWINDEX);
- if ((win->_line[i].text = typeCalloc(chtype, ((size_t)c))) == 0) {
- _nc_freewin(win);
- returnWin(0);
- }
- for (ptr = win->_line[i].text; ptr < win->_line[i].text + c; )
- *ptr++ = ' ';
+ for (i = 0; i < l; i++) {
+ if_USE_SCROLL_HINTS(win->_line[i].oldindex = _NEWINDEX);
+ if ((win->_line[i].text = typeCalloc(chtype, ((size_t) c))) == 0) {
+ _nc_freewin(win);
+ returnWin(0);
}
+ for (ptr = win->_line[i].text; ptr < win->_line[i].text + c;)
+ *ptr++ = ' ';
+ }
- returnWin(win);
+ returnWin(win);
}
-WINDOW *subpad(WINDOW *orig, int l, int c, int begy, int begx)
+WINDOW *
+subpad(WINDOW *orig, int l, int c, int begy, int begx)
{
-WINDOW *win = (WINDOW *)0;
+ WINDOW *win = (WINDOW *) 0;
- T((T_CALLED("subpad(%d, %d)"), l, c));
+ T((T_CALLED("subpad(%d, %d)"), l, c));
- if (orig) {
- if (!(orig->_flags & _ISPAD) || ((win = derwin(orig, l, c, begy, begx)) == NULL))
+ if (orig) {
+ if (!(orig->_flags & _ISPAD)
+ || ((win = derwin(orig, l, c, begy, begx)) == NULL))
returnWin(0);
- }
- returnWin(win);
+ }
+ returnWin(win);
}
-int prefresh(WINDOW *win, int pminrow, int pmincol,
- int sminrow, int smincol, int smaxrow, int smaxcol)
+int
+prefresh(WINDOW *win, int pminrow, int pmincol,
+ int sminrow, int smincol, int smaxrow, int smaxcol)
{
- T((T_CALLED("prefresh()")));
- if (pnoutrefresh(win, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol) != ERR
- && doupdate() != ERR) {
- returnCode(OK);
- }
- returnCode(ERR);
+ T((T_CALLED("prefresh()")));
+ if (pnoutrefresh(win, pminrow, pmincol, sminrow, smincol, smaxrow,
+ smaxcol) != ERR
+ && doupdate() != ERR) {
+ returnCode(OK);
+ }
+ returnCode(ERR);
}
-int pnoutrefresh(WINDOW *win, int pminrow, int pmincol,
- int sminrow, int smincol, int smaxrow, int smaxcol)
+int
+pnoutrefresh(WINDOW *win, int pminrow, int pmincol,
+ int sminrow, int smincol, int smaxrow, int smaxcol)
{
-const int my_len = 2; /* parameterize the threshold for hardscroll */
-short i, j;
-short m, n;
-short pmaxrow;
-short pmaxcol;
-short displaced;
-bool wide;
-
- T((T_CALLED("pnoutrefresh(%p, %d, %d, %d, %d, %d, %d)"),
- win, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol));
-
- if (win == 0)
- returnCode(ERR);
-
- if (!(win->_flags & _ISPAD))
- returnCode(ERR);
+ const int my_len = 2; /* parameterize the threshold for hardscroll */
+ NCURSES_SIZE_T i, j;
+ NCURSES_SIZE_T m, n;
+ NCURSES_SIZE_T pmaxrow;
+ NCURSES_SIZE_T pmaxcol;
+ NCURSES_SIZE_T displaced;
+ bool wide;
+
+ T((T_CALLED("pnoutrefresh(%p, %d, %d, %d, %d, %d, %d)"),
+ win, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol));
+
+ if (win == 0)
+ returnCode(ERR);
- /* negative values are interpreted as zero */
- if (pminrow < 0) pminrow = 0;
- if (pmincol < 0) pmincol = 0;
- if (sminrow < 0) sminrow = 0;
- if (smincol < 0) smincol = 0;
+ if (!(win->_flags & _ISPAD))
+ returnCode(ERR);
+ /* negative values are interpreted as zero */
+ if (pminrow < 0)
+ pminrow = 0;
+ if (pmincol < 0)
+ pmincol = 0;
+ if (sminrow < 0)
+ sminrow = 0;
+ if (smincol < 0)
+ smincol = 0;
+
+ pmaxrow = pminrow + smaxrow - sminrow;
+ pmaxcol = pmincol + smaxcol - smincol;
+
+ T((" pminrow + smaxrow - sminrow %d, win->_maxy %d", pmaxrow, win->_maxy));
+ T((" pmincol + smaxcol - smincol %d, win->_maxx %d", pmaxcol, win->_maxx));
+
+ /*
+ * Trim the caller's screen size back to the actual limits.
+ */
+ if (pmaxrow > win->_maxy) {
+ smaxrow -= (pmaxrow - win->_maxy);
pmaxrow = pminrow + smaxrow - sminrow;
+ }
+ if (pmaxcol > win->_maxx) {
+ smaxcol -= (pmaxcol - win->_maxx);
pmaxcol = pmincol + smaxcol - smincol;
+ }
- T((" pminrow + smaxrow - sminrow %d, win->_maxy %d", pmaxrow, win->_maxy));
- T((" pmincol + smaxcol - smincol %d, win->_maxx %d", pmaxcol, win->_maxx));
+ if (smaxrow > screen_lines
+ || smaxcol > screen_columns
+ || sminrow > smaxrow
+ || smincol > smaxcol)
+ returnCode(ERR);
- /*
- * Trim the caller's screen size back to the actual limits.
- */
- if (pmaxrow > win->_maxy) {
- smaxrow -= (pmaxrow - win->_maxy);
- pmaxrow = pminrow + smaxrow - sminrow;
- }
- if (pmaxcol > win->_maxx) {
- smaxcol -= (pmaxcol - win->_maxx);
- pmaxcol = pmincol + smaxcol - smincol;
+ T(("pad being refreshed"));
+
+ if (win->_pad._pad_y >= 0) {
+ displaced = pminrow - win->_pad._pad_y
+ - (sminrow - win->_pad._pad_top);
+ T(("pad being shifted by %d line(s)", displaced));
+ } else
+ displaced = 0;
+
+ /*
+ * For pure efficiency, we'd want to transfer scrolling information
+ * from the pad to newscr whenever the window is wide enough that
+ * its update will dominate the cost of the update for the horizontal
+ * band of newscr that it occupies. Unfortunately, this threshold
+ * tends to be complex to estimate, and in any case scrolling the
+ * whole band and rewriting the parts outside win's image would look
+ * really ugly. So. What we do is consider the pad "wide" if it
+ * either (a) occupies the whole width of newscr, or (b) occupies
+ * all but at most one column on either vertical edge of the screen
+ * (this caters to fussy people who put boxes around full-screen
+ * windows). Note that changing this formula will not break any code,
+ * merely change the costs of various update cases.
+ */
+ wide = (smincol < my_len && smaxcol > (newscr->_maxx - my_len));
+
+ for (i = pminrow, m = sminrow + win->_yoffset;
+ i <= pmaxrow && m <= newscr->_maxy;
+ i++, m++) {
+ register struct ldat *nline = &newscr->_line[m];
+ register struct ldat *oline = &win->_line[i];
+
+ for (j = pmincol, n = smincol; j <= pmaxcol; j++, n++) {
+ if (oline->text[j] != nline->text[n]) {
+ nline->text[n] = oline->text[j];
+ CHANGED_CELL(nline, n);
+ }
}
- if (smaxrow > screen_lines
- || smaxcol > screen_columns
- || sminrow > smaxrow
- || smincol > smaxcol)
- returnCode(ERR);
-
- T(("pad being refreshed"));
-
- if (win->_pad._pad_y >= 0) {
- displaced = pminrow - win->_pad._pad_y
- -(sminrow - win->_pad._pad_top);
- T(("pad being shifted by %d line(s)", displaced));
- } else
- displaced = 0;
-
- /*
- * For pure efficiency, we'd want to transfer scrolling information
- * from the pad to newscr whenever the window is wide enough that
- * its update will dominate the cost of the update for the horizontal
- * band of newscr that it occupies. Unfortunately, this threshold
- * tends to be complex to estimate, and in any case scrolling the
- * whole band and rewriting the parts outside win's image would look
- * really ugly. So. What we do is consider the pad "wide" if it
- * either (a) occupies the whole width of newscr, or (b) occupies
- * all but at most one column on either vertical edge of the screen
- * (this caters to fussy people who put boxes around full-screen
- * windows). Note that changing this formula will not break any code,
- * merely change the costs of various update cases.
- */
- wide = (smincol < my_len && smaxcol > (newscr->_maxx - my_len));
-
- for (i = pminrow, m = sminrow + win->_yoffset;
- i <= pmaxrow && m <= newscr->_maxy;
- i++, m++) {
- register struct ldat *nline = &newscr->_line[m];
- register struct ldat *oline = &win->_line[i];
-
- for (j = pmincol, n = smincol; j <= pmaxcol; j++, n++) {
- if (oline->text[j] != nline->text[n]) {
- nline->text[n] = oline->text[j];
- CHANGED_CELL(nline,n);
- }
- }
-
#if USE_SCROLL_HINTS
- if (wide) {
- int nind = m + displaced;
- if (oline->oldindex < 0
- || nind < sminrow
- || nind > smaxrow) {
+ if (wide) {
+ int nind = m + displaced;
+ if (oline->oldindex < 0
+ || nind < sminrow
+ || nind > smaxrow) {
+ nind = _NEWINDEX;
+ } else if (displaced) {
+ register struct ldat *pline = &curscr->_line[nind];
+ for (j = 0; j <= my_len; j++) {
+ int k = newscr->_maxx - j;
+ if (pline->text[j] != nline->text[j]
+ || pline->text[k] != nline->text[k]) {
nind = _NEWINDEX;
- } else if (displaced) {
- register struct ldat *pline = &curscr->_line[nind];
- for (j = 0; j <= my_len; j++) {
- int k = newscr->_maxx - j;
- if (pline->text[j] != nline->text[j]
- || pline->text[k] != nline->text[k]) {
- nind = _NEWINDEX;
- break;
- }
- }
+ break;
}
-
- nline->oldindex = nind;
}
-#endif /* USE_SCROLL_HINTS */
- oline->firstchar = oline->lastchar = _NOCHANGE;
- if_USE_SCROLL_HINTS(oline->oldindex = i);
- }
+ }
- /*
- * Clean up debris from scrolling or resizing the pad, so we do not
- * accidentally pick up the index value during the next call to this
- * procedure. The only rows that should have an index value are those
- * that are displayed during this cycle.
- */
+ nline->oldindex = nind;
+ }
+#endif /* USE_SCROLL_HINTS */
+ oline->firstchar = oline->lastchar = _NOCHANGE;
+ if_USE_SCROLL_HINTS(oline->oldindex = i);
+ }
+
+ /*
+ * Clean up debris from scrolling or resizing the pad, so we do not
+ * accidentally pick up the index value during the next call to this
+ * procedure. The only rows that should have an index value are those
+ * that are displayed during this cycle.
+ */
#if USE_SCROLL_HINTS
- for (i = pminrow-1; (i >= 0) && (win->_line[i].oldindex >= 0); i--)
- win->_line[i].oldindex = _NEWINDEX;
- for (i = pmaxrow+1; (i <= win->_maxy) && (win->_line[i].oldindex >= 0); i++)
- win->_line[i].oldindex = _NEWINDEX;
+ for (i = pminrow - 1; (i >= 0) && (win->_line[i].oldindex >= 0); i--)
+ win->_line[i].oldindex = _NEWINDEX;
+ for (i = pmaxrow + 1; (i <= win->_maxy)
+ && (win->_line[i].oldindex >= 0); i++)
+ win->_line[i].oldindex = _NEWINDEX;
#endif
- win->_begx = smincol;
- win->_begy = sminrow;
+ win->_begx = smincol;
+ win->_begy = sminrow;
+
+ if (win->_clear) {
+ win->_clear = FALSE;
+ newscr->_clear = TRUE;
+ }
+
+ /*
+ * Use the pad's current position, if it will be visible.
+ * If not, don't do anything; it's not an error.
+ */
+ if (win->_leaveok == FALSE
+ && win->_cury >= pminrow
+ && win->_curx >= pmincol
+ && win->_cury <= pmaxrow
+ && win->_curx <= pmaxcol) {
+ newscr->_cury = win->_cury - pminrow + win->_begy + win->_yoffset;
+ newscr->_curx = win->_curx - pmincol + win->_begx;
+ }
+ newscr->_leaveok = win->_leaveok;
+ win->_flags &= ~_HASMOVED;
+
+ /*
+ * Update our cache of the line-numbers that we displayed from the pad.
+ * We will use this on subsequent calls to this function to derive
+ * values to stuff into 'oldindex[]' -- for scrolling optimization.
+ */
+ win->_pad._pad_y = pminrow;
+ win->_pad._pad_x = pmincol;
+ win->_pad._pad_top = sminrow;
+ win->_pad._pad_left = smincol;
+ win->_pad._pad_bottom = smaxrow;
+ win->_pad._pad_right = smaxcol;
+
+ returnCode(OK);
+}
- if (win->_clear) {
- win->_clear = FALSE;
- newscr->_clear = TRUE;
- }
+int
+pechochar(WINDOW *pad, const chtype ch)
+{
+ T((T_CALLED("pechochar(%p, %s)"), pad, _tracechtype(ch)));
- /*
- * Use the pad's current position, if it will be visible.
- * If not, don't do anything; it's not an error.
- */
- if (win->_leaveok == FALSE
- && win->_cury >= pminrow
- && win->_curx >= pmincol
- && win->_cury <= pmaxrow
- && win->_curx <= pmaxcol) {
- newscr->_cury = win->_cury - pminrow + win->_begy + win->_yoffset;
- newscr->_curx = win->_curx - pmincol + win->_begx;
- }
- win->_flags &= ~_HASMOVED;
-
- /*
- * Update our cache of the line-numbers that we displayed from the pad.
- * We will use this on subsequent calls to this function to derive
- * values to stuff into 'oldindex[]' -- for scrolling optimization.
- */
- win->_pad._pad_y = pminrow;
- win->_pad._pad_x = pmincol;
- win->_pad._pad_top = sminrow;
- win->_pad._pad_left = smincol;
- win->_pad._pad_bottom = smaxrow;
- win->_pad._pad_right = smaxcol;
+ if (pad == 0)
+ returnCode(ERR);
- returnCode(OK);
-}
+ if (!(pad->_flags & _ISPAD))
+ returnCode(wechochar(pad, ch));
-int pechochar(WINDOW *pad, const chtype ch)
-{
- T((T_CALLED("pechochar(%p, %s)"), pad, _tracechtype(ch)));
-
- if (pad == 0)
- returnCode(ERR);
-
- if (!(pad->_flags & _ISPAD))
- returnCode(wechochar(pad,ch));
-
- waddch(pad, ch);
- prefresh(pad, pad->_pad._pad_y,
- pad->_pad._pad_x,
- pad->_pad._pad_top,
- pad->_pad._pad_left,
- pad->_pad._pad_bottom,
- pad->_pad._pad_right);
-
- returnCode(OK);
+ waddch(pad, ch);
+ prefresh(pad, pad->_pad._pad_y,
+ pad->_pad._pad_x,
+ pad->_pad._pad_top,
+ pad->_pad._pad_left,
+ pad->_pad._pad_bottom,
+ pad->_pad._pad_right);
+
+ returnCode(OK);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
* lib_refresh.c
*
#include <curses.priv.h>
-MODULE_ID("$Id: lib_refresh.c,v 1.24 1999/07/31 11:36:37 juergen Exp $")
+MODULE_ID("$Id: lib_refresh.c,v 1.25 2000/04/29 21:17:08 tom Exp $")
-int wrefresh(WINDOW *win)
+int
+wrefresh(WINDOW *win)
{
-int code;
-
- T((T_CALLED("wrefresh(%p)"), win));
-
- if (win == curscr) {
- curscr->_clear = TRUE;
- code = doupdate();
- } else if ((code = wnoutrefresh(win)) == OK) {
- if (win->_clear)
- newscr->_clear = TRUE;
- code = doupdate();
- /*
- * Reset the clearok() flag in case it was set for the special
- * case in hardscroll.c (if we don't reset it here, we'll get 2
- * refreshes because the flag is copied from stdscr to newscr).
- * Resetting the flag shouldn't do any harm, anyway.
- */
- win->_clear = FALSE;
- }
- returnCode(code);
-}
-
-int wnoutrefresh(WINDOW *win)
-{
-short limit_x;
-short i, j;
-short begx;
-short begy;
-short m, n;
-bool wide;
-
- T((T_CALLED("wnoutrefresh(%p)"), win));
-#ifdef TRACE
- if (_nc_tracing & TRACE_UPDATE)
- _tracedump("...win", win);
-#endif /* TRACE */
-
- /*
- * This function will break badly if we try to refresh a pad.
- */
- if ((win == 0)
- || (win->_flags & _ISPAD))
- returnCode(ERR);
+ int code;
- /* put them here so "win == 0" won't break our code */
- begx = win->_begx;
- begy = win->_begy;
-
- newscr->_bkgd = win->_bkgd;
- newscr->_attrs = win->_attrs;
-
- /* merge in change information from all subwindows of this window */
- wsyncdown(win);
+ T((T_CALLED("wrefresh(%p)"), win));
+ if (win == curscr) {
+ curscr->_clear = TRUE;
+ code = doupdate();
+ } else if ((code = wnoutrefresh(win)) == OK) {
+ if (win->_clear)
+ newscr->_clear = TRUE;
+ code = doupdate();
/*
- * For pure efficiency, we'd want to transfer scrolling information
- * from the window to newscr whenever the window is wide enough that
- * its update will dominate the cost of the update for the horizontal
- * band of newscr that it occupies. Unfortunately, this threshold
- * tends to be complex to estimate, and in any case scrolling the
- * whole band and rewriting the parts outside win's image would look
- * really ugly. So. What we do is consider the window "wide" if it
- * either (a) occupies the whole width of newscr, or (b) occupies
- * all but at most one column on either vertical edge of the screen
- * (this caters to fussy people who put boxes around full-screen
- * windows). Note that changing this formula will not break any code,
- * merely change the costs of various update cases.
+ * Reset the clearok() flag in case it was set for the special
+ * case in hardscroll.c (if we don't reset it here, we'll get 2
+ * refreshes because the flag is copied from stdscr to newscr).
+ * Resetting the flag shouldn't do any harm, anyway.
*/
- wide = (begx <= 1 && win->_maxx >= (newscr->_maxx - 1));
-
- win->_flags &= ~_HASMOVED;
+ win->_clear = FALSE;
+ }
+ returnCode(code);
+}
- /*
- * Microtweaking alert! This double loop is one of the genuine
- * hot spots in the code. Even gcc doesn't seem to do enough
- * common-subexpression chunking to make it really tense,
- * so we'll force the issue.
- */
+int
+wnoutrefresh(WINDOW *win)
+{
+ NCURSES_SIZE_T limit_x;
+ NCURSES_SIZE_T i, j;
+ NCURSES_SIZE_T begx;
+ NCURSES_SIZE_T begy;
+ NCURSES_SIZE_T m, n;
+ bool wide;
+
+ T((T_CALLED("wnoutrefresh(%p)"), win));
+#ifdef TRACE
+ if (_nc_tracing & TRACE_UPDATE)
+ _tracedump("...win", win);
+#endif /* TRACE */
- /* limit(n) */
+ /*
+ * This function will break badly if we try to refresh a pad.
+ */
+ if ((win == 0)
+ || (win->_flags & _ISPAD))
+ returnCode(ERR);
+
+ /* put them here so "win == 0" won't break our code */
+ begx = win->_begx;
+ begy = win->_begy;
+
+ newscr->_bkgd = win->_bkgd;
+ newscr->_attrs = win->_attrs;
+
+ /* merge in change information from all subwindows of this window */
+ wsyncdown(win);
+
+ /*
+ * For pure efficiency, we'd want to transfer scrolling information
+ * from the window to newscr whenever the window is wide enough that
+ * its update will dominate the cost of the update for the horizontal
+ * band of newscr that it occupies. Unfortunately, this threshold
+ * tends to be complex to estimate, and in any case scrolling the
+ * whole band and rewriting the parts outside win's image would look
+ * really ugly. So. What we do is consider the window "wide" if it
+ * either (a) occupies the whole width of newscr, or (b) occupies
+ * all but at most one column on either vertical edge of the screen
+ * (this caters to fussy people who put boxes around full-screen
+ * windows). Note that changing this formula will not break any code,
+ * merely change the costs of various update cases.
+ */
+ wide = (begx <= 1 && win->_maxx >= (newscr->_maxx - 1));
+
+ win->_flags &= ~_HASMOVED;
+
+ /*
+ * Microtweaking alert! This double loop is one of the genuine
+ * hot spots in the code. Even gcc doesn't seem to do enough
+ * common-subexpression chunking to make it really tense,
+ * so we'll force the issue.
+ */
+
+ /* limit(n) */
+ limit_x = win->_maxx;
+ /* limit(j) */
+ if (limit_x > win->_maxx)
limit_x = win->_maxx;
- /* limit(j) */
- if (limit_x > win->_maxx)
- limit_x = win->_maxx;
-
- for (i = 0, m = begy + win->_yoffset;
- i <= win->_maxy && m <= newscr->_maxy;
- i++, m++) {
- register struct ldat *nline = &newscr->_line[m];
- register struct ldat *oline = &win->_line[i];
- if (oline->firstchar != _NOCHANGE) {
- int last = oline->lastchar;
+ for (i = 0, m = begy + win->_yoffset;
+ i <= win->_maxy && m <= newscr->_maxy;
+ i++, m++) {
+ register struct ldat *nline = &newscr->_line[m];
+ register struct ldat *oline = &win->_line[i];
- if (last > limit_x)
- last = limit_x;
+ if (oline->firstchar != _NOCHANGE) {
+ int last = oline->lastchar;
- for (j = oline->firstchar, n = j + begx; j <= last; j++, n++) {
- if (oline->text[j] != nline->text[n]) {
- nline->text[n] = oline->text[j];
- CHANGED_CELL(nline, n);
- }
- }
+ if (last > limit_x)
+ last = limit_x;
+ for (j = oline->firstchar, n = j + begx; j <= last; j++, n++) {
+ if (oline->text[j] != nline->text[n]) {
+ nline->text[n] = oline->text[j];
+ CHANGED_CELL(nline, n);
}
+ }
+ }
#if USE_SCROLL_HINTS
- if (wide) {
- int oind = oline->oldindex;
+ if (wide) {
+ int oind = oline->oldindex;
- nline->oldindex = (oind == _NEWINDEX) ? _NEWINDEX : begy + oind + win->_yoffset;
- }
+ nline->oldindex = (oind == _NEWINDEX) ? _NEWINDEX : begy + oind
+ + win->_yoffset;
+ }
#endif /* USE_SCROLL_HINTS */
- oline->firstchar = oline->lastchar = _NOCHANGE;
- if_USE_SCROLL_HINTS(oline->oldindex = i);
- }
+ oline->firstchar = oline->lastchar = _NOCHANGE;
+ if_USE_SCROLL_HINTS(oline->oldindex = i);
+ }
- if (win->_clear) {
- win->_clear = FALSE;
- newscr->_clear = TRUE;
- }
+ if (win->_clear) {
+ win->_clear = FALSE;
+ newscr->_clear = TRUE;
+ }
+
+ if (!win->_leaveok) {
+ newscr->_cury = win->_cury + win->_begy + win->_yoffset;
+ newscr->_curx = win->_curx + win->_begx;
+ }
+ newscr->_leaveok = win->_leaveok;
- if (! win->_leaveok) {
- newscr->_cury = win->_cury + win->_begy + win->_yoffset;
- newscr->_curx = win->_curx + win->_begx;
- }
- newscr->_leaveok = win->_leaveok;
-
#ifdef TRACE
- if (_nc_tracing & TRACE_UPDATE)
- _tracedump("newscr", newscr);
+ if (_nc_tracing & TRACE_UPDATE)
+ _tracedump("newscr", newscr);
#endif /* TRACE */
- returnCode(OK);
+ returnCode(OK);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
** lib_scroll.c
**
#include <curses.priv.h>
-MODULE_ID("$Id: lib_scroll.c,v 1.16 1998/02/11 12:13:55 tom Exp $")
+MODULE_ID("$Id: lib_scroll.c,v 1.17 2000/04/29 21:10:51 tom Exp $")
-void _nc_scroll_window(WINDOW *win, int const n, short const top, short const bottom, chtype blank)
+void
+_nc_scroll_window(WINDOW *win, int const n, NCURSES_SIZE_T const top,
+ NCURSES_SIZE_T const bottom, chtype blank)
{
-int line, j;
-size_t to_copy = (size_t)(sizeof(chtype) * (win->_maxx + 1));
-
- TR(TRACE_MOVE, ("_nc_scroll_window(%p, %d, %d, %d)", win, n, top,bottom));
-
- /*
- * This used to do a line-text pointer-shuffle instead of text copies.
- * That (a) doesn't work when the window is derived and doesn't have
- * its own storage, (b) doesn't save you a lot on modern machines
- * anyway. Your typical memcpy implementations are coded in
- * assembler using a tight BLT loop; for the size of copies we're
- * talking here, the total execution time is dominated by the one-time
- * setup cost. So there is no point in trying to be excessively
- * clever -- esr.
- */
-
- /* shift n lines downwards */
- if (n < 0) {
- for (line = bottom; line >= top-n; 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 = top; line < top-n; line++) {
- for (j = 0; j <= win->_maxx; j ++)
- win->_line[line].text[j] = blank;
- if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
- }
- }
-
- /* shift n lines upwards */
- if (n > 0) {
- for (line = top; line <= bottom-n; 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 > bottom-n; line--) {
- for (j = 0; j <= win->_maxx; j ++)
- win->_line[line].text[j] = blank;
- if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
- }
+ int line, j;
+ size_t to_copy = (size_t) (sizeof(chtype) * (win->_maxx + 1));
+
+ TR(TRACE_MOVE, ("_nc_scroll_window(%p, %d, %d, %d)", win, n, top, bottom));
+
+ /*
+ * This used to do a line-text pointer-shuffle instead of text copies.
+ * That (a) doesn't work when the window is derived and doesn't have
+ * its own storage, (b) doesn't save you a lot on modern machines
+ * anyway. Your typical memcpy implementations are coded in
+ * assembler using a tight BLT loop; for the size of copies we're
+ * talking here, the total execution time is dominated by the one-time
+ * setup cost. So there is no point in trying to be excessively
+ * clever -- esr.
+ */
+
+ /* shift n lines downwards */
+ if (n < 0) {
+ for (line = bottom; line >= top - n; 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 = top; line < top - n; line++) {
+ for (j = 0; j <= win->_maxx; j++)
+ win->_line[line].text[j] = blank;
+ if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
+ }
+ }
+
+ /* shift n lines upwards */
+ if (n > 0) {
+ for (line = top; line <= bottom - n; 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 > bottom - n; line--) {
+ for (j = 0; j <= win->_maxx; j++)
+ win->_line[line].text[j] = blank;
+ if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX);
}
- touchline(win, top, bottom-top+1);
+ }
+ touchline(win, top, bottom - top + 1);
}
int
wscrl(WINDOW *win, int n)
{
- T((T_CALLED("wscrl(%p,%d)"), win, n));
+ T((T_CALLED("wscrl(%p,%d)"), win, n));
- if (!win || !win->_scroll)
- returnCode(ERR);
+ if (!win || !win->_scroll)
+ returnCode(ERR);
- if (n == 0)
- returnCode(OK);
+ if (n == 0)
+ returnCode(OK);
- if ((n > (win->_regbottom - win->_regtop)) ||
- (-n > (win->_regbottom - win->_regtop)))
- returnCode(ERR);
+ if ((n > (win->_regbottom - win->_regtop)) ||
+ (-n > (win->_regbottom - win->_regtop)))
+ returnCode(ERR);
- _nc_scroll_window(win, n, win->_regtop, win->_regbottom, _nc_background(win));
+ _nc_scroll_window(win, n, win->_regtop, win->_regbottom, _nc_background(win));
- _nc_synchook(win);
- returnCode(OK);
+ _nc_synchook(win);
+ returnCode(OK);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
** lib_scrreg.c
**
#include <curses.priv.h>
-MODULE_ID("$Id: lib_scrreg.c,v 1.7 1998/02/11 12:13:53 tom Exp $")
+MODULE_ID("$Id: lib_scrreg.c,v 1.8 2000/04/29 21:13:04 tom Exp $")
-int wsetscrreg(WINDOW *win, int top, int bottom)
+int
+wsetscrreg(WINDOW *win, int top, int bottom)
{
- T((T_CALLED("wsetscrreg(%p,%d,%d)"), win, top, bottom));
-
- if (win &&
- top >= 0 && top <= win->_maxy &&
- bottom >= 0 && bottom <= win->_maxy &&
- bottom > top)
- {
- win->_regtop = (short)top;
- win->_regbottom = (short)bottom;
-
- returnCode(OK);
- } else
- returnCode(ERR);
+ T((T_CALLED("wsetscrreg(%p,%d,%d)"), win, top, bottom));
+
+ if (win &&
+ top >= 0 && top <= win->_maxy &&
+ bottom >= 0 && bottom <= win->_maxy &&
+ bottom > top) {
+ win->_regtop = (NCURSES_SIZE_T) top;
+ win->_regbottom = (NCURSES_SIZE_T) bottom;
+
+ returnCode(OK);
+ } else
+ returnCode(ERR);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
-#include <term.h> /* cur_term */
+#include <term.h> /* cur_term */
+#include <tic.h>
-MODULE_ID("$Id: lib_set_term.c,v 1.46 1999/07/24 20:05:49 tom Exp $")
+MODULE_ID("$Id: lib_set_term.c,v 1.55 2000/07/02 00:22:18 tom Exp $")
-SCREEN * set_term(SCREEN *screenp)
+SCREEN *
+set_term(SCREEN * screenp)
{
-SCREEN *oldSP;
+ SCREEN *oldSP;
- T((T_CALLED("set_term(%p)"), screenp));
+ T((T_CALLED("set_term(%p)"), screenp));
- oldSP = SP;
- _nc_set_screen(screenp);
+ oldSP = SP;
+ _nc_set_screen(screenp);
- set_curterm(SP->_term);
- curscr = SP->_curscr;
- newscr = SP->_newscr;
- stdscr = SP->_stdscr;
- COLORS = SP->_color_count;
- COLOR_PAIRS = SP->_pair_count;
- memcpy(acs_map, SP->_acs_map, sizeof(chtype)*ACS_LEN);
+ set_curterm(SP->_term);
+ curscr = SP->_curscr;
+ newscr = SP->_newscr;
+ stdscr = SP->_stdscr;
+ COLORS = SP->_color_count;
+ COLOR_PAIRS = SP->_pair_count;
+ memcpy(acs_map, SP->_acs_map, sizeof(chtype) * ACS_LEN);
- T((T_RETURN("%p"), oldSP));
- return(oldSP);
+ T((T_RETURN("%p"), oldSP));
+ return (oldSP);
}
-static void _nc_free_keytry(struct tries *kt)
+static void
+_nc_free_keytry(struct tries *kt)
{
- if (kt != 0) {
- _nc_free_keytry(kt->child);
- _nc_free_keytry(kt->sibling);
- free(kt);
- }
+ if (kt != 0) {
+ _nc_free_keytry(kt->child);
+ _nc_free_keytry(kt->sibling);
+ free(kt);
+ }
}
/*
* Free the storage associated with the given SCREEN sp.
*/
-void delscreen(SCREEN *sp)
+void
+delscreen(SCREEN * sp)
{
- SCREEN **scan = &_nc_screen_chain;
+ SCREEN **scan = &_nc_screen_chain;
- T((T_CALLED("delscreen(%p)"), sp));
+ T((T_CALLED("delscreen(%p)"), sp));
- while(*scan)
- {
- if (*scan == sp)
- {
- *scan = sp->_next_screen;
- break;
- }
- scan = &(*scan)->_next_screen;
+ while (*scan) {
+ if (*scan == sp) {
+ *scan = sp->_next_screen;
+ break;
}
+ scan = &(*scan)->_next_screen;
+ }
+
+ _nc_freewin(sp->_curscr);
+ _nc_freewin(sp->_newscr);
+ _nc_freewin(sp->_stdscr);
+ _nc_free_keytry(sp->_keytry);
+ _nc_free_keytry(sp->_key_ok);
+
+ FreeIfNeeded(sp->_color_table);
+ FreeIfNeeded(sp->_color_pairs);
+
+ FreeIfNeeded(sp->oldhash);
+ FreeIfNeeded(sp->newhash);
+
+ del_curterm(sp->_term);
+
+ /*
+ * 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);
+ }
+
+ free(sp);
+
+ /*
+ * If this was the current screen, reset everything that the
+ * application might try to use (except cur_term, which may have
+ * multiple references in different screens).
+ */
+ if (sp == SP) {
+ curscr = 0;
+ newscr = 0;
+ stdscr = 0;
+ COLORS = 0;
+ COLOR_PAIRS = 0;
+ _nc_set_screen(0);
+ }
+ returnVoid;
+}
- _nc_freewin(sp->_curscr);
- _nc_freewin(sp->_newscr);
- _nc_freewin(sp->_stdscr);
- _nc_free_keytry(sp->_keytry);
- _nc_free_keytry(sp->_key_ok);
-
- FreeIfNeeded(sp->_color_table);
- FreeIfNeeded(sp->_color_pairs);
+static ripoff_t rippedoff[5];
+static ripoff_t *rsp = rippedoff;
+#define N_RIPS SIZEOF(rippedoff)
- FreeIfNeeded(sp->oldhash);
- FreeIfNeeded(sp->newhash);
+static bool
+no_mouse_event(SCREEN * sp GCC_UNUSED)
+{
+ return FALSE;
+}
- del_curterm(sp->_term);
+static bool
+no_mouse_inline(SCREEN * sp GCC_UNUSED)
+{
+ return FALSE;
+}
- free(sp);
+static bool
+no_mouse_parse(int code GCC_UNUSED)
+{
+ return TRUE;
+}
- /*
- * If this was the current screen, reset everything that the
- * application might try to use (except cur_term, which may have
- * multiple references in different screens).
- */
- if (sp == SP) {
- curscr = 0;
- newscr = 0;
- stdscr = 0;
- COLORS = 0;
- COLOR_PAIRS = 0;
- _nc_set_screen(0);
- }
- returnVoid;
+static void
+no_mouse_resume(SCREEN * sp GCC_UNUSED)
+{
}
-static ripoff_t rippedoff[5];
-static ripoff_t *rsp = rippedoff;
-#define N_RIPS SIZEOF(rippedoff)
+static void
+no_mouse_wrap(SCREEN * sp GCC_UNUSED)
+{
+}
-static bool no_mouse_event (SCREEN *sp GCC_UNUSED) { return FALSE; }
-static bool no_mouse_inline(SCREEN *sp GCC_UNUSED) { return FALSE; }
-static bool no_mouse_parse (int code GCC_UNUSED) { return TRUE; }
-static void no_mouse_resume(SCREEN *sp GCC_UNUSED) { }
-static void no_mouse_wrap (SCREEN *sp GCC_UNUSED) { }
+#if defined(NCURSES_EXT_FUNCS) && defined(USE_COLORFGBG)
+static char *
+extract_fgbg(char *src, int *result)
+{
+ char *dst = 0;
+ long value = strtol(src, &dst, 0);
+
+ if (dst == 0) {
+ dst = src;
+ } else if (value >= 0) {
+ *result = value % max_colors;
+ }
+ while (*dst != 0 && *dst != ';')
+ dst++;
+ if (*dst == ';')
+ dst++;
+ return dst;
+}
+#endif
-int _nc_setupscreen(short slines, short const scolumns, FILE *output)
+int
+_nc_setupscreen(short slines, short const scolumns, FILE * output)
/* OS-independent screen initializations */
{
-int bottom_stolen = 0;
-size_t i;
-
- assert(SP==0); /* has been reset in newterm() ! */
- if (!_nc_alloc_screen())
- return ERR;
-
- SP->_next_screen = _nc_screen_chain;
- _nc_screen_chain = SP;
-
- _nc_set_buffer(output, TRUE);
- SP->_term = cur_term;
- SP->_lines = slines;
- SP->_lines_avail = slines;
- SP->_columns = scolumns;
- SP->_cursrow = -1;
- SP->_curscol = -1;
- SP->_nl = TRUE;
- SP->_raw = FALSE;
- SP->_cbreak = 0;
- SP->_echo = TRUE;
- SP->_fifohead = -1;
- SP->_endwin = TRUE;
- SP->_ofp = output;
- SP->_cursor = -1; /* cannot know real cursor shape */
+ int bottom_stolen = 0;
+ size_t i;
+
+ assert(SP == 0); /* has been reset in newterm() ! */
+ if (!_nc_alloc_screen())
+ return ERR;
+
+ SP->_next_screen = _nc_screen_chain;
+ _nc_screen_chain = SP;
+
+ _nc_set_buffer(output, TRUE);
+ SP->_term = cur_term;
+ SP->_lines = slines;
+ SP->_lines_avail = slines;
+ SP->_columns = scolumns;
+ SP->_cursrow = -1;
+ SP->_curscol = -1;
+ SP->_nl = TRUE;
+ SP->_raw = FALSE;
+ SP->_cbreak = 0;
+ SP->_echo = TRUE;
+ SP->_fifohead = -1;
+ SP->_endwin = TRUE;
+ SP->_ofp = output;
+ SP->_cursor = -1; /* cannot know real cursor shape */
#ifdef NCURSES_NO_PADDING
- SP->_no_padding = getenv("NCURSES_NO_PADDING") != 0;
+ SP->_no_padding = getenv("NCURSES_NO_PADDING") != 0;
+ TR(TRACE_CHARPUT | TRACE_MOVE, ("padding will%s be used",
+ SP->_no_padding ? " not" : ""));
#endif
-
- SP->_maxclick = DEFAULT_MAXCLICK;
- SP->_mouse_event = no_mouse_event;
- SP->_mouse_inline = no_mouse_inline;
- SP->_mouse_parse = no_mouse_parse;
- SP->_mouse_resume = no_mouse_resume;
- SP->_mouse_wrap = no_mouse_wrap;
- SP->_mouse_fd = -1;
-
- /* initialize the panel hooks */
- SP->_panelHook.top_panel = (struct panel*)0;
- SP->_panelHook.bottom_panel = (struct panel*)0;
- SP->_panelHook.stdscr_pseudo_panel = (struct panel*)0;
-
+#ifdef NCURSES_EXT_FUNCS
+ SP->_default_color = FALSE;
+ SP->_has_sgr_39_49 = FALSE;
+ SP->_default_fg = COLOR_WHITE;
+ SP->_default_bg = COLOR_BLACK;
+#ifdef USE_COLORFGBG
+ /*
+ * If rxvt's $COLORFGBG variable is set, use it to specify the assumed
+ * default colors. Note that rxvt (mis)uses bold colors, equating a bold
+ * color to that value plus 8. We'll only use the non-bold color for now -
+ * decide later if it is worth having default attributes as well.
+ */
+ if (getenv("COLORFGBG") != 0) {
+ char *p = getenv("COLORFGBG");
+ p = extract_fgbg(p, &(SP->_default_fg));
+ p = extract_fgbg(p, &(SP->_default_bg));
+ }
+#endif
+#endif /* NCURSES_EXT_FUNCS */
+
+ SP->_maxclick = DEFAULT_MAXCLICK;
+ SP->_mouse_event = no_mouse_event;
+ SP->_mouse_inline = no_mouse_inline;
+ SP->_mouse_parse = no_mouse_parse;
+ SP->_mouse_resume = no_mouse_resume;
+ SP->_mouse_wrap = no_mouse_wrap;
+ SP->_mouse_fd = -1;
+
+ /* initialize the panel hooks */
+ SP->_panelHook.top_panel = (struct panel *) 0;
+ SP->_panelHook.bottom_panel = (struct panel *) 0;
+ SP->_panelHook.stdscr_pseudo_panel = (struct panel *) 0;
+
+ /*
+ * If we've no magic cookie support, we suppress attributes that xmc
+ * would affect, i.e., the attributes that affect the rendition of a
+ * space. Note that this impacts the alternate character set mapping
+ * as well.
+ */
+ if (magic_cookie_glitch > 0) {
+
+ SP->_xmc_triggers = termattrs() & (
+ A_ALTCHARSET |
+ A_BLINK |
+ A_BOLD |
+ A_REVERSE |
+ A_STANDOUT |
+ A_UNDERLINE
+ );
+ SP->_xmc_suppress = SP->_xmc_triggers & (chtype) ~ (A_BOLD);
+
+ T(("magic cookie attributes %s", _traceattr(SP->_xmc_suppress)));
+#if USE_XMC_SUPPORT
/*
- * If we've no magic cookie support, we suppress attributes that xmc
- * would affect, i.e., the attributes that affect the rendition of a
- * space. Note that this impacts the alternate character set mapping
- * as well.
+ * To keep this simple, suppress all of the optimization hooks
+ * except for clear_screen and the cursor addressing.
*/
- if (magic_cookie_glitch > 0) {
-
- SP->_xmc_triggers = termattrs() & (
- A_ALTCHARSET |
- A_BLINK |
- A_BOLD |
- A_REVERSE |
- A_STANDOUT |
- A_UNDERLINE
- );
- SP->_xmc_suppress = SP->_xmc_triggers & (chtype)~(A_BOLD);
-
- T(("magic cookie attributes %s", _traceattr(SP->_xmc_suppress)));
-#if USE_XMC_SUPPORT
- /*
- * To keep this simple, suppress all of the optimization hooks
- * except for clear_screen and the cursor addressing.
- */
- clr_eol = 0;
- clr_eos = 0;
- set_attributes = 0;
+ clr_eol = 0;
+ clr_eos = 0;
+ set_attributes = 0;
#else
- magic_cookie_glitch = -1;
- acs_chars = 0;
+ magic_cookie_glitch = ABSENT_NUMERIC;
+ acs_chars = 0;
#endif
- }
- _nc_init_acs();
- memcpy(SP->_acs_map, acs_map, sizeof(chtype)*ACS_LEN);
+ }
+ _nc_init_acs();
+ memcpy(SP->_acs_map, acs_map, sizeof(chtype) * ACS_LEN);
- _nc_idcok = TRUE;
- _nc_idlok = FALSE;
+ _nc_idcok = TRUE;
+ _nc_idlok = FALSE;
- _nc_windows = 0; /* no windows yet */
+ _nc_windows = 0; /* no windows yet */
- SP->oldhash = 0;
- SP->newhash = 0;
+ SP->oldhash = 0;
+ SP->newhash = 0;
- T(("creating newscr"));
- if ((newscr = newwin(slines, scolumns, 0, 0)) == 0)
- return ERR;
+ T(("creating newscr"));
+ if ((newscr = newwin(slines, scolumns, 0, 0)) == 0)
+ return ERR;
- T(("creating curscr"));
- if ((curscr = newwin(slines, scolumns, 0, 0)) == 0)
- return ERR;
+ T(("creating curscr"));
+ if ((curscr = newwin(slines, scolumns, 0, 0)) == 0)
+ return ERR;
- SP->_newscr = newscr;
- SP->_curscr = curscr;
+ SP->_newscr = newscr;
+ SP->_curscr = curscr;
#if USE_SIZECHANGE
- SP->_resize = resizeterm;
+ SP->_resize = resizeterm;
#endif
- newscr->_clear = TRUE;
- curscr->_clear = FALSE;
-
- for (i=0, rsp = rippedoff; rsp->line && (i < N_RIPS); rsp++, i++) {
- if (rsp->hook) {
- WINDOW *w;
- int count = (rsp->line < 0) ? -rsp->line : rsp->line;
-
- if (rsp->line < 0) {
- w = newwin(count,scolumns,SP->_lines_avail - count,0);
- if (w) {
- rsp->w = w;
- rsp->hook(w, scolumns);
- bottom_stolen += count;
- }
- else
+ newscr->_clear = TRUE;
+ curscr->_clear = FALSE;
+
+ for (i = 0, rsp = rippedoff; rsp->line && (i < N_RIPS); rsp++, i++) {
+ if (rsp->hook) {
+ WINDOW *w;
+ int count = (rsp->line < 0) ? -rsp->line : rsp->line;
+
+ if (rsp->line < 0) {
+ w = newwin(count, scolumns, SP->_lines_avail - count, 0);
+ if (w) {
+ rsp->w = w;
+ rsp->hook(w, scolumns);
+ bottom_stolen += count;
+ } else
return ERR;
- } else {
- w = newwin(count,scolumns, 0, 0);
- if (w) {
- rsp->w = w;
- rsp->hook(w, scolumns);
- SP->_topstolen += count;
- }
- else
+ } else {
+ w = newwin(count, scolumns, 0, 0);
+ if (w) {
+ rsp->w = w;
+ rsp->hook(w, scolumns);
+ SP->_topstolen += count;
+ } else
return ERR;
- }
- SP->_lines_avail -= count;
- }
- rsp->line = 0;
+ }
+ SP->_lines_avail -= count;
}
- /* reset the stack */
- rsp = rippedoff;
+ rsp->line = 0;
+ }
+ /* reset the stack */
+ rsp = rippedoff;
- T(("creating stdscr"));
- assert ((SP->_lines_avail + SP->_topstolen + bottom_stolen) == slines);
- if ((stdscr = newwin(LINES = SP->_lines_avail, scolumns, 0, 0)) == 0)
- return ERR;
- SP->_stdscr = stdscr;
+ T(("creating stdscr"));
+ assert((SP->_lines_avail + SP->_topstolen + bottom_stolen) == slines);
+ if ((stdscr = newwin(LINES = SP->_lines_avail, scolumns, 0, 0)) == 0)
+ return ERR;
+ SP->_stdscr = stdscr;
- def_shell_mode();
- def_prog_mode();
+ def_shell_mode();
+ def_prog_mode();
- return OK;
+ return OK;
}
/* The internal implementation interprets line as the number of
lines to rip off from the top or bottom.
*/
int
-_nc_ripoffline(int line, int (*init)(WINDOW *,int))
+_nc_ripoffline(int line, int (*init) (WINDOW *, int))
{
if (line == 0)
- return(OK);
+ return (OK);
if (rsp >= rippedoff + N_RIPS)
- return(ERR);
+ return (ERR);
rsp->line = line;
rsp->hook = init;
- rsp->w = 0;
+ rsp->w = 0;
rsp++;
- return(OK);
+ return (OK);
}
int
-ripoffline(int line, int (*init)(WINDOW *, int))
+ripoffline(int line, int (*init) (WINDOW *, int))
{
T((T_CALLED("ripoffline(%d,%p)"), line, init));
if (line == 0)
returnCode(OK);
- returnCode(_nc_ripoffline ((line<0) ? -1 : 1, init));
+ returnCode(_nc_ripoffline((line < 0) ? -1 : 1, init));
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include <ctype.h>
#include <term.h> /* num_labels, label_*, plab_norm */
-MODULE_ID("$Id: lib_slk.c,v 1.16 1999/03/03 23:44:22 juergen Exp $")
+MODULE_ID("$Id: lib_slk.c,v 1.17 1999/10/30 23:00:16 tom Exp $")
/*
* We'd like to move these into the screen context structure, but cannot,
* because slk_init() is called before initscr()/newterm().
*/
-int _nc_slk_format; /* one more than format specified in slk_init() */
+int _nc_slk_format = 0; /* one more than format specified in slk_init() */
/*
* Paint the info line for the PC style SLK emulation.
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
** lib_vline.c
**
#include <curses.priv.h>
-MODULE_ID("$Id: lib_vline.c,v 1.4 1998/06/28 00:10:12 tom Exp $")
+MODULE_ID("$Id: lib_vline.c,v 1.5 2000/04/29 21:14:11 tom Exp $")
-int wvline(WINDOW *win, chtype ch, int n)
+int
+wvline(WINDOW *win, chtype ch, int n)
{
-int code = ERR;
-short row, col;
-short end;
+ int code = ERR;
+ NCURSES_SIZE_T row, col;
+ NCURSES_SIZE_T end;
- T((T_CALLED("wvline(%p,%s,%d)"), win, _tracechtype(ch), n));
+ T((T_CALLED("wvline(%p,%s,%d)"), win, _tracechtype(ch), n));
- if (win) {
- row = win->_cury;
- col = win->_curx;
- end = row + n - 1;
- if (end > win->_maxy)
- end = win->_maxy;
+ if (win) {
+ row = win->_cury;
+ col = win->_curx;
+ end = row + n - 1;
+ if (end > win->_maxy)
+ end = win->_maxy;
- if (ch == 0)
- ch = ACS_VLINE;
- ch = _nc_render(win, ch);
+ if (ch == 0)
+ ch = ACS_VLINE;
+ ch = _nc_render(win, ch);
- while(end >= row) {
- struct ldat *line = &(win->_line[end]);
- line->text[col] = ch;
- CHANGED_CELL(line, col);
- end--;
- }
-
- _nc_synchook(win);
- code = OK;
+ while (end >= row) {
+ struct ldat *line = &(win->_line[end]);
+ line->text[col] = ch;
+ CHANGED_CELL(line, col);
+ end--;
}
- returnCode(code);
+
+ _nc_synchook(win);
+ code = OK;
+ }
+ returnCode(code);
}
#include <curses.priv.h>
-MODULE_ID("$Id: version.c,v 1.1 1999/10/23 13:28:49 tom Exp $")
+MODULE_ID("$Id: version.c,v 1.2 1999/12/04 21:27:23 tom Exp $")
const char *
curses_version(void)
static char my_version[80];
T((T_CALLED("curses_version()")));
- sprintf(my_version, "ncurses %d.%d.%d",
- NCURSES_VERSION_MAJOR,
- NCURSES_VERSION_MINOR,
+ sprintf(my_version, "ncurses %s.%d",
+ NCURSES_VERSION,
NCURSES_VERSION_PATCH);
returnPtr(my_version);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
-MODULE_ID("$Id: wresize.c,v 1.12 1999/02/27 18:57:31 tom Exp $")
+MODULE_ID("$Id: wresize.c,v 1.16 2000/03/05 00:14:35 tom Exp $")
/*
* Reallocate a curses WINDOW struct to either shrink or grow to the specified
int
wresize(WINDOW *win, int ToLines, int ToCols)
{
- register int row;
- int size_x, size_y;
- struct ldat *pline;
- chtype blank;
+ register int row;
+ int size_x, size_y;
+ struct ldat *pline;
+ chtype blank;
#ifdef TRACE
- T((T_CALLED("wresize(%p,%d,%d)"), win, ToLines, ToCols));
- if (win) {
- TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
- win->_begy, win->_begx,
- win->_maxy, win->_maxx,
- win->_regtop, win->_regbottom));
- if (_nc_tracing & TRACE_UPDATE)
+ T((T_CALLED("wresize(%p,%d,%d)"), win, ToLines, ToCols));
+ if (win) {
+ TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
+ win->_begy, win->_begx,
+ win->_maxy, win->_maxx,
+ win->_regtop, win->_regbottom));
+ if (_nc_tracing & TRACE_UPDATE)
_tracedump("...before", win);
- }
+ }
#endif
- if (!win || --ToLines < 0 || --ToCols < 0)
- returnCode(ERR);
+ if (!win || --ToLines < 0 || --ToCols < 0)
+ returnCode(ERR);
- size_x = win->_maxx;
- size_y = win->_maxy;
+ size_x = win->_maxx;
+ size_y = win->_maxy;
- if (ToLines == size_y
- && ToCols == size_x)
- returnCode(OK);
-
- pline = (win->_flags & _SUBWIN) ? win->_parent->_line : 0;
+ if (ToLines == size_y
+ && ToCols == size_x)
+ returnCode(OK);
+ if ((win->_flags & _SUBWIN)) {
/*
- * If the number of lines has changed, adjust the size of the overall
- * vector:
+ * Check if the new limits will fit into the parent window's size. If
+ * not, do not resize. We could adjust the location of the subwindow,
+ * but the application may not like that.
*/
- if (ToLines != size_y) {
- if (! (win->_flags & _SUBWIN)) {
- for (row = ToLines+1; row <= size_y; row++)
- free((char *)(win->_line[row].text));
- }
-
- win->_line = ld_ALLOC(win->_line, ToLines+1);
- if (win->_line == 0)
- returnCode(ERR);
-
- for (row = size_y+1; row <= ToLines; row++) {
- win->_line[row].text = 0;
- win->_line[row].firstchar = 0;
- win->_line[row].lastchar = ToCols;
- if ((win->_flags & _SUBWIN)) {
- win->_line[row].text =
- &pline[win->_begy + row].text[win->_begx];
- }
- }
+ if (win->_pary + ToLines > win->_parent->_maxy
+ || win->_parx + ToCols > win->_parent->_maxx) {
+ returnCode(ERR);
}
-
- /*
- * Adjust the width of the columns:
- */
- blank = _nc_background(win);
- for (row = 0; row <= ToLines; row++) {
- chtype *s = win->_line[row].text;
- int begin = (s == 0) ? 0 : size_x + 1;
- int end = ToCols;
-
- if_USE_SCROLL_HINTS(win->_line[row].oldindex = row);
-
- if (ToCols != size_x || s == 0) {
- if (! (win->_flags & _SUBWIN)) {
- win->_line[row].text = s = c_ALLOC(s, ToCols+1);
- if (win->_line[row].text == 0)
- returnCode(ERR);
- } else if (s == 0) {
- win->_line[row].text = s =
- &pline[win->_begy + row].text[win->_begx];
- }
-
- if (end >= begin) { /* growing */
- if (win->_line[row].firstchar < begin)
- win->_line[row].firstchar = begin;
- win->_line[row].lastchar = ToCols;
- do {
- s[end] = blank;
- } while (--end >= begin);
- } else { /* shrinking */
- win->_line[row].firstchar = 0;
- win->_line[row].lastchar = ToCols;
- }
- }
+ pline = win->_parent->_line;
+ } else {
+ pline = 0;
+ }
+
+ /*
+ * If the number of lines has changed, adjust the size of the overall
+ * vector:
+ */
+ if (ToLines != size_y) {
+ if (!(win->_flags & _SUBWIN)) {
+ for (row = ToLines + 1; row <= size_y; row++)
+ free((char *) (win->_line[row].text));
}
- /*
- * Finally, adjust the parameters showing screen size and cursor
- * position:
- */
- win->_maxx = ToCols;
- win->_maxy = ToLines;
-
- if (win->_regtop > win->_maxy)
- win->_regtop = win->_maxy;
- if (win->_regbottom > win->_maxy
- || win->_regbottom == size_y)
- win->_regbottom = win->_maxy;
-
- if (win->_curx > win->_maxx)
- win->_curx = win->_maxx;
- if (win->_cury > win->_maxy)
- win->_cury = win->_maxy;
+ win->_line = ld_ALLOC(win->_line, ToLines + 1);
+ if (win->_line == 0)
+ returnCode(ERR);
+
+ for (row = size_y + 1; row <= ToLines; row++) {
+ win->_line[row].text = 0;
+ win->_line[row].firstchar = 0;
+ win->_line[row].lastchar = ToCols;
+ if ((win->_flags & _SUBWIN)) {
+ win->_line[row].text =
+ &pline[win->_pary + row].text[win->_parx];
+ }
+ }
+ }
+
+ /*
+ * Adjust the width of the columns:
+ */
+ blank = _nc_background(win);
+ for (row = 0; row <= ToLines; row++) {
+ chtype *s = win->_line[row].text;
+ int begin = (s == 0) ? 0 : size_x + 1;
+ int end = ToCols;
+
+ if_USE_SCROLL_HINTS(win->_line[row].oldindex = row);
+
+ if (ToCols != size_x || s == 0) {
+ if (!(win->_flags & _SUBWIN)) {
+ win->_line[row].text = s = c_ALLOC(s, ToCols + 1);
+ if (win->_line[row].text == 0)
+ returnCode(ERR);
+ } else if (s == 0) {
+ win->_line[row].text = s =
+ &pline[win->_pary + row].text[win->_parx];
+ }
+
+ if (end >= begin) { /* growing */
+ if (win->_line[row].firstchar < begin)
+ win->_line[row].firstchar = begin;
+ win->_line[row].lastchar = ToCols;
+ do {
+ s[end] = blank;
+ } while (--end >= begin);
+ } else { /* shrinking */
+ win->_line[row].firstchar = 0;
+ win->_line[row].lastchar = ToCols;
+ }
+ }
+ }
+
+ /*
+ * Finally, adjust the parameters showing screen size and cursor
+ * position:
+ */
+ win->_maxx = ToCols;
+ win->_maxy = ToLines;
+
+ if (win->_regtop > win->_maxy)
+ win->_regtop = win->_maxy;
+ if (win->_regbottom > win->_maxy
+ || win->_regbottom == size_y)
+ win->_regbottom = win->_maxy;
+
+ if (win->_curx > win->_maxx)
+ win->_curx = win->_maxx;
+ if (win->_cury > win->_maxy)
+ win->_cury = win->_maxy;
#ifdef TRACE
- TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
- win->_begy, win->_begx,
- win->_maxy, win->_maxx,
- win->_regtop, win->_regbottom));
- if (_nc_tracing & TRACE_UPDATE)
- _tracedump("...after:", win);
+ TR(TRACE_UPDATE, ("...beg (%d, %d), max(%d,%d), reg(%d,%d)",
+ win->_begy, win->_begx,
+ win->_maxy, win->_maxx,
+ win->_regtop, win->_regbottom));
+ if (_nc_tracing & TRACE_UPDATE)
+ _tracedump("...after:", win);
#endif
- returnCode(OK);
+ returnCode(OK);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
/*
- * $Id: curses.priv.h,v 1.144 1999/10/22 23:15:37 tom Exp $
+ * $Id: curses.priv.h,v 1.162 2000/06/24 21:06:10 tom Exp $
*
* curses.priv.h
*
#include <nc_panel.h>
/* Some systems have a broken 'select()', but workable 'poll()'. Use that */
-#if HAVE_POLL && HAVE_SYS_STROPTS_H && HAVE_POLL_H
+#if HAVE_WORKING_POLL
#define USE_FUNC_POLL 1
+#ifdef HAVE_POLL_H
+#include <poll.h>
+#else
+#include <sys/poll.h>
+#endif
#else
#define USE_FUNC_POLL 0
#endif
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 */
+ /* used in tty_update.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 _rep_cost; /* cost of (repeat_char) */
int _hpa_ch_cost; /* cost of (column_address) */
int _cup_ch_cost; /* cost of (cursor_address) */
+ int _cuf_ch_cost; /* cost of (parm_cursor_right) */
+ int _inline_cost; /* cost of inline-move */
int _smir_cost; /* cost of (enter_insert_mode) */
int _rmir_cost; /* cost of (exit_insert_mode) */
int _ip_cost; /* cost of (insert_padding) */
int _color_count; /* count of colors in palette */
unsigned short *_color_pairs; /* screen's color pair list */
int _pair_count; /* count of color pairs */
- int _default_color; /* use default colors */
+#ifdef 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 */
+#endif
chtype _xmc_suppress; /* attributes to suppress if xmc */
chtype _xmc_triggers; /* attributes to process if xmc */
chtype _acs_map[ACS_LEN];
unsigned long *oldhash, *newhash;
bool _cleanup; /* cleanup after int/quit signal */
+ int (*_outch)(int); /* output handler if not putc */
};
extern SCREEN *_nc_screen_chain;
#define F_OK 0 /* Test for existence. */
#endif
+#if HAVE_FCNTL_H
+#include <fcntl.h> /* may define O_BINARY */
+#endif
+
+#ifndef O_BINARY
+#define O_BINARY 0
+#endif
+
#define TextOf(c) ((c) & (chtype)A_CHARTEXT)
#define AttrOf(c) ((c) & (chtype)A_ATTRIBUTES)
line->lastchar = end
#define SIZEOF(v) (sizeof(v)/sizeof(v[0]))
-#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 FreeIfNeeded(p) if(p != 0) free(p)
+
+#define FreeIfNeeded(p) if ((p) != 0) free(p)
+
+/* 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
#include <nc_alloc.h>
#define XMC_CHANGES(c) ((c) & SP->_xmc_suppress)
-#define toggle_attr_on(S,at) \
+#define toggle_attr_on(S,at) {\
if (PAIR_NUMBER(at) > 0)\
(S) = ((S) & ALL_BUT_COLOR) | (at);\
else\
(S) |= (at);\
- T(("new attribute is %s", _traceattr((S))))
+ T(("new attribute is %s", _traceattr((S))));}
-#define toggle_attr_off(S,at) \
+#define toggle_attr_off(S,at) {\
if (IGNORE_COLOR_OFF == TRUE) {\
if (PAIR_NUMBER(at) == 0xff) /* turn off color */\
(S) &= ~(at);\
else /* leave color alone */\
(S) &= ~(at);\
}\
- T(("new attribute is %s", _traceattr((S))));
+ T(("new attribute is %s", _traceattr((S))));}
#define DelCharCost(count) \
((parm_dch != 0) \
}
#else
#define UpdateAttrs(c) if (SP->_current_attr != AttrOf(c)) \
- vidattr(AttrOf(c));
+ vidattr(AttrOf(c))
#endif
-/*
- * Check whether the given character can be output by clearing commands. This
- * includes test for being a space and not including any 'bad' attributes, such
- * as A_REVERSE. All attribute flags which don't affect appearance of a space
- * or can be output by clearing (A_COLOR in case of bce-terminal) are excluded.
- */
-#define can_clear_with(ch) \
- ((ch & ~(NONBLANK_ATTR|(back_color_erase ? A_COLOR:0))) == BLANK)
-
-#ifdef NCURSES_EXPANDED
+#if defined(NCURSES_EXPANDED) && defined(NCURSES_EXT_FUNCS)
#undef toggle_attr_on
#define toggle_attr_on(S,at) _nc_toggle_attr_on(&(S), at)
#define toggle_attr_off(S,at) _nc_toggle_attr_off(&(S), at)
extern void _nc_toggle_attr_off(attr_t *, attr_t);
-#undef can_clear_with
-#define can_clear_with(ch) _nc_can_clear_with(ch)
-extern int _nc_can_clear_with(chtype);
-
#undef DelCharCost
#define DelCharCost(count) _nc_DelCharCost(count)
extern int _nc_DelCharCost(int);
#define getcwd(buf,len) getwd(buf)
#endif
-/* doalloc.c */
-extern void *_nc_doalloc(void *, size_t);
-#if !HAVE_STRDUP
-#define strdup _nc_strdup
-extern char *_nc_strdup(const char *);
-#endif
-
/* doupdate.c */
#if USE_XMC_SUPPORT
extern void _nc_do_xmc_glitch(attr_t);
extern char * _nc_printf_string(const char *fmt, va_list ap);
/* tries.c */
-extern void _nc_add_to_try(struct tries **tree, char *str, unsigned short code);
+extern void _nc_add_to_try(struct tries **tree, const char *str, unsigned short code);
extern char *_nc_expand_try(struct tries *tree, unsigned short code, int *count, size_t len);
extern int _nc_remove_key(struct tries **tree, unsigned short code);
extern int _nc_remove_string(struct tries **tree, char *string);
extern int _nc_setupscreen(short, short const, FILE *);
extern int _nc_timed_wait(int, int, int *);
extern int _nc_waddch_nosync(WINDOW *, const chtype);
-extern void _nc_do_color(int, bool, int (*)(int));
+extern void _nc_do_color(int, int, bool, int (*)(int));
extern void _nc_freeall(void);
extern void _nc_freewin(WINDOW *win);
extern void _nc_hash_map(void);
extern void _nc_init_keytry(void);
extern void _nc_keep_tic_dir(const char *);
extern void _nc_make_oldhash(int i);
+extern void _nc_flush(void);
extern void _nc_outstr(const char *str);
extern void _nc_scroll_oldhash(int n, int top, int bot);
extern void _nc_scroll_optimize(void);
extern void _nc_scroll_window(WINDOW *, int const, short const, short const, chtype);
-extern void _nc_set_buffer(FILE *ofp, bool buffered);
+extern void _nc_set_buffer(FILE *, bool);
extern void _nc_signal_handler(bool);
extern void _nc_synchook(WINDOW *win);
extern void _nc_trace_tries(struct tries *tree);
extern void _nc_update_screensize(void);
#endif
+#ifdef USE_WIDEC_SUPPORT
+extern int _nc_utf8_outch(int);
+#endif
+
/* scroll indices */
extern int *_nc_oldnums;
_nc_set_buffer(SP->_ofp, flag)
#define NC_OUTPUT ((SP != 0) ? SP->_ofp : stdout)
-#define _nc_flush() (void)fflush(NC_OUTPUT)
/*
* On systems with a broken linker, define 'SP' as a function to force the
/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
****************************************************************************/
/****************************************************************************
- * Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998,1999 *
+ * Author: Thomas E. Dickey <dickey@clark.net> 1996-2000 *
****************************************************************************/
/* LINTLIBRARY */
void _nc_scroll_optimize(void)
{ /* void */ }
+#undef _nc_linedump
+void _nc_linedump(void)
+ { /* void */ }
+
/* ./tty/hashmap.c */
#include <term.h>
/* ./base/lib_color.c */
+#include <tic.h>
+
#undef COLOR_PAIRS
int COLOR_PAIRS;
#undef COLORS
#undef _nc_do_color
void _nc_do_color(
+ int old_pair,
int pair,
bool reverse,
int (*outc)(
const chtype z)
{ return(*(int *)0); }
+#undef erase
+int erase(void)
+ { return(*(int *)0); }
+
#undef getbkgd
chtype getbkgd(
WINDOW *z)
int z)
{ /* void */ }
+#undef touchline
+int touchline(
+ WINDOW *a1,
+ int a2,
+ int z)
+ { return(*(int *)0); }
+
+#undef touchwin
+int touchwin(
+ WINDOW *z)
+ { return(*(int *)0); }
+
#undef untouchwin
int untouchwin(
WINDOW *z)
/* ./base/lib_initscr.c */
-#include <tic.h>
-
#undef initscr
WINDOW *initscr(void)
{ return(*(WINDOW **)0); }
int xnew)
{ return(*(int *)0); }
+#undef _nc_optimize_enable
+int _nc_optimize_enable;
+
/* ./base/lib_mvwin.c */
#undef mvwin
/* ./trace/lib_traceatr.c */
-#undef _nc_lib_traceatr
-void _nc_lib_traceatr(void)
- { /* void */ }
+#undef _traceattr2
+char *_traceattr2(
+ int bufnum,
+ attr_t newmode)
+ { return(*(char **)0); }
+
+#undef _traceattr
+char *_traceattr(
+ attr_t newmode)
+ { return(*(char **)0); }
+
+#undef _nc_retrace_attr_t
+attr_t _nc_retrace_attr_t(
+ attr_t code)
+ { return(*(attr_t *)0); }
+
+#undef _tracechtype2
+char *_tracechtype2(
+ int bufnum,
+ chtype ch)
+ { return(*(char **)0); }
+
+#undef _tracechtype
+char *_tracechtype(
+ chtype ch)
+ { return(*(char **)0); }
/* ./trace/lib_tracedmp.c */
-#undef _nc_lib_tracedmp
-void _nc_lib_tracedmp(void)
+#undef _tracedump
+void _tracedump(
+ const char *name,
+ WINDOW *win)
{ /* void */ }
/* ./trace/lib_tracemse.c */
-#undef _nc_lib_tracemouse
-void _nc_lib_tracemouse(void)
- { /* void */ }
+#undef _tracemouse
+char *_tracemouse(
+ MEVENT const *ep)
+ { return(*(char **)0); }
/* ./tty/lib_tstp.c */
/* ./base/lib_ungetch.c */
+#undef _nc_fifo_dump
+void _nc_fifo_dump(void)
+ { /* void */ }
+
#undef ungetch
int ungetch(
int ch)
/* ./tty/tty_update.c */
#include <sys/time.h>
+#include <sys/times.h>
#undef doupdate
int doupdate(void)
int use_default_colors(void)
{ return(*(int *)0); }
+#undef assume_default_colors
+int assume_default_colors(
+ int fg,
+ int bg)
+ { return(*(int *)0); }
+
/* ./base/lib_freeall.c */
#include <term_entry.h>
#undef _nc_add_to_try
void _nc_add_to_try(
struct tries **tree,
- char *str,
+ const char *str,
unsigned short code)
{ /* void */ }
#undef _nc_free_entries
void _nc_free_entries(
- ENTRY *head)
+ ENTRY *headp)
{ /* void */ }
#undef _nc_entry_match
{ /* void */ }
#undef _nc_resolve_uses
-int _nc_resolve_uses(void)
+int _nc_resolve_uses(
+ bool fullresolve)
{ return(*(int *)0); }
/* ./tinfo/comp_scan.c */
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
+bool _nc_disable_period;
#undef _nc_get_token
int _nc_get_token(void)
#undef _nc_trans_string
char _nc_trans_string(
- char *ptr)
+ char *ptr,
+ char *last)
{ return(*(char *)0); }
#undef _nc_push_token
#include <init_keytry.h>
-#endif
+#undef _nc_tinfo_fkeys
+struct tinfo_fkeys _nc_tinfo_fkeys[];
-#undef _nc_tinfo_fkeysf
-struct tinfo_fkeys *_nc_tinfo_fkeysf(void)
- { return(*(struct tinfo_fkeys **)0); }
+#endif
#undef _nc_init_keytry
void _nc_init_keytry(void)
int ms)
{ return(*(int *)0); }
+#undef _nc_flush
+void _nc_flush(void)
+ { /* void */ }
+
#undef _nc_outch
int _nc_outch(
int ch)
/* ./trace/lib_trace.c */
-#include <fcntl.h>
-
#undef _nc_tracing
unsigned _nc_tracing;
+#undef _nc_tputs_trace
+const char *_nc_tputs_trace = {0};
+#undef _nc_outchars
+long _nc_outchars;
#undef trace
void trace(
const char *buf)
{ return(*(const char **)0); }
+#undef _tracef
+void _tracef(
+ const char *fmt,
+ ...)
+ { /* void */ }
+
+#undef _nc_retrace_int
+int _nc_retrace_int(
+ int code)
+ { return(*(int *)0); }
+
+#undef _nc_retrace_ptr
+char *_nc_retrace_ptr(
+ char *code)
+ { return(*(char **)0); }
+
+#undef _nc_retrace_win
+WINDOW *_nc_retrace_win(
+ WINDOW *code)
+ { return(*(WINDOW **)0); }
+
/* ./trace/lib_tracebits.c */
+typedef struct {
+ unsigned int val;
+ const char *name;
+} BITNAMES;
+
#undef _nc_tracebits
char *_nc_tracebits(void)
{ return(*(char **)0); }
char *const strfnames[] = {0};
/* ./tinfo/parse_entry.c */
-#undef _nc_curr_token
-struct token _nc_curr_token;
#undef _nc_parse_entry
int _nc_parse_entry(
const char *t)
{ return(*(int *)0); }
-typedef struct {const char *from; const char *to;} assoc;
+typedef struct {
+ const char *from;
+ const char *to;
+} assoc;
/* ./tinfo/read_entry.c */
-# $Id: modules,v 1.70 1999/10/23 12:39:12 tom Exp $
+# $Id: modules,v 1.72 2000/02/13 01:03:28 tom Exp $
##############################################################################
-# Copyright (c) 1998,1999 Free Software Foundation, Inc. #
+# Copyright (c) 1998,1999,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"), #
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998
+# Author: Thomas E. Dickey <dickey@clark.net> 1996-1998
#
@ base
lib_options lib $(tinfo) ../include/term.h
lib_raw lib $(tinfo) ../include/term.h
lib_setup lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h
-lib_termcap lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
+lib_termcap lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h $(INCDIR)/capdefaults.c
lib_termname lib $(tinfo) $(INCDIR)/tic.h
lib_ti lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
lib_tparm lib $(tinfo) ../include/term.h $(INCDIR)/tic.h
lib_twait lib $(serial)
name_match lib $(tinfo) ../include/term.h $(INCDIR)/tic.h
names lib .
-parse_entry lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h ../include/parametrized.h
+parse_entry lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h ../include/parametrized.h $(INCDIR)/capdefaults.c
read_entry lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
read_termcap lib $(tinfo) ../include/term.h $(INCDIR)/term_entry.h $(INCDIR)/tic.h
setbuf lib $(tinfo)
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
#include <curses.priv.h>
-MODULE_ID("$Id: add_tries.c,v 1.1 1998/11/08 00:04:18 tom Exp $")
+MODULE_ID("$Id: add_tries.c,v 1.2 2000/03/18 22:23:56 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))
-void _nc_add_to_try(struct tries **tree, char *str, unsigned short code)
+void
+_nc_add_to_try(struct tries **tree, const char *str, unsigned short code)
{
- static bool out_of_memory = FALSE;
- struct tries *ptr, *savedptr;
- unsigned char *txt = (unsigned char *)str;
-
- if (txt == 0 || *txt == '\0' || out_of_memory || code == 0)
- return;
-
- if ((*tree) != 0) {
- ptr = savedptr = (*tree);
-
- for (;;) {
- unsigned char cmp = *txt;
-
- while (!CMP_TRY(ptr->ch, cmp)
- && ptr->sibling != 0)
- ptr = ptr->sibling;
-
- if (CMP_TRY(ptr->ch, cmp)) {
- if (*(++txt) == '\0') {
- ptr->value = code;
- return;
- }
- if (ptr->child != 0)
- ptr = ptr->child;
- else
- break;
- } else {
- if ((ptr->sibling = typeCalloc(struct tries,1)) == 0) {
- out_of_memory = TRUE;
- return;
- }
-
- savedptr = ptr = ptr->sibling;
- SET_TRY(ptr,txt);
- ptr->value = 0;
-
- break;
- }
- } /* end for (;;) */
- } else { /* (*tree) == 0 :: First sequence to be added */
- savedptr = ptr = (*tree) = typeCalloc(struct tries,1);
-
- if (ptr == 0) {
- out_of_memory = TRUE;
- return;
+ static bool out_of_memory = FALSE;
+ struct tries *ptr, *savedptr;
+ unsigned const char *txt = (unsigned const char *) str;
+
+ if (txt == 0 || *txt == '\0' || out_of_memory || code == 0)
+ return;
+
+ if ((*tree) != 0) {
+ ptr = savedptr = (*tree);
+
+ for (;;) {
+ unsigned char cmp = *txt;
+
+ while (!CMP_TRY(ptr->ch, cmp)
+ && ptr->sibling != 0)
+ ptr = ptr->sibling;
+
+ if (CMP_TRY(ptr->ch, cmp)) {
+ if (*(++txt) == '\0') {
+ ptr->value = code;
+ return;
+ }
+ if (ptr->child != 0)
+ ptr = ptr->child;
+ else
+ break;
+ } else {
+ if ((ptr->sibling = typeCalloc(struct tries, 1)) == 0) {
+ out_of_memory = TRUE;
+ return;
}
- SET_TRY(ptr,txt);
+ savedptr = ptr = ptr->sibling;
+ SET_TRY(ptr, txt);
ptr->value = 0;
+
+ break;
+ }
+ } /* end for (;;) */
+ } else { /* (*tree) == 0 :: First sequence to be added */
+ savedptr = ptr = (*tree) = typeCalloc(struct tries, 1);
+
+ if (ptr == 0) {
+ out_of_memory = TRUE;
+ return;
}
- /* at this point, we are adding to the try. ptr->child == 0 */
+ SET_TRY(ptr, txt);
+ ptr->value = 0;
+ }
- while (*txt) {
- ptr->child = typeCalloc(struct tries,1);
+ /* at this point, we are adding to the try. ptr->child == 0 */
- ptr = ptr->child;
+ while (*txt) {
+ ptr->child = typeCalloc(struct tries, 1);
- if (ptr == 0) {
- out_of_memory = TRUE;
+ ptr = ptr->child;
- while ((ptr = savedptr) != 0) {
- savedptr = ptr->child;
- free(ptr);
- }
+ if (ptr == 0) {
+ out_of_memory = TRUE;
- return;
- }
+ while ((ptr = savedptr) != 0) {
+ savedptr = ptr->child;
+ free(ptr);
+ }
- SET_TRY(ptr,txt);
- ptr->value = 0;
+ return;
}
- ptr->value = code;
- return;
+ SET_TRY(ptr, txt);
+ ptr->value = 0;
+ }
+
+ ptr->value = code;
+ return;
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* alloc_entry.c -- allocation functions for terminfo entries
*
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: alloc_entry.c,v 1.30 1999/03/01 02:03:45 tom Exp $")
+MODULE_ID("$Id: alloc_entry.c,v 1.32 2000/03/12 00:16:31 tom Exp $")
#define ABSENT_OFFSET -1
#define CANCELLED_OFFSET -2
#define MAX_STRTAB 4096 /* documented maximum entry size */
-static char stringbuf[MAX_STRTAB]; /* buffer for string capabilities */
-static size_t next_free; /* next free character in stringbuf */
+static char stringbuf[MAX_STRTAB]; /* buffer for string capabilities */
+static size_t next_free; /* next free character in stringbuf */
-void _nc_init_entry(TERMTYPE *const tp)
+void
+_nc_init_entry(TERMTYPE * const tp)
/* initialize a terminal type data block */
{
-int i;
+ int 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;
+ 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(char,BOOLCOUNT);
- if (tp->Numbers == 0)
- tp->Numbers = typeMalloc(short,NUMCOUNT);
- if (tp->Strings == 0)
- tp->Strings = typeMalloc(char *,STRCOUNT);
+ if (tp->Booleans == 0)
+ tp->Booleans = typeMalloc(char, 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_boolean(i, tp)
+ tp->Booleans[i] = FALSE;
- for_each_number(i,tp)
- tp->Numbers[i] = ABSENT_NUMERIC;
+ for_each_number(i, tp)
+ tp->Numbers[i] = ABSENT_NUMERIC;
- for_each_string(i,tp)
- tp->Strings[i] = ABSENT_STRING;
+ for_each_string(i, tp)
+ tp->Strings[i] = ABSENT_STRING;
- next_free = 0;
+ next_free = 0;
}
-ENTRY *_nc_copy_entry(ENTRY *oldp)
+ENTRY *
+_nc_copy_entry(ENTRY * oldp)
{
- ENTRY *newp = typeCalloc(ENTRY,1);
+ ENTRY *newp = typeCalloc(ENTRY, 1);
- if (newp != 0) {
- *newp = *oldp;
- _nc_copy_termtype(&(newp->tterm), &(oldp->tterm));
- }
- return newp;
+ if (newp != 0) {
+ *newp = *oldp;
+ _nc_copy_termtype(&(newp->tterm), &(oldp->tterm));
+ }
+ return newp;
}
-char *_nc_save_str(const char *const string)
+char *
+_nc_save_str(const char *const string)
/* save a copy of string in the string buffer */
{
-size_t old_next_free = next_free;
-size_t len = strlen(string) + 1;
-
- if (next_free + len < MAX_STRTAB)
- {
- strcpy(&stringbuf[next_free], string);
- DEBUG(7, ("Saved string %s", _nc_visbuf(string)));
- DEBUG(7, ("at location %d", (int) next_free));
- next_free += len;
- }
- return(stringbuf + old_next_free);
+ size_t old_next_free = next_free;
+ size_t len = strlen(string) + 1;
+
+ if (next_free + len < MAX_STRTAB) {
+ strcpy(&stringbuf[next_free], string);
+ DEBUG(7, ("Saved string %s", _nc_visbuf(string)));
+ DEBUG(7, ("at location %d", (int) next_free));
+ next_free += len;
+ }
+ return (stringbuf + old_next_free);
}
-void _nc_wrap_entry(ENTRY *const ep)
+void
+_nc_wrap_entry(ENTRY * const ep)
/* copy the string parts to allocated storage, preserving pointers to it */
{
-int offsets[MAX_ENTRY_SIZE/2], useoffsets[MAX_USES];
-int i, n;
-TERMTYPE *tp = &(ep->tterm);
-
- n = tp->term_names - stringbuf;
- for_each_string(i, &(ep->tterm)) {
- if (tp->Strings[i] == ABSENT_STRING)
- offsets[i] = ABSENT_OFFSET;
- else if (tp->Strings[i] == CANCELLED_STRING)
- offsets[i] = CANCELLED_OFFSET;
- else
- offsets[i] = tp->Strings[i] - stringbuf;
- }
+ int offsets[MAX_ENTRY_SIZE / 2], useoffsets[MAX_USES];
+ int i, n;
+ TERMTYPE *tp = &(ep->tterm);
+
+ n = tp->term_names - stringbuf;
+ for_each_string(i, &(ep->tterm)) {
+ if (tp->Strings[i] == ABSENT_STRING)
+ offsets[i] = ABSENT_OFFSET;
+ else if (tp->Strings[i] == CANCELLED_STRING)
+ offsets[i] = CANCELLED_OFFSET;
+ else
+ offsets[i] = tp->Strings[i] - stringbuf;
+ }
- for (i=0; i < ep->nuses; i++) {
- if (ep->uses[i].parent == (void *)0)
- useoffsets[i] = ABSENT_OFFSET;
- else
- useoffsets[i] = (char *)(ep->uses[i].parent) - stringbuf;
- }
+ for (i = 0; i < ep->nuses; i++) {
+ if (ep->uses[i].name == 0)
+ useoffsets[i] = ABSENT_OFFSET;
+ else
+ useoffsets[i] = ep->uses[i].name - stringbuf;
+ }
- if ((tp->str_table = typeMalloc(char, next_free)) == (char *)0)
- _nc_err_abort("Out of memory");
- (void) memcpy(tp->str_table, stringbuf, next_free);
-
- tp->term_names = tp->str_table + n;
- for_each_string(i, &(ep->tterm)) {
- if (offsets[i] == ABSENT_OFFSET)
- tp->Strings[i] = ABSENT_STRING;
- else if (offsets[i] == CANCELLED_OFFSET)
- tp->Strings[i] = CANCELLED_STRING;
- else
- tp->Strings[i] = tp->str_table + offsets[i];
- }
+ if ((tp->str_table = typeMalloc(char, next_free)) == (char *) 0)
+ _nc_err_abort("Out of memory");
+ (void) memcpy(tp->str_table, stringbuf, next_free);
+
+ tp->term_names = tp->str_table + n;
+ for_each_string(i, &(ep->tterm)) {
+ if (offsets[i] == ABSENT_OFFSET)
+ tp->Strings[i] = ABSENT_STRING;
+ else if (offsets[i] == CANCELLED_OFFSET)
+ tp->Strings[i] = CANCELLED_STRING;
+ else
+ tp->Strings[i] = tp->str_table + offsets[i];
+ }
#if NCURSES_XNAMES
- if ((n = NUM_EXT_NAMES(tp)) != 0) {
- unsigned length = 0;
- for (i = 0; i < n; i++) {
- length += strlen(tp->ext_Names[i]) + 1;
- offsets[i] = tp->ext_Names[i] - stringbuf;
- }
- if ((tp->ext_str_table = typeMalloc(char, length)) == 0)
- _nc_err_abort("Out of 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;
- }
+ if ((n = NUM_EXT_NAMES(tp)) != 0) {
+ unsigned length = 0;
+ for (i = 0; i < n; i++) {
+ length += strlen(tp->ext_Names[i]) + 1;
+ offsets[i] = tp->ext_Names[i] - stringbuf;
+ }
+ if ((tp->ext_str_table = typeMalloc(char, length)) == 0)
+ _nc_err_abort("Out of 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;
}
+ }
#endif
- for (i=0; i < ep->nuses; i++) {
- if (useoffsets[i] == ABSENT_OFFSET)
- ep->uses[i].parent = (void *)0;
- else
- ep->uses[i].parent = (char *)(tp->str_table + useoffsets[i]);
- }
+ for (i = 0; i < ep->nuses; i++) {
+ if (useoffsets[i] == ABSENT_OFFSET)
+ ep->uses[i].name = 0;
+ else
+ ep->uses[i].name = (tp->str_table + useoffsets[i]);
+ }
}
-void _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from)
+void
+_nc_merge_entry(TERMTYPE * const to, TERMTYPE * const from)
/* merge capabilities from `from' entry into `to' entry */
{
- int i;
+ int i;
#if NCURSES_XNAMES
_nc_align_termtype(to, from);
#endif
- for_each_boolean(i, from)
- {
- int mergebool = from->Booleans[i];
+ for_each_boolean(i, from) {
+ int mergebool = from->Booleans[i];
if (mergebool == CANCELLED_BOOLEAN)
to->Booleans[i] = FALSE;
to->Booleans[i] = mergebool;
}
- for_each_number(i, from)
- {
- int mergenum = from->Numbers[i];
+ for_each_number(i, from) {
+ int mergenum = from->Numbers[i];
if (mergenum == CANCELLED_NUMERIC)
to->Numbers[i] = ABSENT_NUMERIC;
* storage. This is OK right now, but will be a problem if we
* we ever want to deallocate entries.
*/
- for_each_string(i, from)
- {
- char *mergestring = from->Strings[i];
+ for_each_string(i, from) {
+ char *mergestring = from->Strings[i];
if (mergestring == CANCELLED_STRING)
to->Strings[i] = ABSENT_STRING;
/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1999,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 *
* Author: Thomas E. Dickey <dickey@clark.net> 1999 *
****************************************************************************/
-
/*
* align_ttype.c -- functions for TERMTYPE
*
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: alloc_ttype.c,v 1.6 1999/03/01 22:10:44 tom Exp $")
+MODULE_ID("$Id: alloc_ttype.c,v 1.8 2000/03/25 17:03:11 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)
+static int
+merge_names(char **dst, char **a, int na, char **b, int nb)
{
int n = 0;
while (na && nb) {
return n;
}
-static bool find_name(char **table, int length, char *name)
+static bool
+find_name(char **table, int length, char *name)
{
while (length-- > 0) {
if (!strcmp(*table++, name)) {
return FALSE;
}
-static void realign_data(TERMTYPE *to, char **ext_Names, int ext_Booleans, int ext_Numbers, int ext_Strings)
+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) {
to->num_Booleans += (ext_Booleans - to->ext_Booleans);
to->Booleans = typeRealloc(char, to->num_Booleans, to->Booleans);
- for (n = to->ext_Booleans-1,
- m = ext_Booleans-1,
- base = to->num_Booleans - (m+1); m >= 0; m--) {
+ 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 {
if (to->ext_Numbers != ext_Numbers) {
to->num_Numbers += (ext_Numbers - to->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])) {
+ 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 = ext_Numbers;
+ to->ext_Numbers = ext_Numbers;
}
if (to->ext_Strings != ext_Strings) {
to->num_Strings += (ext_Strings - to->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 = 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;
/*
* Returns the first index in ext_Names[] for the given token-type
*/
-static int _nc_first_ext_name(TERMTYPE *tp, int token_type)
+static int
+_nc_first_ext_name(TERMTYPE * tp, int token_type)
{
int first;
/*
* Returns the last index in ext_Names[] for the given token-type
*/
-static int _nc_last_ext_name(TERMTYPE *tp, int token_type)
+static int
+_nc_last_ext_name(TERMTYPE * tp, int token_type)
{
int last;
switch (token_type) {
case BOOLEAN:
- last = tp->ext_Booleans;
+ last = tp->ext_Booleans;
break;
case NUMBER:
- last = tp->ext_Booleans + tp->ext_Numbers;
+ last = tp->ext_Booleans + tp->ext_Numbers;
break;
default:
case STRING:
- last = NUM_EXT_NAMES(tp);
+ 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)
+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);
+ unsigned last = _nc_last_ext_name(tp, token_type);
for (j = first; j < last; j++) {
if (!strcmp(name, tp->ext_Names[j])) {
* 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)
+static int
+_nc_ext_data_index(TERMTYPE * tp, int n, int token_type)
{
switch (token_type) {
case BOOLEAN:
break;
case NUMBER:
n += (tp->num_Numbers - tp->ext_Numbers)
- - (tp->ext_Booleans);
+ - (tp->ext_Booleans);
break;
default:
case STRING:
n += (tp->num_Strings - tp->ext_Strings)
- - (tp->ext_Booleans + tp->ext_Numbers);
+ - (tp->ext_Booleans + tp->ext_Numbers);
}
return n;
}
* Adjust tables to remove (not free) an extended name and its corresponding
* data.
*/
-static void _nc_del_ext_name(TERMTYPE *tp, char *name, int token_type)
+static void
+_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 = NUM_EXT_NAMES(tp) - 1;
for (j = first; j < last; j++) {
- tp->ext_Names[j] = tp->ext_Names[j+1];
+ 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->Booleans[j] = tp->Booleans[j + 1];
tp->ext_Booleans -= 1;
tp->num_Booleans -= 1;
break;
case NUMBER:
last = tp->num_Numbers - 1;
for (j = first; j < last; j++)
- tp->Numbers[j] = tp->Numbers[j+1];
+ tp->Numbers[j] = tp->Numbers[j + 1];
tp->ext_Numbers -= 1;
tp->num_Numbers -= 1;
break;
case STRING:
last = tp->num_Strings - 1;
for (j = first; j < last; j++)
- tp->Strings[j] = tp->Strings[j+1];
+ tp->Strings[j] = tp->Strings[j + 1];
tp->ext_Strings -= 1;
tp->num_Strings -= 1;
break;
* 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)
+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 last = _nc_last_ext_name(tp, token_type);
unsigned total = NUM_EXT_NAMES(tp) + 1;
unsigned j, k;
}
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];
+ for (k = total - 1; k > j; k--)
+ tp->ext_Names[k] = tp->ext_Names[k - 1];
tp->ext_Names[j] = name;
j = _nc_ext_data_index(tp, j, token_type);
tp->ext_Booleans += 1;
tp->num_Booleans += 1;
tp->Booleans = typeRealloc(char, tp->num_Booleans, tp->Booleans);
- for (k = tp->num_Booleans-1; k > j; k--)
- tp->Booleans[k] = tp->Booleans[k-1];
+ for (k = tp->num_Booleans - 1; k > j; k--)
+ tp->Booleans[k] = tp->Booleans[k - 1];
break;
case NUMBER:
tp->ext_Numbers += 1;
tp->num_Numbers += 1;
tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers);
- for (k = tp->num_Numbers-1; k > j; k--)
- tp->Numbers[k] = tp->Numbers[k-1];
+ for (k = tp->num_Numbers - 1; k > j; k--)
+ tp->Numbers[k] = tp->Numbers[k - 1];
break;
case STRING:
tp->ext_Strings += 1;
tp->num_Strings += 1;
tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings);
- for (k = tp->num_Strings-1; k > j; k--)
- tp->Strings[k] = tp->Strings[k-1];
+ for (k = tp->num_Strings - 1; k > j; k--)
+ tp->Strings[k] = tp->Strings[k - 1];
break;
}
return j;
* 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)
+static void
+adjust_cancels(TERMTYPE * to, TERMTYPE * from)
{
int first = to->ext_Booleans + to->ext_Numbers;
- int last = first + to->ext_Strings;
+ int last = first + to->ext_Strings;
int j, k;
- for (j = first; j < last; ) {
+ for (j = first; j < last;) {
char *name = to->ext_Names[j];
unsigned j_str = to->num_Strings - first - to->ext_Strings;
_nc_del_ext_name(to, name, STRING);
k = _nc_ins_ext_name(to, name, BOOLEAN);
to->Booleans[k] = FALSE;
- } else if ((k = _nc_find_ext_name(from, to->ext_Names[j], NUMBER)) >= 0) {
+ } else if ((k = _nc_find_ext_name(from, to->ext_Names[j],
+ NUMBER)) >= 0) {
_nc_del_ext_name(to, name, STRING);
k = _nc_ins_ext_name(to, name, NUMBER);
to->Numbers[k] = CANCELLED_NUMERIC;
}
}
-void _nc_align_termtype(TERMTYPE *to, TERMTYPE *from)
+void
+_nc_align_termtype(TERMTYPE * to, TERMTYPE * from)
{
int na = NUM_EXT_NAMES(to);
int nb = NUM_EXT_NAMES(from);
char **ext_Names;
int ext_Booleans, ext_Numbers, ext_Strings;
- DEBUG(2, ("align_termtype to(%d:%s), from(%d:%s)", na, to->term_names, nb, from->term_names));
+ 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)) {
+ &&(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;
* 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 *, na+nb);
+ ext_Names = typeMalloc(char *, na + nb);
if (to->ext_Strings && (from->ext_Booleans + from->ext_Numbers))
adjust_cancels(to, from);
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);
+ 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);
- free(to->ext_Names);
+ 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));
+ DEBUG(2, ("realigned %d extended names for '%s' (to)",
+ NUM_EXT_NAMES(to), to->term_names));
}
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 *, nb, from->ext_Names);
memcpy(from->ext_Names, ext_Names, sizeof(char *) * nb);
- DEBUG(2, ("realigned %d extended names for '%s' (from)", NUM_EXT_NAMES(from), from->term_names));
+ DEBUG(2, ("realigned %d extended names for '%s' (from)",
+ NUM_EXT_NAMES(from), from->term_names));
}
}
}
#endif
-void _nc_copy_termtype(TERMTYPE *dst, TERMTYPE *src)
+void
+_nc_copy_termtype(TERMTYPE * dst, TERMTYPE * src)
{
int i;
- *dst = *src; /* ...to copy the sizes and string-tables */
- dst->Booleans = typeMalloc(char, NUM_BOOLEANS(dst));
- dst->Numbers = typeMalloc(short, NUM_NUMBERS(dst));
- dst->Strings = typeMalloc(char *, NUM_STRINGS(dst));
+ *dst = *src; /* ...to copy the sizes and string-tables */
+ dst->Booleans = typeMalloc(char, 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)
+ for_each_boolean(i, dst)
dst->Booleans[i] = src->Booleans[i];
- for_each_number(i,dst)
+ for_each_number(i, dst)
dst->Numbers[i] = src->Numbers[i];
- for_each_string(i,dst)
+ for_each_string(i, dst)
dst->Strings[i] = src->Strings[i];
/* FIXME: we probably should also copy str_table and ext_str_table,
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
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
* captoinfo.c --- conversion between termcap and terminfo formats
*
#include <ctype.h>
#include <tic.h>
-MODULE_ID("$Id: captoinfo.c,v 1.24 1999/07/24 20:06:13 tom Exp $")
+MODULE_ID("$Id: captoinfo.c,v 1.37 2000/04/01 20:07:34 tom Exp $")
#define MAX_PUSHED 16 /* max # args we can push onto the stack */
-#define MAX_ENTRY 2048 /* maximum chars in a translated capability */
static int stack[MAX_PUSHED]; /* the stack */
static int stackptr; /* the next empty place on the stack */
static int param; /* current parameter */
static char *dp; /* pointer to end of the converted string */
-static char *my_string;
+static char *my_string;
static size_t my_length;
-static char *init_string(void)
+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("Out of memory");
+ if (my_string == 0)
+ my_string = typeMalloc(char, my_length = 256);
+ if (my_string == 0)
+ _nc_err_abort("Out of memory");
- *my_string = '\0';
- return my_string;
+ *my_string = '\0';
+ return my_string;
}
-static char *save_string(char *d, const char *const s)
+static char *
+save_string(char *d, const char *const s)
{
- size_t have = (d - my_string);
- size_t need = have + strlen(s) + 2;
- if (need > my_length) {
- my_string = (char *)realloc(my_string, my_length = (need + need));
- if (my_string == 0)
- _nc_err_abort("Out of memory");
- d = my_string + have;
- }
- (void) strcpy(d, s);
- return d + strlen(d);
+ size_t have = (d - my_string);
+ size_t need = have + strlen(s) + 2;
+ if (need > my_length) {
+ my_string = (char *) realloc(my_string, my_length = (need + need));
+ if (my_string == 0)
+ _nc_err_abort("Out of memory");
+ d = my_string + have;
+ }
+ (void) strcpy(d, s);
+ return d + strlen(d);
}
-static inline char *save_char(char *s, char c)
+static inline char *
+save_char(char *s, char c)
{
- static char temp[2];
- temp[0] = c;
- return save_string(s, temp);
+ static char temp[2];
+ temp[0] = c;
+ return save_string(s, temp);
}
-static void push(void)
+static void
+push(void)
/* push onstack on to the stack */
{
if (stackptr > MAX_PUSHED)
stack[stackptr++] = onstack;
}
-static void pop(void)
+static void
+pop(void)
/* pop the top of the stack into onstack */
{
if (stackptr == 0) {
_nc_warning("I'm confused");
else
onstack = 0;
- }
- else
+ } else
onstack = stack[--stackptr];
param++;
}
-static int cvtchar(register const char *sp)
+static int
+cvtchar(register const char *sp)
/* convert a character to a terminfo push */
{
unsigned char c = 0;
int len;
- switch(*sp) {
+ switch (*sp) {
case '\\':
- switch(*++sp) {
+ switch (*++sp) {
case '\'':
case '$':
case '\\':
case '2':
case '3':
len = 1;
- while (isdigit(*sp))
- {
+ while (isdigit(*sp)) {
c = 8 * c + (*sp++ - '0');
len++;
}
len = 1;
}
if (isgraph(c) && c != ',' && c != '\'' && c != '\\' && c != ':') {
- *dp++ = '%'; *dp++ = '\''; *dp++ = c; *dp++ = '\'';
+ dp = save_string(dp, "%\'");
+ dp = save_char(dp, c);
+ dp = save_char(dp, '\'');
} else {
- *dp++ = '%'; *dp++ = '{';
+ dp = save_string(dp, "%{");
if (c > 99)
- *dp++ = c / 100 + '0';
+ dp = save_char(dp, c / 100 + '0');
if (c > 9)
- *dp++ = ((int)(c / 10)) % 10 + '0';
- *dp++ = c % 10 + '0';
- *dp++ = '}';
+ 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)
+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++ = '%'; *dp++ = 'P'; *dp++ = 'a';
- while(n--) {
- *dp++ = '%'; *dp++ = 'g'; *dp++ = 'a';
- }
- }
- return;
+ 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");
+ }
}
- if (onstack != 0)
- push();
+ return;
+ }
+ if (onstack != 0)
+ push();
- onstack = parm;
+ onstack = parm;
- while(n--) { /* %p0 */
- *dp++ = '%'; *dp++ = 'p'; *dp++ = '0' + parm;
- }
+ while (n--) {
+ dp = save_string(dp, "%p");
+ dp = save_char(dp, '0' + parm);
+ }
- if (seenn && parm < 3) { /* %{96}%^ */
- *dp++ = '%'; *dp++ = '{'; *dp++ = '9'; *dp++ = '6'; *dp++ = '}';
- *dp++ = '%'; *dp++ = '^';
- }
+ if (seenn && parm < 3) {
+ dp = save_string(dp, "%{96}%^");
+ }
- if (seenm && parm < 3) { /* %{127}%^ */
- *dp++ = '%'; *dp++ = '{'; *dp++ = '1'; *dp++ = '2'; *dp++ = '7';
- *dp++ = '}'; *dp++ = '%'; *dp++ = '^';
- }
+ if (seenm && parm < 3) {
+ dp = save_string(dp, "%{127}%^");
+ }
}
-char *_nc_captoinfo(
+char *
+_nc_captoinfo(
/* convert a termcap string to terminfo format */
-register const char *cap, /* relevant terminfo capability index */
-register const char *s, /* string value of the capability */
-int const parametrized) /* do % translations if 1, pad translations if >=0 */
+ register const char *cap, /* relevant terminfo capability index */
+ register const char *s, /* string value of the capability */
+ int const parametrized /* do % translations if 1, pad translations if >=0 */
+)
{
- static char line[MAX_ENTRY];
const char *capstart;
stackptr = 0;
seenr = 0;
param = 1;
- dp = line;
+ dp = init_string();
/* skip the initial padding (if we haven't been told not to) */
capstart = 0;
if (s == 0)
s = "";
if (parametrized >= 0 && isdigit(*s))
- for (capstart = s; ; s++)
+ for (capstart = s;; s++)
if (!(isdigit(*s) || *s == '*' || *s == '.'))
break;
- while(*s != '\0') {
- switch(*s) {
+ while (*s != '\0') {
+ switch (*s) {
case '%':
s++;
if (parametrized < 1) {
- *dp++ = '%';
+ dp = save_char(dp, '%');
break;
}
- switch(*s++) {
- case '%': *dp++ = '%'; break;
+ switch (*s++) {
+ case '%':
+ dp = save_char(dp, '%');
+ break;
case 'r':
if (seenr++ == 1) {
_nc_warning("saw %%r twice in %s", cap);
_nc_warning("saw %%n twice in %s", cap);
}
break;
- case 'i': *dp++ = '%'; *dp++ = 'i'; break;
+ case 'i':
+ dp = save_string(dp, "%i");
+ break;
case '6':
case 'B':
- getparm(param, 2);
- /* %{6}%*%+ */
- *dp++ = '%'; *dp++ = '{'; *dp++ = '6';
- *dp++ = '}'; *dp++ = '%'; *dp++ = '*';
- *dp++ = '%'; *dp++ = '+';
+ 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);
- /* %{2}%*%- */
- *dp++ = '%'; *dp++ = '{'; *dp++ = '2';
- *dp++ = '}'; *dp++ = '%'; *dp++ = '*';
- *dp++ = '%'; *dp++ = '-';
+ dp = save_string(dp, "%{2}%*%-");
break;
case '>':
getparm(param, 2);
/* %?%{x}%>%t%{y}%+%; */
- *dp++ = '%'; *dp++ = '?';
+ dp = save_string(dp, "%?");
s += cvtchar(s);
- *dp++ = '%'; *dp++ = '>';
- *dp++ = '%'; *dp++ = 't';
+ dp = save_string(dp, "%>%t");
s += cvtchar(s);
- *dp++ = '%'; *dp++ = '+';
- *dp++ = '%'; *dp++ = ';';
+ dp = save_string(dp, "%+%;");
break;
case 'a':
if ((*s == '=' || *s == '+' || *s == '-'
- || *s == '*' || *s == '/')
+ || *s == '*' || *s == '/')
&& (s[1] == 'p' || s[1] == 'c')
&& s[2] != '\0') {
int l;
l++;
} else
l += cvtchar(s + 2);
- switch(*s) {
+ switch (*s) {
case '+':
- *dp++ = '%'; *dp++ = '+';
+ dp = save_string(dp, "%+");
break;
case '-':
- *dp++ = '%'; *dp++ = '-';
+ dp = save_string(dp, "%-");
break;
case '*':
- *dp++ = '%'; *dp++ = '*';
+ dp = save_string(dp, "%*");
break;
case '/':
- *dp++ = '%'; *dp++ = '/';
+ dp = save_string(dp, "%/");
break;
case '=':
if (seenr) {
onstack = 1;
else
onstack = param;
- }
- else
+ } else
onstack = param;
break;
}
}
getparm(param, 1);
s += cvtchar(s);
- *dp++ = '%'; *dp++ = '+';
+ dp = save_string(dp, "%+");
break;
case '+':
getparm(param, 1);
s += cvtchar(s);
- *dp++ = '%'; *dp++ = '+';
- *dp++ = '%'; *dp++ = 'c';
+ dp = save_string(dp, "%+%c");
pop();
break;
case 's':
#ifdef WATERLOO
s += cvtchar(s);
getparm(param, 1);
- *dp++ = '%'; *dp++ = '-';
+ dp = save_string(dp, "%-");
#else
getparm(param, 1);
- *dp++ = '%'; *dp++ = 's';
+ dp = save_string(dp, "%s");
pop();
#endif /* WATERLOO */
break;
case '-':
s += cvtchar(s);
getparm(param, 1);
- *dp++ = '%'; *dp++ = '-';
- *dp++ = '%'; *dp++ = 'c';
+ dp = save_string(dp, "%-%c");
pop();
break;
case '.':
getparm(param, 1);
- *dp++ = '%'; *dp++ = 'c';
+ dp = save_string(dp, "%c");
pop();
break;
- case '0': /* not clear any of the historical termcaps did this */
+ case '0': /* not clear any of the historical termcaps did this */
if (*s == '3')
goto see03;
else if (*s != '2')
/* FALLTHRU */
case '2':
getparm(param, 1);
- *dp++ = '%'; /* *dp++ = '0'; */
- *dp++ = '2'; *dp++ = 'd';
+ dp = save_string(dp, "%2d");
pop();
break;
- case '3': see03:
+ case '3':
+ see03:
getparm(param, 1);
- *dp++ = '%'; /* *dp++ = '0'; */
- *dp++ = '3'; *dp++ = 'd';
+ dp = save_string(dp, "%3d");
pop();
break;
case 'd':
getparm(param, 1);
- *dp++ = '%'; *dp++ = 'd';
+ dp = save_string(dp, "%d");
pop();
break;
case 'f':
param--;
break;
case '\\':
- *dp++ = '%';
- *dp++ = '\\';
+ dp = save_string(dp, "%\\");
break;
- default: invalid:
- *dp++ = '%';
+ default:
+ invalid:
+ dp = save_char(dp, '%');
s--;
- _nc_warning("unknown %% code %s in %s",
- _tracechar(*s), cap);
+ _nc_warning("unknown %% code %s (%#x) in %s",
+ unctrl(*s), (*s) & 0xff, cap);
break;
}
break;
#ifdef REVISIBILIZE
case '\\':
- *dp++ = *s++; *dp++ = *s++; break;
+ dp = save_char(dp, *s++);
+ dp = save_char(dp, *s++);
+ break;
case '\n':
- *dp++ = '\\'; *dp++ = 'n'; s++; break;
+ dp = save_string(dp, "\\n");
+ s++;
+ break;
case '\t':
- *dp++ = '\\'; *dp++ = 't'; s++; break;
+ dp = save_string(dp, "\\t");
+ s++;
+ break;
case '\r':
- *dp++ = '\\'; *dp++ = 'r'; s++; break;
+ dp = save_string(dp, "\\r");
+ s++;
+ break;
case '\200':
- *dp++ = '\\'; *dp++ = '0'; s++; break;
+ dp = save_string(dp, "\\0");
+ s++;
+ break;
case '\f':
- *dp++ = '\\'; *dp++ = 'f'; s++; break;
+ dp = save_string(dp, "\\f");
+ s++;
+ break;
case '\b':
- *dp++ = '\\'; *dp++ = 'b'; s++; break;
+ dp = save_string(dp, "\\b");
+ s++;
+ break;
case ' ':
- *dp++ = '\\'; *dp++ = 's'; s++; break;
+ dp = save_string(dp, "\\s");
+ s++;
+ break;
case '^':
- *dp++ = '\\'; *dp++ = '^'; s++; break;
+ dp = save_string(dp, "\\^");
+ s++;
+ break;
case ':':
- *dp++ = '\\'; *dp++ = ':'; s++; break;
+ dp = save_string(dp, "\\:");
+ s++;
+ break;
case ',':
- *dp++ = '\\'; *dp++ = ','; s++; break;
+ dp = save_string(dp, "\\,");
+ s++;
+ break;
default:
if (*s == '\033') {
- *dp++ = '\\';
- *dp++ = 'E';
+ dp = save_string(dp, "\\E");
s++;
} else if (*s > 0 && *s < 32) {
- *dp++ = '^';
- *dp++ = *s + '@';
+ dp = save_char(dp, '^');
+ dp = save_char(dp, *s + '@');
s++;
} else if (*s <= 0 || *s >= 127) {
- *dp++ = '\\';
- *dp++ = ((*s & 0300) >> 6) + '0';
- *dp++ = ((*s & 0070) >> 3) + '0';
- *dp++ = (*s & 0007) + '0';
+ 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++ = *s++;
+ dp = save_char(dp, *s++);
break;
#else
default:
- *dp++ = *s++;
+ 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++ = '$';
- *dp++ = '<';
- for (s = capstart; ; s++)
+ if (capstart) {
+ dp = save_string(dp, "$<");
+ for (s = capstart;; s++)
if (isdigit(*s) || *s == '*' || *s == '.')
- *dp++ = *s;
+ dp = save_char(dp, *s);
else
break;
- *dp++ = '/';
- *dp++ = '>';
+ 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(ch1)
+ && isdigit(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];
- *dp = '\0';
- return(line);
+ 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(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;
}
/*
* %m exclusive-or all parameters with 0177 (not in 4.4BSD)
*/
-char *_nc_infotocap(
+char *
+_nc_infotocap(
/* convert a terminfo string to termcap format */
-register const char *cap GCC_UNUSED, /* relevant termcap capability index */
-register const char *str, /* string value of the capability */
-int const parametrized) /* do % translations if 1, pad translations if >=0 */
+ register const char *cap GCC_UNUSED, /* relevant termcap capability index */
+ register const char *str, /* string value of the capability */
+ int const parametrized /* do % translations if 1, pad translations if >=0 */
+)
{
- int seenone = 0, seentwo = 0, saw_m = 0, saw_n = 0;
+ int seenone = 0, seentwo = 0, saw_m = 0, saw_n = 0;
const char *padding;
const char *trimmed = 0;
char ch1 = 0, ch2 = 0;
char *bufptr = init_string();
- char temp[256];
+ int len;
+ bool syntax_error = FALSE;
/* we may have to move some trailing mandatory padding up front */
padding = str + strlen(str) - 1;
- if (*padding == '>' && *--padding == '/')
- {
+ if (*padding == '>' && *--padding == '/') {
--padding;
while (isdigit(*padding) || *padding == '.' || *padding == '*')
padding--;
bufptr = save_char(bufptr, *padding++);
}
- for (; *str && str != trimmed; str++)
- {
- int c1, c2;
- char *cp = 0;
+ for (; *str && str != trimmed; str++) {
+ int c1, c2;
+ char *cp = 0;
- if (str[0] == '\\' && (str[1] == '^' || str[1] == ','))
- {
+ if (str[0] == '\\' && (str[1] == '^' || str[1] == ',')) {
bufptr = save_char(bufptr, *++str);
- }
- else if (str[0] == '$' && str[1] == '<') /* discard padding */
- {
+ } else if (str[0] == '$' && str[1] == '<') { /* discard padding */
str += 2;
- while (isdigit(*str) || *str == '.' || *str == '*' || *str == '/' || *str == '>')
+ while (isdigit(*str) || *str == '.' || *str == '*' || *str ==
+ '/' || *str == '>')
str++;
--str;
- }
- else if (*str != '%' || (parametrized < 1))
+ } else if (str[0] == '%' && str[1] == '%') { /* escaped '%' */
+ bufptr = save_string(bufptr, "%%");
+ } else if (*str != '%' || (parametrized < 1)) {
bufptr = save_char(bufptr, *str);
- else if (sscanf(str, "%%?%%{%d}%%>%%t%%{%d}%%+%%;", &c1,&c2) == 2)
- {
+ } else if (sscanf(str, "%%?%%{%d}%%>%%t%%{%d}%%+%%;", &c1, &c2) == 2) {
str = strchr(str, ';');
- (void) sprintf(temp, "%%>%s%s", unctrl(c1), unctrl(c2));
- bufptr = save_string(bufptr, temp);
- }
- else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1,&ch2) == 2)
- {
+ bufptr = save_tc_inequality(bufptr, c1, c2);
+ } else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1, &ch2) == 2) {
str = strchr(str, ';');
- (void) sprintf(temp, "%%>%s%c", unctrl(c1), ch2);
- bufptr = save_string(bufptr, temp);
- }
- else if (sscanf(str, "%%?%%'%c'%%>%%t%%{%d}%%+%%;", &ch1,&c2) == 2)
- {
+ bufptr = save_tc_inequality(bufptr, c1, c2);
+ } else if (sscanf(str, "%%?%%'%c'%%>%%t%%{%d}%%+%%;", &ch1, &c2) == 2) {
str = strchr(str, ';');
- (void) sprintf(temp, "%%>%c%c", ch1, c2);
- bufptr = save_string(bufptr, temp);
- }
- else if (sscanf(str, "%%?%%'%c'%%>%%t%%'%c'%%+%%;", &ch1, &ch2) == 2)
- {
+ bufptr = save_tc_inequality(bufptr, c1, c2);
+ } else if (sscanf(str, "%%?%%'%c'%%>%%t%%'%c'%%+%%;", &ch1, &ch2) == 2) {
str = strchr(str, ';');
- (void) sprintf(temp, "%%>%c%c", ch1, ch2);
- bufptr = save_string(bufptr, temp);
- }
- else if (strncmp(str, "%{6}%*%+", 8) == 0)
- {
- str += 7;
- (void) sprintf(temp, "%%B");
- bufptr = save_string(bufptr, temp);
- }
- else if ((sscanf(str, "%%{%d}%%+%%c", &c1) == 1
- || sscanf(str, "%%'%c'%%+%%c", &ch1) == 1)
- && (cp = 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_char(bufptr, '%');
- bufptr = save_char(bufptr, '+');
+ bufptr = save_string(bufptr, "%+");
if (ch1)
c1 = ch1;
- if (is7bits(c1) && isprint(c1))
- bufptr = save_char(bufptr, (char)c1);
- else
- {
- if (c1 == (c1 & 0x1f)) /* iscntrl() returns T on 255 */
- (void) strcpy(temp, unctrl(c1));
- else
- (void) sprintf(temp, "\\%03o", c1);
- bufptr = save_string(bufptr, temp);
- }
+ bufptr = save_tc_char(bufptr, c1);
}
- else if (strncmp(str, "%{2}%*%-", 8) == 0)
- {
+ /* FIXME: this "works" for 'delta' */
+ else if (strncmp(str, "%{2}%*%-", 8) == 0) {
str += 7;
- (void) sprintf(temp, "%%D");
- bufptr = save_string(bufptr, temp);
- }
- else if (strncmp(str, "%{96}%^", 7) == 0)
- {
+ bufptr = save_string(bufptr, "%D");
+ } else if (strncmp(str, "%{96}%^", 7) == 0) {
str += 6;
- if (saw_m++ == 0)
- {
- (void) sprintf(temp, "%%n");
- bufptr = save_string(bufptr, temp);
+ if (saw_m++ == 0) {
+ bufptr = save_string(bufptr, "%n");
}
- }
- else if (strncmp(str, "%{127}%^", 8) == 0)
- {
+ } else if (strncmp(str, "%{127}%^", 8) == 0) {
str += 7;
- if (saw_n++ == 0)
- {
- (void) sprintf(temp, "%%m");
- bufptr = save_string(bufptr, temp);
+ if (saw_n++ == 0) {
+ bufptr = save_string(bufptr, "%m");
}
- }
- else
- {
+ } else { /* cm-style format element */
str++;
switch (*str) {
case '%':
bufptr = save_char(bufptr, '%');
while (isdigit(*str))
bufptr = save_char(bufptr, *str++);
- if (*str == 'd')
- str++;
- else
- _nc_warning("numeric prefix is missing trailing d in %s",
- cap);
- --str;
+ if (strchr("doxX.", *str)) {
+ if (*str != 'd') /* termcap doesn't have octal, hex */
+ return 0;
+ }
break;
case 'd':
- bufptr = save_char(bufptr, '%');
- bufptr = save_char(bufptr, 'd');
+ bufptr = save_string(bufptr, "%d");
break;
case 'c':
- bufptr = save_char(bufptr, '%');
- bufptr = save_char(bufptr, '.');
+ 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.
- */
+ /*
+ * %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_char(bufptr, '%');
- bufptr = save_char(bufptr, 's');
+ bufptr = save_string(bufptr, "%s");
break;
case 'p':
str++;
if (*str == '1')
seenone = 1;
- else if (*str == '2')
- {
- if (!seenone && !seentwo)
- {
- bufptr = save_char(bufptr, '%');
- bufptr = save_char(bufptr, 'r');
+ else if (*str == '2') {
+ if (!seenone && !seentwo) {
+ bufptr = save_string(bufptr, "%r");
seentwo++;
}
- }
- else if (*str >= '3')
- return(0);
+ } else if (*str >= '3')
+ return (0);
break;
case 'i':
- bufptr = save_char(bufptr, '%');
- bufptr = save_char(bufptr, 'i');
+ bufptr = save_string(bufptr, "%i");
break;
default:
- return(0);
-
- } /* endswitch (*str) */
- } /* endelse (*str == '%') */
+ bufptr = save_char(bufptr, *str);
+ syntax_error = TRUE;
+ break;
+ } /* endswitch (*str) */
+ } /* endelse (*str == '%') */
if (*str == '\0')
break;
- } /* endwhile (*str) */
+ } /* endwhile (*str) */
- return(my_string);
+ return (syntax_error ? NULL : my_string);
}
#ifdef MAIN
int curr_line;
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
{
int c, tc = FALSE;
while ((c = getopt(argc, argv, "c")) != EOF)
- switch (c)
- {
+ switch (c) {
case 'c':
tc = TRUE;
break;
}
curr_line = 0;
- for (;;)
- {
- char buf[BUFSIZ];
+ for (;;) {
+ char buf[BUFSIZ];
++curr_line;
if (fgets(buf, sizeof(buf), stdin) == 0)
buf[strlen(buf) - 1] = '\0';
_nc_set_source(buf);
- if (tc)
- {
- char *cp = _nc_infotocap("to termcap", buf, 1);
+ if (tc) {
+ char *cp = _nc_infotocap("to termcap", buf, 1);
if (cp)
(void) fputs(cp, stdout);
- }
- else
+ } else
(void) fputs(_nc_captoinfo("to terminfo", buf, 1), stdout);
(void) putchar('\n');
}
- return(0);
+ return (0);
}
#endif /* MAIN */
/* captoinfo.c ends here */
-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include <tic.h>
-MODULE_ID("$Id: comp_error.c,v 1.16 1998/08/01 23:39:51 tom Exp $")
+MODULE_ID("$Id: comp_error.c,v 1.17 1999/10/30 23:00:16 tom Exp $")
-bool _nc_suppress_warnings;
-int _nc_curr_line; /* current line # in input */
-int _nc_curr_col; /* current column # in input */
+bool _nc_suppress_warnings = FALSE;
+int _nc_curr_line = 0; /* current line # in input */
+int _nc_curr_col = 0; /* current column # in input */
static const char *sourcename;
static char termtype[MAX_NAME_SIZE+1];
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
* comp_parse.c -- parser driver loop and use handling.
*
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: comp_parse.c,v 1.34 1999/02/27 22:13:02 tom Exp $")
+MODULE_ID("$Id: comp_parse.c,v 1.40 2000/04/15 16:57:08 tom Exp $")
static void sanity_check(TERMTYPE *);
-void (*_nc_check_termtype)(TERMTYPE *) = sanity_check;
+void (*_nc_check_termtype) (TERMTYPE *) = sanity_check;
/****************************************************************************
*
* _nc_head _nc_tail
*/
-ENTRY *_nc_head, *_nc_tail;
+ENTRY *_nc_head = 0, *_nc_tail = 0;
-static void enqueue(ENTRY *ep)
+static void
+enqueue(ENTRY * ep)
/* add an entry to the in-core list */
{
- ENTRY *newp = _nc_copy_entry(ep);
+ ENTRY *newp = _nc_copy_entry(ep);
- if (newp == NULL)
- _nc_err_abort("Out of memory");
+ if (newp == 0)
+ _nc_err_abort("Out of memory");
- newp->last = _nc_tail;
- _nc_tail = newp;
+ newp->last = _nc_tail;
+ _nc_tail = newp;
- newp->next = (ENTRY *)NULL;
- if (newp->last)
- newp->last->next = newp;
+ newp->next = 0;
+ if (newp->last)
+ newp->last->next = newp;
}
-void _nc_free_entries(ENTRY *head)
+void
+_nc_free_entries(ENTRY * headp)
/* free the allocated storage consumed by list entries */
{
- ENTRY *ep, *next;
+ ENTRY *ep, *next;
- for (ep = head; ep; ep = next)
- {
+ for (ep = headp; ep; ep = next) {
/*
* This conditional lets us disconnect storage from the list.
* To do this, copy an entry out of the list, then null out
next = ep->next;
free(ep);
- if (ep == _nc_head) _nc_head = 0;
- if (ep == _nc_tail) _nc_tail = 0;
+ if (ep == _nc_head)
+ _nc_head = 0;
+ if (ep == _nc_tail)
+ _nc_tail = 0;
}
}
-bool _nc_entry_match(char *n1, char *n2)
+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+1], nc2[MAX_NAME_SIZE+1];
+ char *pstart, *qstart, *pend, *qend;
+ char nc1[MAX_NAME_SIZE + 1], nc2[MAX_NAME_SIZE + 1];
- if (strchr(n1, '|') == NULL)
- {
+ if (strchr(n1, '|') == 0) {
(void) strncpy(nc1, n1, sizeof(nc1) - 2);
nc1[sizeof(nc1) - 2] = '\0';
(void) strcat(nc1, "|");
n1 = nc1;
}
- if (strchr(n2, '|') == NULL)
- {
+ if (strchr(n2, '|') == 0) {
(void) strncpy(nc2, n2, sizeof(nc2) - 2);
nc2[sizeof(nc2) - 2] = '\0';
(void) strcat(nc2, "|");
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);
+ if ((pend - pstart == qend - qstart)
+ && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0)
+ return (TRUE);
- return(FALSE);
+ return (FALSE);
}
/****************************************************************************
*
****************************************************************************/
-void _nc_read_entry_source(FILE *fp, char *buf,
- int literal, bool silent,
- bool (*hook)(ENTRY *))
+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;
+ ENTRY thisentry;
+ bool oldsuppress = _nc_suppress_warnings;
+ int immediate = 0;
if (silent)
_nc_suppress_warnings = TRUE; /* shut the lexer up, too */
- memset(&thisentry, 0, sizeof(thisentry));
- for (_nc_reset_input(fp, buf); _nc_parse_entry(&thisentry, literal, silent) != ERR; )
- {
+ _nc_reset_input(fp, buf);
+ for (;;) {
+ memset(&thisentry, 0, sizeof(thisentry));
+ if (_nc_parse_entry(&thisentry, literal, silent) == ERR)
+ break;
if (!isalnum(thisentry.tterm.term_names[0]))
_nc_err_abort("terminal names must start with letter or digit");
* use references to disk, so as to avoid chewing up a lot of
* core when the resolution code could fetch entries off disk.
*/
- if (hook != NULLHOOK && (*hook)(&thisentry))
+ if (hook != NULLHOOK && (*hook) (&thisentry))
immediate++;
else
enqueue(&thisentry);
}
- if (_nc_tail)
- {
+ if (_nc_tail) {
/* set up the head pointer */
for (_nc_head = _nc_tail; _nc_head->last; _nc_head = _nc_head->last)
continue;
_nc_suppress_warnings = oldsuppress;
}
-int _nc_resolve_uses(void)
+int
+_nc_resolve_uses(bool fullresolve)
/* try to resolve all use capabilities */
{
- ENTRY *qp, *rp, *lastread = NULL;
- bool keepgoing;
- int i, j, unresolved, total_unresolved, multiples;
+ ENTRY *qp, *rp, *lastread = 0;
+ bool keepgoing;
+ int i, j, unresolved, total_unresolved, multiples;
DEBUG(2, ("RESOLUTION BEGINNING"));
* Check for multiple occurrences of the same name.
*/
multiples = 0;
- for_entry_list(qp)
- {
+ 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));
+ && _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);
+ return (FALSE);
DEBUG(2, ("NO MULTIPLE NAME OCCURRENCES"));
/*
- * First resolution stage: replace names in use arrays with entry
- * pointers. By doing this, we avoid having to do the same name
- * match once for each time a use entry is itself unresolved.
+ * First resolution stage: compute link pointers corresponding to names.
*/
total_unresolved = 0;
_nc_curr_col = -1;
- for_entry_list(qp)
- {
+ 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 = (char *)(qp->uses[i].parent);
- long lookline = qp->uses[i].line;
+ 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;
/* 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));
+ && _nc_name_match(rp->tterm.term_names, lookfor, "|")) {
+ DEBUG(2, ("%s: resolving use=%s (in core)",
+ child, lookfor));
- qp->uses[i].parent = rp;
- foundit = TRUE;
- }
+ 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];
+ if (!foundit) {
+ TERMTYPE thisterm;
+ char filename[PATH_MAX];
memset(&thisterm, 0, sizeof(thisterm));
- if (_nc_read_entry(lookfor, filename, &thisterm) == 1)
- {
+ if (_nc_read_entry(lookfor, filename, &thisterm) == 1) {
DEBUG(2, ("%s: resolving use=%s (compiled)",
- child, lookfor));
+ child, lookfor));
- rp = typeMalloc(ENTRY,1);
- if (rp == NULL)
+ rp = typeMalloc(ENTRY, 1);
+ if (rp == 0)
_nc_err_abort("Out of memory");
rp->tterm = thisterm;
rp->nuses = 0;
rp->next = lastread;
lastread = rp;
- qp->uses[i].parent = rp;
+ qp->uses[i].link = rp;
foundit = TRUE;
}
}
/* no good, mark this one unresolvable and complain */
- if (!foundit)
- {
+ if (!foundit) {
unresolved++;
total_unresolved++;
_nc_curr_line = lookline;
_nc_warning("resolution of use=%s failed", lookfor);
- qp->uses[i].parent = (ENTRY *)NULL;
+ qp->uses[i].link = 0;
}
}
}
- if (total_unresolved)
- {
+ if (total_unresolved) {
/* free entries read in off disk */
_nc_free_entries(lastread);
- return(FALSE);
+ return (FALSE);
}
DEBUG(2, ("NAME RESOLUTION COMPLETED OK"));
/*
- * OK, at this point all (char *) references have been successfully
- * replaced by (ENTRY *) pointers. Time to do the actual merges.
+ * OK, at this point all (char *) references in `name' mwmbers
+ * have been successfully converred to (ENTRY *) pointers in
+ * `link' members. Time to do the actual merges.
*/
- 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 (((ENTRY *)qp->uses[i].parent)->nuses)
- {
- DEBUG(2, ("%s: use entry %d unresolved",
- _nc_first_name(qp->tterm.term_names), i));
- goto incomplete;
- }
-
- /*
- * First, make sure there's 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,
- &((ENTRY *)qp->uses[qp->nuses-1].parent)->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);
- qp->tterm = merged;
-
- /*
- * We know every entry is resolvable because name resolution
- * didn't bomb. So go back for another pass.
- */
- /* FALLTHRU */
- incomplete:
- keepgoing = TRUE;
+ 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's 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);
+ qp->tterm = merged;
+
+ /*
+ * We know every entry is resolvable because name resolution
+ * didn't bomb. So go back for another pass.
+ */
+ /* FALLTHRU */
+ incomplete:
+ keepgoing = TRUE;
+ }
}
- }
- } while
- (keepgoing);
+ } while
+ (keepgoing);
- DEBUG(2, ("MERGES COMPLETED OK"));
+ DEBUG(2, ("MERGES COMPLETED OK"));
- /*
- * The exit condition of the loop above is such that all entries
- * must now be resolved. Now handle cancellations. In a resolved
- * entry there should be no cancellation markers.
- */
- for_entry_list(qp)
- {
- for_each_boolean(j, &(qp->tterm))
- if (qp->tterm.Booleans[j] == CANCELLED_BOOLEAN)
- qp->tterm.Booleans[j] = FALSE;
- for_each_number(j, &(qp->tterm))
- if (qp->tterm.Numbers[j] == CANCELLED_NUMERIC)
+ /*
+ * The exit condition of the loop above is such that all entries
+ * must now be resolved. Now handle cancellations. In a resolved
+ * entry there should be no cancellation markers.
+ */
+ for_entry_list(qp) {
+ for_each_boolean(j, &(qp->tterm))
+ if (qp->tterm.Booleans[j] == CANCELLED_BOOLEAN)
+ qp->tterm.Booleans[j] = ABSENT_BOOLEAN;
+ for_each_number(j, &(qp->tterm))
+ if (qp->tterm.Numbers[j] == CANCELLED_NUMERIC)
qp->tterm.Numbers[j] = ABSENT_NUMERIC;
- for_each_string(j, &(qp->tterm))
- if (qp->tterm.Strings[j] == CANCELLED_STRING)
+ for_each_string(j, &(qp->tterm))
+ if (qp->tterm.Strings[j] == CANCELLED_STRING)
qp->tterm.Strings[j] = ABSENT_STRING;
+ }
}
/*
DEBUG(2, ("RESOLUTION FINISHED"));
- if (_nc_check_termtype != 0)
- {
- _nc_curr_col = -1;
- for_entry_list(qp)
- {
- _nc_curr_line = qp->startline;
- _nc_set_type(_nc_first_name(qp->tterm.term_names));
- _nc_check_termtype(&qp->tterm);
+ if (fullresolve)
+ if (_nc_check_termtype != 0) {
+ _nc_curr_col = -1;
+ for_entry_list(qp) {
+ _nc_curr_line = qp->startline;
+ _nc_set_type(_nc_first_name(qp->tterm.term_names));
+ _nc_check_termtype(&qp->tterm);
+ }
+ DEBUG(2, ("SANITY CHECK FINISHED"));
}
- DEBUG(2, ("SANITY CHECK FINISHED"));
- }
- return(TRUE);
+ return (TRUE);
}
/*
#undef CUR
#define CUR tp->
-static void sanity_check(TERMTYPE *tp)
+static void
+sanity_check(TERMTYPE * tp)
{
- if (!PRESENT(exit_attribute_mode))
- {
-#ifdef __UNUSED__ /* this casts too wide a net */
- bool terminal_entry = !strchr(tp->term_names, '+');
+ 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(set_attributes)
|| PRESENT(enter_standout_mode)
|| PRESENT(enter_underline_mode)
|| PRESENT(enter_blink_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)
+ PAIRED(enter_standout_mode, exit_standout_mode)
+ PAIRED(enter_underline_mode, exit_underline_mode)
}
- /* listed in structure-member order of first argument */
- PAIRED(enter_alt_charset_mode, exit_alt_charset_mode)
- ANDMISSING(enter_alt_charset_mode, acs_chars)
- ANDMISSING(exit_alt_charset_mode, acs_chars)
- 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)
- PAIRED(display_clock, remove_clock)
- ANDMISSING(set_color_pair, initialize_pair)
+ /* listed in structure-member order of first argument */
+ PAIRED(enter_alt_charset_mode, exit_alt_charset_mode);
+ ANDMISSING(enter_alt_charset_mode, acs_chars);
+ ANDMISSING(exit_alt_charset_mode, acs_chars);
+ 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);
+ PAIRED(display_clock, remove_clock);
+ ANDMISSING(set_color_pair, initialize_pair);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
#include <ctype.h>
+#include <term_entry.h>
#include <tic.h>
-MODULE_ID("$Id: comp_scan.c,v 1.34 1998/11/01 00:56:39 tom Exp $")
+MODULE_ID("$Id: comp_scan.c,v 1.45 2000/07/08 00:43:55 tom Exp $")
/*
* Maximum length of string capability we'll accept before raising an error.
#define iswhite(ch) (ch == ' ' || ch == '\t')
-int _nc_syntax; /* termcap or terminfo? */
-long _nc_curr_file_pos; /* file offset of current line */
-long _nc_comment_start; /* start of comment range before name */
-long _nc_comment_end; /* end of comment range before name */
-long _nc_start_line; /* start line of current entry */
+int _nc_syntax = 0; /* termcap or terminfo? */
+long _nc_curr_file_pos = 0; /* file offset of current line */
+long _nc_comment_start = 0; /* start of comment range before name */
+long _nc_comment_end = 0; /* end of comment range before name */
+long _nc_start_line = 0; /* start line of current entry */
+
+struct token _nc_curr_token =
+{0, 0, 0};
/*****************************************************************************
*
static bool first_column; /* See 'next_char()' below */
static char separator; /* capability separator */
static int pushtype; /* type of pushback token */
-static char pushname[MAX_NAME_SIZE+1];
+static char pushname[MAX_NAME_SIZE + 1];
+
+#ifdef NCURSES_EXT_FUNCS
+bool _nc_disable_period = FALSE; /* used by tic -a option */
+#endif
-static int last_char(void);
-static int next_char(void);
+static int last_char(void);
+static int next_char(void);
static long stream_pos(void);
static bool end_of_stream(void);
static void push_back(char c);
/* Assume we may be looking at a termcap-style continuation */
-static inline int eat_escaped_newline(int ch)
+static inline int
+eat_escaped_newline(int ch)
{
- if (ch == '\\')
- while ((ch = next_char()) == '\n' || iswhite(ch))
- continue;
- return ch;
+ if (ch == '\\')
+ while ((ch = next_char()) == '\n' || iswhite(ch))
+ continue;
+ return ch;
}
/*
*
*/
-int _nc_get_token(void)
+int
+_nc_get_token(void)
{
-static const char terminfo_punct[] = "@%&*!#";
-long number;
-int type;
-int ch;
-char * numchk;
-char numbuf[80];
-unsigned found;
-static char buffer[MAX_ENTRY_SIZE];
-char *ptr;
-int dot_flag = FALSE;
-long token_start;
-
- if (pushtype != NO_PUSHBACK)
- {
- int retval = pushtype;
-
- _nc_set_type(pushname);
- DEBUG(3, ("pushed-back token: `%s', class %d",
- _nc_curr_token.tk_name, pushtype));
-
- pushtype = NO_PUSHBACK;
- pushname[0] = '\0';
-
- /* currtok wasn't altered by _nc_push_token() */
- return(retval);
- }
-
- if (end_of_stream())
- return(EOF);
+ static const char terminfo_punct[] = "@%&*!#";
+ long number;
+ int type;
+ int ch;
+ char *numchk;
+ char numbuf[80];
+ unsigned found;
+ static char buffer[MAX_ENTRY_SIZE];
+ char *ptr;
+ int dot_flag = FALSE;
+ long token_start;
+
+ if (pushtype != NO_PUSHBACK) {
+ int retval = pushtype;
+
+ _nc_set_type(pushname);
+ DEBUG(3, ("pushed-back token: `%s', class %d",
+ _nc_curr_token.tk_name, pushtype));
-start_token:
- token_start = stream_pos();
- while ((ch = next_char()) == '\n' || iswhite(ch))
- continue;
+ pushtype = NO_PUSHBACK;
+ pushname[0] = '\0';
- ch = eat_escaped_newline(ch);
+ /* currtok wasn't altered by _nc_push_token() */
+ return (retval);
+ }
- if (ch == EOF)
- type = EOF;
- else {
- /* if this is a termcap entry, skip a leading separator */
- if (separator == ':' && ch == ':')
- ch = next_char();
+ if (end_of_stream())
+ return (EOF);
- if (ch == '.') {
- dot_flag = TRUE;
- DEBUG(8, ("dot-flag set"));
+ start_token:
+ token_start = stream_pos();
+ while ((ch = next_char()) == '\n' || iswhite(ch))
+ continue;
- while ((ch = next_char())=='.' || iswhite(ch))
- continue;
- }
+ ch = eat_escaped_newline(ch);
- if (ch == EOF) {
- type = EOF;
- goto end_of_token;
- }
+ if (ch == EOF)
+ type = EOF;
+ else {
+ /* if this is a termcap entry, skip a leading separator */
+ if (separator == ':' && ch == ':')
+ ch = next_char();
- /* have to make some punctuation chars legal for terminfo */
- if (!isalnum(ch) && !strchr(terminfo_punct, (char)ch)) {
- _nc_warning("Illegal character (expected alphanumeric or %s) - %s",
- terminfo_punct, _tracechar((chtype)ch));
- _nc_panic_mode(separator);
- goto start_token;
- }
+ if (ch == '.'
+#ifdef NCURSES_EXT_FUNCS
+ && !_nc_disable_period
+#endif
+ ) {
+ dot_flag = TRUE;
+ DEBUG(8, ("dot-flag set"));
- ptr = buffer;
- *(ptr++) = ch;
-
- if (first_column) {
- char *desc;
-
- _nc_comment_start = token_start;
- _nc_comment_end = _nc_curr_file_pos;
- _nc_start_line = _nc_curr_line;
-
- _nc_syntax = ERR;
- while ((ch = next_char()) != '\n')
- {
- if (ch == EOF)
- _nc_err_abort("premature EOF");
- else if (ch == ':' && last_char() != ',')
- {
- _nc_syntax = SYN_TERMCAP;
- separator = ':';
- break;
- }
- else if (ch == ',')
- {
- _nc_syntax = SYN_TERMINFO;
- separator = ',';
- /*
- * Fall-through here is not an accident.
- * The idea is that if we see a comma, we
- * figure this is terminfo unless we
- * subsequently run into a colon -- but
- * we don't stop looking for that colon until
- * hitting a newline. This allows commas to
- * be embedded in description fields of
- * either syntax.
- */
- /* FALLTHRU */
- }
- else
- ch = eat_escaped_newline(ch);
-
- *ptr++ = ch;
- }
- ptr[0] = '\0';
- if (_nc_syntax == ERR)
- {
- /*
- * 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.
- */
- _nc_syntax = SYN_TERMCAP;
- separator = ':';
- }
- else if (_nc_syntax == SYN_TERMINFO)
- {
- /* throw away trailing /, *$/ */
- for (--ptr; iswhite(*ptr) || *ptr == ','; ptr--)
- continue;
- ptr[1] = '\0';
- }
+ while ((ch = next_char()) == '.' || iswhite(ch))
+ continue;
+ }
- /*
- * This is the soonest we have the terminal name
- * fetched. Set up for following warning messages.
- */
- ptr = strchr(buffer, '|');
- if (ptr == (char *)NULL)
- ptr = buffer + strlen(buffer);
- ch = *ptr;
- *ptr = '\0';
- _nc_set_type(buffer);
- *ptr = ch;
-
- /*
- * Compute the boundary between the aliases and the
- * description field for syntax-checking purposes.
- */
- desc = strrchr(buffer, '|');
- if (desc) {
- if (*desc == '\0')
- _nc_warning("empty longname field");
- else if (strchr(desc, ' ') == (char *)NULL)
- _nc_warning("older tic versions may treat the description field as an alias");
- }
- if (!desc)
- desc = buffer + strlen(buffer);
-
- /*
- * Whitespace in a name field other than the long name
- * can confuse rdist and some termcap tools. Slashes
- * are a no-no. Other special characters can be
- * dangerous due to shell expansion.
- */
- for (ptr = buffer; ptr < desc; ptr++)
- {
- if (isspace(*ptr))
- {
- _nc_warning("whitespace in name or alias field");
- break;
- }
- else if (*ptr == '/')
- {
- _nc_warning("slashes aren't allowed in names or aliases");
- break;
- }
- else if (strchr("$[]!*?", *ptr))
- {
- _nc_warning("dubious character `%c' in name or alias field", *ptr);
- break;
- }
- }
+ if (ch == EOF) {
+ type = EOF;
+ goto end_of_token;
+ }
- ptr = buffer;
+ /* have to make some punctuation chars legal for terminfo */
+ if (!isalnum(ch)
+#ifdef NCURSES_EXT_FUNCS
+ && !(ch == '.' && _nc_disable_period)
+#endif
+ && !strchr(terminfo_punct, (char) ch)) {
+ _nc_warning("Illegal character (expected alphanumeric or %s) - %s",
+ terminfo_punct, unctrl(ch));
+ _nc_panic_mode(separator);
+ goto start_token;
+ }
- _nc_curr_token.tk_name = buffer;
- type = NAMES;
- } else {
- while ((ch = next_char()) != EOF) {
- if (!isalnum(ch)) {
- if (_nc_syntax == SYN_TERMINFO) {
- if (ch != '_')
- break;
- } else { /* allow ';' for "k;" */
- if (ch != ';')
- break;
- }
- }
- *(ptr++) = ch;
- }
+ ptr = buffer;
+ *(ptr++) = ch;
- *ptr++ = '\0';
- switch (ch) {
- case ',':
- case ':':
- if (ch != separator)
- _nc_err_abort("Separator inconsistent with syntax");
- _nc_curr_token.tk_name = buffer;
- type = BOOLEAN;
- break;
- case '@':
- if ((ch = next_char()) != separator)
- _nc_warning("Missing separator after `%s', have %s",
- buffer, _tracechar((chtype)ch));
- _nc_curr_token.tk_name = buffer;
- type = CANCEL;
- break;
-
- case '#':
- found = 0;
- while (isalnum(ch = next_char())) {
- numbuf[found++] = ch;
- if (found >= sizeof(numbuf)-1)
- break;
- }
- numbuf[found] = '\0';
- number = strtol(numbuf, &numchk, 0);
- if (numchk == numbuf)
- _nc_warning("no value given for `%s'", buffer);
- if ((*numchk != '\0') || (ch != separator))
- _nc_warning("Missing separator");
- _nc_curr_token.tk_name = buffer;
- _nc_curr_token.tk_valnumber = number;
- type = NUMBER;
- break;
-
- case '=':
- ch = _nc_trans_string(ptr);
- if (ch != separator)
- _nc_warning("Missing separator");
- _nc_curr_token.tk_name = buffer;
- _nc_curr_token.tk_valstring = ptr;
- type = STRING;
- break;
-
- case EOF:
- type = EOF;
- break;
- default:
- /* just to get rid of the compiler warning */
- type = UNDEF;
- _nc_warning("Illegal character - %s",
- _tracechar((chtype)ch));
- }
- } /* end else (first_column == FALSE) */
- } /* end else (ch != EOF) */
+ if (first_column) {
+ char *desc;
-end_of_token:
+ _nc_comment_start = token_start;
+ _nc_comment_end = _nc_curr_file_pos;
+ _nc_start_line = _nc_curr_line;
-#ifdef TRACE
- if (dot_flag == TRUE)
- DEBUG(8, ("Commented out "));
-
- if (_nc_tracing & TRACE_IEVENT)
- {
- fprintf(stderr, "Token: ");
- switch (type)
- {
- case BOOLEAN:
- fprintf(stderr, "Boolean; name='%s'\n",
- _nc_curr_token.tk_name);
+ _nc_syntax = ERR;
+ while ((ch = next_char()) != '\n') {
+ if (ch == EOF)
+ _nc_err_abort("premature EOF");
+ else if (ch == ':' && last_char() != ',') {
+ _nc_syntax = SYN_TERMCAP;
+ separator = ':';
break;
+ } else if (ch == ',') {
+ _nc_syntax = SYN_TERMINFO;
+ separator = ',';
+ /*
+ * Fall-through here is not an accident.
+ * The idea is that if we see a comma, we
+ * figure this is terminfo unless we
+ * subsequently run into a colon -- but
+ * we don't stop looking for that colon until
+ * hitting a newline. This allows commas to
+ * be embedded in description fields of
+ * either syntax.
+ */
+ /* FALLTHRU */
+ } else
+ ch = eat_escaped_newline(ch);
+
+ *ptr++ = ch;
+ }
+ ptr[0] = '\0';
+ if (_nc_syntax == ERR) {
+ /*
+ * 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.
+ */
+ _nc_syntax = SYN_TERMCAP;
+ separator = ':';
+ } else if (_nc_syntax == SYN_TERMINFO) {
+ /* throw away trailing /, *$/ */
+ for (--ptr; iswhite(*ptr) || *ptr == ','; ptr--)
+ continue;
+ ptr[1] = '\0';
+ }
- case NUMBER:
- fprintf(stderr, "Number; name='%s', value=%d\n",
- _nc_curr_token.tk_name,
- _nc_curr_token.tk_valnumber);
+ /*
+ * This is the soonest we have the terminal name
+ * fetched. Set up for following warning messages.
+ */
+ ptr = strchr(buffer, '|');
+ if (ptr == (char *) NULL)
+ ptr = buffer + strlen(buffer);
+ ch = *ptr;
+ *ptr = '\0';
+ _nc_set_type(buffer);
+ *ptr = ch;
+
+ /*
+ * Compute the boundary between the aliases and the
+ * description field for syntax-checking purposes.
+ */
+ desc = strrchr(buffer, '|');
+ if (desc) {
+ if (*desc == '\0')
+ _nc_warning("empty longname field");
+ else if (strchr(desc, ' ') == (char *) NULL)
+ _nc_warning("older tic versions may treat the description field as an alias");
+ }
+ if (!desc)
+ desc = buffer + strlen(buffer);
+
+ /*
+ * Whitespace in a name field other than the long name
+ * can confuse rdist and some termcap tools. Slashes
+ * are a no-no. Other special characters can be
+ * dangerous due to shell expansion.
+ */
+ for (ptr = buffer; ptr < desc; ptr++) {
+ if (isspace(*ptr)) {
+ _nc_warning("whitespace in name or alias field");
break;
-
- case STRING:
- fprintf(stderr, "String; name='%s', value=%s\n",
- _nc_curr_token.tk_name,
- _nc_visbuf(_nc_curr_token.tk_valstring));
+ } else if (*ptr == '/') {
+ _nc_warning("slashes aren't allowed in names or aliases");
break;
-
- case CANCEL:
- fprintf(stderr, "Cancel; name='%s'\n",
- _nc_curr_token.tk_name);
+ } else if (strchr("$[]!*?", *ptr)) {
+ _nc_warning("dubious character `%c' in name or alias field", *ptr);
break;
+ }
+ }
- case NAMES:
+ ptr = buffer;
- fprintf(stderr, "Names; value='%s'\n",
- _nc_curr_token.tk_name);
- break;
+ _nc_curr_token.tk_name = buffer;
+ type = NAMES;
+ } else {
+ while ((ch = next_char()) != EOF) {
+ if (!isalnum(ch)) {
+ if (_nc_syntax == SYN_TERMINFO) {
+ if (ch != '_')
+ break;
+ } else { /* allow ';' for "k;" */
+ if (ch != ';')
+ break;
+ }
+ }
+ *(ptr++) = ch;
+ }
- case EOF:
- fprintf(stderr, "End of file\n");
- break;
+ *ptr++ = '\0';
+ switch (ch) {
+ case ',':
+ case ':':
+ if (ch != separator)
+ _nc_err_abort("Separator inconsistent with syntax");
+ _nc_curr_token.tk_name = buffer;
+ type = BOOLEAN;
+ break;
+ case '@':
+ if ((ch = next_char()) != separator)
+ _nc_warning("Missing separator after `%s', have %s",
+ buffer, unctrl(ch));
+ _nc_curr_token.tk_name = buffer;
+ type = CANCEL;
+ break;
- default:
- _nc_warning("Bad token type");
+ case '#':
+ found = 0;
+ while (isalnum(ch = next_char())) {
+ numbuf[found++] = ch;
+ if (found >= sizeof(numbuf) - 1)
+ break;
+ }
+ numbuf[found] = '\0';
+ number = strtol(numbuf, &numchk, 0);
+ if (numchk == numbuf)
+ _nc_warning("no value given for `%s'", buffer);
+ if ((*numchk != '\0') || (ch != separator))
+ _nc_warning("Missing separator");
+ _nc_curr_token.tk_name = buffer;
+ _nc_curr_token.tk_valnumber = number;
+ type = NUMBER;
+ break;
+
+ case '=':
+ ch = _nc_trans_string(ptr, buffer + sizeof(buffer));
+ if (ch != separator)
+ _nc_warning("Missing separator");
+ _nc_curr_token.tk_name = buffer;
+ _nc_curr_token.tk_valstring = ptr;
+ type = STRING;
+ break;
+
+ case EOF:
+ type = EOF;
+ break;
+ default:
+ /* just to get rid of the compiler warning */
+ type = UNDEF;
+ _nc_warning("Illegal character - %s", unctrl(ch));
}
+ } /* end else (first_column == FALSE) */
+ } /* end else (ch != EOF) */
+
+ end_of_token:
+
+#ifdef TRACE
+ if (dot_flag == TRUE)
+ DEBUG(8, ("Commented out "));
+
+ if (_nc_tracing >= DEBUG_LEVEL(7)) {
+ switch (type) {
+ case BOOLEAN:
+ _tracef("Token: Boolean; name='%s'",
+ _nc_curr_token.tk_name);
+ break;
+
+ case NUMBER:
+ _tracef("Token: Number; name='%s', value=%d",
+ _nc_curr_token.tk_name,
+ _nc_curr_token.tk_valnumber);
+ break;
+
+ case STRING:
+ _tracef("Token: String; name='%s', value=%s",
+ _nc_curr_token.tk_name,
+ _nc_visbuf(_nc_curr_token.tk_valstring));
+ break;
+
+ case CANCEL:
+ _tracef("Token: Cancel; name='%s'",
+ _nc_curr_token.tk_name);
+ break;
+
+ case NAMES:
+
+ _tracef("Token: Names; value='%s'",
+ _nc_curr_token.tk_name);
+ break;
+
+ case EOF:
+ _tracef("Token: End of file");
+ break;
+
+ default:
+ _nc_warning("Bad token type");
}
+ }
#endif
- if (dot_flag == TRUE) /* if commented out, use the next one */
- type = _nc_get_token();
+ if (dot_flag == TRUE) /* if commented out, use the next one */
+ type = _nc_get_token();
- DEBUG(3, ("token: `%s', class %d", _nc_curr_token.tk_name, type));
+ DEBUG(3, ("token: `%s', class %d", _nc_curr_token.tk_name, type));
- return(type);
+ return (type);
}
/*
*/
char
-_nc_trans_string(char *ptr)
+_nc_trans_string(char *ptr, char *last)
{
-int count = 0;
-int number;
-int i, c;
-chtype ch, last_ch = '\0';
-bool ignored = FALSE;
-
- while ((ch = c = next_char()) != (chtype)separator && c != EOF) {
- if ((_nc_syntax == SYN_TERMCAP) && c == '\n')
- break;
- if (ch == '^' && last_ch != '%') {
- ch = c = next_char();
- if (c == EOF)
- _nc_err_abort("Premature EOF");
-
- if (! (is7bits(ch) && isprint(ch))) {
- _nc_warning("Illegal ^ character - %s",
- _tracechar((unsigned char)ch));
- }
- if (ch == '?') {
- *(ptr++) = '\177';
- } else {
- if ((ch &= 037) == 0)
- ch = 128;
- *(ptr++) = (char)(ch);
- }
+ int count = 0;
+ int number;
+ int i, c;
+ chtype ch, last_ch = '\0';
+ bool ignored = FALSE;
+ bool long_warning = FALSE;
+
+ while ((ch = c = next_char()) != (chtype) separator && c != EOF) {
+ if (ptr == (last - 1))
+ break;
+ if ((_nc_syntax == SYN_TERMCAP) && c == '\n')
+ break;
+ if (ch == '^' && last_ch != '%') {
+ ch = c = next_char();
+ if (c == EOF)
+ _nc_err_abort("Premature EOF");
+
+ if (!(is7bits(ch) && isprint(ch))) {
+ _nc_warning("Illegal ^ character - %s", unctrl(ch));
+ }
+ if (ch == '?') {
+ *(ptr++) = '\177';
+ if (_nc_tracing)
+ _nc_warning("Allow ^? as synonym for \\177");
+ } else {
+ if ((ch &= 037) == 0)
+ ch = 128;
+ *(ptr++) = (char) (ch);
}
- else if (ch == '\\') {
- ch = c = next_char();
- if (c == EOF)
- _nc_err_abort("Premature EOF");
-
- if (ch >= '0' && ch <= '7') {
- number = ch - '0';
- for (i=0; i < 2; i++) {
- ch = c = next_char();
- if (c == EOF)
- _nc_err_abort("Premature EOF");
-
- if (c < '0' || c > '7') {
- if (isdigit(c)) {
- _nc_warning("Non-octal digit `%c' in \\ sequence", c);
- /* allow the digit; it'll do less harm */
- } else {
- push_back((char)c);
- break;
- }
+ } else if (ch == '\\') {
+ ch = c = next_char();
+ if (c == EOF)
+ _nc_err_abort("Premature EOF");
+
+ if (ch >= '0' && ch <= '7') {
+ number = ch - '0';
+ for (i = 0; i < 2; i++) {
+ ch = c = next_char();
+ if (c == EOF)
+ _nc_err_abort("Premature EOF");
+
+ if (c < '0' || c > '7') {
+ if (isdigit(c)) {
+ _nc_warning("Non-octal digit `%c' in \\ sequence", c);
+ /* allow the digit; it'll do less harm */
+ } else {
+ push_back((char) c);
+ break;
}
-
- number = number * 8 + c - '0';
}
- if (number == 0)
- number = 0200;
- *(ptr++) = (char) number;
- } else {
- switch (c) {
- case 'E':
- case 'e': *(ptr++) = '\033'; break;
+ number = number * 8 + c - '0';
+ }
+
+ if (number == 0)
+ number = 0200;
+ *(ptr++) = (char) number;
+ } else {
+ switch (c) {
+ case 'E':
+ case 'e':
+ *(ptr++) = '\033';
+ break;
- case 'a': *(ptr++) = '\007'; break;
+ case 'a':
+ *(ptr++) = '\007';
+ break;
- case 'l':
- case 'n': *(ptr++) = '\n'; break;
+ case 'l':
+ case 'n':
+ *(ptr++) = '\n';
+ break;
- case 'r': *(ptr++) = '\r'; break;
+ case 'r':
+ *(ptr++) = '\r';
+ break;
- case 'b': *(ptr++) = '\010'; break;
+ case 'b':
+ *(ptr++) = '\010';
+ break;
- case 's': *(ptr++) = ' '; break;
+ case 's':
+ *(ptr++) = ' ';
+ break;
- case 'f': *(ptr++) = '\014'; break;
+ case 'f':
+ *(ptr++) = '\014';
+ break;
- case 't': *(ptr++) = '\t'; break;
+ case 't':
+ *(ptr++) = '\t';
+ break;
- case '\\': *(ptr++) = '\\'; break;
+ case '\\':
+ *(ptr++) = '\\';
+ break;
- case '^': *(ptr++) = '^'; break;
+ case '^':
+ *(ptr++) = '^';
+ break;
- case ',': *(ptr++) = ','; break;
+ case ',':
+ *(ptr++) = ',';
+ break;
- case ':': *(ptr++) = ':'; break;
+ case ':':
+ *(ptr++) = ':';
+ break;
- case '\n':
- continue;
+ case '\n':
+ continue;
- default:
- _nc_warning("Illegal character %s in \\ sequence",
- _tracechar((unsigned char)ch));
- *(ptr++) = (char)ch;
- } /* endswitch (ch) */
- } /* endelse (ch < '0' || ch > '7') */
- } /* end else if (ch == '\\') */
- else if (ch == '\n' && (_nc_syntax == SYN_TERMINFO)) {
- /* newlines embedded in a terminfo string are ignored */
- ignored = TRUE;
- } else {
- *(ptr++) = (char)ch;
- }
+ default:
+ _nc_warning("Illegal character %s in \\ sequence",
+ unctrl(ch));
+ *(ptr++) = (char) ch;
+ } /* endswitch (ch) */
+ } /* endelse (ch < '0' || ch > '7') */
+ }
+ /* end else if (ch == '\\') */
+ else if (ch == '\n' && (_nc_syntax == SYN_TERMINFO)) {
+ /* newlines embedded in a terminfo string are ignored */
+ ignored = TRUE;
+ } else {
+ *(ptr++) = (char) ch;
+ }
- if (!ignored) {
- last_ch = ch;
- count ++;
- }
- ignored = FALSE;
+ if (!ignored) {
+ last_ch = ch;
+ count++;
+ }
+ ignored = FALSE;
- if (count > MAXCAPLEN)
- _nc_warning("Very long string found. Missing separator?");
- } /* end while */
+ if (count > MAXCAPLEN && !long_warning) {
+ _nc_warning("Very long string found. Missing separator?");
+ long_warning = TRUE;
+ }
+ } /* end while */
- *ptr = '\0';
+ *ptr = '\0';
- return(ch);
+ return (ch);
}
/*
* get_token() call.
*/
-void _nc_push_token(int tokclass)
+void
+_nc_push_token(int tokclass)
{
/*
* This implementation is kind of bogus, it will fail if we ever do
_nc_get_type(pushname);
DEBUG(3, ("pushing token: `%s', class %d",
- _nc_curr_token.tk_name, pushtype));
+ _nc_curr_token.tk_name, pushtype));
}
/*
* Panic mode error recovery - skip everything until a "ch" is found.
*/
-void _nc_panic_mode(char ch)
+void
+_nc_panic_mode(char ch)
{
- int c;
-
- for (;;) {
- c = next_char();
- if (c == ch)
- return;
- if (c == EOF)
- return;
- }
+ int c;
+
+ for (;;) {
+ c = next_char();
+ if (c == ch)
+ return;
+ if (c == EOF)
+ return;
+ }
}
/*****************************************************************************
* non-null.
*/
-void _nc_reset_input(FILE *fp, char *buf)
+void
+_nc_reset_input(FILE * fp, char *buf)
{
- pushtype = NO_PUSHBACK;
- pushname[0] = '\0';
- yyin = fp;
- bufstart = bufptr = buf;
- _nc_curr_file_pos = 0L;
- if (fp != 0)
- _nc_curr_line = 0;
- _nc_curr_col = 0;
+ pushtype = NO_PUSHBACK;
+ pushname[0] = '\0';
+ yyin = fp;
+ bufstart = bufptr = buf;
+ _nc_curr_file_pos = 0L;
+ if (fp != 0)
+ _nc_curr_line = 0;
+ _nc_curr_col = 0;
}
/*
static int
last_char(void)
{
- size_t len = strlen(bufptr);
- while (len--) {
- if (!isspace(bufptr[len]))
- return bufptr[len];
- }
- return 0;
+ size_t len = strlen(bufptr);
+ while (len--) {
+ if (!isspace(bufptr[len]))
+ return bufptr[len];
+ }
+ return 0;
}
/*
static int
next_char(void)
{
- if (!yyin)
- {
+ if (!yyin) {
if (*bufptr == '\0')
- return(EOF);
+ return (EOF);
if (*bufptr == '\n') {
_nc_curr_line++;
_nc_curr_col = 0;
}
- }
- else if (!bufptr || !*bufptr)
- {
+ } else if (!bufptr || !*bufptr) {
/*
* In theory this could be recoded to do its I/O one
* character at a time, saving the buffer space. In
size_t len;
do {
- _nc_curr_file_pos = ftell(yyin);
+ _nc_curr_file_pos = ftell(yyin);
- if ((bufstart = fgets(line, LEXBUFSIZ, yyin)) != NULL) {
- _nc_curr_line++;
- _nc_curr_col = 0;
- }
- bufptr = bufstart;
- } while
- (bufstart != NULL && line[0] == '#');
+ if ((bufstart = fgets(line, LEXBUFSIZ, yyin)) != NULL) {
+ _nc_curr_line++;
+ _nc_curr_col = 0;
+ }
+ bufptr = bufstart;
+ } while
+ (bufstart != NULL && line[0] == '#');
if (bufstart == NULL)
return (EOF);
* files on OS/2, etc.
*/
if ((len = strlen(bufptr)) > 1) {
- if (bufptr[len-1] == '\n'
- && bufptr[len-2] == '\r') {
- bufptr[len-2] = '\n';
- bufptr[len-1] = '\0';
+ if (bufptr[len - 1] == '\n'
+ && bufptr[len - 2] == '\r') {
+ bufptr[len - 2] = '\n';
+ bufptr[len - 1] = '\0';
}
}
}
first_column = (bufptr == bufstart);
_nc_curr_col++;
- return(*bufptr++);
+ return (*bufptr++);
}
-static void push_back(char c)
+static void
+push_back(char c)
/* push a character back onto the input stream */
{
if (bufptr == bufstart)
- _nc_syserr_abort("Can't backspace off beginning of line");
+ _nc_syserr_abort("Can't backspace off beginning of line");
*--bufptr = c;
}
-static long stream_pos(void)
+static long
+stream_pos(void)
/* return our current character position in the input stream */
{
return (yyin ? ftell(yyin) : (bufptr ? bufptr - bufstart : 0));
}
-static bool end_of_stream(void)
+static bool
+end_of_stream(void)
/* are we at end of input? */
{
return ((yyin ? feof(yyin) : (bufptr && *bufptr == '\0'))
- ? TRUE : FALSE);
+ ? TRUE : FALSE);
}
/* comp_scan.c ends here */
/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1999,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 *
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: free_ttype.c,v 1.2 1999/03/01 00:30:35 tom Exp $")
+MODULE_ID("$Id: free_ttype.c,v 1.5 2000/07/08 00:43:58 tom Exp $")
void _nc_free_termtype(TERMTYPE *ptr)
{
- FreeIfNeeded(ptr->str_table);
- FreeIfNeeded(ptr->term_names);
+ FreeIfNeeded(ptr->str_table);
+ FreeIfNeeded(ptr->term_names);
+ FreeIfNeeded(ptr->Booleans);
+ FreeIfNeeded(ptr->Numbers);
+ FreeIfNeeded(ptr->Strings);
#if NCURSES_XNAMES
- FreeIfNeeded(ptr->ext_str_table);
- FreeIfNeeded(ptr->Booleans);
- FreeIfNeeded(ptr->Numbers);
- FreeIfNeeded(ptr->Strings);
- FreeIfNeeded(ptr->ext_Names);
+ FreeIfNeeded(ptr->ext_str_table);
+ FreeIfNeeded(ptr->ext_Names);
#endif
- memset(ptr, 0, sizeof(TERMTYPE));
+ memset(ptr, 0, sizeof(TERMTYPE));
}
#if NCURSES_XNAMES
int use_extended_names(bool flag)
{
- int oldflag = _nc_user_definable;
- _nc_user_definable = flag;
- return oldflag;
+ int oldflag = _nc_user_definable;
+ _nc_user_definable = flag;
+ return oldflag;
}
#endif
/* cursor_visible,cursor_normal,cursor_invisible */
#include <tic.h> /* struct tinfo_fkeys */
-MODULE_ID("$Id: init_keytry.c,v 1.2 1999/09/11 17:32:57 Jeffrey.Honig Exp $")
+MODULE_ID("$Id: init_keytry.c,v 1.3 2000/03/12 02:55:50 Todd.C.Miller Exp $")
/*
** _nc_init_keytry()
**
*/
-#ifdef BROKEN_LINKER
+#if BROKEN_LINKER
#undef _nc_tinfo_fkeys
#endif
/* LINT_PREPRO
#endif*/
-#ifdef BROKEN_LINKER
+#if BROKEN_LINKER
struct tinfo_fkeys *_nc_tinfo_fkeysf(void)
{
return _nc_tinfo_fkeys;
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include <curses.priv.h>
#include <term.h> /* ena_acs, acs_chars */
-MODULE_ID("$Id: lib_acs.c,v 1.15 1999/02/18 11:31:43 tom Exp $")
+MODULE_ID("$Id: lib_acs.c,v 1.16 1999/10/30 23:00:16 tom Exp $")
-chtype acs_map[ACS_LEN];
+chtype acs_map[ACS_LEN] = { 0 };
void _nc_init_acs(void)
{
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
#include <term_entry.h> /* TTY, cur_term */
#include <termcap.h> /* ospeed */
-MODULE_ID("$Id: lib_cur_term.c,v 1.8 1999/07/24 20:08:19 tom Exp $")
+MODULE_ID("$Id: lib_cur_term.c,v 1.9 1999/10/30 23:00:16 tom Exp $")
-TERMINAL *cur_term;
+TERMINAL *cur_term = 0;
TERMINAL *set_curterm(TERMINAL *termp)
{
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* lib_napms.c
*
#if HAVE_NANOSLEEP
#include <time.h>
+#if HAVE_SYS_TIME_H
+#include <sys/time.h> /* needed for MacOS X DP3 */
+#endif
#elif USE_FUNC_POLL
-#include <stropts.h>
-#include <poll.h>
#if HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#endif
#endif
-MODULE_ID("$Id: lib_napms.c,v 1.6 1999/10/21 23:01:41 tom Exp $")
+MODULE_ID("$Id: lib_napms.c,v 1.9 2000/04/29 23:42:56 tom Exp $")
-int napms(int ms)
+int
+napms(int ms)
{
- T((T_CALLED("napms(%d)"), ms));
+ T((T_CALLED("napms(%d)"), ms));
#if HAVE_NANOSLEEP
- {
- struct timespec ts;
- ts.tv_sec = ms / 1000;
- ts.tv_nsec = (ms % 1000) * 1000000;
- nanosleep(&ts, NULL);
- }
+ {
+ struct timespec ts;
+ ts.tv_sec = ms / 1000;
+ ts.tv_nsec = (ms % 1000) * 1000000;
+ nanosleep(&ts, NULL);
+ }
#elif USE_FUNC_POLL
- {
- struct pollfd fds[1];
- poll(fds, 0, ms);
- }
+ {
+ struct pollfd fds[1];
+ poll(fds, 0, ms);
+ }
#elif HAVE_SELECT
- {
- struct timeval tval;
- tval.tv_sec = ms / 1000;
- tval.tv_usec = (ms % 1000) * 1000;
- select(0, NULL, NULL, NULL, &tval);
- }
+ {
+ struct timeval tval;
+ tval.tv_sec = ms / 1000;
+ tval.tv_usec = (ms % 1000) * 1000;
+ select(0, NULL, NULL, NULL, &tval);
+ }
#endif
- returnCode(OK);
+ returnCode(OK);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
** lib_options.c
**
#include <curses.priv.h>
-#include <term.h> /* keypad_xmit, keypad_local, meta_on, meta_off */
- /* cursor_visible,cursor_normal,cursor_invisible */
+#include <term.h>
-MODULE_ID("$Id: lib_options.c,v 1.36 1999/10/22 21:38:57 tom Exp $")
+MODULE_ID("$Id: lib_options.c,v 1.39 2000/03/12 00:19:11 tom Exp $")
-int idlok(WINDOW *win, bool flag)
+int
+idlok(WINDOW *win, bool flag)
{
- T((T_CALLED("idlok(%p,%d)"), win, flag));
+ T((T_CALLED("idlok(%p,%d)"), win, flag));
- if (win) {
- _nc_idlok = win->_idlok = flag && (has_il() || change_scroll_region);
- returnCode(OK);
- }
- else
- returnCode(ERR);
+ if (win) {
+ _nc_idlok = win->_idlok = (flag && (has_il() || change_scroll_region));
+ returnCode(OK);
+ } else
+ returnCode(ERR);
}
-
-void idcok(WINDOW *win, bool flag)
+void
+idcok(WINDOW *win, bool flag)
{
- T((T_CALLED("idcok(%p,%d)"), win, flag));
+ T((T_CALLED("idcok(%p,%d)"), win, flag));
- if (win)
- _nc_idcok = win->_idcok = flag && has_ic();
+ if (win)
+ _nc_idcok = win->_idcok = (flag && has_ic());
- returnVoid;
+ returnVoid;
}
-int halfdelay(int t)
+int
+halfdelay(int t)
{
- T((T_CALLED("halfdelay(%d)"), t));
+ T((T_CALLED("halfdelay(%d)"), t));
- if (t < 1 || t > 255)
- returnCode(ERR);
+ if (t < 1 || t > 255)
+ returnCode(ERR);
- cbreak();
- SP->_cbreak = t+1;
- returnCode(OK);
+ cbreak();
+ SP->_cbreak = t + 1;
+ returnCode(OK);
}
-int nodelay(WINDOW *win, bool flag)
+int
+nodelay(WINDOW *win, bool flag)
{
- T((T_CALLED("nodelay(%p,%d)"), win, flag));
+ T((T_CALLED("nodelay(%p,%d)"), win, flag));
- if (win) {
- if (flag == TRUE)
+ if (win) {
+ if (flag == TRUE)
win->_delay = 0;
- else win->_delay = -1;
- returnCode(OK);
- }
else
- returnCode(ERR);
+ win->_delay = -1;
+ returnCode(OK);
+ } else
+ returnCode(ERR);
}
-int notimeout(WINDOW *win, bool f)
+int
+notimeout(WINDOW *win, bool f)
{
- T((T_CALLED("notimout(%p,%d)"), win, f));
+ T((T_CALLED("notimout(%p,%d)"), win, f));
- if (win) {
- win->_notimeout = f;
- returnCode(OK);
- }
- else
- returnCode(ERR);
+ if (win) {
+ win->_notimeout = f;
+ returnCode(OK);
+ } else
+ returnCode(ERR);
}
-void wtimeout(WINDOW *win, int delay)
+void
+wtimeout(WINDOW *win, int delay)
{
- T((T_CALLED("wtimeout(%p,%d)"), win, delay));
+ T((T_CALLED("wtimeout(%p,%d)"), win, delay));
- if (win) {
- win->_delay = delay;
- }
+ if (win) {
+ win->_delay = delay;
+ }
}
-int keypad(WINDOW *win, bool flag)
+int
+keypad(WINDOW *win, bool flag)
{
- T((T_CALLED("keypad(%p,%d)"), win, flag));
+ T((T_CALLED("keypad(%p,%d)"), win, flag));
- if (win) {
- win->_use_keypad = flag;
- returnCode(_nc_keypad(flag));
- }
- else
- returnCode(ERR);
+ if (win) {
+ win->_use_keypad = flag;
+ returnCode(_nc_keypad(flag));
+ } else
+ returnCode(ERR);
}
-
-int meta(WINDOW *win GCC_UNUSED, bool flag)
+int
+meta(WINDOW *win GCC_UNUSED, bool flag)
{
- /* Ok, we stay relaxed and don't signal an error if win is NULL */
- T((T_CALLED("meta(%p,%d)"), win, flag));
-
- SP->_use_meta = flag;
-
- if (flag && meta_on)
- {
- TPUTS_TRACE("meta_on");
- putp(meta_on);
- }
- else if (! flag && meta_off)
- {
- TPUTS_TRACE("meta_off");
- putp(meta_off);
- }
- returnCode(OK);
+ /* Ok, we stay relaxed and don't signal an error if win is NULL */
+ T((T_CALLED("meta(%p,%d)"), win, flag));
+
+ SP->_use_meta = flag;
+
+ if (flag && meta_on) {
+ TPUTS_TRACE("meta_on");
+ putp(meta_on);
+ } else if (!flag && meta_off) {
+ TPUTS_TRACE("meta_off");
+ putp(meta_off);
+ }
+ returnCode(OK);
}
/* curs_set() moved here to narrow the kernel interface */
-int curs_set(int vis)
+int
+curs_set(int vis)
{
-int cursor = SP->_cursor;
-
- T((T_CALLED("curs_set(%d)"), vis));
-
- if (vis < 0 || vis > 2)
- returnCode(ERR);
-
- if (vis == cursor)
- returnCode(cursor);
-
- switch(vis) {
- case 2:
- if (cursor_visible)
- {
- TPUTS_TRACE("cursor_visible");
- putp(cursor_visible);
- }
- else
- returnCode(ERR);
- break;
- case 1:
- if (cursor_normal)
- {
- TPUTS_TRACE("cursor_normal");
- putp(cursor_normal);
- }
- else
- returnCode(ERR);
- break;
- case 0:
- if (cursor_invisible)
- {
- TPUTS_TRACE("cursor_invisible");
- putp(cursor_invisible);
- }
- else
- returnCode(ERR);
- break;
- }
- SP->_cursor = vis;
- _nc_flush();
-
- returnCode(cursor==-1 ? 1 : cursor);
+ int cursor = SP->_cursor;
+
+ T((T_CALLED("curs_set(%d)"), vis));
+
+ if (vis < 0 || vis > 2)
+ returnCode(ERR);
+
+ if (vis == cursor)
+ returnCode(cursor);
+
+ switch (vis) {
+ case 2:
+ if (cursor_visible) {
+ TPUTS_TRACE("cursor_visible");
+ putp(cursor_visible);
+ } else
+ returnCode(ERR);
+ break;
+ case 1:
+ if (cursor_normal) {
+ TPUTS_TRACE("cursor_normal");
+ putp(cursor_normal);
+ } else
+ returnCode(ERR);
+ break;
+ case 0:
+ if (cursor_invisible) {
+ TPUTS_TRACE("cursor_invisible");
+ putp(cursor_invisible);
+ } else
+ returnCode(ERR);
+ break;
+ }
+ SP->_cursor = vis;
+ _nc_flush();
+
+ returnCode(cursor == -1 ? 1 : cursor);
}
-int typeahead(int fd)
+int
+typeahead(int fd)
{
- T((T_CALLED("typeahead(%d)"), fd));
- SP->_checkfd = fd;
- returnCode(OK);
+ T((T_CALLED("typeahead(%d)"), fd));
+ SP->_checkfd = fd;
+ returnCode(OK);
}
/*
*/
#ifdef NCURSES_EXT_FUNCS
-static int has_key_internal(int keycode, struct tries *tp)
+static int
+has_key_internal(int keycode, struct tries *tp)
{
if (tp == 0)
- return(FALSE);
+ return (FALSE);
else if (tp->value == keycode)
- return(TRUE);
+ return (TRUE);
else
- return(has_key_internal(keycode, tp->child)
- || has_key_internal(keycode, tp->sibling));
+ return (has_key_internal(keycode, tp->child)
+ || has_key_internal(keycode, tp->sibling));
}
-int has_key(int keycode)
+int
+has_key(int keycode)
{
T((T_CALLED("has_key(%d)"), keycode));
returnCode(has_key_internal(keycode, SP->_keytry));
* flush, then the next wgetch may get the escape sequence that corresponds to
* the terminal state _before_ switching modes.
*/
-int _nc_keypad(bool flag)
+int
+_nc_keypad(bool flag)
{
- if (flag && keypad_xmit)
- {
- TPUTS_TRACE("keypad_xmit");
- putp(keypad_xmit);
- _nc_flush();
- }
- else if (! flag && keypad_local)
- {
- TPUTS_TRACE("keypad_local");
- putp(keypad_local);
- _nc_flush();
- }
-
- if (flag && !SP->_tried) {
- _nc_init_keytry();
- SP->_tried = TRUE;
- }
- return(OK);
+ if (flag && keypad_xmit) {
+ TPUTS_TRACE("keypad_xmit");
+ putp(keypad_xmit);
+ _nc_flush();
+ } else if (!flag && keypad_local) {
+ TPUTS_TRACE("keypad_local");
+ putp(keypad_local);
+ _nc_flush();
+ }
+
+ if (flag && !SP->_tried) {
+ _nc_init_keytry();
+ SP->_tried = TRUE;
+ }
+ return (OK);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* raw.c
*
*/
#include <curses.priv.h>
-#include <term.h> /* cur_term */
+#include <term.h> /* cur_term */
-MODULE_ID("$Id: lib_raw.c,v 1.3 1999/03/06 22:28:24 tom Exp $")
+MODULE_ID("$Id: lib_raw.c,v 1.7 2000/02/13 01:01:26 tom Exp $")
#if defined(SVR4_TERMIO) && !defined(_POSIX_SOURCE)
#define _POSIX_SOURCE
#endif
#if HAVE_SYS_TERMIO_H
-#include <sys/termio.h> /* needed for ISC */
+#include <sys/termio.h> /* needed for ISC */
#endif
#ifdef __EMX__
#include <io.h>
-#include <fcntl.h>
#endif
#define COOKED_INPUT (IXON|BRKINT|PARMRK)
#define AFTER(s)
#endif /* TRACE */
-int raw(void)
+int
+raw(void)
{
- T((T_CALLED("raw()")));
- if (SP != 0 && cur_term != 0) {
+ T((T_CALLED("raw()")));
+ if (SP != 0 && cur_term != 0) {
- SP->_raw = TRUE;
- SP->_cbreak = 1;
+ SP->_raw = TRUE;
+ SP->_cbreak = 1;
#ifdef __EMX__
- setmode(SP->_ifd, O_BINARY);
+ setmode(SP->_ifd, O_BINARY);
#endif
#ifdef TERMIOS
- BEFORE("raw");
- cur_term->Nttyb.c_lflag &= ~(ICANON|ISIG);
- cur_term->Nttyb.c_iflag &= ~(COOKED_INPUT);
- cur_term->Nttyb.c_cc[VMIN] = 1;
- cur_term->Nttyb.c_cc[VTIME] = 0;
- AFTER("raw");
+ BEFORE("raw");
+ cur_term->Nttyb.c_lflag &= ~(ICANON | ISIG | IEXTEN);
+ cur_term->Nttyb.c_iflag &= ~(COOKED_INPUT);
+ cur_term->Nttyb.c_cc[VMIN] = 1;
+ cur_term->Nttyb.c_cc[VTIME] = 0;
+ AFTER("raw");
#else
- cur_term->Nttyb.sg_flags |= RAW;
+ cur_term->Nttyb.sg_flags |= RAW;
#endif
- returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
- }
- returnCode(ERR);
+ returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
+ }
+ returnCode(ERR);
}
-int cbreak(void)
+int
+cbreak(void)
{
- T((T_CALLED("cbreak()")));
+ T((T_CALLED("cbreak()")));
- SP->_cbreak = 1;
+ SP->_cbreak = 1;
#ifdef __EMX__
- setmode(SP->_ifd, O_BINARY);
+ setmode(SP->_ifd, O_BINARY);
#endif
#ifdef TERMIOS
- BEFORE("cbreak");
- cur_term->Nttyb.c_lflag &= ~ICANON;
- cur_term->Nttyb.c_iflag &= ~ICRNL;
- cur_term->Nttyb.c_lflag |= ISIG;
- cur_term->Nttyb.c_cc[VMIN] = 1;
- cur_term->Nttyb.c_cc[VTIME] = 0;
- AFTER("cbreak");
+ BEFORE("cbreak");
+ cur_term->Nttyb.c_lflag &= ~ICANON;
+ cur_term->Nttyb.c_iflag &= ~ICRNL;
+ cur_term->Nttyb.c_lflag |= ISIG;
+ cur_term->Nttyb.c_cc[VMIN] = 1;
+ cur_term->Nttyb.c_cc[VTIME] = 0;
+ AFTER("cbreak");
#else
- cur_term->Nttyb.sg_flags |= CBREAK;
+ cur_term->Nttyb.sg_flags |= CBREAK;
#endif
- returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+ returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
}
-void qiflush(void)
+void
+qiflush(void)
{
- T((T_CALLED("qiflush()")));
+ T((T_CALLED("qiflush()")));
- /*
- * Note: this implementation may be wrong. See the comment under
- * intrflush().
- */
+ /*
+ * Note: this implementation may be wrong. See the comment under
+ * intrflush().
+ */
#ifdef TERMIOS
- BEFORE("qiflush");
- cur_term->Nttyb.c_lflag &= ~(NOFLSH);
- AFTER("qiflush");
- (void)_nc_set_tty_mode( &cur_term->Nttyb);
- returnVoid;
+ BEFORE("qiflush");
+ cur_term->Nttyb.c_lflag &= ~(NOFLSH);
+ AFTER("qiflush");
+ (void) _nc_set_tty_mode(&cur_term->Nttyb);
+ returnVoid;
#endif
}
-
-int noraw(void)
+int
+noraw(void)
{
- T((T_CALLED("noraw()")));
+ T((T_CALLED("noraw()")));
- SP->_raw = FALSE;
- SP->_cbreak = 0;
+ SP->_raw = FALSE;
+ SP->_cbreak = 0;
#ifdef __EMX__
- setmode(SP->_ifd, O_TEXT);
+ setmode(SP->_ifd, O_TEXT);
#endif
#ifdef TERMIOS
- BEFORE("noraw");
- cur_term->Nttyb.c_lflag |= ISIG|ICANON;
- cur_term->Nttyb.c_iflag |= COOKED_INPUT;
- AFTER("noraw");
+ BEFORE("noraw");
+ cur_term->Nttyb.c_lflag |= ISIG | ICANON |
+ (cur_term->Ottyb.c_lflag & IEXTEN);
+ cur_term->Nttyb.c_iflag |= COOKED_INPUT;
+ AFTER("noraw");
#else
- cur_term->Nttyb.sg_flags &= ~(RAW|CBREAK);
+ cur_term->Nttyb.sg_flags &= ~(RAW | CBREAK);
#endif
- returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+ returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
}
-
-int nocbreak(void)
+int
+nocbreak(void)
{
- T((T_CALLED("nocbreak()")));
+ T((T_CALLED("nocbreak()")));
- SP->_cbreak = 0;
+ SP->_cbreak = 0;
#ifdef __EMX__
- setmode(SP->_ifd, O_TEXT);
+ setmode(SP->_ifd, O_TEXT);
#endif
#ifdef TERMIOS
- BEFORE("nocbreak");
- cur_term->Nttyb.c_lflag |= ICANON;
- cur_term->Nttyb.c_iflag |= ICRNL;
- AFTER("nocbreak");
+ BEFORE("nocbreak");
+ cur_term->Nttyb.c_lflag |= ICANON;
+ cur_term->Nttyb.c_iflag |= ICRNL;
+ AFTER("nocbreak");
#else
- cur_term->Nttyb.sg_flags &= ~CBREAK;
+ cur_term->Nttyb.sg_flags &= ~CBREAK;
#endif
- returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+ returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
}
-void noqiflush(void)
+void
+noqiflush(void)
{
- T((T_CALLED("noqiflush()")));
+ T((T_CALLED("noqiflush()")));
- /*
- * Note: this implementation may be wrong. See the comment under
- * intrflush().
- */
+ /*
+ * Note: this implementation may be wrong. See the comment under
+ * intrflush().
+ */
#ifdef TERMIOS
- BEFORE("noqiflush");
- cur_term->Nttyb.c_lflag |= NOFLSH;
- AFTER("noqiflush");
- (void)_nc_set_tty_mode( &cur_term->Nttyb);
- returnVoid;
+ BEFORE("noqiflush");
+ cur_term->Nttyb.c_lflag |= NOFLSH;
+ AFTER("noqiflush");
+ (void) _nc_set_tty_mode(&cur_term->Nttyb);
+ returnVoid;
#endif
}
-int intrflush(WINDOW *win GCC_UNUSED, bool flag)
+int
+intrflush(WINDOW *win GCC_UNUSED, bool flag)
{
- T((T_CALLED("intrflush(%d)"), flag));
+ T((T_CALLED("intrflush(%d)"), flag));
- /*
- * This call does the same thing as the qiflush()/noqiflush()
- * pair. We know for certain that SVr3 intrflush() tweaks the
- * NOFLSH bit; on the other hand, the match (in the SVr4 man
- * pages) between the language describing NOFLSH in termio(7)
- * and the language describing qiflush()/noqiflush() in
- * curs_inopts(3x) is too exact to be coincidence.
- */
+ /*
+ * This call does the same thing as the qiflush()/noqiflush() pair. We
+ * know for certain that SVr3 intrflush() tweaks the NOFLSH bit; on the
+ * other hand, the match (in the SVr4 man pages) between the language
+ * describing NOFLSH in termio(7) and the language describing
+ * qiflush()/noqiflush() in curs_inopts(3x) is too exact to be coincidence.
+ */
#ifdef TERMIOS
- BEFORE("intrflush");
- if (flag)
- cur_term->Nttyb.c_lflag &= ~(NOFLSH);
- else
- cur_term->Nttyb.c_lflag |= (NOFLSH);
- AFTER("intrflush");
- returnCode(_nc_set_tty_mode( &cur_term->Nttyb));
+ BEFORE("intrflush");
+ if (flag)
+ cur_term->Nttyb.c_lflag &= ~(NOFLSH);
+ else
+ cur_term->Nttyb.c_lflag |= (NOFLSH);
+ AFTER("intrflush");
+ returnCode(_nc_set_tty_mode(&cur_term->Nttyb));
#else
- returnCode(ERR);
+ returnCode(ERR);
#endif
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* Terminal setup routines common to termcap and terminfo:
*
*/
#include <curses.priv.h>
-#include <tic.h> /* for MAX_NAME_SIZE */
+#include <tic.h> /* for MAX_NAME_SIZE */
#include <term_entry.h>
#if defined(SVR4_TERMIO) && !defined(_POSIX_SOURCE)
#define _POSIX_SOURCE
#endif
-#include <term.h> /* lines, columns, cur_term */
+#include <term.h> /* lines, columns, cur_term */
-MODULE_ID("$Id: lib_setup.c,v 1.55 1999/08/21 23:06:08 tom Exp $")
+MODULE_ID("$Id: lib_setup.c,v 1.59 2000/02/13 01:01:26 tom Exp $")
/****************************************************************************
*
static void do_prototype(void);
-void use_env(bool f)
+void
+use_env(bool f)
{
- _use_env = f;
+ _use_env = f;
}
-int LINES, COLS, TABSIZE;
+int LINES = 0, COLS = 0, TABSIZE = 0;
-static void _nc_get_screensize(int *linep, int *colp)
+static void
+_nc_get_screensize(int *linep, int *colp)
/* Obtain lines/columns values from the environment and/or terminfo entry */
{
- /* figure out the size of the screen */
- T(("screen size: terminfo lines = %d columns = %d", lines, columns));
+ /* figure out the size of the screen */
+ T(("screen size: terminfo lines = %d columns = %d", lines, columns));
- if (!_use_env)
- {
- *linep = (int)lines;
- *colp = (int)columns;
- }
- else /* usually want to query LINES and COLUMNS from environment */
- {
- int value;
+ if (!_use_env) {
+ *linep = (int) lines;
+ *colp = (int) columns;
+ } else { /* usually want to query LINES and COLUMNS from environment */
+ int value;
- *linep = *colp = 0;
+ *linep = *colp = 0;
- /* first, look for environment variables */
- if ((value = _nc_getenv_num("LINES")) > 0) {
- *linep = value;
- }
- if ((value = _nc_getenv_num("COLUMNS")) > 0) {
- *colp = value;
- }
- T(("screen size: environment LINES = %d COLUMNS = %d",*linep,*colp));
+ /* first, look for environment variables */
+ if ((value = _nc_getenv_num("LINES")) > 0) {
+ *linep = value;
+ }
+ if ((value = _nc_getenv_num("COLUMNS")) > 0) {
+ *colp = value;
+ }
+ T(("screen size: environment LINES = %d COLUMNS = %d", *linep, *colp));
#ifdef __EMX__
- if (*linep <= 0 || *colp <= 0)
- {
- int screendata[2];
- _scrsize(screendata);
- *colp = screendata[0];
- *linep = screendata[1];
- T(("EMX screen size: environment LINES = %d COLUMNS = %d",*linep,*colp));
- }
+ if (*linep <= 0 || *colp <= 0) {
+ 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
- /* if that didn't work, maybe we can try asking the OS */
- if (*linep <= 0 || *colp <= 0)
- {
- if (isatty(cur_term->Filedes))
- {
- STRUCT_WINSIZE size;
-
- errno = 0;
- do {
- if (ioctl(cur_term->Filedes, IOCTL_WINSIZE, &size) < 0
- && errno != EINTR)
- goto failure;
- } while
- (errno == EINTR);
-
- /*
- * Solaris lets users override either dimension with an
- * environment variable.
- */
- if (*linep <= 0)
- *linep = WINSIZE_ROWS(size);
- if (*colp <= 0)
- *colp = WINSIZE_COLS(size);
- }
- /* FALLTHRU */
- failure:;
+ /* if that didn't work, maybe we can try asking the OS */
+ if (*linep <= 0 || *colp <= 0) {
+ if (isatty(cur_term->Filedes)) {
+ STRUCT_WINSIZE size;
+
+ errno = 0;
+ do {
+ if (ioctl(cur_term->Filedes, IOCTL_WINSIZE, &size) < 0
+ && errno != EINTR)
+ goto failure;
+ } while
+ (errno == EINTR);
+
+ /*
+ * Solaris lets users override either dimension with an
+ * environment variable.
+ */
+ if (*linep <= 0)
+ *linep = WINSIZE_ROWS(size);
+ if (*colp <= 0)
+ *colp = WINSIZE_COLS(size);
}
+ /* FALLTHRU */
+ failure:;
+ }
#endif /* HAVE_SIZECHANGE */
- /* if we can't get dynamic info about the size, use static */
- if (*linep <= 0 || *colp <= 0)
- if (lines > 0 && columns > 0)
- {
- *linep = (int)lines;
- *colp = (int)columns;
- }
-
- /* the ultimate fallback, assume fixed 24x80 size */
- if (*linep <= 0 || *colp <= 0)
- {
- *linep = 24;
- *colp = 80;
+ /* if we can't get dynamic info about the size, use static */
+ if (*linep <= 0 || *colp <= 0)
+ if (lines > 0 && columns > 0) {
+ *linep = (int) lines;
+ *colp = (int) columns;
}
- /*
- * 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);
+ /* the ultimate fallback, assume fixed 24x80 size */
+ if (*linep <= 0 || *colp <= 0) {
+ *linep = 24;
+ *colp = 80;
}
- T(("screen size is %dx%d", *linep, *colp));
+ /*
+ * 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 (init_tabs != -1)
- TABSIZE = (int)init_tabs;
- else
- TABSIZE = 8;
- T(("TABSIZE = %d", TABSIZE));
+ if (VALID_NUMERIC(init_tabs))
+ TABSIZE = (int) init_tabs;
+ else
+ TABSIZE = 8;
+ T(("TABSIZE = %d", TABSIZE));
}
#if USE_SIZECHANGE
-void _nc_update_screensize(void)
+void
+_nc_update_screensize(void)
{
- int my_lines, my_cols;
+ int my_lines, my_cols;
- _nc_get_screensize(&my_lines, &my_cols);
- if (SP != 0 && SP->_resize != 0)
- SP->_resize(my_lines, my_cols);
+ _nc_get_screensize(&my_lines, &my_cols);
+ if (SP != 0 && SP->_resize != 0)
+ SP->_resize(my_lines, my_cols);
}
#endif
}
#if USE_DATABASE
-static int grab_entry(const char *const tn, TERMTYPE *const tp)
+static int
+grab_entry(const char *const tn, TERMTYPE * const tp)
/* return 1 if entry found, 0 if not found, -1 if database not accessible */
{
- char filename[PATH_MAX];
- int status;
+ char filename[PATH_MAX];
+ int status;
- /*
- * $TERM shouldn't contain pathname delimiters.
- */
- if (strchr(tn, '/'))
- return 0;
+ /*
+ * $TERM shouldn't contain pathname delimiters.
+ */
+ if (strchr(tn, '/'))
+ return 0;
- if ((status = _nc_read_entry(tn, filename, tp)) != 1) {
+ if ((status = _nc_read_entry(tn, filename, tp)) != 1) {
#ifndef PURE_TERMINFO
- /*
- * Try falling back on the termcap file.
- * Note: allowing this call links the entire terminfo/termcap
- * compiler into the startup code. It's preferable to build a
- * real terminfo database and use that.
- */
- status = _nc_read_termcap_entry(tn, tp);
-#endif /* PURE_TERMINFO */
-
- }
-
/*
- * 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).
+ * Try falling back on the termcap file.
+ * Note: allowing this call links the entire terminfo/termcap
+ * compiler into the startup code. It's preferable to build a
+ * real terminfo database and use that.
*/
- if (status == 1) {
- int 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);
+ status = _nc_read_termcap_entry(tn, tp);
+#endif /* PURE_TERMINFO */
+
+ }
+
+ /*
+ * 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 == 1) {
+ int 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
-char ttytype[NAMESIZE];
+char ttytype[NAMESIZE] = "";
/*
* setupterm(termname, Filedes, errret)
*
*/
-int setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
+int
+setupterm(NCURSES_CONST char *tname, int Filedes, int *errret)
{
-struct term *term_ptr;
-int status;
+ struct term *term_ptr;
+ int status;
- T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(tname), Filedes, errret));
+ T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(tname), Filedes, errret));
- if (tname == 0) {
- tname = getenv("TERM");
- if (tname == 0 || *tname == '\0') {
- ret_error0(-1, "TERM environment variable not set.\n");
- }
- }
- if (strlen(tname) > MAX_NAME_SIZE) {
- ret_error(-1, "TERM environment must be <= %d characters.\n",
- MAX_NAME_SIZE);
+ if (tname == 0) {
+ tname = getenv("TERM");
+ if (tname == 0 || *tname == '\0') {
+ ret_error0(-1, "TERM environment variable not set.\n");
}
+ }
+ if (strlen(tname) > MAX_NAME_SIZE) {
+ ret_error(-1, "TERM environment must be <= %d characters.\n",
+ MAX_NAME_SIZE);
+ }
- T(("your terminal name is %s", tname));
+ T(("your terminal name is %s", tname));
- term_ptr = typeCalloc(TERMINAL, 1);
+ term_ptr = typeCalloc(TERMINAL, 1);
- if (term_ptr == 0) {
- ret_error0(-1, "Not enough memory to create terminal structure.\n") ;
- }
+ if (term_ptr == 0) {
+ ret_error0(-1, "Not enough memory to create terminal structure.\n");
+ }
#if USE_DATABASE
- status = grab_entry(tname, &term_ptr->type);
+ status = grab_entry(tname, &term_ptr->type);
#else
- status = 0;
+ status = 0;
#endif
- /* try fallback list if entry on disk */
- if (status != 1)
- {
- const TERMTYPE *fallback = _nc_fallback(tname);
-
- if (fallback)
- {
- term_ptr->type = *fallback;
- status = 1;
- }
- }
-
- if (status == -1)
- {
- ret_error0(-1, "terminals database is inaccessible\n");
- }
- else if (status == 0)
- {
- ret_error(0, "'%s': unknown terminal type.\n", tname);
- }
-
- /*
- * Improve 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 (cur_term != 0) {
- if (cur_term->Filedes == Filedes)
- term_ptr->Ottyb = cur_term->Ottyb;
- }
-
- set_curterm(term_ptr);
-
- if (command_character && getenv("CC"))
- do_prototype();
-
- strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);
- ttytype[NAMESIZE - 1] = '\0';
-
- /*
- * 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;
- cur_term->Filedes = Filedes;
-
- _nc_get_screensize(&LINES, &COLS);
-
- if (errret)
- *errret = 1;
+ /* try fallback list if entry on disk */
+ if (status != 1) {
+ const TERMTYPE *fallback = _nc_fallback(tname);
- T((T_CREATE("screen %s %dx%d"), tname, LINES, COLS));
-
- if (generic_type) {
- ret_error(0, "'%s': I need something more specific.\n", tname);
- }
- if (hard_copy) {
- ret_error(1, "'%s': I can't handle hardcopy terminals.\n", tname);
+ if (fallback) {
+ term_ptr->type = *fallback;
+ status = 1;
}
- returnCode(OK);
+ }
+
+ if (status == -1) {
+ ret_error0(-1, "terminals database is inaccessible\n");
+ } else if (status == 0) {
+ ret_error(0, "'%s': unknown terminal type.\n", tname);
+ }
+
+ /*
+ * Improve 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 (cur_term != 0) {
+ if (cur_term->Filedes == Filedes)
+ term_ptr->Ottyb = cur_term->Ottyb;
+ }
+
+ set_curterm(term_ptr);
+
+ if (command_character && getenv("CC"))
+ do_prototype();
+
+ strncpy(ttytype, cur_term->type.term_names, NAMESIZE - 1);
+ ttytype[NAMESIZE - 1] = '\0';
+
+ /*
+ * 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;
+ cur_term->Filedes = Filedes;
+
+ _nc_get_screensize(&LINES, &COLS);
+
+ if (errret)
+ *errret = 1;
+
+ T((T_CREATE("screen %s %dx%d"), tname, LINES, COLS));
+
+ if (generic_type) {
+ ret_error(0, "'%s': I need something more specific.\n", tname);
+ }
+ if (hard_copy) {
+ ret_error(1, "'%s': I can't handle hardcopy terminals.\n", tname);
+ }
+ returnCode(OK);
}
/*
static void
do_prototype(void)
{
-int i;
-char CC;
-char proto;
-char *tmp;
-
- tmp = getenv("CC");
- CC = *tmp;
- proto = *command_character;
-
- for_each_string(i, &(cur_term->type)) {
- for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
- if (*tmp == proto)
- *tmp = CC;
- }
+ int i;
+ char CC;
+ char proto;
+ char *tmp;
+
+ tmp = getenv("CC");
+ CC = *tmp;
+ proto = *command_character;
+
+ for_each_string(i, &(cur_term->type)) {
+ for (tmp = cur_term->type.Strings[i]; *tmp; tmp++) {
+ if (*tmp == proto)
+ *tmp = CC;
}
+ }
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#define __INTERNAL_CAPS_VISIBLE
#include <term_entry.h>
-MODULE_ID("$Id: lib_termcap.c,v 1.29 1999/09/05 01:06:43 tom Exp $")
+MODULE_ID("$Id: lib_termcap.c,v 1.36 2000/02/13 01:01:26 tom Exp $")
/*
some of the code in here was contributed by:
Magnus Bengtsson, d6mbeng@dtek.chalmers.se
*/
-char *UP;
-char *BC;
+char *UP = 0;
+char *BC = 0;
/***************************************************************************
*
*
***************************************************************************/
-int tgetent(char *bufp GCC_UNUSED, const char *name)
+int
+tgetent(char *bufp GCC_UNUSED, const char *name)
{
-int errcode;
+ int errcode;
- T((T_CALLED("tgetent()")));
+ T((T_CALLED("tgetent()")));
- setupterm((NCURSES_CONST char *)name, STDOUT_FILENO, &errcode);
+ setupterm((NCURSES_CONST char *) name, STDOUT_FILENO, &errcode);
- if (errcode == 1) {
+ if (errcode == 1) {
- if (cursor_left)
- if ((backspaces_with_bs = !strcmp(cursor_left, "\b")) == 0)
- backspace_if_not_bs = cursor_left;
+ if (cursor_left)
+ if ((backspaces_with_bs = !strcmp(cursor_left, "\b")) == 0)
+ backspace_if_not_bs = cursor_left;
- /* we're required to export these */
- if (pad_char != NULL)
- PC = pad_char[0];
- if (cursor_up != NULL)
- UP = cursor_up;
- if (backspace_if_not_bs != NULL)
- BC = backspace_if_not_bs;
+ /* we're required to export these */
+ if (pad_char != NULL)
+ PC = pad_char[0];
+ if (cursor_up != NULL)
+ UP = cursor_up;
+ if (backspace_if_not_bs != NULL)
+ BC = backspace_if_not_bs;
- (void) baudrate(); /* sets ospeed as a side-effect */
+ (void) baudrate(); /* sets ospeed as a side-effect */
/* LINT_PREPRO
#if 0*/
/* LINT_PREPRO
#endif*/
- }
- returnCode(errcode);
+ }
+ returnCode(errcode);
}
/***************************************************************************
*
***************************************************************************/
-int tgetflag(NCURSES_CONST char *id)
+int
+tgetflag(NCURSES_CONST char *id)
{
-int i;
-
- T((T_CALLED("tgetflag(%s)"), id));
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_boolean(i, tp) {
- const char *capname = ExtBoolname(tp, i, boolcodes);
- if (!strncmp(id, capname, 2)) {
- /* setupterm forces invalid booleans to false */
- returnCode(tp->Booleans[i]);
- }
+ int i;
+
+ T((T_CALLED("tgetflag(%s)"), id));
+ if (cur_term != 0) {
+ TERMTYPE *tp = &(cur_term->type);
+ for_each_boolean(i, tp) {
+ const char *capname = ExtBoolname(tp, i, boolcodes);
+ if (!strncmp(id, capname, 2)) {
+ /* setupterm forces invalid booleans to false */
+ returnCode(tp->Booleans[i]);
}
}
- returnCode(0); /* Solaris does this */
+ }
+ returnCode(0); /* Solaris does this */
}
/***************************************************************************
*
***************************************************************************/
-int tgetnum(NCURSES_CONST char *id)
+int
+tgetnum(NCURSES_CONST char *id)
{
-int i;
-
- T((T_CALLED("tgetnum(%s)"), id));
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_number(i, tp) {
- const char *capname = ExtNumname(tp, i, numcodes);
- if (!strncmp(id, capname, 2)) {
- if (!VALID_NUMERIC(tp->Numbers[i]))
- return -1;
- returnCode(tp->Numbers[i]);
- }
+ int i;
+
+ T((T_CALLED("tgetnum(%s)"), id));
+ if (cur_term != 0) {
+ TERMTYPE *tp = &(cur_term->type);
+ for_each_number(i, tp) {
+ const char *capname = ExtNumname(tp, i, numcodes);
+ if (!strncmp(id, capname, 2)) {
+ if (!VALID_NUMERIC(tp->Numbers[i]))
+ returnCode(ABSENT_NUMERIC);
+ returnCode(tp->Numbers[i]);
}
}
- returnCode(ERR);
+ }
+ returnCode(ABSENT_NUMERIC);
}
/***************************************************************************
*
***************************************************************************/
-char *tgetstr(NCURSES_CONST char *id, char **area)
+char *
+tgetstr(NCURSES_CONST char *id, char **area)
{
-int i;
-
- T((T_CALLED("tgetstr(%s,%p)"), id, area));
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_string(i, tp) {
- const char *capname = ExtStrname(tp, i, strcodes);
- T(("trying %s", capname));
- if (!strncmp(id, capname, 2)) {
- T(("found match : %s", _nc_visbuf(tp->Strings[i])));
- /* setupterm forces cancelled strings to null */
- if (area != 0
- && *area != 0
- && VALID_STRING(tp->Strings[i])) {
- (void) strcpy(*area, tp->Strings[i]);
- *area += strlen(*area) + 1;
- }
- returnPtr(tp->Strings[i]);
+ int i;
+
+ T((T_CALLED("tgetstr(%s,%p)"), id, area));
+ if (cur_term != 0) {
+ TERMTYPE *tp = &(cur_term->type);
+ for_each_string(i, tp) {
+ const char *capname = ExtStrname(tp, i, strcodes);
+ if (!strncmp(id, capname, 2)) {
+ TR(TRACE_DATABASE,("found match : %s", _nc_visbuf(tp->Strings[i])));
+ /* setupterm forces canceled strings to null */
+ if (area != 0
+ && *area != 0
+ && VALID_STRING(tp->Strings[i])) {
+ (void) strcpy(*area, tp->Strings[i]);
+ *area += strlen(*area) + 1;
}
+ returnPtr(tp->Strings[i]);
}
}
- returnPtr(NULL);
+ }
+ returnPtr(NULL);
}
/*
*
*/
-char *tgoto(const char *string, int x, int y)
+char *
+tgoto(const char *string, int x, int y)
{
- T((T_CALLED("tgoto(%s,%d,%d)"), string, x, y));
- returnPtr(tparm((NCURSES_CONST char *)string, y, x));
+ T((T_CALLED("tgoto(%s,%d,%d)"), string, x, y));
+ returnPtr(tparm((NCURSES_CONST char *) string, y, x));
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
#include <curses.priv.h>
#include <term_entry.h>
#include <tic.h>
-MODULE_ID("$Id: lib_ti.c,v 1.16 1999/02/28 23:11:28 tom Exp $")
+MODULE_ID("$Id: lib_ti.c,v 1.20 2000/02/13 01:01:26 tom Exp $")
-int tigetflag(NCURSES_CONST char *str)
+int
+tigetflag(NCURSES_CONST char *str)
{
-int i;
-
- T((T_CALLED("tigetflag(%s)"), str));
-
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_boolean(i,tp) {
- const char *capname = ExtBoolname(tp, i, boolnames);
- if (!strcmp(str, capname)) {
- /* setupterm forces invalid booleans to false */
- returnCode(tp->Booleans[i]);
- }
+ int i;
+
+ T((T_CALLED("tigetflag(%s)"), str));
+
+ if (cur_term != 0) {
+ TERMTYPE *tp = &(cur_term->type);
+ for_each_boolean(i, tp) {
+ const char *capname = ExtBoolname(tp, i, boolnames);
+ if (!strcmp(str, capname)) {
+ /* setupterm forces invalid booleans to false */
+ returnCode(tp->Booleans[i]);
}
}
+ }
- returnCode(ABSENT_BOOLEAN);
+ returnCode(ABSENT_BOOLEAN);
}
-int tigetnum(NCURSES_CONST char *str)
+int
+tigetnum(NCURSES_CONST char *str)
{
-int i;
-
- T((T_CALLED("tigetnum(%s)"), str));
-
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_number(i, tp) {
- const char *capname = ExtNumname(tp, i, numnames);
- if (!strcmp(str, capname)) {
- if (!VALID_NUMERIC(tp->Numbers[i]))
- return -1;
- returnCode(tp->Numbers[i]);
- }
+ int i;
+
+ T((T_CALLED("tigetnum(%s)"), str));
+
+ if (cur_term != 0) {
+ TERMTYPE *tp = &(cur_term->type);
+ for_each_number(i, tp) {
+ const char *capname = ExtNumname(tp, i, numnames);
+ if (!strcmp(str, capname)) {
+ if (!VALID_NUMERIC(tp->Numbers[i]))
+ returnCode(ABSENT_NUMERIC);
+ returnCode(tp->Numbers[i]);
}
}
+ }
- returnCode(CANCELLED_NUMERIC); /* Solaris returns a -1 instead */
+ returnCode(CANCELLED_NUMERIC); /* Solaris returns a -1 instead */
}
-char *tigetstr(NCURSES_CONST char *str)
+char *
+tigetstr(NCURSES_CONST char *str)
{
-int i;
-
- T((T_CALLED("tigetstr(%s)"), str));
-
- if (cur_term != 0) {
- TERMTYPE *tp = &(cur_term->type);
- for_each_string(i, tp) {
- const char *capname = ExtStrname(tp, i, strnames);
- if (!strcmp(str, capname)) {
- /* setupterm forces cancelled strings to null */
- returnPtr(tp->Strings[i]);
- }
+ int i;
+
+ T((T_CALLED("tigetstr(%s)"), str));
+
+ if (cur_term != 0) {
+ TERMTYPE *tp = &(cur_term->type);
+ for_each_string(i, tp) {
+ const char *capname = ExtStrname(tp, i, strnames);
+ if (!strcmp(str, capname)) {
+ /* setupterm forces cancelled strings to null */
+ returnPtr(tp->Strings[i]);
}
}
+ }
- returnPtr(CANCELLED_STRING);
+ returnPtr(CANCELLED_STRING);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* tputs.c
* delay_output()
#include <curses.priv.h>
#include <ctype.h>
-#include <term.h> /* padding_baud_rate, xon_xoff */
-#include <termcap.h> /* ospeed */
+#include <term.h> /* padding_baud_rate, xon_xoff */
+#include <termcap.h> /* ospeed */
#include <tic.h>
-MODULE_ID("$Id: lib_tputs.c,v 1.41 1999/10/22 23:31:24 tom Exp $")
+MODULE_ID("$Id: lib_tputs.c,v 1.47 2000/05/27 23:08:41 tom Exp $")
-char PC; /* used by termcap library */
-speed_t ospeed; /* used by termcap library */
+char PC = 0; /* used by termcap library */
+speed_t ospeed = 0; /* used by termcap library */
-int _nc_nulls_sent; /* used by 'tack' program */
+int _nc_nulls_sent = 0; /* used by 'tack' program */
-static int (*my_outch)(int c) = _nc_outch;
+static int (*my_outch) (int c) = _nc_outch;
-int delay_output(int ms)
+int
+delay_output(int ms)
{
- T((T_CALLED("delay_output(%d)"), ms));
+ T((T_CALLED("delay_output(%d)"), ms));
- if (no_pad_char)
- napms(ms);
- else {
- register int nullcount;
+ if (no_pad_char) {
+ _nc_flush();
+ napms(ms);
+ } else {
+ register int nullcount;
- nullcount = (ms * _nc_baudrate(ospeed)) / 10000;
- for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--)
- my_outch(PC);
- if (my_outch == _nc_outch)
- _nc_flush();
- }
+ nullcount = (ms * _nc_baudrate(ospeed)) / 10000;
+ for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--)
+ my_outch(PC);
+ if (my_outch == _nc_outch)
+ _nc_flush();
+ }
- returnCode(OK);
+ returnCode(OK);
}
-int _nc_outch(int ch)
+void
+_nc_flush(void)
+{
+ (void)fflush(NC_OUTPUT);
+}
+
+int
+_nc_outch(int ch)
{
#ifdef TRACE
- _nc_outchars++;
+ _nc_outchars++;
#endif /* TRACE */
- if (SP != 0
- && SP->_cleanup) {
- char tmp = ch;
- /*
- * POSIX says write() is safe in a signal handler, but the
- * buffered I/O is not.
- */
- write(fileno(NC_OUTPUT), &tmp, 1);
- } else {
- putc(ch, NC_OUTPUT);
- }
- return OK;
+ if (SP != 0
+ && SP->_cleanup) {
+ char tmp = ch;
+ /*
+ * POSIX says write() is safe in a signal handler, but the
+ * buffered I/O is not.
+ */
+ write(fileno(NC_OUTPUT), &tmp, 1);
+ } else {
+ putc(ch, NC_OUTPUT);
+ }
+ return OK;
}
-int putp(const char *string)
+#ifdef USE_WIDEC_SUPPORT
+/*
+ * Reference: The Unicode Standard 2.0
+ *
+ * No surrogates supported (we're storing only one 16-bit Unicode value per
+ * cell).
+ */
+int
+_nc_utf8_outch(int ch)
{
- return tputs(string, 1, _nc_outch);
+ static const unsigned byteMask = 0xBF;
+ static const unsigned otherMark = 0x80;
+ static const unsigned firstMark[] =
+ {0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF8, 0xFC};
+
+ int result[7], *ptr;
+ int count = 0;
+
+ if (ch < 0x80)
+ count = 1;
+ else if (ch < 0x800)
+ count = 2;
+ else if (ch < 0x10000)
+ count = 3;
+ else if (ch < 0x200000)
+ count = 4;
+ else if (ch < 0x4000000)
+ count = 5;
+ else if (ch <= 0x7FFFFFFF)
+ count = 6;
+ else {
+ count = 2;
+ ch = 0xFFFD;
+ }
+ ptr = result + count;
+ switch (count) {
+ case 6:
+ *--ptr = (ch | otherMark) & byteMask;
+ ch >>= 6;
+ case 5:
+ *--ptr = (ch | otherMark) & byteMask;
+ ch >>= 6;
+ case 4:
+ *--ptr = (ch | otherMark) & byteMask;
+ ch >>= 6;
+ case 3:
+ *--ptr = (ch | otherMark) & byteMask;
+ ch >>= 6;
+ case 2:
+ *--ptr = (ch | otherMark) & byteMask;
+ ch >>= 6;
+ case 1:
+ *--ptr = (ch | firstMark[count]);
+ }
+ while (count--)
+ _nc_outch(*ptr++);
+ return OK;
}
+#endif
-int tputs(const char *string, int affcnt, int (*outc)(int))
+int
+putp(const char *string)
{
-bool always_delay;
-bool normal_delay;
-int number;
+ return tputs(string, 1, _nc_outch);
+}
+
+int
+tputs(const char *string, int affcnt, int (*outc) (int))
+{
+ bool always_delay;
+ bool normal_delay;
+ int number;
#ifdef BSD_TPUTS
-int trailpad;
+ int trailpad;
#endif /* BSD_TPUTS */
#ifdef TRACE
-char addrbuf[32];
-
- if (_nc_tracing & TRACE_TPUTS)
- {
- if (outc == _nc_outch)
- (void) strcpy(addrbuf, "_nc_outch");
- else
- (void) sprintf(addrbuf, "%p", outc);
- if (_nc_tputs_trace) {
- TR(TRACE_MAXIMUM, ("tputs(%s = %s, %d, %s) called", _nc_tputs_trace, _nc_visbuf(string), affcnt, addrbuf));
- }
- else {
- TR(TRACE_MAXIMUM, ("tputs(%s, %d, %s) called", _nc_visbuf(string), affcnt, addrbuf));
- }
- _nc_tputs_trace = (char *)NULL;
+ char addrbuf[32];
+
+ if (_nc_tracing & TRACE_TPUTS) {
+ if (outc == _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);
}
+ _nc_tputs_trace = (char *) NULL;
+ }
#endif /* TRACE */
-
- if (!VALID_STRING(string))
- return ERR;
- if (cur_term == 0) {
- always_delay = FALSE;
- normal_delay = TRUE;
- } else {
- always_delay = (string == bell) || (string == flash_screen);
- normal_delay =
- !xon_xoff
- && padding_baud_rate
+ if (!VALID_STRING(string))
+ return ERR;
+
+ if (cur_term == 0) {
+ always_delay = FALSE;
+ normal_delay = TRUE;
+ } else {
+ always_delay = (string == bell) || (string == flash_screen);
+ normal_delay =
+ !xon_xoff
+ && padding_baud_rate
#ifdef NCURSES_NO_PADDING
- && (SP == 0 || !(SP->_no_padding))
+ && (SP == 0 || !(SP->_no_padding))
#endif
- && (_nc_baudrate(ospeed) >= padding_baud_rate);
- }
+ && (_nc_baudrate(ospeed) >= padding_baud_rate);
+ }
#ifdef 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(*string)) {
+ /*
+ * 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(*string)) {
+ while (isdigit(*string)) {
+ trailpad = trailpad * 10 + (*string - '0');
+ string++;
+ }
+ trailpad *= 10;
+ if (*string == '.') {
+ string++;
+ if (isdigit(*string)) {
+ trailpad += (*string - '0');
+ string++;
+ }
+ while (isdigit(*string))
+ string++;
+ }
+
+ if (*string == '*') {
+ trailpad *= affcnt;
+ string++;
+ }
+ }
+#endif /* BSD_TPUTS */
+
+ my_outch = outc; /* redirect delay_output() */
+ while (*string) {
+ if (*string != '$')
+ (*outc) (*string);
+ else {
+ string++;
+ if (*string != '<') {
+ (*outc) ('$');
+ if (*string)
+ (*outc) (*string);
+ } else {
+ bool mandatory;
+
+ string++;
+ if ((!isdigit(*string) && *string != '.') || !strchr(string, '>')) {
+ (*outc) ('$');
+ (*outc) ('<');
+ continue;
+ }
+
+ number = 0;
while (isdigit(*string)) {
- trailpad = trailpad * 10 + (*string - '0');
- string++;
+ number = number * 10 + (*string - '0');
+ string++;
}
- trailpad *= 10;
+ number *= 10;
if (*string == '.') {
+ string++;
+ if (isdigit(*string)) {
+ number += (*string - '0');
+ string++;
+ }
+ while (isdigit(*string))
string++;
- if (isdigit(*string)) {
- trailpad += (*string - '0');
- string++;
- }
- while (isdigit(*string))
- string++;
}
- if (*string == '*') {
- trailpad *= affcnt;
+ mandatory = FALSE;
+ while (*string == '*' || *string == '/') {
+ if (*string == '*') {
+ number *= affcnt;
+ string++;
+ } else { /* if (*string == '/') */
+ mandatory = TRUE;
string++;
+ }
}
- }
-#endif /* BSD_TPUTS */
- my_outch = outc; /* redirect delay_output() */
- while (*string) {
- if (*string != '$')
- (*outc)(*string);
- else {
- string++;
- if (*string != '<') {
- (*outc)('$');
- if (*string)
- (*outc)(*string);
- } else {
- bool mandatory;
-
- string++;
- if ((!isdigit(*string) && *string != '.') || !strchr(string, '>')) {
- (*outc)('$');
- (*outc)('<');
- continue;
- }
-
- number = 0;
- while (isdigit(*string)) {
- number = number * 10 + (*string - '0');
- string++;
- }
- number *= 10;
- if (*string == '.') {
- string++;
- if (isdigit(*string)) {
- number += (*string - '0');
- string++;
- }
- while (isdigit(*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))
- delay_output(number/10);
-
- } /* endelse (*string == '<') */
- } /* endelse (*string == '$') */
-
- if (*string == '\0')
- break;
+ if (number > 0
+ && (always_delay
+ || normal_delay
+ || mandatory))
+ delay_output(number / 10);
- string++;
- }
+ } /* endelse (*string == '<') */
+ } /* endelse (*string == '$') */
+
+ if (*string == '\0')
+ break;
+
+ string++;
+ }
#ifdef BSD_TPUTS
- /*
- * Emit any BSD-style prefix padding that we've accumulated now.
- */
- if (trailpad > 0
- && (always_delay || normal_delay))
- delay_output(trailpad/10);
+ /*
+ * 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 */
- my_outch = _nc_outch;
- return OK;
+ my_outch = _nc_outch;
+ return OK;
}
*/
#include <curses.priv.h>
-MODULE_ID("$Id: make_keys.c,v 1.7 1999/09/11 17:32:57 Jeffrey.Honig Exp $")
+MODULE_ID("$Id: make_keys.c,v 1.8 2000/03/12 02:55:50 Todd.C.Miller Exp $")
#include <names.c>
"",
"/* This file was generated by MAKE_KEYS */",
"",
- "#ifdef BROKEN_LINKER",
+ "#if BROKEN_LINKER",
"static",
"#endif",
"struct tinfo_fkeys _nc_tinfo_fkeys[] = {",
/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* parse_entry.c -- compile one terminfo or termcap entry
*
#define __INTERNAL_CAPS_VISIBLE
#include <term_entry.h>
-MODULE_ID("$Id: parse_entry.c,v 1.39 1999/03/01 02:28:51 tom Exp $")
+MODULE_ID("$Id: parse_entry.c,v 1.44 2000/04/30 00:17:42 tom Exp $")
#ifdef LINT
-static short const parametrized[] = { 0 };
+static short const parametrized[] =
+{0};
#else
#include <parametrized.h>
#endif
-struct token _nc_curr_token;
-
-static void postprocess_termcap(TERMTYPE *, bool);
-static void postprocess_terminfo(TERMTYPE *);
-static struct name_table_entry const * lookup_fullname(const char *name);
+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 const *
+_nc_extend_names(ENTRY * entryp, char *name, int token_type)
{
static struct name_table_entry temp;
TERMTYPE *tp = &(entryp->tterm);
switch (token_type) {
case BOOLEAN:
- first = 0;
- last = tp->ext_Booleans;
+ 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;
+ first = tp->ext_Booleans;
+ last = tp->ext_Numbers + first;
offset = tp->ext_Booleans + tp->ext_Numbers;
tindex = tp->num_Numbers;
break;
case STRING:
- first = tp->ext_Booleans + tp->ext_Numbers;
- last = tp->ext_Strings + first;
+ first = tp->ext_Booleans + tp->ext_Numbers;
+ last = tp->ext_Strings + first;
offset = tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings;
tindex = tp->num_Strings;
break;
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)) {
+ if (n > (unsigned) (tp->ext_Booleans + tp->ext_Numbers)) {
token_type = STRING;
} else if (n > tp->ext_Booleans) {
token_type = NUMBER;
offset = n;
tindex = n - first;
switch (token_type) {
- case BOOLEAN: tindex += BOOLCOUNT; break;
- case NUMBER: tindex += NUMCOUNT; break;
- case STRING: tindex += STRCOUNT; break;
+ case BOOLEAN:
+ tindex += BOOLCOUNT;
+ break;
+ case NUMBER:
+ tindex += NUMCOUNT;
+ break;
+ case STRING:
+ tindex += STRCOUNT;
+ break;
}
break;
}
tp->ext_Booleans += 1;
tp->num_Booleans += 1;
tp->Booleans = typeRealloc(char, tp->num_Booleans, tp->Booleans);
- for (last = tp->num_Booleans-1; last > tindex; last--)
- tp->Booleans[last] = tp->Booleans[last-1];
+ for (last = tp->num_Booleans - 1; last > tindex; last--)
+ tp->Booleans[last] = tp->Booleans[last - 1];
break;
case NUMBER:
tp->ext_Numbers += 1;
tp->num_Numbers += 1;
tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers);
- for (last = tp->num_Numbers-1; last > tindex; last--)
- tp->Numbers[last] = tp->Numbers[last-1];
+ for (last = tp->num_Numbers - 1; last > tindex; last--)
+ tp->Numbers[last] = tp->Numbers[last - 1];
break;
case STRING:
tp->ext_Strings += 1;
tp->num_Strings += 1;
tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings);
- for (last = tp->num_Strings-1; last > tindex; last--)
- tp->Strings[last] = tp->Strings[last-1];
+ for (last = tp->num_Strings - 1; last > tindex; last--)
+ tp->Strings[last] = tp->Strings[last - 1];
break;
}
actual = NUM_EXT_NAMES(tp);
- tp->ext_Names = typeRealloc(char *, actual, tp->ext_Names);
+ tp->ext_Names = typeRealloc(char *, actual, tp->ext_Names);
while (--actual > offset)
- tp->ext_Names[actual] = tp->ext_Names[actual-1];
+ 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_name = tp->ext_Names[offset];
+ temp.nte_type = token_type;
temp.nte_index = tindex;
- temp.nte_link = -1;
+ temp.nte_link = -1;
return &temp;
}
* push back token
*/
-int _nc_parse_entry(struct entry *entryp, int literal, bool silent)
+int
+_nc_parse_entry(struct entry *entryp, int literal, bool silent)
{
- int token_type;
- struct name_table_entry const *entry_ptr;
- char *ptr, namecpy[MAX_NAME_SIZE+1];
+ int token_type;
+ struct name_table_entry const *entry_ptr;
+ char *ptr, namecpy[MAX_NAME_SIZE + 1];
token_type = _nc_get_token();
if (token_type == EOF)
- return(EOF);
+ return (EOF);
if (token_type != NAMES)
_nc_err_abort("Entry does not start with terminal names in column one");
/* junk the 2-character termcap name, if present */
ptr = _nc_curr_token.tk_name;
- if (ptr[2] == '|')
- {
+ if (ptr[2] == '|') {
ptr = _nc_curr_token.tk_name + 3;
_nc_curr_token.tk_name[2] = '\0';
}
/* check for overly-long names and aliases */
(void) strncpy(namecpy, entryp->tterm.term_names, MAX_NAME_SIZE);
namecpy[MAX_NAME_SIZE] = '\0';
- if ((ptr = strrchr(namecpy, '|')) != (char *)0)
+ if ((ptr = strrchr(namecpy, '|')) != (char *) 0)
*ptr = '\0';
ptr = strtok(namecpy, "|");
if (strlen(ptr) > MAX_ALIAS)
_nc_warning("primary name may be too long");
- while ((ptr = strtok((char *)0, "|")) != (char *)0)
+ while ((ptr = strtok((char *) 0, "|")) != (char *) 0)
if (strlen(ptr) > MAX_ALIAS)
_nc_warning("alias `%s' may be too long", ptr);
entryp->nuses = 0;
for (token_type = _nc_get_token();
- token_type != EOF && token_type != NAMES;
- token_type = _nc_get_token())
- {
+ token_type != EOF && token_type != NAMES;
+ token_type = _nc_get_token()) {
if (strcmp(_nc_curr_token.tk_name, "use") == 0
|| strcmp(_nc_curr_token.tk_name, "tc") == 0) {
- entryp->uses[entryp->nuses].parent = (void *)_nc_save_str(_nc_curr_token.tk_valstring);
+ entryp->uses[entryp->nuses].name = _nc_save_str(_nc_curr_token.tk_valstring);
entryp->uses[entryp->nuses].line = _nc_curr_line;
entryp->nuses++;
} else {
/* normal token lookup */
entry_ptr = _nc_find_entry(_nc_curr_token.tk_name,
- _nc_syntax ? _nc_cap_hash_table : _nc_info_hash_table);
+ _nc_syntax ? _nc_cap_hash_table : _nc_info_hash_table);
/*
* Our kluge to handle aliasing. The reason it's done
* making this case fast, aliased caps aren't common now
* and will get rarer.
*/
- if (entry_ptr == NOTFOUND)
- {
- const struct alias *ap;
+ if (entry_ptr == NOTFOUND) {
+ const struct alias *ap;
- if (_nc_syntax == SYN_TERMCAP)
- {
+ if (_nc_syntax == SYN_TERMCAP) {
for (ap = _nc_capalias_table; ap->from; ap++)
- if (strcmp(ap->from, _nc_curr_token.tk_name) == 0)
- {
- if (ap->to == (char *)0)
- {
+ 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);
+ ap->from, ap->source);
goto nexttok;
}
entry_ptr = _nc_find_entry(ap->to, _nc_cap_hash_table);
if (entry_ptr && !silent)
- _nc_warning("%s (%s termcap extension) aliased to %s", ap->from, ap->source, ap->to);
+ _nc_warning("%s (%s termcap extension) aliased to %s",
+ ap->from, ap->source, ap->to);
break;
}
- }
- else /* if (_nc_syntax == SYN_TERMINFO) */
- {
+ } else { /* if (_nc_syntax == SYN_TERMINFO) */
for (ap = _nc_infoalias_table; ap->from; ap++)
- if (strcmp(ap->from, _nc_curr_token.tk_name) == 0)
- {
- if (ap->to == (char *)0)
- {
+ 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);
+ ap->from, ap->source);
goto nexttok;
}
entry_ptr = _nc_find_entry(ap->to, _nc_info_hash_table);
if (entry_ptr && !silent)
- _nc_warning("%s (%s terminfo extension) aliased to %s", ap->from, ap->source, ap->to);
+ _nc_warning("%s (%s terminfo extension) aliased to %s",
+ ap->from, ap->source, ap->to);
break;
}
}
}
}
-
#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) {
- _nc_warning("extended capability '%s'", _nc_curr_token.tk_name);
+ && _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 */
if (entry_ptr == NOTFOUND) {
if (!silent)
_nc_warning("unknown capability '%s'",
- _nc_curr_token.tk_name);
+ _nc_curr_token.tk_name);
continue;
}
/* deal with bad type/value combinations. */
- if (token_type != CANCEL && entry_ptr->nte_type != token_type)
- {
+ 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
/* tell max_attributes from arrow_key_map */
if (token_type == NUMBER && !strcmp("ma", _nc_curr_token.tk_name))
entry_ptr = _nc_find_type_entry("ma", NUMBER,
- _nc_get_table(_nc_syntax != 0));
+ _nc_get_table(_nc_syntax != 0));
/* map terminfo's string MT to MT */
- else if (token_type==STRING &&!strcmp("MT",_nc_curr_token.tk_name))
+ else if (token_type == STRING && !strcmp("MT", _nc_curr_token.tk_name))
entry_ptr = _nc_find_type_entry("MT", STRING,
- _nc_get_table(_nc_syntax != 0));
+ _nc_get_table(_nc_syntax != 0));
/* treat strings without following "=" as empty strings */
- else if (token_type==BOOLEAN && entry_ptr->nte_type==STRING)
+ else if (token_type == BOOLEAN && entry_ptr->nte_type == STRING)
token_type = STRING;
/* we couldn't recover; skip this token */
- else
- {
- if (!silent)
- {
+ else {
+ if (!silent) {
const char *type_name;
- switch (entry_ptr->nte_type)
- {
+ switch (entry_ptr->nte_type) {
case BOOLEAN:
- type_name = "boolean";
- break;
+ type_name = "boolean";
+ break;
case STRING:
- type_name = "string";
- break;
+ type_name = "string";
+ break;
case NUMBER:
- type_name = "numeric";
- break;
+ type_name = "numeric";
+ break;
default:
- type_name = "unknown";
- break;
+ type_name = "unknown";
+ break;
}
_nc_warning("wrong type used for %s capability '%s'",
- type_name, _nc_curr_token.tk_name);
+ type_name, _nc_curr_token.tk_name);
}
continue;
}
case STRING:
ptr = _nc_curr_token.tk_valstring;
- if (_nc_syntax==SYN_TERMCAP)
+ if (_nc_syntax == SYN_TERMCAP)
ptr = _nc_captoinfo(_nc_curr_token.tk_name,
- ptr,
- parametrized[entry_ptr->nte_index]);
+ 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((_nc_syntax==SYN_TERMCAP) ? ':' : ',');
+ _nc_panic_mode((_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) */
+ } /* 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));
* to be done before entry allocation is wrapped up.
*/
if (!literal) {
- if (_nc_syntax == SYN_TERMCAP)
- {
- bool has_base_entry = FALSE;
- int i;
+ if (_nc_syntax == SYN_TERMCAP) {
+ bool has_base_entry = FALSE;
+ int i;
/*
* Don't insert defaults if this is a `+' entry meant only
* have picked up defaults via translation.
*/
for (i = 0; i < entryp->nuses; i++)
- if (!strchr((char *)entryp->uses[i].parent, '+'))
+ if (!strchr((char *) entryp->uses[i].name, '+'))
has_base_entry = TRUE;
postprocess_termcap(&entryp->tterm, has_base_entry);
- }
- else
+ } else
postprocess_terminfo(&entryp->tterm);
}
_nc_wrap_entry(entryp);
- return(OK);
+ return (OK);
}
-int _nc_capcmp(const char *s, const char *t)
+int
+_nc_capcmp(const char *s, const char *t)
/* compare two string capabilities, stripping out padding */
{
if (!s && !t)
- return(0);
+ return (0);
else if (!s || !t)
- return(1);
-
- for (;;)
- {
- if (s[0] == '$' && s[1] == '<')
- {
- for (s += 2; ; s++)
- if (!(isdigit(*s) || *s=='.' || *s=='*' || *s=='/' || *s=='>'))
+ return (1);
+
+ for (;;) {
+ if (s[0] == '$' && s[1] == '<') {
+ for (s += 2;; s++)
+ if (!(isdigit(*s) || *s == '.' || *s == '*' || *s == '/' ||
+ *s == '>'))
break;
}
- if (t[0] == '$' && t[1] == '<')
- {
- for (t += 2; ; t++)
- if (!(isdigit(*t) || *t=='.' || *t=='*' || *t=='/' || *t=='>'))
+ if (t[0] == '$' && t[1] == '<') {
+ for (t += 2;; t++)
+ if (!(isdigit(*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);
+ return (0);
if (*s != *t)
- return(*t - *s);
+ return (*t - *s);
/* else *s == *t but one is not NUL, so continue */
s++, t++;
* 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;
+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},
+ {"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},
};
/*
#define CUR tp->
static
-void postprocess_termcap(TERMTYPE *tp, bool has_base)
+void
+postprocess_termcap(TERMTYPE * tp, bool has_base)
{
char buf[MAX_LINE * 2 + 2];
*/
/* if there was a tc entry, assume we picked up defaults via that */
- if (!has_base)
- {
+ if (!has_base) {
if (WANTED(init_3string) && termcap_init2)
init_3string = _nc_save_str(termcap_init2);
} else
newline = _nc_save_str(C_LF);
} else if (PRESENT(carriage_return) && PRESENT(scroll_forward)) {
- strncpy(buf, carriage_return, MAX_LINE-2);
- buf[MAX_LINE-1] = '\0';
- strncat(buf, scroll_forward, MAX_LINE-strlen(buf)-1);
+ strncpy(buf, carriage_return, MAX_LINE - 2);
+ buf[MAX_LINE - 1] = '\0';
+ strncat(buf, scroll_forward, MAX_LINE - strlen(buf) - 1);
buf[MAX_LINE] = '\0';
newline = _nc_save_str(buf);
} else if (PRESENT(carriage_return) && PRESENT(cursor_down)) {
- strncpy(buf, carriage_return, MAX_LINE-2);
- buf[MAX_LINE-1] = '\0';
- strncat(buf, cursor_down, MAX_LINE-strlen(buf)-1);
+ strncpy(buf, carriage_return, MAX_LINE - 2);
+ buf[MAX_LINE - 1] = '\0';
+ strncat(buf, cursor_down, MAX_LINE - strlen(buf) - 1);
buf[MAX_LINE] = '\0';
newline = _nc_save_str(buf);
}
* These translations will *not* be inverted by tgetent().
*/
- if (!has_base)
- {
+ 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
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
- {
+ else {
if (tab && _nc_capcmp(tab, C_HT))
_nc_warning("hardware tabs with a non-^I tab string %s",
- _nc_visbuf(tab));
- else
- {
+ _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 *dp, *cp = strtok(other_non_function_keys, ",");
- struct name_table_entry const *from_ptr;
- struct name_table_entry const *to_ptr;
- assoc const *ap;
- char buf2[MAX_TERMINFO_LENGTH];
- bool foundim;
+ if (PRESENT(other_non_function_keys)) {
+ char *dp, *cp = strtok(other_non_function_keys, ",");
+ 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');
for (ap = ko_xlate; ap->from; ap++)
if (strcmp(ap->from, cp) == 0)
break;
- if (!ap->to)
- {
+ if (!ap->to) {
_nc_warning("unknown capability `%s' in ko string", cp);
continue;
- }
- else if (ap->to == CANCELLED_STRING) /* ignore it */
+ } 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_cap_hash_table);
- to_ptr = _nc_find_entry(ap->to, _nc_info_hash_table);
+ to_ptr = _nc_find_entry(ap->to, _nc_info_hash_table);
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]))
- {
+ 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])
- {
+ 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.
*/
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]) );
+ ap->to, ap->from,
+ _nc_visbuf(tp->Strings[to_ptr->nte_index]));
continue;
}
* stripping out padding.
*/
dp = buf2;
- for (cp = tp->Strings[from_ptr->nte_index]; *cp; cp++)
- {
- if (cp[0] == '$' && cp[1] == '<')
- {
+ for (cp = tp->Strings[from_ptr->nte_index]; *cp; cp++) {
+ if (cp[0] == '$' && cp[1] == '<') {
while (*cp && *cp != '>')
if (!*cp)
break;
- else
+ else
++cp;
- }
- else
+ } else
*dp++ = *cp;
}
*dp++ = '\0';
tp->Strings[to_ptr->nte_index] = _nc_save_str(buf2);
} while
- ((cp = strtok((char *)0, ",")) != 0);
+ ((cp = strtok((char *) 0, ",")) != 0);
/*
* Note: ko=im and ko=ic both want to grab the `Insert'
* 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)
- {
+ if (foundim && WANTED(key_ic) && key_sic) {
key_ic = key_sic;
key_sic = ABSENT_STRING;
}
}
- if (!hard_copy)
- {
+ if (!hard_copy) {
if (WANTED(key_backspace))
key_backspace = _nc_save_str(C_BS);
if (WANTED(key_left))
PRESENT(acs_ttee) ||
PRESENT(acs_hline) ||
PRESENT(acs_vline) ||
- PRESENT(acs_plus))
- {
- char buf2[MAX_TERMCAP_LENGTH], *bp = buf2;
+ PRESENT(acs_plus)) {
+ char buf2[MAX_TERMCAP_LENGTH], *bp = buf2;
- if (acs_chars)
- {
- (void)strcpy(bp, acs_chars);
+ if (acs_chars) {
+ (void) strcpy(bp, acs_chars);
bp += strlen(bp);
}
- if (acs_ulcorner && acs_ulcorner[1] == '\0')
- {
+ if (acs_ulcorner && acs_ulcorner[1] == '\0') {
*bp++ = 'l';
*bp++ = *acs_ulcorner;
}
- if (acs_llcorner && acs_llcorner[1] == '\0')
- {
+ if (acs_llcorner && acs_llcorner[1] == '\0') {
*bp++ = 'm';
*bp++ = *acs_llcorner;
}
- if (acs_urcorner && acs_urcorner[1] == '\0')
- {
+ if (acs_urcorner && acs_urcorner[1] == '\0') {
*bp++ = 'k';
*bp++ = *acs_urcorner;
}
- if (acs_lrcorner && acs_lrcorner[1] == '\0')
- {
+ if (acs_lrcorner && acs_lrcorner[1] == '\0') {
*bp++ = 'j';
*bp++ = *acs_lrcorner;
}
- if (acs_ltee && acs_ltee[1] == '\0')
- {
+ if (acs_ltee && acs_ltee[1] == '\0') {
*bp++ = 't';
*bp++ = *acs_ltee;
}
- if (acs_rtee && acs_rtee[1] == '\0')
- {
+ if (acs_rtee && acs_rtee[1] == '\0') {
*bp++ = 'u';
*bp++ = *acs_rtee;
}
- if (acs_btee && acs_btee[1] == '\0')
- {
+ if (acs_btee && acs_btee[1] == '\0') {
*bp++ = 'v';
*bp++ = *acs_btee;
}
- if (acs_ttee && acs_ttee[1] == '\0')
- {
+ if (acs_ttee && acs_ttee[1] == '\0') {
*bp++ = 'w';
*bp++ = *acs_ttee;
}
- if (acs_hline && acs_hline[1] == '\0')
- {
+ if (acs_hline && acs_hline[1] == '\0') {
*bp++ = 'q';
*bp++ = *acs_hline;
}
- if (acs_vline && acs_vline[1] == '\0')
- {
+ if (acs_vline && acs_vline[1] == '\0') {
*bp++ = 'x';
*bp++ = *acs_vline;
}
- if (acs_plus)
- {
+ if (acs_plus) {
*bp++ = 'n';
strcpy(bp, acs_plus);
bp = buf2 + strlen(buf2);
}
- if (bp != buf2)
- {
+ if (bp != buf2) {
*bp++ = '\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("``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~");
+ } else if (acs_chars == 0
+ && enter_alt_charset_mode != 0
+ && exit_alt_charset_mode != 0) {
+ acs_chars =
+ _nc_save_str("``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~");
}
}
static
-void postprocess_terminfo(TERMTYPE *tp)
+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], *bp = buf2;
+ if (PRESENT(box_chars_1)) {
+ char buf2[MAX_TERMCAP_LENGTH], *bp = buf2;
- if (acs_chars)
- {
- (void)strcpy(bp, acs_chars);
+ if (acs_chars) {
+ (void) strcpy(bp, acs_chars);
bp += strlen(bp);
}
- if (box_chars_1[0]) /* ACS_ULCORNER */
- {
+ if (box_chars_1[0]) { /* ACS_ULCORNER */
*bp++ = 'l';
*bp++ = box_chars_1[0];
}
- if (box_chars_1[1]) /* ACS_HLINE */
- {
+ if (box_chars_1[1]) { /* ACS_HLINE */
*bp++ = 'q';
*bp++ = box_chars_1[1];
}
- if (box_chars_1[2]) /* ACS_URCORNER */
- {
+ if (box_chars_1[2]) { /* ACS_URCORNER */
*bp++ = 'k';
*bp++ = box_chars_1[2];
}
- if (box_chars_1[3]) /* ACS_VLINE */
- {
+ if (box_chars_1[3]) { /* ACS_VLINE */
*bp++ = 'x';
*bp++ = box_chars_1[3];
}
- if (box_chars_1[4]) /* ACS_LRCORNER */
- {
+ if (box_chars_1[4]) { /* ACS_LRCORNER */
*bp++ = 'j';
*bp++ = box_chars_1[4];
}
- if (box_chars_1[5]) /* ACS_LLCORNER */
- {
+ if (box_chars_1[5]) { /* ACS_LLCORNER */
*bp++ = 'm';
*bp++ = box_chars_1[5];
}
- if (box_chars_1[6]) /* ACS_TTEE */
- {
+ if (box_chars_1[6]) { /* ACS_TTEE */
*bp++ = 'w';
*bp++ = box_chars_1[6];
}
- if (box_chars_1[7]) /* ACS_RTEE */
- {
+ if (box_chars_1[7]) { /* ACS_RTEE */
*bp++ = 'u';
*bp++ = box_chars_1[7];
}
- if (box_chars_1[8]) /* ACS_BTEE */
- {
+ if (box_chars_1[8]) { /* ACS_BTEE */
*bp++ = 'v';
*bp++ = box_chars_1[8];
}
- if (box_chars_1[9]) /* ACS_LTEE */
- {
+ if (box_chars_1[9]) { /* ACS_LTEE */
*bp++ = 't';
*bp++ = box_chars_1[9];
}
- if (box_chars_1[10]) /* ACS_PLUS */
- {
+ if (box_chars_1[10]) { /* ACS_PLUS */
*bp++ = 'n';
*bp++ = box_chars_1[10];
}
- if (bp != buf2)
- {
+ if (bp != buf2) {
*bp++ = '\0';
acs_chars = _nc_save_str(buf2);
_nc_warning("acsc string synthesized from AIX capabilities");
* sorted, but the nte_type fields are not necessarily grouped together.
*/
static
-struct name_table_entry const * lookup_fullname(const char *find)
+struct name_table_entry const *
+lookup_fullname(const char *find)
{
int state = -1;
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
+ struct name_table_entry const *entry_ptr = _nc_get_table(FALSE);
+ while (entry_ptr->nte_type != state
|| entry_ptr->nte_index != count)
- entry_ptr++;
+ entry_ptr++;
return entry_ptr;
}
}
/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
* read_entry.c -- Routine for reading in a compiled terminfo file
*
#include <curses.priv.h>
-#if HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-
#include <tic.h>
#include <term_entry.h>
-MODULE_ID("$Id: read_entry.c,v 1.61 1999/07/24 20:07:20 tom Exp $")
+MODULE_ID("$Id: read_entry.c,v 1.67 2000/03/11 12:35:45 tom Exp $")
-#ifndef O_BINARY
-#define O_BINARY 0
-#endif
-
-#if 0
-#define TRACE_IN(p) DEBUG(2, p)
-#else
-#define TRACE_IN(p) /*nothing*/
+#if !HAVE_TELL
+#define tell(fd) 0 /* lseek() is POSIX, but not tell() - odd... */
#endif
/*
* Record the "official" location of the terminfo directory, according to
* the place where we're writing to, or the normal default, if not.
*/
-const char *_nc_tic_dir(const char *path)
+const char *
+_nc_tic_dir(const char *path)
{
static const char *result = TERMINFO;
* 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.
*/
-void _nc_keep_tic_dir(const char *path)
+void
+_nc_keep_tic_dir(const char *path)
{
_nc_tic_dir(path);
keep_tic_directory = TRUE;
}
-static void convert_shorts(char *buf, short *Numbers, int count)
+static void
+convert_shorts(char *buf, short *Numbers, int count)
{
int i;
- for (i = 0; i < count; i++)
- {
- if (IS_NEG1(buf + 2*i))
+ for (i = 0; i < count; i++) {
+ if (IS_NEG1(buf + 2 * i))
Numbers[i] = ABSENT_NUMERIC;
- else if (IS_NEG2(buf + 2*i))
+ else if (IS_NEG2(buf + 2 * i))
Numbers[i] = CANCELLED_NUMERIC;
else
- Numbers[i] = LOW_MSB(buf + 2*i);
- TRACE_IN(("get Numbers[%d]=%d", i, Numbers[i]));
+ Numbers[i] = 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)
+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)) {
+ if (IS_NEG1(buf + 2 * i)) {
Strings[i] = ABSENT_STRING;
- } else if (IS_NEG2(buf + 2*i)) {
+ } else if (IS_NEG2(buf + 2 * i)) {
Strings[i] = CANCELLED_STRING;
- } else if (LOW_MSB(buf + 2*i) > size) {
+ } else if (LOW_MSB(buf + 2 * i) > size) {
Strings[i] = ABSENT_STRING;
} else {
- Strings[i] = (LOW_MSB(buf+2*i) + table);
- TRACE_IN(("Strings[%d] = %s", i, _nc_visbuf(Strings[i])));
+ 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 */
#define even_boundary(value) \
if ((value) % 2 != 0) read(fd, buf, 1)
-static int read_termtype(int fd, TERMTYPE *ptr)
+static int
+read_termtype(int fd, TERMTYPE * ptr)
/* return 1 if read, 0 if not found or garbled */
{
- int name_size, bool_count, num_count, str_count, str_size;
- int i;
- char buf[MAX_ENTRY_SIZE];
+ int name_size, bool_count, num_count, str_count, str_size;
+ int i;
+ char buf[MAX_ENTRY_SIZE];
+
+ TR(TRACE_DATABASE, ("READ termtype header @%d", tell(fd)));
- TRACE_IN(("READ termtype header @%d", tell(fd)));
+ memset(ptr, 0, sizeof(*ptr));
/* grab the header */
if (!read_shorts(fd, buf, 6)
- || LOW_MSB(buf) != MAGIC) {
- return(0);
+ || LOW_MSB(buf) != MAGIC) {
+ return (0);
}
_nc_free_termtype(ptr);
- name_size = LOW_MSB(buf + 2);
+ 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);
-
- TRACE_IN(("header is %d/%d/%d/%d(%d)", name_size, bool_count, num_count, str_count, str_size));
- if (name_size < 0
- || bool_count < 0
- || num_count < 0
- || str_count < 0
- || str_size < 0) {
- return(0);
+ 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 (0);
}
if (str_size) {
/* try to allocate space for the string table */
- if (str_count*2 >= (int) sizeof(buf)
- || (ptr->str_table = typeMalloc(char, (unsigned)str_size)) == 0) {
- return(0);
+ if (str_count * 2 >= (int) sizeof(buf)
+ || (ptr->str_table = typeMalloc(char, (unsigned) str_size)) == 0) {
+ return (0);
}
} else {
str_count = 0;
}
/* grab the name (a null-terminate string) */
- read(fd, buf, min(MAX_NAME_SIZE, (unsigned)name_size));
+ read(fd, buf, min(MAX_NAME_SIZE, (unsigned) name_size));
buf[MAX_NAME_SIZE] = '\0';
ptr->term_names = typeCalloc(char, strlen(buf) + 1);
if (ptr->term_names == NULL) {
- return(0);
+ return (0);
}
(void) strcpy(ptr->term_names, buf);
if (name_size > MAX_NAME_SIZE)
/* grab the booleans */
if ((ptr->Booleans = typeCalloc(char, max(BOOLCOUNT, bool_count))) == 0
- || read(fd, ptr->Booleans, (unsigned)bool_count) < bool_count) {
- return(0);
+ || read(fd, ptr->Booleans, (unsigned) bool_count) < bool_count) {
+ return (0);
}
/*
/* grab the numbers */
if ((ptr->Numbers = typeCalloc(short, max(NUMCOUNT, num_count))) == 0
- || !read_shorts(fd, buf, num_count)) {
- return(0);
+ || !read_shorts(fd, buf, num_count)) {
+ return (0);
}
convert_shorts(buf, ptr->Numbers, num_count);
if ((ptr->Strings = typeCalloc(char *, max(STRCOUNT, str_count))) == 0)
- return(0);
+ return (0);
- if (str_count)
- {
+ if (str_count) {
/* grab the string offsets */
if (!read_shorts(fd, buf, str_count)) {
- return(0);
+ return (0);
}
/* finally, grab the string table itself */
- if (read(fd, ptr->str_table, (unsigned)str_size) != str_size)
- return(0);
+ if (read(fd, ptr->str_table, (unsigned) str_size) != str_size)
+ return (0);
convert_strings(buf, ptr->Strings, str_count, str_size, ptr->str_table);
}
-
#if NCURSES_XNAMES
ptr->num_Booleans = BOOLCOUNT;
- ptr->num_Numbers = NUMCOUNT;
- ptr->num_Strings = STRCOUNT;
+ ptr->num_Numbers = NUMCOUNT;
+ ptr->num_Strings = STRCOUNT;
/*
* Read extended entries, if any, after the normal end of terminfo data.
*/
even_boundary(str_size);
- TRACE_IN(("READ extended_header @%d", tell(fd)));
+ TR(TRACE_DATABASE, ("READ extended_header @%d", tell(fd)));
if (_nc_user_definable && read_shorts(fd, 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);
+ 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);
int need = (ext_bool_count + ext_num_count + ext_str_count);
int base = 0;
if (need >= (int) 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(0);
+ || 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 (0);
ptr->num_Booleans = BOOLCOUNT + ext_bool_count;
- ptr->num_Numbers = NUMCOUNT + ext_num_count;
- ptr->num_Strings = STRCOUNT + ext_str_count;
+ ptr->num_Numbers = NUMCOUNT + ext_num_count;
+ ptr->num_Strings = STRCOUNT + ext_str_count;
- ptr->Booleans = typeRealloc(char, ptr->num_Booleans,ptr->Booleans);
+ ptr->Booleans = typeRealloc(char, ptr->num_Booleans, ptr->Booleans);
ptr->Numbers = typeRealloc(short, ptr->num_Numbers, ptr->Numbers);
- ptr->Strings = typeRealloc(char*, ptr->num_Strings, ptr->Strings);
+ ptr->Strings = typeRealloc(char *, ptr->num_Strings, ptr->Strings);
- TRACE_IN(("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, ("extended header is %d/%d/%d(%d:%d)",
+ ext_bool_count, ext_num_count, ext_str_count, ext_str_size, ext_str_limit));
- TRACE_IN(("READ %d extended-booleans @%d", ext_bool_count, tell(fd)));
+ TR(TRACE_DATABASE, ("READ %d extended-booleans @%d",
+ ext_bool_count, tell(fd)));
if ((ptr->ext_Booleans = ext_bool_count) != 0) {
- if (read(fd, ptr->Booleans + BOOLCOUNT, (unsigned)ext_bool_count) != ext_bool_count)
- return(0);
+ if (read(fd, ptr->Booleans + BOOLCOUNT, (unsigned)
+ ext_bool_count) != ext_bool_count)
+ return (0);
}
even_boundary(ext_bool_count);
- TRACE_IN(("READ %d extended-numbers @%d", ext_num_count, tell(fd)));
+ TR(TRACE_DATABASE, ("READ %d extended-numbers @%d",
+ ext_num_count, tell(fd)));
if ((ptr->ext_Numbers = ext_num_count) != 0) {
if (!read_shorts(fd, buf, ext_num_count))
- return(0);
- TRACE_IN(("Before converting extended-numbers"));
+ return (0);
+ TR(TRACE_DATABASE, ("Before converting extended-numbers"));
convert_shorts(buf, ptr->Numbers + NUMCOUNT, ext_num_count);
}
- TRACE_IN(("READ extended-offsets @%d", tell(fd)));
+ TR(TRACE_DATABASE, ("READ extended-offsets @%d", tell(fd)));
if ((ext_str_count || need)
- && !read_shorts(fd, buf, ext_str_count+need))
- return(0);
+ && !read_shorts(fd, buf, ext_str_count + need))
+ return (0);
+
+ TR(TRACE_DATABASE, ("READ %d bytes of extended-strings @%d",
+ ext_str_limit, tell(fd)));
- TRACE_IN(("READ %d bytes of extended-strings @%d", ext_str_limit, tell(fd)));
if (ext_str_limit) {
if ((ptr->ext_str_table = typeMalloc(char, ext_str_limit)) == 0)
- return(0);
+ return (0);
if (read(fd, ptr->ext_str_table, ext_str_limit) != ext_str_limit)
- return(0);
- TRACE_IN(("first extended-string is %s", _nc_visbuf(ptr->ext_str_table)));
+ return (0);
+ TR(TRACE_DATABASE, ("first extended-string is %s", _nc_visbuf(ptr->ext_str_table)));
}
if ((ptr->ext_Strings = ext_str_count) != 0) {
- TRACE_IN(("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--) {
- TRACE_IN(("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 += (strlen(ptr->Strings[i+STRCOUNT]) + 1);
- TRACE_IN(("... to [%d] %s", i+STRCOUNT, _nc_visbuf(ptr->Strings[i+STRCOUNT])));
+ 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 += (strlen(ptr->Strings[i + STRCOUNT]) + 1);
+ TR(TRACE_DATABASE, ("... to [%d] %s",
+ i + STRCOUNT,
+ _nc_visbuf(ptr->Strings[i + STRCOUNT])));
}
}
if (need) {
if ((ptr->ext_Names = typeCalloc(char *, need)) == 0)
- return(0);
- TRACE_IN(("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, need, ext_str_limit, ptr->ext_str_table + base);
+ return (0);
+ 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, 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));
+ ptr->num_Booleans, ptr->ext_Booleans,
+ ptr->num_Numbers, ptr->ext_Numbers,
+ ptr->num_Strings, ptr->ext_Strings));
- TRACE_IN(("extend: num_Booleans:%d", ptr->num_Booleans));
+ 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));
- TRACE_IN(("normal: num_Booleans:%d", ptr->num_Booleans));
+ 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++)
for (i = str_count; i < STRCOUNT; i++)
ptr->Strings[i] = ABSENT_STRING;
- return(1);
+ return (1);
}
-int _nc_read_file_entry(const char *const filename, TERMTYPE *ptr)
+int
+_nc_read_file_entry(const char *const filename, TERMTYPE * ptr)
/* return 1 if read, 0 if not found or garbled */
{
int code, fd = -1;
if (_nc_access(filename, R_OK) < 0
- || (fd = open(filename, O_RDONLY|O_BINARY)) < 0) {
+ || (fd = open(filename, O_RDONLY | O_BINARY)) < 0) {
T(("cannot open terminfo %s (errno=%d)", filename, errno));
- return(0);
+ return (0);
}
T(("read terminfo %s", filename));
* Build a terminfo pathname and try to read the data. Returns 1 on success,
* 0 on failure.
*/
-static int _nc_read_tic_entry(char *const filename,
- const char *const dir, const char *ttn, TERMTYPE *const tp)
+static int
+_nc_read_tic_entry(char *const filename,
+ const char *const dir, const char *ttn, TERMTYPE * const tp)
{
/* maximum safe length of terminfo root directory name */
#define MAX_TPATH (PATH_MAX - MAX_ALIAS - 6)
- if (strlen(dir) > MAX_TPATH)
- return 0;
- (void) sprintf(filename, "%s/%s", dir, ttn);
- return _nc_read_file_entry(filename, tp);
+ if (strlen(dir) > MAX_TPATH)
+ return 0;
+ (void) sprintf(filename, "%s/%s", dir, ttn);
+ return _nc_read_file_entry(filename, tp);
}
/*
* Process the list of :-separated directories, looking for the terminal type.
* We don't use strtok because it does not show us empty tokens.
*/
-static int _nc_read_terminfo_dirs(const char *dirs, char *const filename, const char *const ttn, TERMTYPE *const tp)
+static int
+_nc_read_terminfo_dirs(const char *dirs, char *const filename, const char *const
+ ttn, TERMTYPE * const tp)
{
- char *list, *a;
- const char *b;
- int code = 0;
-
- /* we'll modify the argument, so we must copy */
- if ((b = a = list = strdup(dirs)) == NULL)
- return(0);
-
- for (;;) {
- int c = *a;
- if (c == 0 || c == ':') {
- *a = 0;
- if ((b + 1) >= a)
- b = TERMINFO;
- if (_nc_read_tic_entry(filename, b, ttn, tp) == 1) {
- code = 1;
- break;
- }
- b = a + 1;
- if (c == 0)
- break;
- }
- a++;
+ char *list, *a;
+ const char *b;
+ int code = 0;
+
+ /* we'll modify the argument, so we must copy */
+ if ((b = a = list = strdup(dirs)) == NULL)
+ return (0);
+
+ for (;;) {
+ int c = *a;
+ if (c == 0 || c == ':') {
+ *a = 0;
+ if ((b + 1) >= a)
+ b = TERMINFO;
+ if (_nc_read_tic_entry(filename, b, ttn, tp) == 1) {
+ code = 1;
+ break;
+ }
+ b = a + 1;
+ if (c == 0)
+ break;
}
+ a++;
+ }
- free(list);
- return(code);
+ free(list);
+ return (code);
}
/*
* overrun the file buffer.
*/
-int _nc_read_entry(const char *const tn, char *const filename, TERMTYPE *const tp)
+int
+_nc_read_entry(const char *const tn, char *const filename, TERMTYPE * const tp)
{
-char *envp;
-char ttn[MAX_ALIAS + 3];
-
- /* truncate the terminal name to prevent dangerous buffer airline */
- (void) sprintf(ttn, "%c/%.*s", *tn, MAX_ALIAS, tn);
-
- /* This is System V behavior, in conjunction with our requirements for
- * writing terminfo entries.
- */
- if (have_tic_directory
- && _nc_read_tic_entry(filename, _nc_tic_dir(0), ttn, tp) == 1)
- return 1;
-
- if ((envp = getenv("TERMINFO")) != 0
- && _nc_read_tic_entry(filename, _nc_tic_dir(envp), ttn, tp) == 1)
- return 1;
-
- if ((envp = _nc_home_terminfo()) != 0) {
- if (_nc_read_tic_entry(filename, envp, ttn, tp) == 1) {
- return(1);
- }
+ char *envp;
+ char ttn[MAX_ALIAS + 3];
+
+ /* truncate the terminal name to prevent dangerous buffer airline */
+ (void) sprintf(ttn, "%c/%.*s", *tn, MAX_ALIAS, tn);
+
+ /* This is System V behavior, in conjunction with our requirements for
+ * writing terminfo entries.
+ */
+ if (have_tic_directory
+ && _nc_read_tic_entry(filename, _nc_tic_dir(0), ttn, tp) == 1)
+ return 1;
+
+ if ((envp = getenv("TERMINFO")) != 0
+ && _nc_read_tic_entry(filename, _nc_tic_dir(envp), ttn, tp) == 1)
+ return 1;
+
+ if ((envp = _nc_home_terminfo()) != 0) {
+ if (_nc_read_tic_entry(filename, envp, ttn, tp) == 1) {
+ return (1);
}
+ }
- /* this is an ncurses extension */
- if ((envp = getenv("TERMINFO_DIRS")) != 0)
- return _nc_read_terminfo_dirs(envp, filename, ttn, tp);
+ /* this is an ncurses extension */
+ if ((envp = getenv("TERMINFO_DIRS")) != 0)
+ return _nc_read_terminfo_dirs(envp, filename, ttn, tp);
- /* Try the system directory. Note that the TERMINFO_DIRS value, if
- * defined by the configure script, begins with a ":", which will be
- * interpreted as TERMINFO.
- */
+ /* Try the system directory. Note that the TERMINFO_DIRS value, if
+ * defined by the configure script, begins with a ":", which will be
+ * interpreted as TERMINFO.
+ */
#ifdef TERMINFO_DIRS
- return _nc_read_terminfo_dirs(TERMINFO_DIRS, filename, ttn, tp);
+ return _nc_read_terminfo_dirs(TERMINFO_DIRS, filename, ttn, tp);
#else
- return _nc_read_tic_entry(filename, TERMINFO, ttn, tp);
+ return _nc_read_tic_entry(filename, TERMINFO, ttn, tp);
#endif
}
-
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* Termcap compatibility support
*
#include <tic.h>
#include <term_entry.h>
-#if HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
-
-MODULE_ID("$Id: read_termcap.c,v 1.43 1999/04/10 20:52:52 tom Exp $")
+MODULE_ID("$Id: read_termcap.c,v 1.47 2000/04/15 16:53:19 Todd.C.Miller Exp $")
#ifndef PURE_TERMINFO
#define _nc_cgetset cgetset
#else
static int _nc_cgetmatch(char *, const char *);
-static int _nc_getent(char **, unsigned int *, int *, int, char **, int, const char *, int, char *);
+static int _nc_getent(char **, unsigned *, int *, int, char **, int, const char *, int, char *);
static int _nc_nfcmp(const char *, char *);
/*-
#define BFRAG 1024
#define BSIZE 1024
#define ESC ('[' & 037) /* ASCII ESC */
-#define MAX_RECURSION 32 /* maximum getent recursion */
-#define SFRAG 100 /* cgetstr mallocs in SFRAG chunks */
+#define MAX_RECURSION 32 /* maximum getent recursion */
+#define SFRAG 100 /* cgetstr mallocs in SFRAG chunks */
#define RECOK (char)0
#define TCERR (char)1
#define SHADOW (char)2
-static size_t topreclen; /* toprec length */
-static char *toprec; /* Additional record specified by cgetset() */
-static int gottoprec; /* Flag indicating retrieval of toprecord */
+static size_t topreclen; /* toprec length */
+static char *toprec; /* Additional record specified by cgetset() */
+static int gottoprec; /* Flag indicating retrieval of toprecord */
/*
* Cgetset() allows the addition of a user specified buffer to be added to the
static int
_nc_cgetset(const char *ent)
{
- if (ent == 0) {
- FreeIfNeeded(toprec);
- toprec = 0;
- topreclen = 0;
- return (0);
- }
- topreclen = strlen(ent);
- if ((toprec = typeMalloc(char, topreclen + 1)) == 0) {
- errno = ENOMEM;
- return (-1);
- }
- gottoprec = 0;
- (void)strcpy(toprec, ent);
+ if (ent == 0) {
+ FreeIfNeeded(toprec);
+ toprec = 0;
+ topreclen = 0;
return (0);
+ }
+ topreclen = strlen(ent);
+ if ((toprec = typeMalloc(char, topreclen + 1)) == 0) {
+ errno = ENOMEM;
+ return (-1);
+ }
+ gottoprec = 0;
+ (void) strcpy(toprec, ent);
+ return (0);
}
/*
static char *
_nc_cgetcap(char *buf, const char *cap, int type)
{
- register const char *cp;
- register char *bp;
+ register const char *cp;
+ register char *bp;
- bp = buf;
+ bp = buf;
+ for (;;) {
+ /*
+ * Skip past the current capability field - it's 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.
+ */
for (;;) {
- /*
- * Skip past the current capability field - it's 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.
- */
- for (;;) {
- if (*bp == '\0')
- return (0);
- else if (*bp++ == ':')
- break;
- }
+ if (*bp == '\0')
+ return (0);
+ else if (*bp++ == ':')
+ break;
+ }
- /*
- * Try to match (cap, type) in buf.
- */
- for (cp = cap; *cp == *bp && *bp != '\0'; cp++, bp++)
- continue;
- if (*cp != '\0')
- continue;
- if (*bp == '@')
- return (0);
- if (type == ':') {
- if (*bp != '\0' && *bp != ':')
- continue;
- return(bp);
- }
- if (*bp != type)
- continue;
- bp++;
- return (*bp == '@' ? 0 : bp);
+ /*
+ * Try to match (cap, type) in buf.
+ */
+ for (cp = cap; *cp == *bp && *bp != '\0'; cp++, bp++)
+ continue;
+ if (*cp != '\0')
+ continue;
+ if (*bp == '@')
+ return (0);
+ if (type == ':') {
+ if (*bp != '\0' && *bp != ':')
+ continue;
+ return (bp);
}
- /* NOTREACHED */
+ if (*bp != type)
+ continue;
+ bp++;
+ return (*bp == '@' ? 0 : bp);
+ }
+ /* NOTREACHED */
}
/*
static int
_nc_cgetent(char **buf, int *oline, char **db_array, const char *name)
{
- unsigned int dummy;
+ unsigned dummy;
- return (_nc_getent(buf, &dummy, oline, 0, db_array, -1, name, 0, 0));
+ return (_nc_getent(buf, &dummy, oline, 0, db_array, -1, name, 0, 0));
}
/*
#define DOALLOC(size) typeRealloc(char, size, record)
static int
_nc_getent(
- char **cap, /* termcap-content */
- unsigned int *len, /* length, needed for recursion */
- int *beginning, /* line-number at match */
- int in_array, /* index in 'db_array[] */
- char **db_array, /* list of files to search */
- int fd,
- const char *name,
- int depth,
- char *nfield)
+ char **cap, /* termcap-content */
+ unsigned *len, /* length, needed for recursion */
+ int *beginning, /* line-number at match */
+ int in_array, /* index in 'db_array[] */
+ char **db_array, /* list of files to search */
+ int fd,
+ const char *name,
+ int depth,
+ char *nfield)
{
- register char *r_end, *rp;
- int myfd = FALSE;
- char *record = 0;
- int tc_not_resolved;
- int current;
- int lineno;
-
- /*
- * Return with ``loop detected'' error if we've recurred more than
- * MAX_RECURSION times.
- */
- if (depth > MAX_RECURSION)
- return (TC_REF_LOOP);
+ register char *r_end, *rp;
+ int myfd = FALSE;
+ char *record = 0;
+ int tc_not_resolved;
+ int current;
+ int lineno;
+
+ /*
+ * Return with ``loop detected'' error if we've recurred more than
+ * MAX_RECURSION times.
+ */
+ if (depth > MAX_RECURSION)
+ return (TC_REF_LOOP);
+
+ /*
+ * Check if we have a top record from cgetset().
+ */
+ if (depth == 0 && toprec != 0 && _nc_cgetmatch(toprec, name) == 0) {
+ if ((record = DOALLOC(topreclen + BFRAG)) == 0) {
+ errno = ENOMEM;
+ return (TC_SYS_ERR);
+ }
+ (void) strcpy(record, toprec);
+ rp = record + topreclen + 1;
+ r_end = rp + BFRAG;
+ current = in_array;
+ } else {
+ int foundit;
/*
- * Check if we have a top record from cgetset().
+ * Allocate first chunk of memory.
*/
- if (depth == 0 && toprec != 0 && _nc_cgetmatch(toprec, name) == 0) {
- if ((record = DOALLOC(topreclen + BFRAG)) == 0) {
- errno = ENOMEM;
- return (TC_SYS_ERR);
- }
- (void)strcpy(record, toprec);
- rp = record + topreclen + 1;
- r_end = rp + BFRAG;
- current = in_array;
- } else {
- int foundit;
-
- /*
- * Allocate first chunk of memory.
- */
- if ((record = DOALLOC(BFRAG)) == 0) {
- errno = ENOMEM;
- return (TC_SYS_ERR);
- }
- rp = r_end = record + BFRAG;
- foundit = FALSE;
-
- /*
- * Loop through database array until finding the record.
- */
- for (current = in_array; db_array[current] != 0; current++) {
- int eof = FALSE;
-
- /*
- * Open database if not already open.
- */
- if (fd >= 0) {
- (void)lseek(fd, (off_t)0, SEEK_SET);
- } else if ((_nc_access(db_array[current], R_OK) < 0)
- || (fd = open(db_array[current], O_RDONLY, 0)) < 0) {
- /* No error on unfound file. */
- if (errno == ENOENT)
- continue;
- free(record);
- return (TC_SYS_ERR);
- } else {
- myfd = TRUE;
- }
- lineno = 0;
-
- /*
- * Find the requested capability record ...
- */
- {
- char buf[2048];
- register char *b_end = buf;
- register char *bp = buf;
- register int c;
-
- /*
- * Loop invariants:
- * There is always room for one more character in record.
- * R_end always points just past end of record.
- * Rp always points just past last character in record.
- * B_end always points just past last character in buf.
- * Bp always points at next character in buf.
- */
-
- for (;;) {
- int first = lineno + 1;
-
- /*
- * Read in a line implementing (\, newline)
- * line continuation.
- */
- rp = record;
- for (;;) {
- if (bp >= b_end) {
- int n;
-
- n = read(fd, buf, sizeof(buf));
- if (n <= 0) {
- if (myfd)
- (void)close(fd);
- if (n < 0) {
- free(record);
- return (TC_SYS_ERR);
- }
- fd = -1;
- eof = TRUE;
- break;
- }
- b_end = buf+n;
- bp = buf;
- }
-
- c = *bp++;
- if (c == '\n') {
- lineno++;
- if (rp == record || *(rp-1) != '\\')
- break;
- }
- *rp++ = c;
-
- /*
- * Enforce loop invariant: if no room
- * left in record buffer, try to get
- * some more.
- */
- if (rp >= r_end) {
- unsigned int pos;
- size_t newsize;
-
- pos = rp - record;
- newsize = r_end - record + BFRAG;
- record = DOALLOC(newsize);
- if (record == 0) {
- if (myfd)
- (void)close(fd);
- errno = ENOMEM;
- return (TC_SYS_ERR);
- }
- r_end = record + newsize;
- rp = record + pos;
- }
- }
- /* loop invariant lets us do this */
- *rp++ = '\0';
-
- /*
- * If encountered eof check next file.
- */
- if (eof)
- break;
-
- /*
- * Toss blank lines and comments.
- */
- if (*record == '\0' || *record == '#')
- continue;
-
- /*
- * See if this is the record we want ...
- */
- if (_nc_cgetmatch(record, name) == 0
- && (nfield == 0
- || !_nc_nfcmp(nfield, record))) {
- foundit = TRUE;
- *beginning = first;
- break; /* found it! */
- }
- }
- }
- if (foundit)
- break;
- }
-
- if (!foundit)
- return (TC_NOT_FOUND);
+ if ((record = DOALLOC(BFRAG)) == 0) {
+ errno = ENOMEM;
+ return (TC_SYS_ERR);
}
+ rp = r_end = record + BFRAG;
+ foundit = FALSE;
/*
- * Got the capability record, but now we have to expand all tc=name
- * references in it ...
+ * Loop through database array until finding the record.
*/
- {
- register char *newicap, *s;
- register int newilen;
- unsigned int ilen;
- int diff, iret, tclen, oline;
- char *icap, *scan, *tc, *tcstart, *tcend;
+ for (current = in_array; db_array[current] != 0; current++) {
+ int eof = FALSE;
+
+ /*
+ * Open database if not already open.
+ */
+ if (fd >= 0) {
+ (void) lseek(fd, (off_t) 0, SEEK_SET);
+ } else if ((_nc_access(db_array[current], R_OK) < 0)
+ || (fd = open(db_array[current], O_RDONLY, 0)) < 0) {
+ /* No error on unfound file. */
+ if (errno == ENOENT)
+ continue;
+ free(record);
+ return (TC_SYS_ERR);
+ } else {
+ myfd = TRUE;
+ }
+ lineno = 0;
+
+ /*
+ * Find the requested capability record ...
+ */
+ {
+ char buf[2048];
+ register char *b_end = buf;
+ register char *bp = buf;
+ register int c;
/*
* Loop invariants:
- * There is room for one more character in record.
- * R_end points just past end of record.
- * Rp points just past last character in record.
- * Scan points at remainder of record that needs to be
- * scanned for tc=name constructs.
+ * There is always room for one more character in record.
+ * R_end always points just past end of record.
+ * Rp always points just past last character in record.
+ * B_end always points just past last character in buf.
+ * Bp always points at next character in buf.
*/
- scan = record;
- tc_not_resolved = FALSE;
- for (;;) {
- if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0)
- break;
- /*
- * Find end of tc=name and stomp on the trailing `:'
- * (if present) so we can use it to call ourselves.
- */
- s = tc;
- while (*s != '\0') {
- if (*s++ == ':') {
- *(s - 1) = '\0';
- break;
- }
- }
- tcstart = tc - 3;
- tclen = s - tcstart;
- tcend = s;
-
- iret = _nc_getent(&icap, &ilen, &oline, current, db_array, fd, tc, depth+1, 0);
- newicap = icap; /* Put into a register. */
- newilen = ilen;
- if (iret != TC_SUCCESS) {
- /* an error */
- if (iret < TC_NOT_FOUND) {
- if (myfd)
- (void)close(fd);
- free(record);
- return (iret);
- }
- if (iret == TC_UNRESOLVED)
- tc_not_resolved = TRUE;
- /* couldn't resolve tc */
- if (iret == TC_NOT_FOUND) {
- *(s - 1) = ':';
- scan = s - 1;
- tc_not_resolved = TRUE;
- continue;
+ for (;;) {
+ int first = lineno + 1;
+
+ /*
+ * Read in a line implementing (\, newline)
+ * line continuation.
+ */
+ rp = record;
+ for (;;) {
+ if (bp >= b_end) {
+ int n;
+
+ n = read(fd, buf, sizeof(buf));
+ if (n <= 0) {
+ if (myfd)
+ (void) close(fd);
+ if (n < 0) {
+ free(record);
+ return (TC_SYS_ERR);
}
+ fd = -1;
+ eof = TRUE;
+ break;
+ }
+ b_end = buf + n;
+ bp = buf;
}
- /* not interested in name field of tc'ed record */
- s = newicap;
- while (*s != '\0' && *s++ != ':')
- ;
- newilen -= s - newicap;
- newicap = s;
-
- /* make sure interpolated record is `:'-terminated */
- s += newilen;
- if (*(s-1) != ':') {
- *s = ':'; /* overwrite NUL with : */
- newilen++;
+ c = *bp++;
+ if (c == '\n') {
+ lineno++;
+ if (rp == record || *(rp - 1) != '\\')
+ break;
}
+ *rp++ = c;
/*
- * Make sure there's enough room to insert the
- * new record.
+ * Enforce loop invariant: if no room
+ * left in record buffer, try to get
+ * some more.
*/
- diff = newilen - tclen;
- if (diff >= r_end - rp) {
- unsigned int pos, tcpos, tcposend;
- size_t newsize;
-
- pos = rp - record;
- newsize = r_end - record + diff + BFRAG;
- tcpos = tcstart - record;
- tcposend = tcend - record;
- record = DOALLOC(newsize);
- if (record == 0) {
- if (myfd)
- (void)close(fd);
- free(icap);
- errno = ENOMEM;
- return (TC_SYS_ERR);
- }
- r_end = record + newsize;
- rp = record + pos;
- tcstart = record + tcpos;
- tcend = record + tcposend;
+ if (rp >= r_end) {
+ unsigned pos;
+ size_t newsize;
+
+ pos = rp - record;
+ newsize = r_end - record + BFRAG;
+ record = DOALLOC(newsize);
+ if (record == 0) {
+ if (myfd)
+ (void) close(fd);
+ errno = ENOMEM;
+ return (TC_SYS_ERR);
+ }
+ r_end = record + newsize;
+ rp = record + pos;
}
+ }
+ /* loop invariant lets us do this */
+ *rp++ = '\0';
+
+ /*
+ * If encountered eof check next file.
+ */
+ if (eof)
+ break;
- /*
- * Insert tc'ed record into our record.
- */
- s = tcstart + newilen;
- memmove(s, tcend, (size_t)(rp - tcend));
- memmove(tcstart, newicap, (size_t)newilen);
- rp += diff;
- free(icap);
+ /*
+ * Toss blank lines and comments.
+ */
+ if (*record == '\0' || *record == '#')
+ continue;
- /*
- * Start scan on `:' so next cgetcap works properly
- * (cgetcap always skips first field).
- */
- scan = s-1;
+ /*
+ * See if this is the record we want ...
+ */
+ if (_nc_cgetmatch(record, name) == 0
+ && (nfield == 0
+ || !_nc_nfcmp(nfield, record))) {
+ foundit = TRUE;
+ *beginning = first;
+ break; /* found it! */
+ }
}
+ }
+ if (foundit)
+ break;
}
+ if (!foundit)
+ return (TC_NOT_FOUND);
+ }
+
+ /*
+ * Got the capability record, but now we have to expand all tc=name
+ * references in it ...
+ */
+ {
+ register char *newicap, *s;
+ register int newilen;
+ unsigned ilen;
+ int diff, iret, tclen, oline;
+ char *icap, *scan, *tc, *tcstart, *tcend;
+
/*
- * Close file (if we opened it), give back any extra memory, and
- * return capability, length and success.
+ * Loop invariants:
+ * There is room for one more character in record.
+ * R_end points just past end of record.
+ * Rp points just past last character in record.
+ * Scan points at remainder of record that needs to be
+ * scanned for tc=name constructs.
*/
- if (myfd)
- (void)close(fd);
- *len = rp - record - 1; /* don't count NUL */
- if (r_end > rp) {
- if ((record = DOALLOC((size_t)(rp - record))) == 0) {
- errno = ENOMEM;
- return (TC_SYS_ERR);
+ scan = record;
+ tc_not_resolved = FALSE;
+ for (;;) {
+ if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0)
+ break;
+
+ /*
+ * Find end of tc=name and stomp on the trailing `:'
+ * (if present) so we can use it to call ourselves.
+ */
+ s = tc;
+ while (*s != '\0') {
+ if (*s++ == ':') {
+ *(s - 1) = '\0';
+ break;
+ }
+ }
+ tcstart = tc - 3;
+ tclen = s - tcstart;
+ tcend = s;
+
+ iret = _nc_getent(&icap, &ilen, &oline, current, db_array, fd,
+ tc, depth + 1, 0);
+ newicap = icap; /* Put into a register. */
+ newilen = ilen;
+ if (iret != TC_SUCCESS) {
+ /* an error */
+ if (iret < TC_NOT_FOUND) {
+ if (myfd)
+ (void) close(fd);
+ free(record);
+ return (iret);
}
+ if (iret == TC_UNRESOLVED)
+ tc_not_resolved = TRUE;
+ /* couldn't resolve tc */
+ if (iret == TC_NOT_FOUND) {
+ *(s - 1) = ':';
+ scan = s - 1;
+ tc_not_resolved = TRUE;
+ continue;
+ }
+ }
+
+ /* not interested in name field of tc'ed record */
+ s = newicap;
+ while (*s != '\0' && *s++ != ':') ;
+ newilen -= s - newicap;
+ newicap = s;
+
+ /* make sure interpolated record is `:'-terminated */
+ s += newilen;
+ if (*(s - 1) != ':') {
+ *s = ':'; /* overwrite NUL with : */
+ newilen++;
+ }
+
+ /*
+ * Make sure there's enough room to insert the
+ * new record.
+ */
+ diff = newilen - tclen;
+ if (diff >= r_end - rp) {
+ unsigned pos, tcpos, tcposend;
+ size_t newsize;
+
+ pos = rp - record;
+ newsize = r_end - record + diff + BFRAG;
+ tcpos = tcstart - record;
+ tcposend = tcend - record;
+ record = DOALLOC(newsize);
+ if (record == 0) {
+ if (myfd)
+ (void) close(fd);
+ free(icap);
+ errno = ENOMEM;
+ return (TC_SYS_ERR);
+ }
+ r_end = record + newsize;
+ rp = record + pos;
+ tcstart = record + tcpos;
+ tcend = record + tcposend;
+ }
+
+ /*
+ * Insert tc'ed record into our record.
+ */
+ s = tcstart + newilen;
+ memmove(s, tcend, (size_t) (rp - tcend));
+ memmove(tcstart, newicap, (size_t) newilen);
+ rp += diff;
+ free(icap);
+
+ /*
+ * Start scan on `:' so next cgetcap works properly
+ * (cgetcap always skips first field).
+ */
+ scan = s - 1;
+ }
+ }
+
+ /*
+ * Close file (if we opened it), give back any extra memory, and
+ * return capability, length and success.
+ */
+ if (myfd)
+ (void) close(fd);
+ *len = rp - record - 1; /* don't count NUL */
+ if (r_end > rp) {
+ if ((record = DOALLOC((size_t) (rp - record))) == 0) {
+ errno = ENOMEM;
+ return (TC_SYS_ERR);
}
+ }
- *cap = record;
- if (tc_not_resolved)
- return (TC_UNRESOLVED);
- return (current);
+ *cap = record;
+ if (tc_not_resolved)
+ return (TC_UNRESOLVED);
+ return (current);
}
/*
static int
_nc_cgetmatch(char *buf, const char *name)
{
- register const char *np;
- register char *bp;
-
+ register const char *np;
+ register char *bp;
+
+ /*
+ * Start search at beginning of record.
+ */
+ bp = buf;
+ for (;;) {
/*
- * Start search at beginning of record.
+ * Try to match a record name.
*/
- bp = buf;
+ np = name;
for (;;) {
- /*
- * Try to match a record name.
- */
- np = name;
- for (;;) {
- if (*np == '\0') {
- if (*bp == '|' || *bp == ':' || *bp == '\0')
- return (0);
- else
- break;
- } else if (*bp++ != *np++) {
- break;
- }
- }
+ if (*np == '\0') {
+ if (*bp == '|' || *bp == ':' || *bp == '\0')
+ return (0);
+ else
+ break;
+ } else if (*bp++ != *np++) {
+ break;
+ }
+ }
- /*
- * Match failed, skip to next name in record.
- */
- bp--; /* a '|' or ':' may have stopped the match */
- for (;;) {
- if (*bp == '\0' || *bp == ':')
- return (-1); /* match failed totally */
- else if (*bp++ == '|')
- break; /* found next name */
- }
+ /*
+ * Match failed, skip to next name in record.
+ */
+ bp--; /* a '|' or ':' may have stopped the match */
+ for (;;) {
+ if (*bp == '\0' || *bp == ':')
+ return (-1); /* match failed totally */
+ else if (*bp++ == '|')
+ break; /* found next name */
}
+ }
}
/*
static int
_nc_nfcmp(const char *nf, char *rec)
{
- char *cp, tmp;
- int ret;
+ char *cp, tmp;
+ int ret;
- for (cp = rec; *cp != ':'; cp++)
- ;
+ for (cp = rec; *cp != ':'; cp++) ;
- tmp = *(cp + 1);
- *(cp + 1) = '\0';
- ret = strcmp(nf, rec);
- *(cp + 1) = tmp;
+ tmp = *(cp + 1);
+ *(cp + 1) = '\0';
+ ret = strcmp(nf, rec);
+ *(cp + 1) = tmp;
- return (ret);
+ return (ret);
}
#endif /* HAVE_BSD_CGETENT */
static char *
get_tc_token(char **srcp, int *endp)
{
- int ch;
- bool found = FALSE;
- char *s, *base;
- char *tok = 0;
-
- *endp = TRUE;
- for (s = base = *srcp; *s != '\0'; ) {
- ch = *s++;
- if (ch == '\\') {
- if (*s == '\0') {
- break;
- } else if (*s++ == '\n') {
- while (isspace(*s))
- s++;
- } else {
- found = TRUE;
- }
- } else if (ch == ':') {
- if (found) {
- tok = base;
- s[-1] = '\0';
- *srcp = s;
- *endp = FALSE;
- break;
- }
- base = s;
- } else if (isgraph(ch)) {
- found = TRUE;
- }
- }
-
- /* malformed entry may end without a ':' */
- if (tok == 0 && found) {
+ int ch;
+ bool found = FALSE;
+ char *s, *base;
+ char *tok = 0;
+
+ *endp = TRUE;
+ for (s = base = *srcp; *s != '\0';) {
+ ch = *s++;
+ if (ch == '\\') {
+ if (*s == '\0') {
+ break;
+ } else if (*s++ == '\n') {
+ while (isspace(*s))
+ s++;
+ } else {
+ found = TRUE;
+ }
+ } else if (ch == ':') {
+ if (found) {
tok = base;
+ s[-1] = '\0';
+ *srcp = s;
+ *endp = FALSE;
+ break;
+ }
+ base = s;
+ } else if (isgraph(ch)) {
+ found = TRUE;
}
+ }
+
+ /* malformed entry may end without a ':' */
+ if (tok == 0 && found) {
+ tok = base;
+ }
- return tok;
+ return tok;
}
static char *
copy_tc_token(char *dst, const char *src, size_t len)
{
- int ch;
+ int ch;
- while ((ch = *src++) != '\0') {
- if (ch == '\\' && *src == '\n') {
- while (isspace(*src))
- src++;
- continue;
- }
- if (--len == 0) {
- dst = 0;
- break;
- }
- *dst++ = ch;
+ while ((ch = *src++) != '\0') {
+ if (ch == '\\' && *src == '\n') {
+ while (isspace(*src))
+ src++;
+ continue;
+ }
+ if (--len == 0) {
+ dst = 0;
+ break;
}
- return dst;
+ *dst++ = ch;
+ }
+ return dst;
}
/*
static int
_nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name)
{
- static char *the_source;
-
- register char *p;
- register char *cp;
- char *dummy;
- 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 */
- char *termpath;
-
- fname = pathvec;
- pvec = pathvec;
- tbuf = bp;
- p = pathbuf;
- cp = getenv("TERMCAP");
-
- /*
- * 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. 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 "$HOME/.termcap /etc/termcap" if no TERMPATH exists.
- */
- if (!is_pathname(cp)) { /* no TERMCAP or it holds an entry */
- if ((termpath = getenv("TERMPATH")) != 0) {
- strncpy(pathbuf, termpath, PBUFSIZ - 1);
- } else {
- if ((home = getenv("HOME")) != 0 &&
- strlen(home) < PBUFSIZ) { /* setup path */
- p += strlen(home); /* path, looking in */
- strcpy(pathbuf, home); /* $HOME first */
- *p++ = '/';
- } /* if no $HOME look in current directory */
+ static char *the_source;
+
+ register char *p;
+ register char *cp;
+ char *dummy;
+ 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 */
+ char *termpath;
+
+ fname = pathvec;
+ pvec = pathvec;
+ tbuf = bp;
+ p = pathbuf;
+ cp = getenv("TERMCAP");
+
+ /*
+ * 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.
+ * 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
+ * "$HOME/.termcap /etc/termcap" if no TERMPATH exists.
+ */
+ if (!is_pathname(cp)) { /* no TERMCAP or it holds an entry */
+ if ((termpath = getenv("TERMPATH")) != 0) {
+ strncpy(pathbuf, termpath, PBUFSIZ - 1);
+ } else {
+ if ((home = getenv("HOME")) != 0 &&
+ strlen(home) < PBUFSIZ) { /* setup path */
+ p += strlen(home); /* path, looking in */
+ strcpy(pathbuf, home); /* $HOME first */
+ *p++ = '/';
+ } /* if no $HOME look in current directory */
#define MY_PATH_DEF ".termcap /etc/termcap /usr/share/misc/termcap"
- strncpy(p, MY_PATH_DEF, (size_t)(PBUFSIZ - (p - pathbuf) - 1));
- }
+ strncpy(p, MY_PATH_DEF, (size_t) (PBUFSIZ - (p - pathbuf) - 1));
}
- else /* user-defined name in TERMCAP */
- strncpy(pathbuf, cp, PBUFSIZ - 1); /* still can be tokenized */
- pathbuf[PBUFSIZ - 1] = '\0';
-
- *fname++ = pathbuf; /* tokenize path into vector of names */
- while (*++p) {
- if (*p == ' ' || *p == ':') {
- *p = '\0';
- while (*++p)
- if (*p != ' ' && *p != ':')
- break;
- if (*p == '\0')
- break;
- *fname++ = p;
- if (fname >= pathvec + PVECSIZ) {
- fname--;
- break;
- }
- }
+ } else /* user-defined name in TERMCAP */
+ strncpy(pathbuf, cp, PBUFSIZ - 1); /* still can be tokenized */
+ pathbuf[PBUFSIZ - 1] = '\0';
+
+ *fname++ = pathbuf; /* tokenize path into vector of names */
+ while (*++p) {
+ if (*p == ' ' || *p == ':') {
+ *p = '\0';
+ while (*++p)
+ if (*p != ' ' && *p != ':')
+ break;
+ if (*p == '\0')
+ break;
+ *fname++ = p;
+ if (fname >= pathvec + PVECSIZ) {
+ fname--;
+ break;
+ }
}
- *fname = 0; /* mark end of vector */
- if (is_pathname(cp)) {
- if (_nc_cgetset(cp) < 0) {
- return(TC_SYS_ERR);
- }
+ }
+ *fname = 0; /* mark end of vector */
+ if (is_pathname(cp)) {
+ if (_nc_cgetset(cp) < 0) {
+ return (TC_SYS_ERR);
}
-
- i = _nc_cgetent(&dummy, lineno, pathvec, name);
-
- /* ncurses' termcap-parsing routines cannot handle multiple adjacent
- * empty fields, and mistakenly use the last valid cap entry instead of
- * the first (breaks tc= includes)
- */
- if (i >= 0) {
- char *pd, *ps, *tok;
- int endflag = FALSE;
- char *list[1023];
- size_t n, count = 0;
-
- pd = bp;
- ps = dummy;
- while (!endflag && (tok = get_tc_token(&ps, &endflag)) != 0) {
- bool ignore = FALSE;
-
- for (n = 1; n < count; n++) {
- char *s = list[n];
- if (s[0] == tok[0]
- && s[1] == tok[1]) {
- ignore = TRUE;
- break;
- }
- }
- if (ignore != TRUE) {
- list[count++] = tok;
- pd = copy_tc_token(pd, tok, TBUFSIZ - (2+pd-bp));
- if (pd == 0) {
- i = -1;
- break;
- }
- *pd++ = ':';
- *pd = '\0';
- }
+ }
+
+ i = _nc_cgetent(&dummy, lineno, pathvec, name);
+
+ /* ncurses' termcap-parsing routines cannot handle multiple adjacent
+ * empty fields, and mistakenly use the last valid cap entry instead of
+ * the first (breaks tc= includes)
+ */
+ if (i >= 0) {
+ char *pd, *ps, *tok;
+ int endflag = FALSE;
+ char *list[1023];
+ size_t n, count = 0;
+
+ pd = bp;
+ ps = dummy;
+ while (!endflag && (tok = get_tc_token(&ps, &endflag)) != 0) {
+ bool ignore = FALSE;
+
+ for (n = 1; n < count; n++) {
+ char *s = list[n];
+ if (s[0] == tok[0]
+ && s[1] == tok[1]) {
+ ignore = TRUE;
+ break;
}
+ }
+ if (ignore != TRUE) {
+ list[count++] = tok;
+ pd = copy_tc_token(pd, tok, TBUFSIZ - (2 + pd - bp));
+ if (pd == 0) {
+ i = -1;
+ break;
+ }
+ *pd++ = ':';
+ *pd = '\0';
+ }
}
-
- FreeIfNeeded(dummy);
- FreeIfNeeded(the_source);
- the_source = 0;
-
- /* This is not related to the BSD cgetent(), but to fake up a suitable
- * filename for ncurses' error reporting. (If we are not using BSD
- * cgetent, then it is the actual filename).
- */
- if (i >= 0) {
- if ((the_source = strdup(pathvec[i])) != 0)
- *sourcename = the_source;
- }
-
- return(i);
+ }
+
+ FreeIfNeeded(dummy);
+ FreeIfNeeded(the_source);
+ the_source = 0;
+
+ /* This is not related to the BSD cgetent(), but to fake up a suitable
+ * filename for ncurses' error reporting. (If we are not using BSD
+ * cgetent, then it is the actual filename).
+ */
+ if (i >= 0) {
+ if ((the_source = strdup(pathvec[i])) != 0)
+ *sourcename = the_source;
+ }
+
+ return (i);
}
#endif /* USE_BSD_TGETENT */
#endif /* USE_GETCAP */
* a right to open the file.
*/
#if !USE_GETCAP
-static int add_tc(char *termpaths[], char *path, int count)
+static int
+add_tc(char *termpaths[], char *path, int count)
{
- if (count < MAXPATHS
- && _nc_access(path, R_OK) == 0)
- termpaths[count++] = path;
- termpaths[count] = 0;
- return count;
+ if (count < MAXPATHS
+ && _nc_access(path, R_OK) == 0)
+ termpaths[count++] = path;
+ termpaths[count] = 0;
+ return count;
}
#define ADD_TC(path, count) filecount = add_tc(termpaths, path, count)
#endif /* !USE_GETCAP */
-int _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp)
+int
+_nc_read_termcap_entry(const char *const tn, TERMTYPE * const tp)
{
- int found = FALSE;
- ENTRY *ep;
+ int found = FALSE;
+ ENTRY *ep;
#if USE_GETCAP_CACHE
- char cwd_buf[PATH_MAX];
+ char cwd_buf[PATH_MAX];
#endif
#if USE_GETCAP
- char tc[TBUFSIZ];
- static char *source;
- static int lineno;
-
+ char *p, tc[TBUFSIZ];
+ static char *source;
+ static int lineno;
+
+ if ((p = getenv("TERMCAP")) != 0
+ && !is_pathname(p) && _nc_name_match(p, tn, "|:")) {
+ /* TERMCAP holds a termcap entry */
+ strncpy(tc, p, sizeof(tc) - 1);
+ tc[sizeof(tc) - 1] = '\0';
+ _nc_set_source("TERMCAP");
+ } else {
/* we're using getcap(3) */
if (_nc_tgetent(tc, &source, &lineno, tn) < 0)
- return (ERR);
+ return (ERR);
_nc_curr_line = lineno;
_nc_set_source(source);
- _nc_read_entry_source((FILE *)0, tc, FALSE, FALSE, NULLHOOK);
+ }
+ _nc_read_entry_source((FILE *) 0, tc, FALSE, FALSE, NULLHOOK);
#else
- /*
- * Here is what the 4.4BSD termcap(3) page prescribes:
- *
- * It will look in the environment for a TERMCAP variable. If found,
- * and the value does not begin with a slash, and the terminal type
- * name is the same as the environment string TERM, the TERMCAP string
- * is used instead of reading a termcap file. If it does begin with a
- * slash, the string is used as a path name of the termcap file to
- * search. If TERMCAP does not begin with a slash and name is
- * different from TERM, tgetent() searches the files $HOME/.termcap and
- * /usr/share/misc/termcap, in that order, unless the environment
- * variable TERMPATH exists, in which case it specifies a list of file
- * pathnames (separated by spaces or colons) to be searched instead.
- *
- * It goes on to state:
- *
- * Whenever multiple files are searched and a tc field occurs in the
- * requested entry, the entry it names must be found in the same file
- * or one of the succeeding files.
- *
- * However, this restriction is relaxed in ncurses; tc references to
- * previous files are permitted.
- *
- * This routine returns 1 if an entry is found, 0 if not found, and -1
- * if the database is not accessible.
- */
- FILE *fp;
- char *tc, *termpaths[MAXPATHS];
- int filecount = 0;
- bool use_buffer = FALSE;
- char tc_buf[1024];
- char pathbuf[PATH_MAX];
-
- termpaths[filecount] = 0;
- if ((tc = getenv("TERMCAP")) != 0)
- {
- if (is_pathname(tc)) /* interpret as a filename */
- {
- ADD_TC(tc, 0);
- }
- 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);
- }
- else if ((tc = getenv("TERMPATH")) != 0)
- {
- char *cp;
-
- for (cp = tc; *cp; cp++)
- {
- if (*cp == ':')
- *cp = '\0';
- else if (cp == tc || cp[-1] == '\0')
- {
- ADD_TC(cp, filecount);
- }
- }
+ /*
+ * Here is what the 4.4BSD termcap(3) page prescribes:
+ *
+ * It will look in the environment for a TERMCAP variable. If found, and
+ * the value does not begin with a slash, and the terminal type name is the
+ * same as the environment string TERM, the TERMCAP string is used instead
+ * of reading a termcap file. If it does begin with a slash, the string is
+ * used as a path name of the termcap file to search. If TERMCAP does not
+ * begin with a slash and name is different from TERM, tgetent() searches
+ * the files $HOME/.termcap and /usr/share/misc/termcap, in that order,
+ * unless the environment variable TERMPATH exists, in which case it
+ * specifies a list of file pathnames (separated by spaces or colons) to be
+ * searched instead.
+ *
+ * It goes on to state:
+ *
+ * Whenever multiple files are searched and a tc field occurs in the
+ * requested entry, the entry it names must be found in the same file or
+ * one of the succeeding files.
+ *
+ * However, this restriction is relaxed in ncurses; tc references to
+ * previous files are permitted.
+ *
+ * This routine returns 1 if an entry is found, 0 if not found, and -1 if
+ * the database is not accessible.
+ */
+ FILE *fp;
+ char *tc, *termpaths[MAXPATHS];
+ int filecount = 0;
+ bool use_buffer = FALSE;
+ char tc_buf[1024];
+ char pathbuf[PATH_MAX];
+
+ termpaths[filecount] = 0;
+ if ((tc = getenv("TERMCAP")) != 0) {
+ if (is_pathname(tc)) { /* interpret as a filename */
+ ADD_TC(tc, 0);
+ } 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);
+ } else if ((tc = getenv("TERMPATH")) != 0) {
+ char *cp;
+
+ for (cp = tc; *cp; cp++) {
+ if (*cp == ':')
+ *cp = '\0';
+ else if (cp == tc || cp[-1] == '\0') {
+ ADD_TC(cp, filecount);
}
+ }
}
- else /* normal case */
- {
- char envhome[PATH_MAX], *h;
+ } else { /* normal case */
+ char envhome[PATH_MAX], *h;
- filecount = 0;
+ filecount = 0;
- /*
- * Probably /etc/termcap is a symlink to /usr/share/misc/termcap.
- * Avoid reading the same file twice.
- */
- if (_nc_access("/etc/termcap", F_OK) == 0)
- ADD_TC("/etc/termcap", filecount);
- else
- ADD_TC("/usr/share/misc/termcap", filecount);
+ /*
+ * Probably /etc/termcap is a symlink to /usr/share/misc/termcap.
+ * Avoid reading the same file twice.
+ */
+ if (_nc_access("/etc/termcap", F_OK) == 0)
+ ADD_TC("/etc/termcap", filecount);
+ else
+ ADD_TC("/usr/share/misc/termcap", filecount);
#define PRIVATE_CAP "%s/.termcap"
- if ((h = getenv("HOME")) != NULL
- && (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);
- ADD_TC(pathbuf, filecount);
- }
+ if ((h = getenv("HOME")) != NULL
+ && (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);
+ ADD_TC(pathbuf, filecount);
}
+ }
- /* parse the sources */
- if (use_buffer)
- {
- _nc_set_source("TERMCAP");
+ /* parse the sources */
+ if (use_buffer) {
+ _nc_set_source("TERMCAP");
- /*
- * We don't suppress warning messages here. The presumption is
- * that since it's just a single entry, they won't be a pain.
- */
- _nc_read_entry_source((FILE *)0, tc_buf, FALSE, FALSE, NULLHOOK);
- } else {
- int i;
+ /*
+ * We don't suppress warning messages here. The presumption is
+ * that since it's just a single entry, they won't be a pain.
+ */
+ _nc_read_entry_source((FILE *) 0, tc_buf, FALSE, FALSE, NULLHOOK);
+ } else {
+ int i;
- for (i = 0; i < filecount; i++) {
+ for (i = 0; i < filecount; i++) {
- T(("Looking for %s in %s", tn, termpaths[i]));
- if ((fp = fopen(termpaths[i], "r")) != (FILE *)0)
- {
- _nc_set_source(termpaths[i]);
+ T(("Looking for %s in %s", tn, termpaths[i]));
+ if ((fp = fopen(termpaths[i], "r")) != (FILE *) 0) {
+ _nc_set_source(termpaths[i]);
- /*
- * Suppress warning messages. Otherwise you
- * get 400 lines of crap from archaic termcap
- * files as ncurses complains about all the
- * obsolete capabilities.
- */
- _nc_read_entry_source(fp, (char*)0, FALSE, TRUE, NULLHOOK);
+ /*
+ * Suppress warning messages. Otherwise you get 400 lines of
+ * crap from archaic termcap files as ncurses complains about
+ * all the obsolete capabilities.
+ */
+ _nc_read_entry_source(fp, (char *) 0, FALSE, TRUE, NULLHOOK);
- (void) fclose(fp);
- }
- }
+ (void) fclose(fp);
+ }
}
+ }
#endif /* USE_GETCAP */
- if (_nc_head == 0)
- return(ERR);
+ if (_nc_head == 0)
+ return (ERR);
- /* resolve all use references */
- _nc_resolve_uses();
+ /* resolve all use references */
+ _nc_resolve_uses(TRUE);
- /* find a terminal matching tn, if we can */
+ /* find a terminal matching tn, if we can */
#if USE_GETCAP_CACHE
- if (getcwd(cwd_buf, sizeof(cwd_buf)) != 0)
- {
- _nc_set_writedir((char *)0); /* note: this does a chdir */
+ if (getcwd(cwd_buf, sizeof(cwd_buf)) != 0) {
+ _nc_set_writedir((char *) 0); /* note: this does a chdir */
#endif
- for_entry_list(ep) {
- if (_nc_name_match(ep->tterm.term_names, tn, "|:"))
- {
- /*
- * Make a local copy of the terminal
- * capabilities. Free all entry storage except
- * the string table for the loaded type (which
- * we disconnected from the list by NULLing out
- * ep->tterm.str_table above).
- */
- *tp = ep->tterm;
- ep->tterm.str_table = (char *)0;
-
- /*
- * 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 be very fast.
- *
- * Disadvantage: After the first time a
- * termcap type is loaded by its user, editing
- * it in the /etc/termcap file, or in TERMCAP,
- * or in a local ~/.termcap, will be
- * ineffective unless the terminfo entry is
- * explicitly removed.
- */
+ for_entry_list(ep) {
+ if (_nc_name_match(ep->tterm.term_names, tn, "|:")) {
+ /*
+ * Make a local copy of the terminal capabilities. Free all
+ * entry storage except the string table for the loaded type
+ * (which we disconnected from the list by NULLing out
+ * ep->tterm.str_table above).
+ */
+ *tp = ep->tterm;
+ ep->tterm.str_table = (char *) 0;
+
+ /*
+ * 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
+ * be very fast.
+ *
+ * Disadvantage: After the first time a termcap type is loaded
+ * by its user, editing it in the /etc/termcap file, or in
+ * TERMCAP, or in a local ~/.termcap, will be ineffective
+ * unless the terminfo entry is explicitly removed.
+ */
#if USE_GETCAP_CACHE
- (void) _nc_write_entry(tp);
+ (void) _nc_write_entry(tp);
#endif
- found = TRUE;
- break;
- }
- }
-#if USE_GETCAP_CACHE
- chdir(cwd_buf);
+ found = TRUE;
+ break;
+ }
}
+#if USE_GETCAP_CACHE
+ chdir(cwd_buf);
+ }
#endif
- _nc_free_entries(_nc_head);
- return(found);
+ _nc_free_entries(_nc_head);
+ return (found);
}
#else
-extern void _nc_read_termcap(void);
- void _nc_read_termcap(void) { }
-#endif /* PURE_TERMINFO */
+extern void _nc_read_termcap(void);
+void
+_nc_read_termcap(void)
+{
+}
+#endif /* PURE_TERMINFO */
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
* write_entry.c -- write a terminfo structure onto the file system
*/
#if 0
#define TRACE_OUT(p) DEBUG(2, p)
#else
-#define TRACE_OUT(p) /*nothing*/
+#define TRACE_OUT(p) /*nothing */
#endif
-MODULE_ID("$Id: write_entry.c,v 1.47 1999/07/10 20:29:22 tom Exp $")
+MODULE_ID("$Id: write_entry.c,v 1.52 2000/03/11 12:23:42 tom Exp $")
static int total_written;
static int write_object(FILE *, TERMTYPE *);
-static void write_file(char *filename, TERMTYPE *tp)
+static void
+write_file(char *filename, TERMTYPE * tp)
{
- 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));
+ 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(fp, tp) == ERR) {
- _nc_syserr_abort("error writing %s/%s", _nc_tic_dir(0), filename);
- }
- fclose(fp);
+ if (write_object(fp, tp) == ERR) {
+ _nc_syserr_abort("error writing %s/%s", _nc_tic_dir(0), filename);
+ }
+ fclose(fp);
}
/*
*
* Make a directory if it doesn't exist.
*/
-static int make_directory(const char *path)
+static int
+make_directory(const char *path)
{
-int rc;
-struct stat statbuf;
-char fullpath[PATH_MAX];
-const char *destination = _nc_tic_dir(0);
-
- if (path == destination || *path == '/') {
- if (strlen(path) + 1 > sizeof(fullpath))
- return(-1);
- (void)strcpy(fullpath, path);
- } else {
- if (strlen(destination) + strlen(path) + 2 > sizeof(fullpath))
- return(-1);
- (void)sprintf(fullpath, "%s/%s", destination, path);
- }
+ int rc;
+ struct stat statbuf;
+ char fullpath[PATH_MAX];
+ const char *destination = _nc_tic_dir(0);
+
+ if (path == destination || *path == '/') {
+ if (strlen(path) + 1 > sizeof(fullpath))
+ return (-1);
+ (void) strcpy(fullpath, path);
+ } else {
+ if (strlen(destination) + strlen(path) + 2 > sizeof(fullpath))
+ return (-1);
+ (void) sprintf(fullpath, "%s/%s", destination, path);
+ }
- if ((rc = stat(path, &statbuf)) < 0) {
- rc = mkdir(path, 0777);
- } 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 */
- }
+ if ((rc = stat(path, &statbuf)) < 0) {
+ rc = mkdir(path, 0777);
+ } 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 */
}
- return rc;
+ }
+ return rc;
}
-void _nc_set_writedir(char *dir)
+void
+_nc_set_writedir(char *dir)
/* set the write directory for compiled entries */
{
const char *destination;
(void) _nc_tic_dir(getenv("TERMINFO"));
destination = _nc_tic_dir(0);
- if (make_directory(destination) < 0)
- {
- char *home = _nc_home_terminfo();
+ if (make_directory(destination) < 0) {
+ char *home = _nc_home_terminfo();
if (home != 0) {
destination = home;
if (make_directory(destination) < 0)
_nc_err_abort("%s: permission denied (errno %d)",
- destination, errno);
+ destination, errno);
}
}
* *once only* per run.
*/
if (chdir(_nc_tic_dir(destination)) < 0
- || getcwd(actual, sizeof(actual)) == 0)
+ || getcwd(actual, sizeof(actual)) == 0)
_nc_err_abort("%s: not a directory", destination);
_nc_keep_tic_dir(strdup(actual));
}
*
*/
-static void check_writeable(int code)
+static void
+check_writeable(int code)
{
-static const char dirnames[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
-static bool verified[sizeof(dirnames)];
+ static const char dirnames[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+ static bool verified[sizeof(dirnames)];
-char dir[2];
-char *s;
+ char dir[2];
+ char *s;
- if (code == 0 || (s = strchr(dirnames, code)) == 0)
- _nc_err_abort("Illegal terminfo subdirectory \"%c\"", code);
+ if (code == 0 || (s = strchr(dirnames, code)) == 0)
+ _nc_err_abort("Illegal terminfo subdirectory \"%c\"", code);
- if (verified[s-dirnames])
- return;
+ if (verified[s - dirnames])
+ return;
- dir[0] = code;
- dir[1] = '\0';
- if (make_directory(dir) < 0) {
- _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir);
- }
+ dir[0] = code;
+ dir[1] = '\0';
+ if (make_directory(dir) < 0) {
+ _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir);
+ }
- verified[s-dirnames] = TRUE;
+ verified[s - dirnames] = TRUE;
}
/*
* _nc_curr_line is properly set before the write_entry() call.
*/
-void _nc_write_entry(TERMTYPE *const tp)
+void
+_nc_write_entry(TERMTYPE * const tp)
{
-struct stat statbuf;
-char name_list[MAX_TERMINFO_LENGTH];
-char *first_name, *other_names;
-char *ptr;
-char filename[PATH_MAX];
-char linkname[PATH_MAX];
+ struct stat statbuf;
+ char name_list[MAX_TERMINFO_LENGTH];
+ char *first_name, *other_names;
+ char *ptr;
+ char filename[PATH_MAX];
+ char linkname[PATH_MAX];
#if USE_SYMLINKS
-char symlinkname[PATH_MAX];
+ char symlinkname[PATH_MAX];
#endif /* USE_SYMLINKS */
-static int call_count;
-static time_t start_time; /* time at start of writes */
+ static int call_count;
+ static time_t start_time; /* time at start of writes */
- if (call_count++ == 0) {
- start_time = 0;
- }
+ if (call_count++ == 0) {
+ start_time = 0;
+ }
- (void) strcpy(name_list, tp->term_names);
- DEBUG(7, ("Name list = '%s'", name_list));
+ (void) strcpy(name_list, tp->term_names);
+ DEBUG(7, ("Name list = '%s'", name_list));
- first_name = name_list;
+ first_name = name_list;
- ptr = &name_list[strlen(name_list) - 1];
- other_names = ptr + 1;
+ ptr = &name_list[strlen(name_list) - 1];
+ other_names = ptr + 1;
- while (ptr > name_list && *ptr != '|')
- ptr--;
+ while (ptr > name_list && *ptr != '|')
+ ptr--;
- if (ptr != name_list) {
- *ptr = '\0';
+ if (ptr != name_list) {
+ *ptr = '\0';
- for (ptr = name_list; *ptr != '\0' && *ptr != '|'; ptr++)
- continue;
+ for (ptr = name_list; *ptr != '\0' && *ptr != '|'; ptr++)
+ continue;
- if (*ptr == '\0')
- other_names = ptr;
- else {
- *ptr = '\0';
- other_names = ptr + 1;
- }
+ 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));
+ DEBUG(7, ("First name = '%s'", first_name));
+ DEBUG(7, ("Other names = '%s'", other_names));
- _nc_set_type(first_name);
+ _nc_set_type(first_name);
- if (strlen(first_name) > sizeof(filename)-3)
- _nc_warning("terminal name too long.");
+ if (strlen(first_name) > sizeof(filename) - 3)
+ _nc_warning("terminal name too long.");
- sprintf(filename, "%c/%s", first_name[0], first_name);
+ sprintf(filename, "%c/%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.");
+ /*
+ * 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++;
- check_writeable(first_name[0]);
- write_file(filename, tp);
+ if (*other_names != '\0')
+ *(other_names++) = '\0';
- 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);
- }
+ if (strlen(ptr) > sizeof(linkname) - 3) {
+ _nc_warning("terminal alias %s too long.", ptr);
+ continue;
}
- 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)-3) {
- _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, "%c/%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 (strchr(ptr, '/') != 0) {
+ _nc_warning("cannot link alias %s.", ptr);
+ continue;
+ }
+
+ check_writeable(ptr[0]);
+ sprintf(linkname, "%c/%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;
+ {
+ int code;
#if USE_SYMLINKS
- strcpy(symlinkname, "../");
- strncat(symlinkname, filename, sizeof(symlinkname) - 4);
- symlinkname[sizeof(symlinkname) - 1] = '\0';
+ strcpy(symlinkname, "../");
+ strncat(symlinkname, filename, sizeof(symlinkname) - 4);
+ symlinkname[sizeof(symlinkname) - 1] = '\0';
#endif /* USE_SYMLINKS */
#if HAVE_REMOVE
- code = remove(linkname);
+ code = remove(linkname);
#else
- code = unlink(linkname);
+ code = unlink(linkname);
#endif
- if (code != 0 && errno == ENOENT)
- code = 0;
+ if (code != 0 && errno == ENOENT)
+ code = 0;
#if USE_SYMLINKS
- if (symlink(symlinkname, linkname) < 0)
+ if (symlink(symlinkname, linkname) < 0)
#else
- if (link(filename, linkname) < 0)
+ 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)
- write_file(linkname, tp);
- else
- _nc_syserr_abort("can't link %s to %s", filename, linkname);
- }
- else
- {
- DEBUG(1, ("Linked %s", linkname));
- }
- }
+ {
+ /*
+ * 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)
+ write_file(linkname, tp);
+ else
+ _nc_syserr_abort("can't link %s to %s", filename, linkname);
+ } else {
+ DEBUG(1, ("Linked %s", linkname));
+ }
+ }
#else /* just make copies */
- write_file(linkname, tp);
+ write_file(linkname, tp);
#endif /* HAVE_LINK */
- }
+ }
}
-#undef LITTLE_ENDIAN /* BSD/OS defines this as a feature macro */
+#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] = LO(x), (p)[1] = HI(x)
#define WRITE_STRING(str) (fwrite(str, sizeof(char), strlen(str) + 1, fp) == strlen(str) + 1)
-static int compute_offsets(char **Strings, int strmax, short *offsets)
+static int
+compute_offsets(char **Strings, int strmax, short *offsets)
{
size_t nextfree = 0;
int i;
return nextfree;
}
-static void convert_shorts(unsigned char *buf, short *Numbers, int count)
+static void
+convert_shorts(unsigned char *buf, short *Numbers, int count)
{
int i;
for (i = 0; i < count; i++) {
- if (Numbers[i] == -1) { /* HI/LO won't work */
- buf[2*i] = buf[2*i + 1] = 0377;
- } else if (Numbers[i] == -2) { /* HI/LO won't work */
- buf[2*i] = 0376;
- buf[2*i + 1] = 0377;
+ 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]);
+ LITTLE_ENDIAN(buf + 2 * i, Numbers[i]);
TRACE_OUT(("put Numbers[%d]=%d", i, Numbers[i]));
}
}
#define even_boundary(value) \
((value) % 2 != 0 && fwrite(&zero, sizeof(char), 1, fp) != 1)
-static int write_object(FILE *fp, TERMTYPE *tp)
+static int
+write_object(FILE * fp, TERMTYPE * tp)
{
-char *namelist;
-size_t namelen, boolmax, nummax, strmax;
-char zero = '\0';
-size_t i;
-short nextfree;
-short offsets[MAX_ENTRY_SIZE/2];
-unsigned char buf[MAX_ENTRY_SIZE];
+ char *namelist;
+ size_t namelen, boolmax, nummax, strmax;
+ char zero = '\0';
+ size_t i;
+ short 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;
- namelist = tp->term_names;
- namelen = strlen(namelist) + 1;
+#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
- /*
- * BOOLWRITE, etc., are less than BOOLCOUNT because we store some
- * values internally.
- */
- boolmax = 0;
- for (i = 0; i < BOOLWRITE; i++) {
- if (tp->Booleans[i])
- boolmax = i+1;
- }
+ namelist = tp->term_names;
+ namelen = strlen(namelist) + 1;
- nummax = 0;
- for (i = 0; i < NUMWRITE; i++) {
- if (tp->Numbers[i] != ABSENT_NUMERIC)
- nummax = i+1;
- }
+ boolmax = 0;
+ for (i = 0; i < last_bool; i++) {
+ if (tp->Booleans[i] == TRUE)
+ boolmax = i + 1;
+ }
- strmax = 0;
- for (i = 0; i < STRWRITE; i++) {
- if (tp->Strings[i] != ABSENT_STRING)
- strmax = i+1;
- }
+ nummax = 0;
+ for (i = 0; i < last_num; i++) {
+ if (tp->Numbers[i] != ABSENT_NUMERIC)
+ nummax = i + 1;
+ }
- nextfree = compute_offsets(tp->Strings, strmax, offsets);
+ strmax = 0;
+ for (i = 0; i < last_str; i++) {
+ if (tp->Strings[i] != ABSENT_STRING)
+ strmax = i + 1;
+ }
- /* 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);
+ nextfree = compute_offsets(tp->Strings, strmax, offsets);
- /* write out the header */
- TRACE_OUT(("Header of %s @%ld", namelist, ftell(fp)));
- if (fwrite(buf, 12, 1, fp) != 1
- || fwrite(namelist, sizeof(char), namelen, fp) != namelen
- || fwrite(tp->Booleans, sizeof(char), boolmax, fp) != boolmax)
- return(ERR);
+ /* 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);
- if (even_boundary(namelen+boolmax))
- return(ERR);
+ /* write out the header */
+ TRACE_OUT(("Header of %s @%ld", namelist, ftell(fp)));
+ if (fwrite(buf, 12, 1, fp) != 1
+ || fwrite(namelist, sizeof(char), namelen, fp) != namelen)
+ return (ERR);
- TRACE_OUT(("Numerics begin at %04lx", ftell(fp)));
+ for (i = 0; i < boolmax; i++)
+ if (tp->Booleans[i] == TRUE)
+ buf[i] = TRUE;
+ else
+ buf[i] = FALSE;
+ if (fwrite(buf, sizeof(char), boolmax, fp) != boolmax)
+ return (ERR);
- /* the numerics */
- convert_shorts(buf, tp->Numbers, nummax);
- if (fwrite(buf, 2, nummax, fp) != nummax)
- return(ERR);
+ if (even_boundary(namelen + boolmax))
+ return (ERR);
- TRACE_OUT(("String offsets begin at %04lx", ftell(fp)));
+ TRACE_OUT(("Numerics begin at %04lx", ftell(fp)));
- /* the string offsets */
- convert_shorts(buf, offsets, strmax);
- if (fwrite(buf, 2, strmax, fp) != strmax)
- return(ERR);
+ /* the numerics */
+ convert_shorts(buf, tp->Numbers, nummax);
+ if (fwrite(buf, 2, nummax, fp) != nummax)
+ return (ERR);
- TRACE_OUT(("String table begins at %04lx", ftell(fp)));
+ TRACE_OUT(("String offsets begin at %04lx", ftell(fp)));
- /* the strings */
- for (i = 0; i < strmax; i++)
- if (VALID_STRING(tp->Strings[i]))
- if (!WRITE_STRING(tp->Strings[i]))
- return(ERR);
+ /* the string offsets */
+ convert_shorts(buf, offsets, strmax);
+ if (fwrite(buf, 2, strmax, fp) != strmax)
+ return (ERR);
+
+ TRACE_OUT(("String table begins at %04lx", ftell(fp)));
+
+ /* 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 (NUM_EXT_NAMES(tp)) {
- unsigned extcnt = 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));
- 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 @%ld", ftell(fp)));
- if (fwrite(buf, 10, 1, fp) != 1)
- return(ERR);
-
- TRACE_OUT(("WRITE %d booleans @%ld", tp->ext_Booleans, ftell(fp)));
- if (tp->ext_Booleans
- && fwrite(tp->Booleans + BOOLCOUNT, sizeof(char), tp->ext_Booleans, fp) != tp->ext_Booleans)
- return(ERR);
-
- if (even_boundary(tp->ext_Booleans))
- return(ERR);
-
- TRACE_OUT(("WRITE %d numbers @%ld", tp->ext_Numbers, ftell(fp)));
- if (tp->ext_Numbers) {
- convert_shorts(buf, tp->Numbers + NUMCOUNT, tp->ext_Numbers);
- if (fwrite(buf, 2, tp->ext_Numbers, fp) != tp->ext_Numbers)
- return(ERR);
- }
+ if (NUM_EXT_NAMES(tp)) {
+ unsigned extcnt = NUM_EXT_NAMES(tp);
- /*
- * Convert the offsets for the ext_Strings and ext_Names tables,
- * in that order.
- */
- convert_shorts(buf, offsets, strmax);
- TRACE_OUT(("WRITE offsets @%ld", ftell(fp)));
- if (fwrite(buf, 2, strmax, fp) != 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", i, _nc_visbuf(tp->Strings[i+STRCOUNT])));
- if (!WRITE_STRING(tp->Strings[i+STRCOUNT]))
- return(ERR);
- }
- }
+ if (even_boundary(nextfree))
+ return (ERR);
- /*
- * Write the extended names
- */
- for (i = 0; i < extcnt; i++) {
- TRACE_OUT(("WRITE ext_Names[%d]=%s", i, tp->ext_Names[i]));
- if (!WRITE_STRING(tp->ext_Names[i]))
- return(ERR);
+ nextfree = compute_offsets(tp->Strings + STRCOUNT, tp->ext_Strings, offsets);
+ TRACE_OUT(("after extended string capabilities, nextfree=%d", nextfree));
+ 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 @%ld", ftell(fp)));
+ if (fwrite(buf, 10, 1, fp) != 1)
+ return (ERR);
+
+ TRACE_OUT(("WRITE %d booleans @%ld", tp->ext_Booleans, ftell(fp)));
+ if (tp->ext_Booleans
+ && fwrite(tp->Booleans + BOOLCOUNT, sizeof(char),
+ tp->ext_Booleans, fp) != tp->ext_Booleans)
+ return (ERR);
+
+ if (even_boundary(tp->ext_Booleans))
+ return (ERR);
+
+ TRACE_OUT(("WRITE %d numbers @%ld", tp->ext_Numbers, ftell(fp)));
+ if (tp->ext_Numbers) {
+ convert_shorts(buf, tp->Numbers + NUMCOUNT, tp->ext_Numbers);
+ if (fwrite(buf, 2, tp->ext_Numbers, fp) != 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 @%ld", ftell(fp)));
+ if (fwrite(buf, 2, strmax, fp) != 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", 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", i, tp->ext_Names[i]));
+ if (!WRITE_STRING(tp->ext_Names[i]))
+ return (ERR);
}
+
+ }
#endif /* NCURSES_XNAMES */
- total_written++;
- return(OK);
+ total_written++;
+ return (OK);
}
/*
* Returns the total number of entries written by this process
*/
-int _nc_tic_written(void)
+int
+_nc_tic_written(void)
{
- return total_written;
+ return total_written;
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
#include <tic.h>
-MODULE_ID("$Id: lib_trace.c,v 1.30 1998/10/03 23:41:42 tom Exp $")
-
#include <ctype.h>
-#if HAVE_FCNTL_H
-#include <fcntl.h>
-#endif
+
+MODULE_ID("$Id: lib_trace.c,v 1.34 2000/04/01 20:25:47 tom Exp $")
unsigned _nc_tracing = 0; /* always define this */
#ifdef TRACE
const char *_nc_tputs_trace = "";
-long _nc_outchars;
+long _nc_outchars = 0;
-static FILE * tracefp; /* default to writing to stderr */
-#endif
+static FILE *tracefp; /* default to writing to stderr */
-void trace(const unsigned int tracelevel GCC_UNUSED)
+void
+trace(const unsigned int tracelevel GCC_UNUSED)
{
-#ifdef TRACE
-static bool been_here = FALSE;
-static char my_name[] = "trace";
-
- _nc_tracing = tracelevel;
- if (! been_here && tracelevel) {
- been_here = TRUE;
-
- if (_nc_access(my_name, W_OK) < 0
- || (tracefp = fopen(my_name, "w")) == 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)",
- NCURSES_VERSION, NCURSES_VERSION_PATCH);
+ static bool been_here = FALSE;
+ static char my_name[] = "trace";
+
+ _nc_tracing = tracelevel;
+ if (!been_here && tracelevel) {
+ been_here = TRUE;
+
+ if (_nc_access(my_name, W_OK) < 0
+ || (tracefp = fopen(my_name, "w")) == 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)",
+ NCURSES_VERSION, NCURSES_VERSION_PATCH);
+ }
}
+#endif
-const char *_nc_visbuf2(int bufnum, const char *buf)
+const char *
+_nc_visbuf2(int bufnum, const char *buf)
/* visibilize a given string */
{
-char *vbuf;
-char *tp;
-int c;
-
- if (buf == 0)
- return("(null)");
- if (buf == CANCELLED_STRING)
- return("(cancelled)");
-
- tp = vbuf = _nc_trace_buf(bufnum, (strlen(buf) * 4) + 5);
- *tp++ = '"';
- while ((c = *buf++) != '\0') {
- if (c == '"') {
- *tp++ = '\\'; *tp++ = '"';
- } else if (is7bits(c) && (isgraph(c) || c == ' ')) {
- *tp++ = c;
- } else if (c == '\n') {
- *tp++ = '\\'; *tp++ = 'n';
- } else if (c == '\r') {
- *tp++ = '\\'; *tp++ = 'r';
- } else if (c == '\b') {
- *tp++ = '\\'; *tp++ = 'b';
- } else if (c == '\033') {
- *tp++ = '\\'; *tp++ = 'e';
- } else if (is7bits(c) && iscntrl(c)) {
- *tp++ = '\\'; *tp++ = '^'; *tp++ = '@' + c;
- } else {
- sprintf(tp, "\\%03o", c & 0xff);
- tp += strlen(tp);
- }
+ char *vbuf;
+ char *tp;
+ int c;
+
+ if (buf == 0)
+ return ("(null)");
+ if (buf == CANCELLED_STRING)
+ return ("(cancelled)");
+
+#ifdef TRACE
+ tp = vbuf = _nc_trace_buf(bufnum, (strlen(buf) * 4) + 5);
+#else
+ {
+ static char *mybuf[2];
+ mybuf[bufnum] = _nc_doalloc(mybuf[bufnum], (strlen(buf) * 4) + 5);
+ tp = vbuf = mybuf[bufnum];
+ }
+#endif
+ *tp++ = '"';
+ while ((c = *buf++) != '\0') {
+ if (c == '"') {
+ *tp++ = '\\';
+ *tp++ = '"';
+ } else if (is7bits(c) && (isgraph(c) || c == ' ')) {
+ *tp++ = c;
+ } else if (c == '\n') {
+ *tp++ = '\\';
+ *tp++ = 'n';
+ } else if (c == '\r') {
+ *tp++ = '\\';
+ *tp++ = 'r';
+ } else if (c == '\b') {
+ *tp++ = '\\';
+ *tp++ = 'b';
+ } else if (c == '\033') {
+ *tp++ = '\\';
+ *tp++ = 'e';
+ } else if (is7bits(c) && iscntrl(c)) {
+ *tp++ = '\\';
+ *tp++ = '^';
+ *tp++ = '@' + c;
+ } else {
+ sprintf(tp, "\\%03o", c & 0xff);
+ tp += strlen(tp);
}
- *tp++ = '"';
- *tp++ = '\0';
- return(vbuf);
+ }
+ *tp++ = '"';
+ *tp++ = '\0';
+ return (vbuf);
}
-const char *_nc_visbuf(const char *buf)
+const char *
+_nc_visbuf(const char *buf)
{
- return _nc_visbuf2(0, buf);
+ return _nc_visbuf2(0, buf);
}
#ifdef TRACE
void
-_tracef(const char *fmt, ...)
+_tracef(const char *fmt,...)
{
-static const char Called[] = T_CALLED("");
-static const char Return[] = T_RETURN("");
-static int level;
-va_list ap;
-bool before = FALSE;
-bool after = FALSE;
-int doit = _nc_tracing;
-int save_err = errno;
-
- if (strlen(fmt) >= sizeof(Called) - 1) {
- if (!strncmp(fmt, Called, sizeof(Called)-1)) {
- before = TRUE;
- level++;
- } else if (!strncmp(fmt, Return, sizeof(Return)-1)) {
- after = TRUE;
- }
- if (before || after) {
- if ((level <= 1)
- || (doit & TRACE_ICALLS) != 0)
- doit &= (TRACE_CALLS|TRACE_CCALLS);
- else
- doit = 0;
- }
+ static const char Called[] = T_CALLED("");
+ static const char Return[] = T_RETURN("");
+ static int level;
+ va_list ap;
+ bool before = FALSE;
+ bool after = FALSE;
+ int doit = _nc_tracing;
+ int save_err = errno;
+
+ if (strlen(fmt) >= sizeof(Called) - 1) {
+ if (!strncmp(fmt, Called, sizeof(Called) - 1)) {
+ before = TRUE;
+ level++;
+ } else if (!strncmp(fmt, Return, sizeof(Return) - 1)) {
+ after = TRUE;
}
-
- if (doit != 0) {
- if (tracefp == 0)
- tracefp = stderr;
- if (before || after) {
- int n;
- for (n = 1; n < level; n++)
- fputs("+ ", tracefp);
- }
- va_start(ap, fmt);
- vfprintf(tracefp, fmt, ap);
- fputc('\n', tracefp);
- va_end(ap);
- fflush(tracefp);
+ if (before || after) {
+ if ((level <= 1)
+ || (doit & TRACE_ICALLS) != 0)
+ doit &= (TRACE_CALLS | TRACE_CCALLS);
+ else
+ doit = 0;
}
-
- if (after && level)
- level--;
- errno = save_err;
+ }
+
+ if (doit != 0) {
+ if (tracefp == 0)
+ tracefp = stderr;
+ if (before || after) {
+ int n;
+ for (n = 1; n < level; n++)
+ fputs("+ ", tracefp);
+ }
+ va_start(ap, fmt);
+ vfprintf(tracefp, fmt, ap);
+ fputc('\n', tracefp);
+ va_end(ap);
+ fflush(tracefp);
+ }
+
+ if (after && level)
+ level--;
+ errno = save_err;
}
/* Trace 'int' return-values */
-int _nc_retrace_int(int code)
+int
+_nc_retrace_int(int code)
{
- T((T_RETURN("%d"), code));
- return code;
+ T((T_RETURN("%d"), code));
+ return code;
}
/* Trace 'char*' return-values */
-char * _nc_retrace_ptr(char * code)
+char *
+_nc_retrace_ptr(char *code)
{
- T((T_RETURN("%s"), _nc_visbuf(code)));
- return code;
+ T((T_RETURN("%s"), _nc_visbuf(code)));
+ return code;
}
/* Trace 'WINDOW *' return-values */
-WINDOW *_nc_retrace_win(WINDOW *code)
+WINDOW *
+_nc_retrace_win(WINDOW *code)
{
- T((T_RETURN("%p"), code));
- return code;
+ T((T_RETURN("%p"), code));
+ return code;
}
#endif /* TRACE */
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
****************************************************************************/
#include <curses.priv.h>
-#include <term.h> /* cur_term */
+#include <term.h> /* cur_term */
-MODULE_ID("$Id: lib_tracebits.c,v 1.3 1999/08/21 21:43:48 tom Exp $")
+MODULE_ID("$Id: lib_tracebits.c,v 1.5 2000/02/13 01:01:55 tom Exp $")
#if defined(SVR4_TERMIO) && !defined(_POSIX_SOURCE)
#define _POSIX_SOURCE
#endif
#if HAVE_SYS_TERMIO_H
-#include <sys/termio.h> /* needed for ISC */
+#include <sys/termio.h> /* needed for ISC */
#endif
#ifdef __EMX__
#include <io.h>
-#include <fcntl.h>
#endif
/* may be undefined if we're using termio.h */
#ifdef TRACE
-typedef struct {unsigned int val; const char *name;} BITNAMES;
+typedef struct {
+ unsigned int val;
+ const char *name;
+} BITNAMES;
-static void lookup_bits(char *buf, const BITNAMES *table, const char *label, unsigned int val)
+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,"} ");
+ 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, "} ");
}
-char *_nc_tracebits(void)
+char *
+_nc_tracebits(void)
/* describe the state of the terminal control bits exactly */
{
-char *buf;
-static const BITNAMES
+ char *buf;
#ifdef TERMIOS
-iflags[] =
+ 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}
+ {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[] =
+ }, oflags[] =
{
- {OPOST, "OPOST"},
- {0, NULL}
+ {OPOST, "OPOST"},
+ {0, NULL}
#define ALLOUT (OPOST)
- },
-cflags[] =
+ }, cflags[] =
{
- {CLOCAL, "CLOCAL"},
- {CREAD, "CREAD"},
- {CSTOPB, "CSTOPB"},
+ {CLOCAL, "CLOCAL"},
+ {CREAD, "CREAD"},
+ {CSTOPB, "CSTOPB"},
#if !defined(CS5) || !defined(CS8)
- {CSIZE, "CSIZE"},
+ {CSIZE, "CSIZE"},
#endif
- {HUPCL, "HUPCL"},
- {PARENB, "PARENB"},
- {PARODD|PARENB, "PARODD"}, /* concession to readability */
- {0, NULL}
+ {HUPCL, "HUPCL"},
+ {PARENB, "PARENB"},
+ {PARODD | PARENB, "PARODD"}, /* concession to readability */
+ {0, NULL}
#define ALLCTRL (CLOCAL|CREAD|CSIZE|CSTOPB|HUPCL|PARENB|PARODD)
- },
-lflags[] =
+ }, 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}
+ {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 + sizeof(iflags) +
+ 8 + sizeof(oflags) +
+ 8 + sizeof(cflags) +
+ 8 + sizeof(lflags) +
8);
if (cur_term->Nttyb.c_iflag & ALLIN)
#if defined(CS5) && defined(CS8)
switch (cur_term->Nttyb.c_cflag & CSIZE) {
#if defined(CS5) && (CS5 != 0)
- case CS5: strcat(buf, "CS5 "); break;
+ case CS5:
+ strcat(buf, "CS5 ");
+ break;
#endif
#if defined(CS6) && (CS6 != 0)
- case CS6: strcat(buf, "CS6 "); break;
+ case CS6:
+ strcat(buf, "CS6 ");
+ break;
#endif
#if defined(CS7) && (CS7 != 0)
- case CS7: strcat(buf, "CS7 "); break;
+ case CS7:
+ strcat(buf, "CS7 ");
+ break;
#endif
#if defined(CS8) && (CS8 != 0)
- case CS8: strcat(buf, "CS8 "); break;
+ case CS8:
+ strcat(buf, "CS8 ");
+ break;
#endif
- default: strcat(buf, "CSIZE? "); break;
+ default:
+ strcat(buf, "CSIZE? ");
+ break;
}
#endif
#define TANDEM 0
#endif
-cflags[] =
+ 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}
+ {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));
+ 8 + sizeof(cflags));
- if (cur_term->Nttyb.sg_flags & ALLCTRL)
- {
+ if (cur_term->Nttyb.sg_flags & ALLCTRL) {
lookup_bits(buf, cflags, "cflags", cur_term->Nttyb.sg_flags);
}
-
#endif
- return(buf);
+ return (buf);
}
#else
-char *_nc_tracebits(void) { static char tmp[] = ""; return tmp; }
+char *
+_nc_tracebits(void)
+{
+ static char tmp[] = "";
+ return tmp;
+}
#endif /* TRACE */
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
-
/*
* lib_tracechr.c - Tracing/Debugging routines
*/
-
-#ifndef TRACE
-#define TRACE /* turn on internal defs for this module */
-#endif
-
#include <curses.priv.h>
-#include <ctype.h>
+MODULE_ID("$Id: lib_tracechr.c,v 1.2 2000/04/01 20:17:26 tom Exp $")
#ifdef TRACE
char *_tracechar(const unsigned char ch)
{
static char crep[20];
- /*
- * We can show the actual character if it's either an ordinary printable
- * or one of the high-half characters.
- */
- if (isprint(ch) || (ch & 0x80))
- {
- crep[0] = '\'';
- crep[1] = ch; /* necessary; printf tries too hard on metachars */
- (void) sprintf(crep + 2, "' = 0x%02x", (unsigned)ch);
- }
- else
- (void) sprintf(crep, "0x%02x", (unsigned)ch);
+ (void) sprintf(crep, "'%s' = 0x%02x", unctrl(ch), (unsigned)ch);
return(crep);
}
#else
#include <curses.priv.h>
#include <term.h> /* for back_color_erase */
-MODULE_ID("$Id: hashmap.c,v 1.33 1999/03/18 02:09:45 Alexander.V.Lukyanov Exp $")
+MODULE_ID("$Id: hashmap.c,v 1.34 1999/11/28 00:10:57 tom Exp $")
#ifdef HASHDEBUG
if (!hashtab)
{
if (oldhash)
+ {
FreeAndNull(oldhash);
+ }
lines_alloc = 0;
return;
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
** lib_mvcur.c
**
#include <term.h>
#include <ctype.h>
-MODULE_ID("$Id: lib_mvcur.c,v 1.60 1999/10/03 01:08:27 Alexander.V.Lukyanov Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.67 2000/06/24 21:13:51 tom Exp $")
#define STRLEN(s) (s != 0) ? strlen(s) : 0
+#define CURRENT_ROW SP->_cursrow /* phys cursor row */
+#define CURRENT_COLUMN SP->_curscol /* phys cursor column */
#define CURRENT_ATTR SP->_current_attr /* current phys attribute */
-#define CURRENT_ROW SP->_cursrow /* phys cursor row */
-#define CURRENT_COLUMN SP->_curscol /* phys cursor column */
#define REAL_ATTR SP->_current_attr /* phys current attribute */
#define WANT_CHAR(y, x) SP->_newscr->_line[y].text[x] /* desired state */
#define BAUDRATE cur_term->_baudrate /* bits per second */
static int normalized_cost(const char *const cap, int affcnt);
#if !HAVE_STRSTR
-char * _nc_strstr(const char *haystack, const char *needle)
+char *
+_nc_strstr(const char *haystack, const char *needle)
{
- size_t len1 = strlen(haystack);
- size_t len2 = strlen(needle);
- char *result = 0;
-
- while ((len1 != 0) && (len1-- >= len2)) {
- if (!strncmp(haystack, needle, len2)) {
- result = haystack;
- break;
- }
- haystack++;
+ size_t len1 = strlen(haystack);
+ size_t len2 = strlen(needle);
+ char *result = 0;
+
+ while ((len1 != 0) && (len1-- >= len2)) {
+ if (!strncmp(haystack, needle, len2)) {
+ result = haystack;
+ break;
}
- return result;
+ haystack++;
+ }
+ return result;
}
#endif
static int
trace_cost_of(const char *capname, const char *cap, int affcnt)
{
- int result = _nc_msec_cost(cap,affcnt);
- TR(TRACE_CHARPUT|TRACE_MOVE, ("CostOf %s %d", capname, result));
- return result;
+ int result = _nc_msec_cost(cap, affcnt);
+ TR(TRACE_CHARPUT | TRACE_MOVE,
+ ("CostOf %s %d %s", capname, result, _nc_visbuf(cap)));
+ return result;
}
#define CostOf(cap,affcnt) trace_cost_of(#cap,cap,affcnt);
static int
trace_normalized_cost(const char *capname, const char *cap, int affcnt)
{
- int result = normalized_cost(cap,affcnt);
- TR(TRACE_CHARPUT|TRACE_MOVE, ("NormalizedCost %s %d", capname, result));
- return result;
+ int result = normalized_cost(cap, affcnt);
+ TR(TRACE_CHARPUT | TRACE_MOVE,
+ ("NormalizedCost %s %d %s", capname, result, _nc_visbuf(cap)));
+ return result;
}
#define NormalizedCost(cap,affcnt) trace_normalized_cost(#cap,cap,affcnt);
#endif
-int _nc_msec_cost(const char *const cap, int affcnt)
+int
+_nc_msec_cost(const char *const cap, int affcnt)
/* compute the cost of a given operation */
{
if (cap == 0)
- return(INFINITY);
- else
- {
- const char *cp;
- float cum_cost = 0;
+ return (INFINITY);
+ else {
+ const char *cp;
+ float cum_cost = 0;
- for (cp = cap; *cp; cp++)
- {
+ for (cp = cap; *cp; cp++) {
/* extract padding, either mandatory or required */
- if (cp[0] == '$' && cp[1] == '<' && strchr(cp, '>'))
- {
- float number = 0;
+ if (cp[0] == '$' && cp[1] == '<' && strchr(cp, '>')) {
+ float number = 0;
- for (cp += 2; *cp != '>'; cp++)
- {
+ for (cp += 2; *cp != '>'; cp++) {
if (isdigit(*cp))
number = number * 10 + (*cp - '0');
else if (*cp == '*')
number += (*cp - '0') / 10.0;
}
- cum_cost += number * 10;
- }
- else
+#ifdef NCURSES_NO_PADDING
+ if (!(SP->_no_padding))
+#endif
+ cum_cost += number * 10;
+ } else
cum_cost += SP->_char_padding;
}
- return((int)cum_cost);
+ return ((int) cum_cost);
}
}
-static int normalized_cost(const char *const cap, int affcnt)
+static int
+normalized_cost(const char *const cap, int affcnt)
/* compute the effective character-count for an operation (round up) */
{
- int cost = _nc_msec_cost(cap, affcnt);
- if (cost != INFINITY)
- cost = (cost + SP->_char_padding - 1) / SP->_char_padding;
- return cost;
+ int cost = _nc_msec_cost(cap, affcnt);
+ if (cost != INFINITY)
+ cost = (cost + SP->_char_padding - 1) / SP->_char_padding;
+ return cost;
}
-static void reset_scroll_region(void)
+static void
+reset_scroll_region(void)
/* Set the scroll-region to a known state (the default) */
{
- if (change_scroll_region)
- {
+ if (change_scroll_region) {
TPUTS_TRACE("change_scroll_region");
putp(tparm(change_scroll_region, 0, screen_lines - 1));
}
}
-void _nc_mvcur_resume(void)
+void
+_nc_mvcur_resume(void)
/* what to do at initialization time and after each shellout */
{
/* initialize screen for cursor access */
- if (enter_ca_mode)
- {
+ if (enter_ca_mode) {
TPUTS_TRACE("enter_ca_mode");
putp(enter_ca_mode);
}
SP->_cursrow = SP->_curscol = -1;
/* restore cursor shape */
- if (SP->_cursor != -1)
- {
+ if (SP->_cursor != -1) {
int cursor = SP->_cursor;
SP->_cursor = -1;
- curs_set (cursor);
+ curs_set(cursor);
}
}
-void _nc_mvcur_init(void)
+void
+_nc_mvcur_init(void)
/* initialize the cost structure */
{
/*
SP->_char_padding = (9 * 1000 * 10) / (BAUDRATE > 0 ? BAUDRATE : 9600);
if (SP->_char_padding <= 0)
SP->_char_padding = 1; /* must be nonzero */
- TR(TRACE_CHARPUT|TRACE_MOVE, ("char_padding %d msecs", SP->_char_padding));
+ TR(TRACE_CHARPUT | TRACE_MOVE, ("char_padding %d msecs", SP->_char_padding));
/* non-parameterized local-motion strings */
- SP->_cr_cost = CostOf(carriage_return, 0);
+ SP->_cr_cost = CostOf(carriage_return, 0);
SP->_home_cost = CostOf(cursor_home, 0);
- SP->_ll_cost = CostOf(cursor_to_ll, 0);
+ SP->_ll_cost = CostOf(cursor_to_ll, 0);
#if USE_HARD_TABS
- SP->_ht_cost = CostOf(tab, 0);
- SP->_cbt_cost = CostOf(back_tab, 0);
+ SP->_ht_cost = CostOf(tab, 0);
+ SP->_cbt_cost = CostOf(back_tab, 0);
#endif /* USE_HARD_TABS */
SP->_cub1_cost = CostOf(cursor_left, 0);
SP->_cuf1_cost = CostOf(cursor_right, 0);
*
* (1) They never have * padding. In the entire master terminfo database
* as of March 1995, only the obsolete Zenith Z-100 pc violates this.
- * (Proportional padding is found mainly in insert, delete and scroll
+ * (Proportional padding is found mainly in insert, delete and scroll
* capabilities).
*
* (2) The average case of cup has two two-digit parameters. Strictly,
* All these averages depend on the assumption that all parameter values
* are equally probable.
*/
- SP->_cup_cost = CostOf(tparm(SP->_address_cursor, 23, 23), 1);
- SP->_cub_cost = CostOf(tparm(parm_left_cursor, 23), 1);
- SP->_cuf_cost = CostOf(tparm(parm_right_cursor, 23), 1);
- SP->_cud_cost = CostOf(tparm(parm_down_cursor, 23), 1);
- SP->_cuu_cost = CostOf(tparm(parm_up_cursor, 23), 1);
- SP->_hpa_cost = CostOf(tparm(column_address, 23), 1);
- SP->_vpa_cost = CostOf(tparm(row_address, 23), 1);
+ SP->_cup_cost = CostOf(tparm(SP->_address_cursor, 23, 23), 1);
+ SP->_cub_cost = CostOf(tparm(parm_left_cursor, 23), 1);
+ SP->_cuf_cost = CostOf(tparm(parm_right_cursor, 23), 1);
+ SP->_cud_cost = CostOf(tparm(parm_down_cursor, 23), 1);
+ SP->_cuu_cost = CostOf(tparm(parm_up_cursor, 23), 1);
+ SP->_hpa_cost = CostOf(tparm(column_address, 23), 1);
+ SP->_vpa_cost = CostOf(tparm(row_address, 23), 1);
/* non-parameterized screen-update strings */
- SP->_ed_cost = NormalizedCost(clr_eos, 1);
- SP->_el_cost = NormalizedCost(clr_eol, 1);
- SP->_el1_cost = NormalizedCost(clr_bol, 1);
+ SP->_ed_cost = NormalizedCost(clr_eos, 1);
+ SP->_el_cost = NormalizedCost(clr_eol, 1);
+ SP->_el1_cost = NormalizedCost(clr_bol, 1);
SP->_dch1_cost = NormalizedCost(delete_character, 1);
SP->_ich1_cost = NormalizedCost(insert_character, 1);
/* parameterized screen-update strings */
- SP->_dch_cost = NormalizedCost(tparm(parm_dch, 23), 1);
- SP->_ich_cost = NormalizedCost(tparm(parm_ich, 23), 1);
- SP->_ech_cost = NormalizedCost(tparm(erase_chars, 23), 1);
- SP->_rep_cost = NormalizedCost(tparm(repeat_char, ' ', 23), 1);
+ SP->_dch_cost = NormalizedCost(tparm(parm_dch, 23), 1);
+ SP->_ich_cost = NormalizedCost(tparm(parm_ich, 23), 1);
+ SP->_ech_cost = NormalizedCost(tparm(erase_chars, 23), 1);
+ SP->_rep_cost = NormalizedCost(tparm(repeat_char, ' ', 23), 1);
SP->_cup_ch_cost = NormalizedCost(tparm(SP->_address_cursor, 23, 23), 1);
SP->_hpa_ch_cost = NormalizedCost(tparm(column_address, 23), 1);
+ SP->_cuf_ch_cost = NormalizedCost(tparm(parm_right_cursor, 23), 1);
+ SP->_inline_cost = min(SP->_cup_ch_cost,
+ min(SP->_hpa_ch_cost,
+ SP->_cuf_ch_cost));
/* pre-compute some capability lengths */
SP->_carriage_return_length = STRLEN(carriage_return);
- SP->_cursor_home_length = STRLEN(cursor_home);
- SP->_cursor_to_ll_length = STRLEN(cursor_to_ll);
+ SP->_cursor_home_length = STRLEN(cursor_home);
+ SP->_cursor_to_ll_length = STRLEN(cursor_to_ll);
/*
* If save_cursor is used within enter_ca_mode, we should not use it for
* feature.
*/
if (save_cursor != 0
- && enter_ca_mode != 0
- && strstr(enter_ca_mode, save_cursor) != 0) {
+ && enter_ca_mode != 0
+ && strstr(enter_ca_mode, save_cursor) != 0) {
T(("...suppressed sc/rc capability due to conflict with smcup/rmcup"));
save_cursor = 0;
restore_cursor = 0;
_nc_mvcur_resume();
}
-void _nc_mvcur_wrap(void)
+void
+_nc_mvcur_wrap(void)
/* wrap up cursor-addressing mode */
{
/* leave cursor at screen bottom */
if (SP->_cursor != -1)
curs_set(1);
- if (exit_ca_mode)
- {
+ if (exit_ca_mode) {
TPUTS_TRACE("exit_ca_mode");
putp(exit_ca_mode);
}
* Perform repeated-append, returning cost
*/
static inline int
-repeated_append (int total, int num, int repeat, char *dst, const char *src)
+repeated_append(int total, int num, int repeat, char *dst, const char *src)
{
- register size_t src_len = strlen(src);
- register size_t dst_len = STRLEN(dst);
-
- if ((dst_len + repeat * src_len) < OPT_SIZE-1) {
- total += (num * repeat);
- if (dst) {
- dst += dst_len;
- while (repeat-- > 0) {
- (void) strcpy(dst, src);
- dst += src_len;
- }
- }
- } else {
- total = INFINITY;
+ register size_t src_len = strlen(src);
+ register size_t dst_len = STRLEN(dst);
+
+ if ((dst_len + repeat * src_len) < OPT_SIZE - 1) {
+ total += (num * repeat);
+ if (dst) {
+ dst += dst_len;
+ while (repeat-- > 0) {
+ (void) strcpy(dst, src);
+ dst += src_len;
+ }
}
- return total;
+ } else {
+ total = INFINITY;
+ }
+ return total;
}
#ifndef NO_OPTIMIZE
/* Note: we'd like to inline this for speed, but GNU C barfs on the attempt. */
static int
-relative_move(char *result, int from_y,int from_x,int to_y,int to_x, bool ovw)
+relative_move(char *result, int from_y, int from_x, int to_y, int to_x, bool ovw)
/* move via local motions (cuu/cuu1/cud/cud1/cub1/cub/cuf1/cuf/vpa/hpa) */
{
- int n, vcost = 0, hcost = 0;
+ int n, vcost = 0, hcost = 0;
if (result)
result[0] = '\0';
- if (to_y != from_y)
- {
+ if (to_y != from_y) {
vcost = INFINITY;
- if (row_address)
- {
+ if (row_address) {
if (result)
(void) strcpy(result, tparm(row_address, to_y));
vcost = SP->_vpa_cost;
}
- if (to_y > from_y)
- {
+ if (to_y > from_y) {
n = (to_y - from_y);
- if (parm_down_cursor && SP->_cud_cost < vcost)
- {
+ if (parm_down_cursor && SP->_cud_cost < vcost) {
if (result)
(void) strcpy(result, tparm(parm_down_cursor, n));
vcost = SP->_cud_cost;
}
- if (cursor_down && (n * SP->_cud1_cost < vcost))
- {
+ if (cursor_down && (n * SP->_cud1_cost < vcost)) {
if (result)
result[0] = '\0';
vcost = repeated_append(0, SP->_cud1_cost, n, result, cursor_down);
}
- }
- else /* (to_y < from_y) */
- {
+ } else { /* (to_y < from_y) */
n = (from_y - to_y);
- if (parm_up_cursor && SP->_cup_cost < vcost)
- {
+ if (parm_up_cursor && SP->_cup_cost < vcost) {
if (result)
(void) strcpy(result, tparm(parm_up_cursor, n));
vcost = SP->_cup_cost;
}
- if (cursor_up && (n * SP->_cuu1_cost < vcost))
- {
+ if (cursor_up && (n * SP->_cuu1_cost < vcost)) {
if (result)
result[0] = '\0';
vcost = repeated_append(0, SP->_cuu1_cost, n, result, cursor_up);
}
if (vcost == INFINITY)
- return(INFINITY);
+ return (INFINITY);
}
if (result)
result += strlen(result);
- if (to_x != from_x)
- {
- char str[OPT_SIZE];
+ if (to_x != from_x) {
+ char str[OPT_SIZE];
hcost = INFINITY;
- if (column_address)
- {
+ if (column_address) {
if (result)
(void) strcpy(result, tparm(column_address, to_x));
hcost = SP->_hpa_cost;
}
- if (to_x > from_x)
- {
+ if (to_x > from_x) {
n = to_x - from_x;
- if (parm_right_cursor && SP->_cuf_cost < hcost)
- {
+ if (parm_right_cursor && SP->_cuf_cost < hcost) {
if (result)
(void) strcpy(result, tparm(parm_right_cursor, n));
hcost = SP->_cuf_cost;
}
- if (cursor_right)
- {
- int lhcost = 0;
+ if (cursor_right) {
+ int lhcost = 0;
str[0] = '\0';
#if USE_HARD_TABS
/* use hard tabs, if we have them, to do as much as possible */
- if (init_tabs > 0 && tab)
- {
- int nxt, fr;
+ if (init_tabs > 0 && tab) {
+ int nxt, fr;
- for (fr = from_x; (nxt = NEXTTAB(fr)) <= to_x; fr = nxt)
- {
- lhcost = repeated_append(lhcost, SP->_ht_cost, 1, str, tab);
+ for (fr = from_x; (nxt = NEXTTAB(fr)) <= to_x; fr = nxt) {
+ lhcost = repeated_append(lhcost, SP->_ht_cost, 1,
+ str, tab);
if (lhcost == INFINITY)
- break;
+ break;
}
n = to_x - fr;
* screen.
*/
if (ovw
- && n > 0
- && vcost == 0
- && str[0] == '\0'
- && isdigit(TextOf(WANT_CHAR(to_y, from_x))))
- ovw = FALSE;
+ && n > 0
+ && vcost == 0
+ && str[0] == '\0'
+ && isdigit(TextOf(WANT_CHAR(to_y, from_x))))
+ ovw = FALSE;
#endif
/*
* If we have no attribute changes, overwrite is cheaper.
* and the time the structure WANT_CHAR would access has been
* updated.
*/
- if (ovw)
- {
- int i;
+ if (ovw) {
+ int i;
for (i = 0; i < n; i++)
- if ((WANT_CHAR(to_y, from_x + i) & A_ATTRIBUTES) != CURRENT_ATTR)
- {
+ if ((WANT_CHAR(to_y, from_x + i) & A_ATTRIBUTES) != CURRENT_ATTR) {
ovw = FALSE;
break;
}
}
- if (ovw)
- {
- char *sp;
- int i;
+ if (ovw) {
+ char *sp;
+ int i;
sp = str + strlen(str);
*sp++ = WANT_CHAR(to_y, from_x + i);
*sp = '\0';
lhcost += n * SP->_char_padding;
- }
- else
+ } else
#endif /* defined(REAL_ATTR) && defined(WANT_CHAR) */
{
lhcost = repeated_append(lhcost, SP->_cuf1_cost, n, str, cursor_right);
}
- if (lhcost < hcost)
- {
+ if (lhcost < hcost) {
if (result)
(void) strcpy(result, str);
hcost = lhcost;
}
}
- }
- else /* (to_x < from_x) */
- {
+ } else { /* (to_x < from_x) */
n = from_x - to_x;
- if (parm_left_cursor && SP->_cub_cost < hcost)
- {
+ if (parm_left_cursor && SP->_cub_cost < hcost) {
if (result)
(void) strcpy(result, tparm(parm_left_cursor, n));
hcost = SP->_cub_cost;
}
- if (cursor_left)
- {
- int lhcost = 0;
+ if (cursor_left) {
+ int lhcost = 0;
str[0] = '\0';
#if USE_HARD_TABS
- if (init_tabs > 0 && back_tab)
- {
- int nxt, fr;
+ if (init_tabs > 0 && back_tab) {
+ int nxt, fr;
- for (fr = from_x; (nxt = LASTTAB(fr)) >= to_x; fr = nxt)
- {
- lhcost = repeated_append(lhcost, SP->_cbt_cost, 1, str, back_tab);
+ for (fr = from_x; (nxt = LASTTAB(fr)) >= to_x; fr = nxt) {
+ lhcost = repeated_append(lhcost, SP->_cbt_cost, 1,
+ str, back_tab);
if (lhcost == INFINITY)
- break;
+ break;
}
n = fr - to_x;
lhcost = repeated_append(lhcost, SP->_cub1_cost, n, str, cursor_left);
- if (lhcost < hcost)
- {
+ if (lhcost < hcost) {
if (result)
(void) strcpy(result, str);
hcost = lhcost;
}
if (hcost == INFINITY)
- return(INFINITY);
+ return (INFINITY);
}
- return(vcost + hcost);
+ return (vcost + hcost);
}
#endif /* !NO_OPTIMIZE */
*/
static inline int
-onscreen_mvcur(int yold,int xold,int ynew,int xnew, bool ovw)
+onscreen_mvcur(int yold, int xold, int ynew, int xnew, bool ovw)
/* onscreen move from (yold, xold) to (ynew, xnew) */
{
- char use[OPT_SIZE], *sp;
- int tactic = 0, newcost, usecost = INFINITY;
- int t5_cr_cost;
+ char use[OPT_SIZE], *sp;
+ int tactic = 0, newcost, usecost = INFINITY;
+ int t5_cr_cost;
#if defined(MAIN) || defined(NCURSES_TEST)
struct timeval before, after;
/* tactic #0: use direct cursor addressing */
sp = tparm(SP->_address_cursor, ynew, xnew);
- if (sp)
- {
+ if (sp) {
tactic = 0;
(void) strcpy(use, sp);
usecost = SP->_cup_cost;
* (like, say, local-movement \n getting mapped to some obscure
* character because A_ALTCHARSET is on).
*/
- if (yold == -1 || xold == -1 || NOT_LOCAL(yold, xold, ynew, xnew))
- {
+ if (yold == -1 || xold == -1 || NOT_LOCAL(yold, xold, ynew, xnew)) {
#if defined(MAIN) || defined(NCURSES_TEST)
- if (!profiling)
- {
+ if (!profiling) {
(void) fputs("nonlocal\n", stderr);
goto nonlocal; /* always run the optimizer if profiling */
}
#endif /* MAIN */
}
}
-
#ifndef NO_OPTIMIZE
/* tactic #1: use local movement */
if (yold != -1 && xold != -1
- && ((newcost=relative_move(NULL, yold, xold, ynew, xnew, ovw))!=INFINITY)
- && newcost < usecost)
- {
+ && ((newcost = relative_move(NULL, yold, xold, ynew, xnew, ovw)) != INFINITY)
+ && newcost < usecost) {
tactic = 1;
usecost = newcost;
}
/* tactic #2: use carriage-return + local movement */
if (yold != -1 && carriage_return
- && ((newcost=relative_move(NULL, yold,0,ynew,xnew, ovw)) != INFINITY)
- && SP->_cr_cost + newcost < usecost)
- {
+ && ((newcost = relative_move(NULL, yold, 0, ynew, xnew, ovw)) != INFINITY)
+ && SP->_cr_cost + newcost < usecost) {
tactic = 2;
usecost = SP->_cr_cost + newcost;
}
/* tactic #3: use home-cursor + local movement */
if (cursor_home
- && ((newcost=relative_move(NULL, 0, 0, ynew, xnew, ovw)) != INFINITY)
- && SP->_home_cost + newcost < usecost)
- {
+ && ((newcost = relative_move(NULL, 0, 0, ynew, xnew, ovw)) != INFINITY)
+ && SP->_home_cost + newcost < usecost) {
tactic = 3;
usecost = SP->_home_cost + newcost;
}
/* tactic #4: use home-down + local movement */
if (cursor_to_ll
- && ((newcost=relative_move(NULL, screen_lines-1, 0, ynew, xnew, ovw)) != INFINITY)
- && SP->_ll_cost + newcost < usecost)
- {
+ && ((newcost = relative_move(NULL, screen_lines - 1, 0, ynew, xnew,
+ ovw)) != INFINITY)
+ && SP->_ll_cost + newcost < usecost) {
tactic = 4;
usecost = SP->_ll_cost + newcost;
}
* tactic #5: use left margin for wrap to right-hand side,
* unless strange wrap behavior indicated by xenl might hose us.
*/
- t5_cr_cost = (xold>0 ? SP->_cr_cost : 0);
+ t5_cr_cost = (xold > 0 ? SP->_cr_cost : 0);
if (auto_left_margin && !eat_newline_glitch
&& yold > 0 && cursor_left
- && ((newcost=relative_move(NULL, yold-1, screen_columns-1, ynew, xnew, ovw)) != INFINITY)
- && t5_cr_cost + SP->_cub1_cost + newcost < usecost)
- {
+ && ((newcost = relative_move(NULL, yold - 1, screen_columns - 1,
+ ynew, xnew, ovw)) != INFINITY)
+ && t5_cr_cost + SP->_cub1_cost + newcost < usecost) {
tactic = 5;
usecost = t5_cr_cost + SP->_cub1_cost + newcost;
}
/*
* These cases are ordered by estimated relative frequency.
*/
- if (tactic)
- {
- if (tactic == 1)
- (void) relative_move(use, yold, xold, ynew, xnew, ovw);
- else if (tactic == 2)
- {
- (void) strcpy(use, carriage_return);
- (void) relative_move(use + SP->_carriage_return_length,
- yold,0,ynew,xnew, ovw);
- }
- else if (tactic == 3)
- {
- (void) strcpy(use, cursor_home);
- (void) relative_move(use + SP->_cursor_home_length,
- 0, 0, ynew, xnew, ovw);
- }
- else if (tactic == 4)
- {
- (void) strcpy(use, cursor_to_ll);
- (void) relative_move(use + SP->_cursor_to_ll_length,
- screen_lines-1, 0, ynew, xnew, ovw);
- }
- else /* if (tactic == 5) */
- {
- use[0] = '\0';
- if (xold > 0)
- (void) strcat(use, carriage_return);
- (void) strcat(use, cursor_left);
- (void) relative_move(use + strlen(use),
- yold-1, screen_columns-1, ynew, xnew, ovw);
- }
+ switch (tactic) {
+ case 1:
+ (void) relative_move(use, yold, xold, ynew, xnew, ovw);
+ break;
+ case 2:
+ (void) strcpy(use, carriage_return);
+ (void) relative_move(use + SP->_carriage_return_length,
+ yold, 0, ynew, xnew, ovw);
+ break;
+ case 3:
+ (void) strcpy(use, cursor_home);
+ (void) relative_move(use + SP->_cursor_home_length,
+ 0, 0, ynew, xnew, ovw);
+ break;
+ case 4:
+ (void) strcpy(use, cursor_to_ll);
+ (void) relative_move(use + SP->_cursor_to_ll_length,
+ screen_lines - 1, 0, ynew, xnew, ovw);
+ break;
+ case 5:
+ use[0] = '\0';
+ if (xold > 0)
+ (void) strcat(use, carriage_return);
+ (void) strcat(use, cursor_left);
+ (void) relative_move(use + strlen(use),
+ yold - 1, screen_columns - 1, ynew, xnew, ovw);
+ break;
}
#endif /* !NO_OPTIMIZE */
diff = after.tv_usec - before.tv_usec
+ (after.tv_sec - before.tv_sec) * 1000000;
if (!profiling)
- (void) fprintf(stderr, "onscreen: %d msec, %f 28.8Kbps char-equivalents\n",
- (int)diff, diff/288);
+ (void) fprintf(stderr,
+ "onscreen: %d msec, %f 28.8Kbps char-equivalents\n",
+ (int) diff, diff / 288);
#endif /* MAIN */
- nonlocal:
- if (usecost != INFINITY)
- {
+ nonlocal:
+ if (usecost != INFINITY) {
TPUTS_TRACE("mvcur");
tputs(use, 1, _nc_outch);
- return(OK);
- }
- else
- return(ERR);
+ return (OK);
+ } else
+ return (ERR);
}
-int mvcur(int yold, int xold, int ynew, int xnew)
+int
+mvcur(int yold, int xold, int ynew, int xnew)
/* optimized cursor move from (yold, xold) to (ynew, xnew) */
{
TR(TRACE_MOVE, ("mvcur(%d,%d,%d,%d) called", yold, xold, ynew, xnew));
if (yold == ynew && xold == xnew)
- return(OK);
+ return (OK);
/*
* Most work here is rounding for terminal boundaries getting the
* rolling up the screen to get ynew on the screen.
*/
- if (xnew >= screen_columns)
- {
+ if (xnew >= screen_columns) {
ynew += xnew / screen_columns;
xnew %= screen_columns;
}
- if (xold >= screen_columns)
- {
- int l;
+ if (xold >= screen_columns) {
+ int l;
l = (xold + 1) / screen_columns;
yold += l;
if (yold >= screen_lines)
- l -= (yold - screen_lines - 1);
+ l -= (yold - screen_lines - 1);
while (l > 0) {
- if (newline)
- {
- TPUTS_TRACE("newline");
- tputs(newline, 0, _nc_outch);
- }
- else
- putchar('\n');
- l--;
- if (xold > 0)
- {
- if (carriage_return)
- {
- TPUTS_TRACE("carriage_return");
- tputs(carriage_return, 0, _nc_outch);
- }
- else
- putchar('\r');
- xold = 0;
- }
+ if (newline) {
+ TPUTS_TRACE("newline");
+ tputs(newline, 0, _nc_outch);
+ } else
+ putchar('\n');
+ l--;
+ if (xold > 0) {
+ if (carriage_return) {
+ TPUTS_TRACE("carriage_return");
+ tputs(carriage_return, 0, _nc_outch);
+ } else
+ putchar('\r');
+ xold = 0;
+ }
}
}
ynew = screen_lines - 1;
/* destination location is on screen now */
- return(onscreen_mvcur(yold, xold, ynew, xnew, TRUE));
+ return (onscreen_mvcur(yold, xold, ynew, xnew, TRUE));
}
#if defined(TRACE) || defined(NCURSES_TEST)
static unsigned long xmits;
-int tputs(const char *string, int affcnt GCC_UNUSED, int (*outc)(int) GCC_UNUSED)
+/* these override lib_tputs.c */
+int
+tputs(const char *string, int affcnt GCC_UNUSED, int (*outc) (int) GCC_UNUSED)
/* stub tputs() that dumps sequences in a visible form */
{
if (profiling)
xmits += strlen(string);
else
(void) fputs(_nc_visbuf(string), stdout);
- return(OK);
+ return (OK);
}
-int putp(const char *string)
+int
+putp(const char *string)
{
- return(tputs(string, 1, _nc_outch));
+ return (tputs(string, 1, _nc_outch));
}
-int _nc_outch(int ch)
+int
+_nc_outch(int ch)
{
putc(ch, stdout);
return OK;
}
-static char tname[MAX_ALIAS];
+char PC = 0; /* used by termcap library */
+speed_t ospeed = 0; /* used by termcap library */
+int _nc_nulls_sent = 0; /* used by 'tack' program */
+
+int
+delay_output(int ms GCC_UNUSED)
+{
+ return OK;
+}
+
+static char tname[MAX_ALIAS];
-static void load_term(void)
+static void
+load_term(void)
{
(void) setupterm(tname, STDOUT_FILENO, NULL);
}
-static int roll(int n)
+static int
+roll(int n)
{
int i, j;
return (j % n);
}
-int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED)
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
{
(void) strcpy(tname, termname());
load_term();
fputs("smcup:", stdout);
putchar('\n');
- for (;;)
- {
- int fy, fx, ty, tx, n, i;
- char buf[BUFSIZ], capname[BUFSIZ];
+ for (;;) {
+ int fy, fx, ty, tx, n, i;
+ char buf[BUFSIZ], capname[BUFSIZ];
(void) fputs("> ", stdout);
(void) fgets(buf, sizeof(buf), stdin);
- 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");
- }
- else if (sscanf(buf, "%d %d %d %d", &fy, &fx, &ty, &tx) == 4)
- {
+ 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");
+ } else if (sscanf(buf, "%d %d %d %d", &fy, &fx, &ty, &tx) == 4) {
struct timeval before, after;
putchar('"');
gettimeofday(&after, NULL);
printf("\" (%ld msec)\n",
- (long)(after.tv_usec - before.tv_usec + (after.tv_sec - before.tv_sec) * 1000000));
- }
- else if (sscanf(buf, "s %d %d %d %d", &fy, &fx, &ty, &tx) == 4)
- {
+ (long) (after.tv_usec - before.tv_usec + (after.tv_sec -
+ before.tv_sec) * 1000000));
+ } else if (sscanf(buf, "s %d %d %d %d", &fy, &fx, &ty, &tx) == 4) {
struct timeval before, after;
putchar('"');
gettimeofday(&after, NULL);
printf("\" (%ld msec)\n",
- (long)(after.tv_usec - before.tv_usec + (after.tv_sec - before.tv_sec) * 1000000));
- }
- else if (buf[0] == 'r')
- {
+ (long) (after.tv_usec - before.tv_usec + (after.tv_sec -
+ before.tv_sec) * 1000000));
+ } else if (buf[0] == 'r') {
(void) strcpy(tname, termname());
load_term();
- }
- else if (sscanf(buf, "l %s", tname) == 1)
- {
+ } else if (sscanf(buf, "l %s", tname) == 1) {
load_term();
- }
- else if (sscanf(buf, "d %s", capname) == 1)
- {
- struct name_table_entry const *np = _nc_find_entry(capname,
- _nc_info_hash_table);
+ } else if (sscanf(buf, "d %s", capname) == 1) {
+ struct name_table_entry const *np = _nc_find_entry(capname,
+ _nc_info_hash_table);
if (np == NULL)
(void) printf("No such capability as \"%s\"\n", capname);
- else
- {
- switch(np->nte_type)
- {
+ else {
+ switch (np->nte_type) {
case BOOLEAN:
cur_term->type.Booleans[np->nte_index] = FALSE;
- (void) printf("Boolean capability `%s' (%d) turned off.\n",
- np->nte_name, np->nte_index);
+ (void)
+ printf("Boolean capability `%s' (%d) turned off.\n",
+ np->nte_name, np->nte_index);
break;
case NUMBER:
- cur_term->type.Numbers[np->nte_index] = -1;
+ cur_term->type.Numbers[np->nte_index] = ABSENT_NUMERIC;
(void) printf("Number capability `%s' (%d) set to -1.\n",
- np->nte_name, np->nte_index);
+ np->nte_name, np->nte_index);
break;
case STRING:
- cur_term->type.Strings[np->nte_index] = (char *)NULL;
+ cur_term->type.Strings[np->nte_index] = ABSENT_STRING;
(void) printf("String capability `%s' (%d) deleted.\n",
- np->nte_name, np->nte_index);
+ np->nte_name, np->nte_index);
break;
}
}
- }
- else if (buf[0] == 'i')
- {
- dump_init((char *)NULL, F_TERMINFO, S_TERMINFO, 70, 0, FALSE);
- dump_entry(&cur_term->type, FALSE, TRUE, 0);
- putchar('\n');
- }
- else if (buf[0] == 'o')
- {
- if (_nc_optimize_enable & OPTIMIZE_MVCUR)
- {
- _nc_optimize_enable &=~ OPTIMIZE_MVCUR;
- (void) puts("Optimization is now off.");
- }
- else
- {
- _nc_optimize_enable |= OPTIMIZE_MVCUR;
- (void) puts("Optimization is now on.");
- }
+ } else if (buf[0] == 'i') {
+ dump_init((char *) NULL, F_TERMINFO, S_TERMINFO, 70, 0, FALSE);
+ dump_entry(&cur_term->type, FALSE, TRUE, 0);
+ putchar('\n');
+ } else if (buf[0] == 'o') {
+ if (_nc_optimize_enable & OPTIMIZE_MVCUR) {
+ _nc_optimize_enable &= ~OPTIMIZE_MVCUR;
+ (void) puts("Optimization is now off.");
+ } else {
+ _nc_optimize_enable |= OPTIMIZE_MVCUR;
+ (void) puts("Optimization is now on.");
+ }
}
/*
* You can use the `t' test to profile and tune the movement
* modes. As long as the optimized times are less, the optimizer
* is winning.
*/
- else if (sscanf(buf, "t %d", &n) == 1)
- {
+ else if (sscanf(buf, "t %d", &n) == 1) {
float cumtime = 0, perchar;
- int speeds[] = {2400, 9600, 14400, 19200, 28800, 38400, 0};
+ int speeds[] =
+ {2400, 9600, 14400, 19200, 28800, 38400, 0};
- srand((unsigned)(getpid() + time((time_t *)0)));
+ srand((unsigned) (getpid() + time((time_t *) 0)));
profiling = TRUE;
xmits = 0;
- for (i = 0; i < n; i++)
- {
+ for (i = 0; i < n; i++) {
/*
* This does a move test between two random locations,
* Random moves probably short-change the optimizer,
perchar = cumtime / n;
(void) printf("%d moves (%ld chars) in %d msec, %f msec each:\n",
- n, xmits, (int)cumtime, perchar);
+ n, xmits, (int) cumtime, perchar);
- for (i = 0; speeds[i]; i++)
- {
+ for (i = 0; speeds[i]; i++) {
/*
* Total estimated time for the moves, computation and
* transmission both. Transmission time is an estimate
*/
float overhead = speeds[i] * perchar / 1e6;
- (void) printf("%6d bps: %3.2f char-xmits overhead; total estimated time %15.2f\n",
- speeds[i], overhead, totalest);
+ (void)
+ printf("%6d bps: %3.2f char-xmits overhead; total estimated time %15.2f\n",
+ speeds[i], overhead, totalest);
}
- }
- else if (buf[0] == 'c')
- {
+ } else if (buf[0] == 'c') {
(void) printf("char padding: %d\n", SP->_char_padding);
(void) printf("cr cost: %d\n", SP->_cr_cost);
(void) printf("cup cost: %d\n", SP->_cup_cost);
(void) printf("cuu cost: %d\n", SP->_cuu_cost);
(void) printf("hpa cost: %d\n", SP->_hpa_cost);
(void) printf("vpa cost: %d\n", SP->_vpa_cost);
- }
- else if (buf[0] == 'x' || buf[0] == 'q')
+ } else if (buf[0] == 'x' || buf[0] == 'q')
break;
else
(void) puts("Invalid command.");
_nc_mvcur_wrap();
putchar('\n');
- return(0);
+ return (0);
}
#endif /* MAIN */
#define _POSIX_SOURCE
#endif
-MODULE_ID("$Id: lib_tstp.c,v 1.20 1999/10/22 23:11:09 tom Exp $")
+MODULE_ID("$Id: lib_tstp.c,v 1.21 2000/05/20 23:28:56 tom Exp $")
#if defined(SIGTSTP) && (HAVE_SIGACTION || HAVE_SIGVEC)
#define USE_SIGTSTP 1
&& SP->_ofp != 0
&& isatty(fileno(SP->_ofp))) {
SP->_cleanup = TRUE;
+ SP->_outch = _nc_outch;
}
set_term(scan);
endwin();
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
#if USE_FUNC_POLL
-# include <stropts.h>
-# include <poll.h>
# if HAVE_SYS_TIME_H
# include <sys/time.h>
# endif
# endif
#endif
-MODULE_ID("$Id: lib_twait.c,v 1.34 1999/10/16 21:25:10 tom Exp $")
+MODULE_ID("$Id: lib_twait.c,v 1.37 2000/06/29 23:03:09 tom Exp $")
static long _nc_gettime(bool first)
{
if ((mode & (1 << count))
&& (fds[count].revents & POLLIN)) {
result |= (1 << count);
- count++;
}
}
#elif defined(__BEOS__)
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <curses.priv.h>
#include <term.h>
-MODULE_ID("$Id: lib_vidattr.c,v 1.23 1999/06/12 21:20:41 tom Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.27 2000/04/29 23:25:27 tom Exp $")
#define doPut(mode) TPUTS_TRACE(#mode); tputs(mode, 1, outc)
/* if there is no current screen, assume we *can* do color */
#define SetColorsIf(why,old_attr) \
- if ((!SP || SP->_coloron) && (why)) { \
+ if (can_color && (why)) { \
int old_pair = PAIR_NUMBER(old_attr); \
T(("old pair = %d -- new pair = %d", old_pair, pair)); \
if ((pair != old_pair) \
+ || (fix_pair0 && (pair == 0)) \
|| (reverse ^ ((old_attr & A_REVERSE) != 0))) { \
- _nc_do_color(pair, reverse, outc); \
+ _nc_do_color(old_pair, pair, reverse, outc); \
} \
}
-int vidputs(attr_t newmode, int (*outc)(int))
+int
+vidputs(attr_t newmode, int (*outc) (int))
{
-static attr_t previous_attr = A_NORMAL;
-attr_t turn_on, turn_off;
-int pair;
-bool reverse = FALSE;
-bool used_ncv = FALSE;
+ static attr_t previous_attr = A_NORMAL;
+ attr_t turn_on, turn_off;
+ int pair;
+ bool reverse = FALSE;
+ bool used_ncv = FALSE;
+ bool can_color = (SP == 0 || SP->_coloron);
+#ifdef NCURSES_EXT_FUNCS
+ bool fix_pair0 = (SP != 0 && SP->_coloron && !SP->_default_color);
+#else
+#define fix_pair0 FALSE
+#endif
- T((T_CALLED("vidputs(%s)"), _traceattr(newmode)));
+ T((T_CALLED("vidputs(%s)"), _traceattr(newmode)));
- /* this allows us to go on whether or not newterm() has been called */
- if (SP)
- previous_attr = SP->_current_attr;
+ /* this allows us to go on whether or not newterm() has been called */
+ if (SP)
+ previous_attr = SP->_current_attr;
- T(("previous attribute was %s", _traceattr(previous_attr)));
+ T(("previous attribute was %s", _traceattr(previous_attr)));
#if !USE_XMC_SUPPORT
- if ((SP != 0)
- && (magic_cookie_glitch > 0))
- newmode &= ~(SP->_xmc_suppress);
+ if ((SP != 0)
+ && (magic_cookie_glitch > 0))
+ newmode &= ~(SP->_xmc_suppress);
#endif
- /*
- * If we have a terminal that cannot combine color with video
- * attributes, use the colors in preference.
- */
- if ((newmode & A_COLOR)
- && (no_color_video > 0)) {
- static const struct {
- attr_t video;
- unsigned bit;
- } table[] = {
- { A_STANDOUT, 1 },
- { A_UNDERLINE, 2 },
- { A_REVERSE, 4 },
- { A_BLINK, 8 },
- { A_DIM, 16 },
- { A_BOLD, 32 },
- { A_INVIS, 64 },
- { A_PROTECT, 128 },
- { A_ALTCHARSET, 256 },
- };
- size_t n;
- for (n = 0; n < SIZEOF(table); n++) {
- if ((table[n].bit & no_color_video)
- && (table[n].video & newmode)) {
- used_ncv = TRUE;
- if (table[n].video == A_REVERSE)
- reverse = TRUE;
- else
- newmode &= ~table[n].video;
- }
- }
+ /*
+ * If we have a terminal that cannot combine color with video
+ * attributes, use the colors in preference.
+ */
+ if (((newmode & A_COLOR) != 0
+ || fix_pair0)
+ && (no_color_video > 0)) {
+ /* *INDENT-OFF* */
+ static const struct {
+ attr_t video;
+ unsigned bit;
+ } table[] = {
+ { A_STANDOUT, 1 },
+ { A_UNDERLINE, 2 },
+ { A_REVERSE, 4 },
+ { A_BLINK, 8 },
+ { A_DIM, 16 },
+ { A_BOLD, 32 },
+ { A_INVIS, 64 },
+ { A_PROTECT, 128 },
+ { A_ALTCHARSET, 256 },
+ };
+ /* *INDENT-ON* */
+
+ size_t n;
+ for (n = 0; n < SIZEOF(table); n++) {
+ if ((table[n].bit & no_color_video)
+ && (table[n].video & newmode)) {
+ used_ncv = TRUE;
+ if (table[n].video == A_REVERSE)
+ reverse = TRUE;
+ else
+ newmode &= ~table[n].video;
+ }
}
+ }
+
+ if (newmode == previous_attr)
+ returnCode(OK);
+
+ pair = PAIR_NUMBER(newmode);
- if (newmode == previous_attr)
- returnCode(OK);
+ if (reverse) {
+ newmode &= ~A_REVERSE;
+ }
- pair = PAIR_NUMBER(newmode);
+ turn_off = (~newmode & previous_attr) & ALL_BUT_COLOR;
+ turn_on = (newmode & ~previous_attr) & ALL_BUT_COLOR;
- if (reverse) {
- newmode &= ~A_REVERSE;
+ SetColorsIf(((pair == 0) && !fix_pair0), previous_attr);
+
+ 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) {
+ doPut(exit_attribute_mode);
+ previous_attr &= ~A_COLOR;
}
- turn_off = (~newmode & previous_attr) & ALL_BUT_COLOR;
- turn_on = (newmode & ~previous_attr) & ALL_BUT_COLOR;
-
- SetColorsIf(pair == 0, previous_attr);
-
- 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) {
- doPut(exit_attribute_mode);
- previous_attr &= ~A_COLOR;
- }
-
- SetColorsIf(pair != 0, previous_attr);
- } else if (set_attributes && !used_ncv) {
- if (turn_on || turn_off) {
- TPUTS_TRACE("set_attributes");
- tputs(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), 1, outc);
- previous_attr &= ~A_COLOR;
- }
- SetColorsIf(pair != 0, previous_attr);
- } else {
-
- T(("turning %s off", _traceattr(turn_off)));
-
- TurnOff(A_ALTCHARSET, exit_alt_charset_mode);
-
- if (!SP || SP->_use_rmul) {
- TurnOff(A_UNDERLINE, exit_underline_mode);
- }
-
- if (!SP || SP->_use_rmso) {
- TurnOff(A_STANDOUT, exit_standout_mode);
- }
-
- if (turn_off && exit_attribute_mode) {
- doPut(exit_attribute_mode);
- turn_on |= (newmode & (chtype)(~A_COLOR));
- previous_attr &= ~A_COLOR;
- }
- SetColorsIf(pair != 0, previous_attr);
-
- T(("turning %s on", _traceattr(turn_on)));
-
- 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);
- 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);
+ SetColorsIf((pair != 0) || fix_pair0, previous_attr);
+ } else if (set_attributes && !used_ncv) {
+ if (turn_on || turn_off) {
+ TPUTS_TRACE("set_attributes");
+ tputs(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), 1, outc);
+ previous_attr &= ~A_COLOR;
}
+ SetColorsIf((pair != 0) || fix_pair0, previous_attr);
+ } else {
- if (reverse)
- newmode |= A_REVERSE;
+ T(("turning %s off", _traceattr(turn_off)));
- if (SP)
- SP->_current_attr = newmode;
- else
- previous_attr = newmode;
+ TurnOff(A_ALTCHARSET, exit_alt_charset_mode);
- returnCode(OK);
+ if (!SP || SP->_use_rmul) {
+ TurnOff(A_UNDERLINE, exit_underline_mode);
+ }
+
+ if (!SP || SP->_use_rmso) {
+ TurnOff(A_STANDOUT, exit_standout_mode);
+ }
+
+ if (turn_off && exit_attribute_mode) {
+ doPut(exit_attribute_mode);
+ turn_on |= (newmode & (chtype) (~A_COLOR));
+ previous_attr &= ~A_COLOR;
+ }
+ SetColorsIf((pair != 0) || fix_pair0, previous_attr);
+
+ T(("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);
+ 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);
+ /* *INDENT-ON* */
+
+ }
+
+ if (reverse)
+ newmode |= A_REVERSE;
+
+ if (SP)
+ SP->_current_attr = newmode;
+ else
+ previous_attr = newmode;
+
+ returnCode(OK);
}
-int vidattr(attr_t newmode)
+int
+vidattr(attr_t newmode)
{
- T((T_CALLED("vidattr(%s)"), _traceattr(newmode)));
+ T((T_CALLED("vidattr(%s)"), _traceattr(newmode)));
- returnCode(vidputs(newmode, _nc_outch));
+ returnCode(vidputs(newmode, _nc_outch));
}
-chtype termattrs(void)
+chtype
+termattrs(void)
{
- chtype attrs = A_NORMAL;
+ chtype attrs = A_NORMAL;
- 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->_coloron)
- attrs |= A_COLOR;
+ if (SP->_coloron)
+ attrs |= A_COLOR;
- return(attrs);
+ return (attrs);
}
-
vidattr(AttrOf(c));
#endif
-/*
- * Check whether the given character can be output by clearing commands. This
- * includes test for being a space and not including any 'bad' attributes, such
- * as A_REVERSE. All attribute flags which don't affect appearance of a space
- * or can be output by clearing (A_COLOR in case of bce-terminal) are excluded.
- */
-#define can_clear_with(ch) \
- ((ch & ~(NONBLANK_ATTR|(back_color_erase ? A_COLOR:0))) == BLANK)
-
#define XMC_CHANGES(c) ((c) & D->_xmc_suppress)
#endif /* TTY_DISPLAY_H */
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*-----------------------------------------------------------------
*
* lib_doupdate.c
#endif
#if USE_FUNC_POLL
-#include <stropts.h>
-#include <poll.h>
#elif HAVE_SELECT
#if HAVE_SYS_SELECT_H
#include <sys/select.h>
#include <term.h>
-MODULE_ID("$Id: tty_update.c,v 1.117 1999/10/22 23:28:46 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.141 2000/07/04 21:01:40 tom Exp $")
/*
* This define controls the line-breakout optimization. Every once in a
*/
#define CHECK_INTERVAL 5
+#define FILL_BCE() (SP->_coloron && !SP->_default_color && !back_color_erase)
+
/*
* Enable checking to see if doupdate and friends are tracking the true
* cursor position correctly. NOTE: this is a debugging hack which will
*/
/* #define POSITION_DEBUG */
-static inline chtype ClrBlank ( WINDOW *win );
+static inline chtype ClrBlank(WINDOW *win);
static int ClrBottom(int total);
-static void ClearScreen( chtype blank );
-static void ClrUpdate( void );
-static void DelChar( int count );
-static void InsStr( chtype *line, int count );
-static void TransformLine( int const lineno );
+static void ClearScreen(chtype blank);
+static void ClrUpdate(void);
+static void DelChar(int count);
+static void InsStr(chtype * line, int count);
+static void TransformLine(int const lineno);
#ifdef POSITION_DEBUG
/****************************************************************************
*
****************************************************************************/
-static void position_check(int expected_y, int expected_x, char *legend)
+static void
+position_check(int expected_y, int expected_x, char *legend)
/* check to see if the real cursor position matches the virtual */
{
- char buf[20];
+ char buf[20];
int y, x;
if (!_nc_tracing || (expected_y < 0 && expected_x < 0))
return;
memset(buf, '\0', sizeof(buf));
- putp("\033[6n"); /* only works on ANSI-compatibles */
+ putp("\033[6n"); /* only works on ANSI-compatibles */
_nc_flush();
- (void) read(0, buf, sizeof(buf)-1);
+ (void) read(0, buf, sizeof(buf) - 1);
_tracef("probe returned %s", _nc_visbuf(buf));
/* try to interpret as a position report */
if (y - 1 != expected_y || x - 1 != expected_x) {
beep();
_tracef("position seen (%d, %d) doesn't match expected one (%d, %d) in %s",
- y-1, x-1, expected_y, expected_x, legend);
+ y - 1, x - 1, expected_y, expected_x, legend);
} else {
_tracef("position matches OK in %s", legend);
}
}
}
#else
-#define position_check(expected_y, expected_x, legend) /* nothing */
+#define position_check(expected_y, expected_x, legend) /* nothing */
#endif /* POSITION_DEBUG */
/****************************************************************************
*
****************************************************************************/
-static inline void GoTo(int const row, int const col)
+static inline void
+GoTo(int const row, int const col)
{
- chtype oldattr = SP->_current_attr;
+ chtype oldattr = SP->_current_attr;
- TR(TRACE_MOVE, ("GoTo(%d, %d) from (%d, %d)",
- row, col, SP->_cursrow, SP->_curscol));
+ TR(TRACE_MOVE, ("GoTo(%d, %d) from (%d, %d)",
+ row, col, SP->_cursrow, SP->_curscol));
- position_check(SP->_cursrow, SP->_curscol, "GoTo");
+ position_check(SP->_cursrow, SP->_curscol, "GoTo");
- /*
- * Force restore even if msgr is on when we're in an alternate
- * character set -- these have a strong tendency to screw up the
- * CR & LF used for local character motions!
- */
- if ((oldattr & A_ALTCHARSET)
- || (oldattr && !move_standout_mode))
- {
- TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move",
- oldattr, _traceattr(oldattr)));
- vidattr(A_NORMAL);
- }
+ /*
+ * Force restore even if msgr is on when we're in an alternate
+ * character set -- these have a strong tendency to screw up the
+ * CR & LF used for local character motions!
+ */
+ if ((oldattr & A_ALTCHARSET)
+ || (oldattr && !move_standout_mode)) {
+ TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move",
+ oldattr, _traceattr(oldattr)));
+ vidattr(A_NORMAL);
+ }
- mvcur(SP->_cursrow, SP->_curscol, row, col);
- SP->_cursrow = row;
- SP->_curscol = col;
- position_check(SP->_cursrow, SP->_curscol, "GoTo2");
+ mvcur(SP->_cursrow, SP->_curscol, row, col);
+ SP->_cursrow = row;
+ SP->_curscol = col;
+ position_check(SP->_cursrow, SP->_curscol, "GoTo2");
}
-static inline void PutAttrChar(chtype ch)
+static inline void
+PutAttrChar(chtype ch)
{
- if (tilde_glitch && (TextOf(ch) == '~'))
- ch = ('`' | AttrOf(ch));
-
- TR(TRACE_CHARPUT, ("PutAttrChar(%s) at (%d, %d)",
- _tracechtype(ch),
- SP->_cursrow, SP->_curscol));
- UpdateAttrs(ch);
- if (SP->_cleanup) {
- _nc_outch((int)TextOf(ch));
- } else {
- putc((int)TextOf(ch), SP->_ofp); /* macro's fastest... */
+ int data;
+
+ if (tilde_glitch && (TextOf(ch) == '~'))
+ ch = ('`' | AttrOf(ch));
+
+ TR(TRACE_CHARPUT, ("PutAttrChar(%s) at (%d, %d)",
+ _tracechtype(ch),
+ SP->_cursrow, SP->_curscol));
+ UpdateAttrs(ch);
+ data = TextOf(ch);
+ if (SP->_outch != 0) {
+ SP->_outch(data);
+ } else {
+ putc(data, SP->_ofp); /* macro's fastest... */
#ifdef TRACE
- _nc_outchars++;
+ _nc_outchars++;
#endif /* TRACE */
- }
- SP->_curscol++;
- if (char_padding) {
- TPUTS_TRACE("char_padding");
- putp(char_padding);
- }
+ }
+ SP->_curscol++;
+ if (char_padding) {
+ TPUTS_TRACE("char_padding");
+ putp(char_padding);
+ }
}
-static bool check_pending(void)
+static bool
+check_pending(void)
/* check for pending input */
{
- bool have_pending = FALSE;
+ bool have_pending = FALSE;
- /*
- * Only carry out this check when the flag is zero, otherwise we'll
- * have the refreshing slow down drastically (or stop) if there's an
- * unread character available.
- */
- if(SP->_fifohold != 0)
- return FALSE;
+ /*
+ * Only carry out this check when the flag is zero, otherwise we'll
+ * have the refreshing slow down drastically (or stop) if there's an
+ * unread character available.
+ */
+ if (SP->_fifohold != 0)
+ return FALSE;
- if (SP->_checkfd >= 0) {
+ if (SP->_checkfd >= 0) {
#if USE_FUNC_POLL
- struct pollfd fds[1];
- fds[0].fd = SP->_checkfd;
- fds[0].events = POLLIN;
- if (poll(fds, 1, 0) > 0)
- {
- have_pending = TRUE;
- }
+ struct pollfd fds[1];
+ fds[0].fd = SP->_checkfd;
+ fds[0].events = POLLIN;
+ if (poll(fds, 1, 0) > 0) {
+ have_pending = TRUE;
+ }
#elif defined(__BEOS__)
- /*
- * BeOS's select() is declared in socket.h, so the configure script does
- * not see it. That's just as well, since that function works only for
- * sockets. This (using snooze and ioctl) was distilled from Be's patch
- * for ncurses which uses a separate thread to simulate select().
- *
- * FIXME: the return values from the ioctl aren't very clear if we get
- * interrupted.
- */
- int n = 0;
- int howmany = ioctl(0, 'ichr', &n);
- if (howmany >= 0 && n > 0) {
- have_pending = TRUE;
- }
+ /*
+ * BeOS's select() is declared in socket.h, so the configure script does
+ * not see it. That's just as well, since that function works only for
+ * sockets. This (using snooze and ioctl) was distilled from Be's patch
+ * for ncurses which uses a separate thread to simulate select().
+ *
+ * FIXME: the return values from the ioctl aren't very clear if we get
+ * interrupted.
+ */
+ int n = 0;
+ int howmany = ioctl(0, 'ichr', &n);
+ if (howmany >= 0 && n > 0) {
+ have_pending = TRUE;
+ }
#elif HAVE_SELECT
- fd_set fdset;
- struct timeval ktimeout;
+ fd_set fdset;
+ struct timeval ktimeout;
- ktimeout.tv_sec =
- ktimeout.tv_usec = 0;
+ ktimeout.tv_sec =
+ ktimeout.tv_usec = 0;
- FD_ZERO(&fdset);
- FD_SET(SP->_checkfd, &fdset);
- if (select(SP->_checkfd+1, &fdset, NULL, NULL, &ktimeout) != 0)
- {
- have_pending = TRUE;
- }
-#endif
- }
- if (have_pending) {
- SP->_fifohold = 5;
- _nc_flush();
+ FD_ZERO(&fdset);
+ FD_SET(SP->_checkfd, &fdset);
+ if (select(SP->_checkfd + 1, &fdset, NULL, NULL, &ktimeout) != 0) {
+ have_pending = TRUE;
}
- return FALSE;
+#endif
+ }
+ if (have_pending) {
+ SP->_fifohold = 5;
+ _nc_flush();
+ }
+ return FALSE;
}
/*
static inline void PutChar(chtype const ch); /* forward declaration */
/* put char at lower right corner */
-static void PutCharLR(chtype const ch)
+static void
+PutCharLR(chtype const ch)
{
- if (!auto_right_margin)
- {
+ if (!auto_right_margin) {
/* we can put the char directly */
PutAttrChar(ch);
- }
- else if (enter_am_mode && exit_am_mode)
- {
+ } else if (enter_am_mode && exit_am_mode) {
/* we can suppress automargin */
TPUTS_TRACE("exit_am_mode");
putp(exit_am_mode);
TPUTS_TRACE("enter_am_mode");
putp(enter_am_mode);
- }
- else if ((enter_insert_mode && exit_insert_mode)
- || insert_character || parm_ich)
- {
- GoTo(screen_lines-1,screen_columns-2);
+ } else if ((enter_insert_mode && exit_insert_mode)
+ || insert_character || parm_ich) {
+ GoTo(screen_lines - 1, screen_columns - 2);
callPutChar(ch);
- GoTo(screen_lines-1,screen_columns-2);
- InsStr(newscr->_line[screen_lines-1].text+screen_columns-2,1);
+ GoTo(screen_lines - 1, screen_columns - 2);
+ InsStr(newscr->_line[screen_lines - 1].text + screen_columns - 2, 1);
}
}
-static void wrap_cursor(void)
+static void
+wrap_cursor(void)
{
- if (eat_newline_glitch)
- {
+ if (eat_newline_glitch) {
/*
* xenl can manifest two different ways. The vt100
* way is that, when you'd expect the cursor to wrap,
*/
SP->_curscol = -1;
SP->_cursrow = -1;
- }
- else if (auto_right_margin)
- {
+ } else if (auto_right_margin) {
SP->_curscol = 0;
SP->_cursrow++;
- }
- else
- {
+ } else {
SP->_curscol--;
}
position_check(SP->_cursrow, SP->_curscol, "wrap_cursor");
}
-static inline void PutChar(chtype const ch)
+static inline void
+PutChar(chtype const ch)
/* insert character, handling automargin stuff */
{
- if (SP->_cursrow == screen_lines-1 && SP->_curscol == screen_columns-1)
+ if (SP->_cursrow == screen_lines - 1 && SP->_curscol == screen_columns - 1)
PutCharLR(ch);
else
PutAttrChar(ch);
position_check(SP->_cursrow, SP->_curscol, "PutChar");
}
+/*
+ * Check whether the given character can be output by clearing commands. This
+ * includes test for being a space and not including any 'bad' attributes, such
+ * as A_REVERSE. All attribute flags which don't affect appearance of a space
+ * or can be output by clearing (A_COLOR in case of bce-terminal) are excluded.
+ */
+static inline bool
+can_clear_with(chtype ch)
+{
+ if (!back_color_erase && SP->_coloron) {
+ if (ch & A_COLOR)
+ return FALSE;
+#ifdef NCURSES_EXT_FUNCS
+ if (!SP->_default_color)
+ return FALSE;
+ if (SP->_default_fg != C_MASK || SP->_default_bg != C_MASK)
+ return FALSE;
+#endif
+ }
+ return ((ch & ~(NONBLANK_ATTR | A_COLOR)) == BLANK);
+}
+
/*
* Issue a given span of characters from an array.
* Must be functionally equivalent to:
*
* This code is optimized using ech and rep.
*/
-static int EmitRange(const chtype *ntext, int num)
+static int
+EmitRange(const chtype * ntext, int num)
{
- int i;
+ int i;
- if (erase_chars || repeat_char)
- {
- while (num > 0)
- {
- int runcount;
+ if (erase_chars || repeat_char) {
+ while (num > 0) {
+ int runcount;
chtype ntext0;
- while (num>1 && ntext[0]!=ntext[1])
- {
+ while (num > 1 && ntext[0] != ntext[1]) {
PutChar(ntext[0]);
ntext++;
num--;
}
ntext0 = ntext[0];
- if (num==1)
- {
+ if (num == 1) {
PutChar(ntext0);
return 0;
}
/*
* The cost expression in the middle isn't exactly right.
- * _cup_cost is an upper bound on the cost for moving to the
+ * _cup_ch_cost is an upper bound on the cost for moving to the
* end of the erased area, but not the cost itself (which we
* can't compute without emitting the move). This may result
* in erase_chars not getting used in some situations for
* which it would be marginally advantageous.
*/
if (erase_chars
- && runcount > SP->_ech_cost + SP->_cup_cost
- && can_clear_with(ntext0))
- {
+ && runcount > SP->_ech_cost + SP->_cup_ch_cost
+ && can_clear_with(ntext0)) {
UpdateAttrs(ntext0);
putp(tparm(erase_chars, runcount));
GoTo(SP->_cursrow, SP->_curscol + runcount);
else
return 1; /* cursor stays in the middle */
- }
- else if (repeat_char && runcount > SP->_rep_cost)
- {
+ } else if (repeat_char && runcount > SP->_rep_cost) {
bool wrap_possible = (SP->_curscol + runcount >= screen_columns);
int rep_count = runcount;
if (wrap_possible)
PutChar(ntext0);
- }
- else
- {
+ } else {
for (i = 0; i < runcount; i++)
PutChar(ntext[i]);
}
*
* Returns: same as EmitRange
*/
-static int PutRange(
- const chtype *otext,
- const chtype *ntext,
- int row,
- int first, int last)
+static int
+PutRange(
+ const chtype * otext,
+ const chtype * ntext,
+ int row,
+ int first, int last)
{
- int j, run;
- int cost = min(SP->_cup_ch_cost, SP->_hpa_ch_cost);
-
- TR(TRACE_CHARPUT, ("PutRange(%p, %p, %d, %d, %d)",
- otext, ntext, row, first, last));
-
- if (otext != ntext
- && (last-first+1) > cost) {
- for (j = first, run = 0; j <= last; j++) {
- if (otext[j] == ntext[j]) {
- run++;
- } else {
- if (run > cost) {
- int before_run = (j - run);
- EmitRange(ntext+first, before_run-first);
- GoTo(row, first = j);
- }
- run = 0;
- }
+ int j, run;
+
+ TR(TRACE_CHARPUT, ("PutRange(%p, %p, %d, %d, %d)",
+ otext, ntext, row, first, last));
+
+ if (otext != ntext
+ && (last - first + 1) > SP->_inline_cost) {
+ for (j = first, run = 0; j <= last; j++) {
+ if (otext[j] == ntext[j]) {
+ run++;
+ } else {
+ if (run > SP->_inline_cost) {
+ int before_run = (j - run);
+ EmitRange(ntext + first, before_run - first);
+ GoTo(row, first = j);
}
+ run = 0;
+ }
}
- return EmitRange(ntext + first, last-first+1);
+ }
+ return EmitRange(ntext + first, last - first + 1);
}
#if CC_HAS_INLINE_FUNCS
-static void callPutChar(chtype const ch)
+static void
+callPutChar(chtype const ch)
{
- PutChar(ch);
+ PutChar(ch);
}
#endif
+/* leave unbracketed here so 'indent' works */
#define MARK_NOCHANGE(win,row) \
- { \
win->_line[row].firstchar = _NOCHANGE; \
win->_line[row].lastchar = _NOCHANGE; \
- if_USE_SCROLL_HINTS(win->_line[row].oldindex = row); \
- }
+ if_USE_SCROLL_HINTS(win->_line[row].oldindex = row)
-int doupdate(void)
+int
+doupdate(void)
{
-int i;
-int nonempty;
+ int i;
+ int nonempty;
#if USE_TRACE_TIMES
-struct tms before, after;
+ struct tms before, after;
#endif /* USE_TRACE_TIMES */
- T((T_CALLED("doupdate()")));
+ T((T_CALLED("doupdate()")));
#ifdef TRACE
- if (_nc_tracing & TRACE_UPDATE)
- {
- if (curscr->_clear)
- _tracef("curscr is clear");
- else
- _tracedump("curscr", curscr);
- _tracedump("newscr", newscr);
- }
+ if (_nc_tracing & TRACE_UPDATE) {
+ if (curscr->_clear)
+ _tracef("curscr is clear");
+ else
+ _tracedump("curscr", curscr);
+ _tracedump("newscr", newscr);
+ }
#endif /* TRACE */
- _nc_signal_handler(FALSE);
+ _nc_signal_handler(FALSE);
- if (SP->_fifohold)
- SP->_fifohold--;
+ if (SP->_fifohold)
+ SP->_fifohold--;
#if USE_SIZECHANGE
- if (SP->_endwin || SP->_sig_winch)
- {
- /*
- * This is a transparent extension: XSI does not address it,
- * and applications need not know that ncurses can do it.
- *
- * Check if the terminal size has changed while curses was off
- * (this can happen in an xterm, for example), and resize the
- * ncurses data structures accordingly.
- */
- _nc_update_screensize();
- }
+ if (SP->_endwin || SP->_sig_winch) {
+ /*
+ * This is a transparent extension: XSI does not address it,
+ * and applications need not know that ncurses can do it.
+ *
+ * Check if the terminal size has changed while curses was off
+ * (this can happen in an xterm, for example), and resize the
+ * ncurses data structures accordingly.
+ */
+ _nc_update_screensize();
+ }
#endif
- if (SP->_endwin) {
+ if (SP->_endwin) {
- T(("coming back from shell mode"));
- reset_prog_mode();
+ T(("coming back from shell mode"));
+ reset_prog_mode();
- _nc_mvcur_resume();
- _nc_screen_resume();
- SP->_mouse_resume(SP);
-
- SP->_endwin = FALSE;
- }
+ _nc_mvcur_resume();
+ _nc_screen_resume();
+ SP->_mouse_resume(SP);
+ SP->_endwin = FALSE;
+ }
#if USE_TRACE_TIMES
- /* zero the metering machinery */
- _nc_outchars = 0;
- (void) times(&before);
+ /* zero the metering machinery */
+ _nc_outchars = 0;
+ (void) times(&before);
#endif /* USE_TRACE_TIMES */
- /*
- * 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
- * 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 change
- * appropriately (the end one, if we've gotten this far, is
- * guaranteed room for its cookie). If not, nuke the added
- * attributes out of the span.
- */
+ /*
+ * 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
+ * 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 change
+ * appropriately (the end one, if we've gotten this far, is
+ * guaranteed room for its cookie). If not, nuke the added
+ * attributes out of the span.
+ */
#if USE_XMC_SUPPORT
- if (magic_cookie_glitch > 0) {
- int j, k;
- attr_t rattr = A_NORMAL;
-
- for (i = 0; i < screen_lines; i++)
- for (j = 0; j < screen_columns; j++)
- {
- bool failed = FALSE;
- chtype turnon = AttrOf(newscr->_line[i].text[j]) & ~rattr;
-
- /* is an attribute turned on here? */
- if (turnon == 0) {
- rattr = AttrOf(newscr->_line[i].text[j]);
- continue;
- }
+ if (magic_cookie_glitch > 0) {
+ int j, k;
+ attr_t rattr = A_NORMAL;
- T(("At (%d, %d): from %s...", i, j, _traceattr(rattr)));
- T(("...to %s",_traceattr(turnon)));
+ for (i = 0; i < screen_lines; i++) {
+ for (j = 0; j < screen_columns; j++) {
+ bool failed = FALSE;
+ chtype turnon = AttrOf(newscr->_line[i].text[j]) & ~rattr;
- /*
- * If the attribute change location is a blank with a
- * "safe" attribute, undo the attribute turnon. This may
- * ensure there's enough room to set the attribute before
- * the first non-blank in the run.
- */
-#define SAFE(a) !((a) & (chtype)~NONBLANK_ATTR)
- if (TextOf(newscr->_line[i].text[j])==' ' && SAFE(turnon))
- {
- newscr->_line[i].text[j] &= ~turnon;
- continue;
- }
+ /* is an attribute turned on here? */
+ if (turnon == 0) {
+ rattr = AttrOf(newscr->_line[i].text[j]);
+ continue;
+ }
- /* check that there's enough room at start of span */
- for (k = 1; k <= magic_cookie_glitch; k++)
- if (j-k < 0
- || TextOf(newscr->_line[i].text[j-k]) != ' '
- || !SAFE(AttrOf(newscr->_line[i].text[j-k])))
- failed = TRUE;
- if (!failed)
- {
- bool end_onscreen = FALSE;
- int m, n = j;
-
- /* find end of span, if it's onscreen */
- for (m = i; m < screen_lines; m++)
- {
- for ( ; n < screen_columns; n++)
- {
- if (AttrOf(newscr->_line[m].text[n]) == rattr)
- {
- end_onscreen = TRUE;
- T(("Range attributed with %s ends at (%d, %d)",
- _traceattr(turnon),m,n));
- goto foundit;
- }
- }
- n = 0;
- }
- T(("Range attributed with %s ends offscreen",
- _traceattr(turnon)));
- foundit:;
-
- if (end_onscreen)
- {
- chtype *lastline = newscr->_line[m].text;
-
- /*
- * If there are safely-attributed blanks at the
- * end of the range, shorten the range. This will
- * help ensure that there is enough room at end
- * of span.
- */
- while (n >= 0
- && TextOf(lastline[n]) == ' '
- && SAFE(AttrOf(lastline[n])))
- lastline[n--] &= ~turnon;
-
- /* check that there's enough room at end of span */
- for (k = 1; k <= magic_cookie_glitch; k++)
- if (n + k >= screen_columns
- || TextOf(lastline[n + k]) != ' '
- || !SAFE(AttrOf(lastline[n+k])))
- failed = TRUE;
- }
- }
+ T(("At (%d, %d): from %s...", i, j, _traceattr(rattr)));
+ T(("...to %s", _traceattr(turnon)));
+
+ /*
+ * If the attribute change location is a blank with a
+ * "safe" attribute, undo the attribute turnon. This may
+ * ensure there's enough room to set the attribute before
+ * the first non-blank in the run.
+ */
+#define SAFE(a) (!((a) & (chtype)~NONBLANK_ATTR))
+ if (TextOf(newscr->_line[i].text[j]) == ' ' && SAFE(turnon)) {
+ newscr->_line[i].text[j] &= ~turnon;
+ continue;
+ }
- if (failed)
- {
- int p, q = j;
-
- T(("Clearing %s beginning at (%d, %d)",
- _traceattr(turnon), i, j));
-
- /* turn off new attributes over span */
- for (p = i; p < screen_lines; p++)
- {
- for ( ; q < screen_columns; q++)
- {
- if (AttrOf(newscr->_line[p].text[q]) == rattr)
- goto foundend;
- newscr->_line[p].text[q] &= ~turnon;
+ /* check that there's enough room at start of span */
+ for (k = 1; k <= magic_cookie_glitch; k++) {
+ if (j - k < 0
+ || TextOf(newscr->_line[i].text[j - k]) != ' '
+ || !SAFE(AttrOf(newscr->_line[i].text[j - k])))
+ failed = TRUE;
+ }
+ if (!failed) {
+ bool end_onscreen = FALSE;
+ int m, n = j;
+
+ /* find end of span, if it's onscreen */
+ for (m = i; m < screen_lines; m++) {
+ for (; n < screen_columns; n++) {
+ if (AttrOf(newscr->_line[m].text[n]) == rattr) {
+ end_onscreen = TRUE;
+ T(("Range attributed with %s ends at (%d, %d)",
+ _traceattr(turnon), m, n));
+ goto foundit;
}
- q = 0;
}
- foundend:;
+ n = 0;
}
- else
- {
- T(("Cookie space for %s found before (%d, %d)",
- _traceattr(turnon), i, j));
+ T(("Range attributed with %s ends offscreen",
+ _traceattr(turnon)));
+ foundit:;
+
+ if (end_onscreen) {
+ chtype *lastline = newscr->_line[m].text;
/*
- * back up the start of range so there's room
- * for cookies before the first nonblank character
+ * If there are safely-attributed blanks at the
+ * end of the range, shorten the range. This will
+ * help ensure that there is enough room at end
+ * of span.
*/
+ while (n >= 0
+ && TextOf(lastline[n]) == ' '
+ && SAFE(AttrOf(lastline[n])))
+ lastline[n--] &= ~turnon;
+
+ /* check that there's enough room at end of span */
for (k = 1; k <= magic_cookie_glitch; k++)
- newscr->_line[i].text[j-k] |= turnon;
+ if (n + k >= screen_columns
+ || TextOf(lastline[n + k]) != ' '
+ || !SAFE(AttrOf(lastline[n + k])))
+ failed = TRUE;
}
+ }
- rattr = AttrOf(newscr->_line[i].text[j]);
+ if (failed) {
+ int p, q = j;
+
+ T(("Clearing %s beginning at (%d, %d)",
+ _traceattr(turnon), i, j));
+
+ /* turn off new attributes over span */
+ for (p = i; p < screen_lines; p++) {
+ for (; q < screen_columns; q++) {
+ if (AttrOf(newscr->_line[p].text[q]) == rattr)
+ goto foundend;
+ newscr->_line[p].text[q] &= ~turnon;
+ }
+ q = 0;
+ }
+ foundend:;
+ } else {
+ T(("Cookie space for %s found before (%d, %d)",
+ _traceattr(turnon), i, j));
+
+ /*
+ * back up the start of range so there's room
+ * for cookies before the first nonblank character
+ */
+ for (k = 1; k <= magic_cookie_glitch; k++)
+ newscr->_line[i].text[j - k] |= turnon;
}
-#ifdef TRACE
- /* show altered highlights after magic-cookie check */
- if (_nc_tracing & TRACE_UPDATE)
- {
- _tracef("After magic-cookie check...");
- _tracedump("newscr", newscr);
+ rattr = AttrOf(newscr->_line[i].text[j]);
}
-#endif /* TRACE */
}
-#endif /* USE_XMC_SUPPORT */
-
- nonempty = 0;
- if (curscr->_clear || newscr->_clear) { /* force refresh ? */
- T(("clearing and updating from scratch"));
- ClrUpdate();
- curscr->_clear = FALSE; /* reset flag */
- newscr->_clear = FALSE; /* reset flag */
- } else {
- int changedlines = CHECK_INTERVAL;
- if(check_pending())
- goto cleanup;
+#ifdef TRACE
+ /* show altered highlights after magic-cookie check */
+ if (_nc_tracing & TRACE_UPDATE) {
+ _tracef("After magic-cookie check...");
+ _tracedump("newscr", newscr);
+ }
+#endif /* TRACE */
+ }
+#endif /* USE_XMC_SUPPORT */
- nonempty = min(screen_lines, newscr->_maxy+1);
+ nonempty = 0;
+ if (curscr->_clear || newscr->_clear) { /* force refresh ? */
+ T(("clearing and updating from scratch"));
+ ClrUpdate();
+ curscr->_clear = FALSE; /* reset flag */
+ newscr->_clear = FALSE; /* reset flag */
+ } else {
+ int changedlines = CHECK_INTERVAL;
- if (SP->_scrolling) {
- _nc_scroll_optimize();
- }
+ if (check_pending())
+ goto cleanup;
- nonempty = ClrBottom(nonempty);
+ nonempty = min(screen_lines, newscr->_maxy + 1);
- T(("Transforming lines, nonempty %d", nonempty));
- for (i = 0; i < nonempty; i++) {
- /*
- * Here is our line-breakout optimization.
- */
- if (changedlines == CHECK_INTERVAL)
- {
- if (check_pending())
- goto cleanup;
- changedlines = 0;
- }
+ if (SP->_scrolling) {
+ _nc_scroll_optimize();
+ }
- /*
- * newscr->line[i].firstchar is normally set
- * by wnoutrefresh. curscr->line[i].firstchar
- * is normally set by _nc_scroll_window in the
- * vertical-movement optimization code,
- */
- if (newscr->_line[i].firstchar != _NOCHANGE
- || curscr->_line[i].firstchar != _NOCHANGE)
- {
- TransformLine(i);
- changedlines++;
- }
+ nonempty = ClrBottom(nonempty);
- /* mark line changed successfully */
- if (i <= newscr->_maxy)
- MARK_NOCHANGE(newscr,i)
- if (i <= curscr->_maxy)
- MARK_NOCHANGE(curscr,i)
- }
+ T(("Transforming lines, nonempty %d", nonempty));
+ for (i = 0; i < nonempty; i++) {
+ /*
+ * Here is our line-breakout optimization.
+ */
+ if (changedlines == CHECK_INTERVAL) {
+ if (check_pending())
+ goto cleanup;
+ changedlines = 0;
+ }
+
+ /*
+ * newscr->line[i].firstchar is normally set
+ * by wnoutrefresh. curscr->line[i].firstchar
+ * is normally set by _nc_scroll_window in the
+ * vertical-movement optimization code,
+ */
+ if (newscr->_line[i].firstchar != _NOCHANGE
+ || curscr->_line[i].firstchar != _NOCHANGE) {
+ TransformLine(i);
+ changedlines++;
+ }
+
+ /* mark line changed successfully */
+ if (i <= newscr->_maxy) {
+ MARK_NOCHANGE(newscr, i)
+ }
+ if (i <= curscr->_maxy) {
+ MARK_NOCHANGE(curscr, i)
+ }
}
+ }
- /* put everything back in sync */
- for (i = nonempty; i <= newscr->_maxy; i++)
- MARK_NOCHANGE(newscr,i)
- for (i = nonempty; i <= curscr->_maxy; i++)
- MARK_NOCHANGE(curscr,i)
+ /* put everything back in sync */
+ for (i = nonempty; i <= newscr->_maxy; i++) {
+ MARK_NOCHANGE(newscr, i)
+ }
+ for (i = nonempty; i <= curscr->_maxy; i++) {
+ MARK_NOCHANGE(curscr, i)
+ }
- if (!newscr->_leaveok)
- {
- curscr->_curx = newscr->_curx;
- curscr->_cury = newscr->_cury;
+ if (!newscr->_leaveok) {
+ curscr->_curx = newscr->_curx;
+ curscr->_cury = newscr->_cury;
- GoTo(curscr->_cury, curscr->_curx);
- }
+ GoTo(curscr->_cury, curscr->_curx);
+ }
- cleanup:
- /*
- * Keep the physical screen in normal mode in case we get other
- * processes writing to the screen.
- */
- UpdateAttrs(A_NORMAL);
+ cleanup:
+ /*
+ * Keep the physical screen in normal mode in case we get other
+ * processes writing to the screen.
+ */
+ UpdateAttrs(A_NORMAL);
- _nc_flush();
- curscr->_attrs = newscr->_attrs;
-/* curscr->_bkgd = newscr->_bkgd; */
+ _nc_flush();
+ curscr->_attrs = newscr->_attrs;
#if USE_TRACE_TIMES
- (void) times(&after);
- TR(TRACE_TIMES, ("Update cost: %ld chars, %ld clocks system time, %ld clocks user time",
+ (void) times(&after);
+ TR(TRACE_TIMES,
+ ("Update cost: %ld chars, %ld clocks system time, %ld clocks user time",
_nc_outchars,
- after.tms_stime-before.tms_stime,
- after.tms_utime-before.tms_utime));
+ after.tms_stime - before.tms_stime,
+ after.tms_utime - before.tms_utime));
#endif /* USE_TRACE_TIMES */
- _nc_signal_handler(TRUE);
+ _nc_signal_handler(TRUE);
- returnCode(OK);
+ returnCode(OK);
}
/*
#define BCE_ATTRS (A_NORMAL|A_COLOR)
#define BCE_BKGD(win) (((win) == curscr ? stdscr : (win))->_bkgd)
-static inline chtype ClrBlank (WINDOW *win)
+static inline chtype
+ClrBlank(WINDOW *win)
{
-chtype blank = BLANK;
- if (back_color_erase)
- blank |= (BCE_BKGD(win) & BCE_ATTRS);
- return blank;
+ chtype blank = BLANK;
+ if (back_color_erase)
+ blank |= (BCE_BKGD(win) & BCE_ATTRS);
+ return blank;
}
/*
**
*/
-static void ClrUpdate(void)
+static void
+ClrUpdate(void)
{
- int i;
- chtype blank = ClrBlank(stdscr);
- int nonempty = min(screen_lines, newscr->_maxy+1);
+ int i;
+ chtype blank = ClrBlank(stdscr);
+ int nonempty = min(screen_lines, newscr->_maxy + 1);
- T(("ClrUpdate() called"));
+ T(("ClrUpdate() called"));
- ClearScreen(blank);
+ ClearScreen(blank);
- T(("updating screen from scratch"));
+ T(("updating screen from scratch"));
- nonempty = ClrBottom(nonempty);
+ nonempty = ClrBottom(nonempty);
- for (i = 0; i < nonempty; i++)
- TransformLine(i);
+ for (i = 0; i < nonempty; i++)
+ TransformLine(i);
}
/*
** Clear to end of current line, starting at the cursor position
*/
-static void ClrToEOL(chtype blank)
+static void
+ClrToEOL(chtype blank, bool needclear)
{
-int j;
-bool needclear = FALSE;
+ int j;
- for (j = SP->_curscol; j < screen_columns; j++)
- {
+ if (curscr != 0
+ && SP->_cursrow >= 0
+ && SP->_curscol >= 0) {
+ for (j = SP->_curscol; j < screen_columns; j++) {
chtype *cp = &(curscr->_line[SP->_cursrow].text[j]);
- if (*cp != blank)
- {
+ if (*cp != blank) {
*cp = blank;
needclear = TRUE;
}
}
+ } else {
+ needclear = TRUE;
+ }
- if (needclear)
- {
- UpdateAttrs(blank);
- TPUTS_TRACE("clr_eol");
- if (SP->_el_cost > (screen_columns - SP->_curscol))
- {
- int count = (screen_columns - SP->_curscol);
- while (count-- > 0)
- PutChar(blank);
- }
- else
- putp(clr_eol);
+ if (needclear) {
+ UpdateAttrs(blank);
+ TPUTS_TRACE("clr_eol");
+ if (SP->_el_cost > (screen_columns - SP->_curscol)) {
+ int count = (screen_columns - SP->_curscol);
+ while (count-- > 0)
+ PutChar(blank);
+ } else {
+ putp(clr_eol);
}
+ }
}
/*
** Clear to end of screen, starting at the cursor position
*/
-static void ClrToEOS(chtype blank)
+static void
+ClrToEOS(chtype blank)
{
-int row, col;
+ int row, col;
+
+ row = SP->_cursrow;
+ col = SP->_curscol;
+ {
UpdateAttrs(blank);
TPUTS_TRACE("clr_eos");
- row = SP->_cursrow;
- tputs(clr_eos, screen_lines-row, _nc_outch);
+ tputs(clr_eos, screen_lines - row, _nc_outch);
+ }
- for (col = SP->_curscol; col < screen_columns; col++)
- curscr->_line[row].text[col] = blank;
+ while (col < screen_columns)
+ curscr->_line[row].text[col++] = blank;
- for (row++; row < screen_lines; row++)
- {
- for (col = 0; col < screen_columns; col++)
- curscr->_line[row].text[col] = blank;
- }
+ for (row++; row < screen_lines; row++) {
+ for (col = 0; col < screen_columns; col++)
+ curscr->_line[row].text[col] = blank;
+ }
}
/*
* screen-update. Do this by scanning backwards through the lines in the
* screen, checking if each is blank, and one or more are changed.
*/
-static int ClrBottom(int total)
+static int
+ClrBottom(int total)
{
-static chtype *tstLine;
-static size_t lenLine;
-
-int row, col;
-int top = total;
-int last = min(screen_columns, newscr->_maxx+1);
-size_t length = sizeof(chtype) * last;
-chtype blank = newscr->_line[total-1].text[last-1]; /* lower right char */
-
- if(!clr_eos || !can_clear_with(blank))
- return total;
-
- if ((tstLine == 0) || (last > (int)lenLine)) {
- tstLine = typeRealloc(chtype, last, tstLine);
- if (tstLine != 0) {
- lenLine = last;
- for (col = 0; col < last; col++)
- tstLine[col] = blank;
- }
- }
+ int row;
+ int col;
+ int top = total;
+ int last = min(screen_columns, newscr->_maxx + 1);
+ chtype blank = ClrBlank(stdscr);
+ bool ok;
+
+ if (clr_eos && can_clear_with(blank)) {
+
+ for (row = total - 1; row >= 0; row--) {
+ for (col = 0, ok = TRUE; ok && col < last; col++) {
+ ok = (newscr->_line[row].text[col] == blank);
+ }
+ if (!ok) break;
- if (tstLine != 0) {
- for (row = total-1; row >= 0; row--) {
- if (memcmp(tstLine, newscr->_line[row].text, length))
- break;
- if (memcmp(tstLine, curscr->_line[row].text, length))
- top = row;
- }
+ for (col = 0; ok && col < last; col++) {
+ ok = (curscr->_line[row].text[col] == blank);
+ }
+ if (!ok) top = row;
+ }
- /* don't use clr_eos for just one line if clr_eol available */
- if (top < total-1 || (top < total && !clr_eol && !clr_bol)) {
- GoTo(top,0);
- ClrToEOS(blank);
- total = top;
- if (SP->oldhash && SP->newhash)
- {
- for (row = top; row < screen_lines; row++)
- SP->oldhash[row] = SP->newhash[row];
- }
- }
+ /* don't use clr_eos for just one line if clr_eol available */
+ if (top < total - 1 || (top < total && !clr_eol && !clr_bol)) {
+ GoTo(top, 0);
+ ClrToEOS(blank);
+ total = top;
+ if (SP->oldhash && SP->newhash) {
+ for (row = top; row < screen_lines; row++)
+ SP->oldhash[row] = SP->newhash[row];
+ }
}
-#if NO_LEAKS
- if (tstLine != 0)
- FreeAndNull(tstLine);
-#endif
- return total;
+ }
+ return total;
}
-
/*
** TransformLine(lineno)
**
** delete oLastChar - nLastChar spaces
*/
-static void TransformLine(int const lineno)
+static void
+TransformLine(int const lineno)
{
-int firstChar, oLastChar, nLastChar;
-chtype *newLine = newscr->_line[lineno].text;
-chtype *oldLine = curscr->_line[lineno].text;
-int n;
-bool attrchanged = FALSE;
-
- T(("TransformLine(%d) called", lineno));
-
- /* copy new hash value to old one */
- if (SP->oldhash && SP->newhash)
- SP->oldhash[lineno] = SP->newhash[lineno];
-
- if(ceol_standout_glitch && clr_eol) {
- firstChar = 0;
- while(firstChar < screen_columns) {
- if(AttrOf(newLine[firstChar]) != AttrOf(oldLine[firstChar]))
- attrchanged = TRUE;
- firstChar++;
+ int firstChar, oLastChar, nLastChar;
+ chtype *newLine = newscr->_line[lineno].text;
+ chtype *oldLine = curscr->_line[lineno].text;
+ int n;
+ bool attrchanged = FALSE;
+
+ T(("TransformLine(%d) called", lineno));
+
+ /* copy new hash value to old one */
+ if (SP->oldhash && SP->newhash)
+ SP->oldhash[lineno] = SP->newhash[lineno];
+
+#define ColorOf(n) ((n) & A_COLOR)
+#define unColor(n) ((n) & ALL_BUT_COLOR)
+ /*
+ * If we have colors, there is the possibility of having two color pairs
+ * that display as the same colors. For instance, Lynx does this. Check
+ * for this case, and update the old line with the new line's colors when
+ * they are equivalent.
+ */
+ if (SP->_coloron) {
+ chtype oldColor;
+ chtype newColor;
+ int oldPair;
+ int newPair;
+
+ for (n = 0; n < screen_columns; n++) {
+ if (newLine[n] != oldLine[n]) {
+ oldColor = ColorOf(oldLine[n]);
+ newColor = ColorOf(newLine[n]);
+ if (oldColor != newColor
+ && unColor(oldLine[n]) == unColor(newLine[n])) {
+ oldPair = PAIR_NUMBER(oldColor);
+ newPair = PAIR_NUMBER(newColor);
+ if (oldPair < COLOR_PAIRS
+ && newPair < COLOR_PAIRS
+ && SP->_color_pairs[oldPair] == SP->_color_pairs[newPair]) {
+ oldLine[n] &= ~A_COLOR;
+ oldLine[n] |= ColorOf(newLine[n]);
+ }
}
+ }
}
+ }
+ if (ceol_standout_glitch && clr_eol) {
firstChar = 0;
+ while (firstChar < screen_columns) {
+ if (AttrOf(newLine[firstChar]) != AttrOf(oldLine[firstChar]))
+ attrchanged = TRUE;
+ firstChar++;
+ }
+ }
- if (attrchanged) { /* we may have to disregard the whole line */
- GoTo(lineno, firstChar);
- ClrToEOL(ClrBlank(curscr));
- PutRange(oldLine, newLine, lineno, 0, (screen_columns-1));
+ firstChar = 0;
+
+ if (attrchanged) { /* we may have to disregard the whole line */
+ GoTo(lineno, firstChar);
+ ClrToEOL(ClrBlank(curscr), FALSE);
+ PutRange(oldLine, newLine, lineno, 0, (screen_columns - 1));
#if USE_XMC_SUPPORT
#define NEW(r,c) newscr->_line[r].text[c]
* will work properly only once, since we may overwrite a cookie in a
* following operation.
*/
- } else if (magic_cookie_glitch > 0) {
- GoTo(lineno, firstChar);
- for (n = 0; n < screen_columns; n++) {
- int m = n + magic_cookie_glitch;
-
- /* check for turn-on:
- * If we are writing an attributed blank, where the
- * previous cell is not attributed.
- */
- if (TextOf(newLine[n]) == ' '
- && ((n > 0
- && xmc_turn_on(newLine[n-1], newLine[n]))
- || (n == 0
- && lineno > 0
- && xmc_turn_on(NEW(lineno-1,screen_columns-1), newLine[n])))) {
- n = m;
- }
+ } else if (magic_cookie_glitch > 0) {
+ GoTo(lineno, firstChar);
+ for (n = 0; n < screen_columns; n++) {
+ int m = n + magic_cookie_glitch;
+
+ /* check for turn-on:
+ * If we are writing an attributed blank, where the
+ * previous cell is not attributed.
+ */
+ if (TextOf(newLine[n]) == ' '
+ && ((n > 0
+ && xmc_turn_on(newLine[n - 1], newLine[n]))
+ || (n == 0
+ && lineno > 0
+ && xmc_turn_on(NEW(lineno - 1, screen_columns - 1),
+ newLine[n])))) {
+ n = m;
+ }
- PutChar(newLine[n]);
+ PutChar(newLine[n]);
- /* check for turn-off:
- * If we are writing an attributed non-blank, where the
- * next cell is blank, and not attributed.
- */
- if (TextOf(newLine[n]) != ' '
- && ((n+1 < screen_columns
- && xmc_turn_off(newLine[n], newLine[n+1]))
- || (n+1 >= screen_columns
- && lineno+1 < screen_lines
- && xmc_turn_off(newLine[n], NEW(lineno+1,0))))) {
- n = m;
- }
+ /* check for turn-off:
+ * If we are writing an attributed non-blank, where the
+ * next cell is blank, and not attributed.
+ */
+ if (TextOf(newLine[n]) != ' '
+ && ((n + 1 < screen_columns
+ && xmc_turn_off(newLine[n], newLine[n + 1]))
+ || (n + 1 >= screen_columns
+ && lineno + 1 < screen_lines
+ && xmc_turn_off(newLine[n], NEW(lineno + 1, 0))))) {
+ n = m;
+ }
- }
+ }
#undef NEW
#endif
- } else {
- chtype blank;
+ } else {
+ chtype blank;
+
+ /* find the first differing character */
+ while (firstChar < screen_columns &&
+ newLine[firstChar] == oldLine[firstChar])
+ firstChar++;
+
+ /* if there wasn't one, we're done */
+ if (firstChar >= screen_columns)
+ return;
+
+ /* it may be cheap to clear leading whitespace with clr_bol */
+ if (clr_bol && can_clear_with(blank = newLine[0])) {
+ int oFirstChar, nFirstChar;
+
+ for (oFirstChar = 0; oFirstChar < screen_columns; oFirstChar++)
+ if (oldLine[oFirstChar] != blank)
+ break;
+ for (nFirstChar = 0; nFirstChar < screen_columns; nFirstChar++)
+ if (newLine[nFirstChar] != blank)
+ break;
+
+ if (nFirstChar > oFirstChar + SP->_el1_cost) {
+ if (nFirstChar >= screen_columns && SP->_el_cost <= SP->_el1_cost) {
+ GoTo(lineno, 0);
+ UpdateAttrs(blank);
+ TPUTS_TRACE("clr_eol");
+ putp(clr_eol);
+ } else {
+ GoTo(lineno, nFirstChar - 1);
+ UpdateAttrs(blank);
+ TPUTS_TRACE("clr_bol");
+ putp(clr_bol);
+ }
- /* find the first differing character */
- while (firstChar < screen_columns &&
- newLine[firstChar] == oldLine[firstChar])
- firstChar++;
+ while (firstChar < nFirstChar)
+ oldLine[firstChar++] = blank;
- /* if there wasn't one, we're done */
if (firstChar >= screen_columns)
- return;
-
- /* it may be cheap to clear leading whitespace with clr_bol */
- if (clr_bol && can_clear_with(blank=newLine[0]))
- {
- int oFirstChar, nFirstChar;
-
- for (oFirstChar = 0; oFirstChar < screen_columns; oFirstChar++)
- if (oldLine[oFirstChar] != blank)
- break;
- for (nFirstChar = 0; nFirstChar < screen_columns; nFirstChar++)
- if (newLine[nFirstChar] != blank)
- break;
-
- if (nFirstChar > oFirstChar + SP->_el1_cost)
- {
- if (nFirstChar >= screen_columns && SP->_el_cost <= SP->_el1_cost)
- {
- GoTo(lineno, 0);
- UpdateAttrs(blank);
- TPUTS_TRACE("clr_eol");
- putp(clr_eol);
- }
- else
- {
- GoTo(lineno, nFirstChar - 1);
- UpdateAttrs(blank);
- TPUTS_TRACE("clr_bol");
- putp(clr_bol);
- }
-
- while (firstChar < nFirstChar)
- oldLine[firstChar++] = blank;
-
- if (firstChar >= screen_columns)
- return;
- }
- }
+ return;
+ }
+ }
- blank = newLine[screen_columns-1];
+ blank = newLine[screen_columns - 1];
- if(!can_clear_with(blank))
- {
- /* find the last differing character */
- nLastChar = screen_columns - 1;
+ if (!can_clear_with(blank)) {
+ /* find the last differing character */
+ nLastChar = screen_columns - 1;
- while (nLastChar > firstChar
- && newLine[nLastChar] == oldLine[nLastChar])
- nLastChar--;
+ while (nLastChar > firstChar
+ && newLine[nLastChar] == oldLine[nLastChar])
+ nLastChar--;
- if (nLastChar >= firstChar) {
- GoTo(lineno, firstChar);
- PutRange(oldLine, newLine, lineno, firstChar, nLastChar);
- memcpy( oldLine + firstChar,
- newLine + firstChar,
- (nLastChar - firstChar + 1) * sizeof(chtype));
- }
- return;
- }
+ if (nLastChar >= firstChar) {
+ GoTo(lineno, firstChar);
+ PutRange(oldLine, newLine, lineno, firstChar, nLastChar);
+ memcpy(oldLine + firstChar,
+ newLine + firstChar,
+ (nLastChar - firstChar + 1) * sizeof(chtype));
+ }
+ return;
+ }
- /* find last non-blank character on old line */
- oLastChar = screen_columns - 1;
- while (oLastChar > firstChar && oldLine[oLastChar] == blank)
- oLastChar--;
-
- /* find last non-blank character on new line */
- nLastChar = screen_columns - 1;
- while (nLastChar > firstChar && newLine[nLastChar] == blank)
- nLastChar--;
-
- if((nLastChar == firstChar)
- && (SP->_el_cost < (oLastChar - nLastChar))) {
- GoTo(lineno, firstChar);
- if(newLine[firstChar] != blank )
- PutChar(newLine[firstChar]);
- ClrToEOL(blank);
- } else if( (nLastChar != oLastChar)
- && (newLine[nLastChar] != oldLine[oLastChar]
- || !(_nc_idcok && has_ic())) ) {
- GoTo(lineno, firstChar);
- if ((oLastChar - nLastChar) > SP->_el_cost) {
- if(PutRange(oldLine, newLine, lineno, firstChar, nLastChar))
- GoTo(lineno, nLastChar+1);
- ClrToEOL(blank);
- } else {
- n = max( nLastChar , oLastChar );
- PutRange(oldLine, newLine, lineno, firstChar, n);
- }
+ /* find last non-blank character on old line */
+ oLastChar = screen_columns - 1;
+ while (oLastChar > firstChar && oldLine[oLastChar] == blank)
+ oLastChar--;
+
+ /* find last non-blank character on new line */
+ nLastChar = screen_columns - 1;
+ while (nLastChar > firstChar && newLine[nLastChar] == blank)
+ nLastChar--;
+
+ if ((nLastChar == firstChar)
+ && (SP->_el_cost < (oLastChar - nLastChar))) {
+ GoTo(lineno, firstChar);
+ if (newLine[firstChar] != blank)
+ PutChar(newLine[firstChar]);
+ ClrToEOL(blank, FALSE);
+ } else if ((nLastChar != oLastChar)
+ && (newLine[nLastChar] != oldLine[oLastChar]
+ || !(_nc_idcok && has_ic()))) {
+ GoTo(lineno, firstChar);
+ if ((oLastChar - nLastChar) > SP->_el_cost) {
+ if (PutRange(oldLine, newLine, lineno, firstChar, nLastChar))
+ GoTo(lineno, nLastChar + 1);
+ ClrToEOL(blank, FALSE);
+ } else {
+ n = max(nLastChar, oLastChar);
+ PutRange(oldLine, newLine, lineno, firstChar, n);
+ }
+ } else {
+ int nLastNonblank = nLastChar;
+ int oLastNonblank = oLastChar;
+
+ /* find the last characters that really differ */
+ while (newLine[nLastChar] == oldLine[oLastChar]) {
+ if (nLastChar != 0
+ && oLastChar != 0) {
+ nLastChar--;
+ oLastChar--;
} else {
- int nLastNonblank = nLastChar;
- int oLastNonblank = oLastChar;
-
- /* find the last characters that really differ */
- while (newLine[nLastChar] == oldLine[oLastChar]) {
- if (nLastChar != 0
- && oLastChar != 0) {
- nLastChar--;
- oLastChar--;
- } else {
- break;
- }
- }
+ break;
+ }
+ }
- n = min(oLastChar, nLastChar);
- if (n >= firstChar) {
- GoTo(lineno, firstChar);
- PutRange(oldLine, newLine, lineno, firstChar, n);
- }
+ n = min(oLastChar, nLastChar);
+ if (n >= firstChar) {
+ GoTo(lineno, firstChar);
+ PutRange(oldLine, newLine, lineno, firstChar, n);
+ }
- if (oLastChar < nLastChar) {
- int m = max(nLastNonblank, oLastNonblank);
- GoTo(lineno, n+1);
- if (InsCharCost(nLastChar - oLastChar)
- > (m - n)) {
- PutRange(oldLine, newLine, lineno, n+1, m);
- } else {
- InsStr(&newLine[n+1], nLastChar - oLastChar);
- }
- } else if (oLastChar > nLastChar ) {
- GoTo(lineno, n+1);
- if (DelCharCost(oLastChar - nLastChar)
- > SP->_el_cost + nLastNonblank - (n+1)) {
- if(PutRange(oldLine, newLine, lineno,
- n+1, nLastNonblank))
- GoTo(lineno, nLastNonblank+1);
- ClrToEOL(blank);
- } else {
- /*
- * The delete-char sequence will
- * effectively shift in blanks from the
- * right margin of the screen. Ensure
- * that they are the right color by
- * setting the video attributes from
- * the last character on the row.
- */
- UpdateAttrs(blank);
- DelChar(oLastChar - nLastChar);
- }
- }
+ if (oLastChar < nLastChar) {
+ int m = max(nLastNonblank, oLastNonblank);
+ GoTo(lineno, n + 1);
+ if (InsCharCost(nLastChar - oLastChar)
+ > (m - n)) {
+ PutRange(oldLine, newLine, lineno, n + 1, m);
+ } else {
+ InsStr(&newLine[n + 1], nLastChar - oLastChar);
+ }
+ } else if (oLastChar > nLastChar) {
+ GoTo(lineno, n + 1);
+ if (DelCharCost(oLastChar - nLastChar)
+ > SP->_el_cost + nLastNonblank - (n + 1)) {
+ if (PutRange(oldLine, newLine, lineno,
+ n + 1, nLastNonblank))
+ GoTo(lineno, nLastNonblank + 1);
+ ClrToEOL(blank, FALSE);
+ } else {
+ /*
+ * The delete-char sequence will
+ * effectively shift in blanks from the
+ * right margin of the screen. Ensure
+ * that they are the right color by
+ * setting the video attributes from
+ * the last character on the row.
+ */
+ UpdateAttrs(blank);
+ DelChar(oLastChar - nLastChar);
}
+ }
}
+ }
- /* update the code's internal representation */
- if (screen_columns > firstChar)
- memcpy( oldLine + firstChar,
- newLine + firstChar,
- (screen_columns - firstChar) * sizeof(chtype));
+ /* update the code's internal representation */
+ if (screen_columns > firstChar)
+ memcpy(oldLine + firstChar,
+ newLine + firstChar,
+ (screen_columns - firstChar) * sizeof(chtype));
}
/*
**
*/
-static void ClearScreen(chtype blank)
+static void
+ClearScreen(chtype blank)
{
- int i, j;
+ int i, j;
+ bool fast_clear = (clear_screen || clr_eos || clr_eol);
+
+ T(("ClearScreen() called"));
- T(("ClearScreen() called"));
+#ifdef NCURSES_EXT_FUNCS
+ if (SP->_coloron
+ && !SP->_default_color) {
+ _nc_do_color(COLOR_PAIR(SP->_current_attr), 0, FALSE, _nc_outch);
+ if (!back_color_erase) {
+ fast_clear = FALSE;
+ }
+ }
+#endif
+ if (fast_clear) {
if (clear_screen) {
- UpdateAttrs(blank);
- TPUTS_TRACE("clear_screen");
- putp(clear_screen);
- SP->_cursrow = SP->_curscol = 0;
- position_check(SP->_cursrow, SP->_curscol, "ClearScreen");
+ UpdateAttrs(blank);
+ TPUTS_TRACE("clear_screen");
+ putp(clear_screen);
+ SP->_cursrow = SP->_curscol = 0;
+ position_check(SP->_cursrow, SP->_curscol, "ClearScreen");
} else if (clr_eos) {
- SP->_cursrow = SP->_curscol = -1;
- GoTo(0,0);
+ SP->_cursrow = SP->_curscol = -1;
+ GoTo(0, 0);
- UpdateAttrs(blank);
- TPUTS_TRACE("clr_eos");
- putp(clr_eos);
+ UpdateAttrs(blank);
+ TPUTS_TRACE("clr_eos");
+ putp(clr_eos);
} else if (clr_eol) {
- SP->_cursrow = SP->_curscol = -1;
+ SP->_cursrow = SP->_curscol = -1;
- for (i = 0; i < screen_lines; i++) {
- GoTo(i, 0);
- UpdateAttrs(blank);
- TPUTS_TRACE("clr_eol");
- putp(clr_eol);
- }
- GoTo(0,0);
- } else {
- T(("cannot clear screen"));
- return;
+ UpdateAttrs(blank);
+ for (i = 0; i < screen_lines; i++) {
+ GoTo(i, 0);
+ TPUTS_TRACE("clr_eol");
+ putp(clr_eol);
+ }
+ GoTo(0, 0);
}
-
+ } else {
+ UpdateAttrs(blank);
for (i = 0; i < screen_lines; i++) {
- for (j = 0; j < screen_columns; j++)
- curscr->_line[i].text[j] = blank;
+ GoTo(i, 0);
+ for (j = 0; j < screen_columns; j++)
+ PutChar(blank);
}
+ GoTo(0, 0);
+ }
- T(("screen cleared"));
+ for (i = 0; i < screen_lines; i++) {
+ for (j = 0; j < screen_columns; j++)
+ curscr->_line[i].text[j] = blank;
+ }
+
+ T(("screen cleared"));
}
/*
**
*/
-static void InsStr(chtype *line, int count)
+static void
+InsStr(chtype * line, int count)
{
- T(("InsStr(%p,%d) called", line, count));
-
- /* Prefer parm_ich as it has the smallest cost - no need to shift
- * the whole line on each character. */
- /* The order must match that of InsCharCost. */
- if (parm_ich) {
- TPUTS_TRACE("parm_ich");
- tputs(tparm(parm_ich, count), count, _nc_outch);
- while (count) {
- PutAttrChar(*line);
- line++;
- count--;
- }
- } else if (enter_insert_mode && exit_insert_mode) {
- TPUTS_TRACE("enter_insert_mode");
- putp(enter_insert_mode);
- while (count) {
- PutAttrChar(*line);
- if (insert_padding)
- {
- TPUTS_TRACE("insert_padding");
- putp(insert_padding);
- }
- line++;
- count--;
- }
- TPUTS_TRACE("exit_insert_mode");
- putp(exit_insert_mode);
- } else {
- while (count) {
- TPUTS_TRACE("insert_character");
- putp(insert_character);
- PutAttrChar(*line);
- if (insert_padding)
- {
- TPUTS_TRACE("insert_padding");
- putp(insert_padding);
- }
- line++;
- count--;
- }
+ T(("InsStr(%p,%d) called", line, count));
+
+ /* Prefer parm_ich as it has the smallest cost - no need to shift
+ * the whole line on each character. */
+ /* The order must match that of InsCharCost. */
+ if (parm_ich) {
+ TPUTS_TRACE("parm_ich");
+ tputs(tparm(parm_ich, count), count, _nc_outch);
+ while (count) {
+ PutAttrChar(*line);
+ line++;
+ count--;
}
- position_check(SP->_cursrow, SP->_curscol, "InsStr");
+ } else if (enter_insert_mode && exit_insert_mode) {
+ TPUTS_TRACE("enter_insert_mode");
+ putp(enter_insert_mode);
+ while (count) {
+ PutAttrChar(*line);
+ if (insert_padding) {
+ TPUTS_TRACE("insert_padding");
+ putp(insert_padding);
+ }
+ line++;
+ count--;
+ }
+ TPUTS_TRACE("exit_insert_mode");
+ putp(exit_insert_mode);
+ } else {
+ while (count) {
+ TPUTS_TRACE("insert_character");
+ putp(insert_character);
+ PutAttrChar(*line);
+ if (insert_padding) {
+ TPUTS_TRACE("insert_padding");
+ putp(insert_padding);
+ }
+ line++;
+ count--;
+ }
+ }
+ position_check(SP->_cursrow, SP->_curscol, "InsStr");
}
/*
**
*/
-static void DelChar(int count)
+static void
+DelChar(int count)
{
- T(("DelChar(%d) called, position = (%d,%d)", count, newscr->_cury, newscr->_curx));
+ int n;
- if (parm_dch) {
- TPUTS_TRACE("parm_dch");
- tputs(tparm(parm_dch, count), count, _nc_outch);
- } else {
- while (count--)
- {
- TPUTS_TRACE("delete_character");
- putp(delete_character);
- }
+ T(("DelChar(%d) called, position = (%d,%d)", count, newscr->_cury, newscr->_curx));
+
+ if (parm_dch) {
+ TPUTS_TRACE("parm_dch");
+ tputs(tparm(parm_dch, count), count, _nc_outch);
+ } else {
+ for (n = 0; n < count; n++) {
+ TPUTS_TRACE("delete_character");
+ putp(delete_character);
}
+ }
}
/*
** Emit a string without waiting for update.
*/
-void _nc_outstr(const char *str)
+void
+_nc_outstr(const char *str)
{
(void) putp(str);
_nc_flush();
*/
/* Try to scroll up assuming given csr (miny, maxy). Returns ERR on failure */
-static int scroll_csr_forward(int n, int top, int bot, int miny, int maxy, chtype blank)
+static int
+scroll_csr_forward(int n, int top, int bot, int miny, int maxy, chtype blank)
{
- int i;
+ int i, j;
- if (n == 1 && scroll_forward && top == miny && bot == maxy)
- {
+ if (n == 1 && scroll_forward && top == miny && bot == maxy) {
GoTo(bot, 0);
UpdateAttrs(blank);
TPUTS_TRACE("scroll_forward");
tputs(scroll_forward, 0, _nc_outch);
- }
- else if (n == 1 && delete_line && bot == maxy)
- {
+ } else if (n == 1 && delete_line && bot == maxy) {
GoTo(top, 0);
UpdateAttrs(blank);
TPUTS_TRACE("delete_line");
tputs(delete_line, 0, _nc_outch);
- }
- else if (parm_index && top == miny && bot == maxy)
- {
+ } else if (parm_index && top == miny && bot == maxy) {
GoTo(bot, 0);
UpdateAttrs(blank);
TPUTS_TRACE("parm_index");
tputs(tparm(parm_index, n, 0), n, _nc_outch);
- }
- else if (parm_delete_line && bot == maxy)
- {
+ } else if (parm_delete_line && bot == maxy) {
GoTo(top, 0);
UpdateAttrs(blank);
TPUTS_TRACE("parm_delete_line");
tputs(tparm(parm_delete_line, n, 0), n, _nc_outch);
- }
- else if (scroll_forward && top == miny && bot == maxy)
- {
+ } else if (scroll_forward && top == miny && bot == maxy) {
GoTo(bot, 0);
UpdateAttrs(blank);
- for (i = 0; i < n; i++)
- {
+ for (i = 0; i < n; i++) {
TPUTS_TRACE("scroll_forward");
tputs(scroll_forward, 0, _nc_outch);
}
- }
- else if (delete_line && bot == maxy)
- {
+ } else if (delete_line && bot == maxy) {
GoTo(top, 0);
UpdateAttrs(blank);
- for (i = 0; i < n; i++)
- {
+ for (i = 0; i < n; i++) {
TPUTS_TRACE("delete_line");
tputs(delete_line, 0, _nc_outch);
}
- }
- else
+ } else
return ERR;
+#ifdef NCURSES_EXT_FUNCS
+ if (FILL_BCE()) {
+ for (i = 0; i < n; i++) {
+ GoTo(bot - i, 0);
+ for (j = 0; j < screen_columns; j++)
+ PutChar(blank);
+ }
+ }
+#endif
return OK;
}
/* Try to scroll down assuming given csr (miny, maxy). Returns ERR on failure */
/* n > 0 */
-static int scroll_csr_backward(int n, int top, int bot, int miny, int maxy, chtype blank)
+static int
+scroll_csr_backward(int n, int top, int bot, int miny, int maxy, chtype blank)
{
- int i;
+ int i, j;
- if (n == 1 && scroll_reverse && top == miny && bot == maxy)
- {
+ if (n == 1 && scroll_reverse && top == miny && bot == maxy) {
GoTo(top, 0);
UpdateAttrs(blank);
TPUTS_TRACE("scroll_reverse");
tputs(scroll_reverse, 0, _nc_outch);
- }
- else if (n == 1 && insert_line && bot == maxy)
- {
+ } else if (n == 1 && insert_line && bot == maxy) {
GoTo(top, 0);
UpdateAttrs(blank);
TPUTS_TRACE("insert_line");
tputs(insert_line, 0, _nc_outch);
- }
- else if (parm_rindex && top == miny && bot == maxy)
- {
+ } else if (parm_rindex && top == miny && bot == maxy) {
GoTo(top, 0);
UpdateAttrs(blank);
TPUTS_TRACE("parm_rindex");
tputs(tparm(parm_rindex, n, 0), n, _nc_outch);
- }
- else if (parm_insert_line && bot == maxy)
- {
+ } else if (parm_insert_line && bot == maxy) {
GoTo(top, 0);
UpdateAttrs(blank);
TPUTS_TRACE("parm_insert_line");
tputs(tparm(parm_insert_line, n, 0), n, _nc_outch);
- }
- else if (scroll_reverse && top == miny && bot == maxy)
- {
+ } else if (scroll_reverse && top == miny && bot == maxy) {
GoTo(top, 0);
UpdateAttrs(blank);
- for (i = 0; i < n; i++)
- {
+ for (i = 0; i < n; i++) {
TPUTS_TRACE("scroll_reverse");
tputs(scroll_reverse, 0, _nc_outch);
}
- }
- else if (insert_line && bot == maxy)
- {
+ } else if (insert_line && bot == maxy) {
GoTo(top, 0);
UpdateAttrs(blank);
- for (i = 0; i < n; i++)
- {
+ for (i = 0; i < n; i++) {
TPUTS_TRACE("insert_line");
tputs(insert_line, 0, _nc_outch);
}
- }
- else
+ } else
return ERR;
+#ifdef NCURSES_EXT_FUNCS
+ if (FILL_BCE()) {
+ for (i = 0; i < n; i++) {
+ GoTo(top + i, 0);
+ for (j = 0; j < screen_columns; j++)
+ PutChar(blank);
+ }
+ }
+#endif
return OK;
}
/* scroll by using delete_line at del and insert_line at ins */
/* n > 0 */
-static int scroll_idl(int n, int del, int ins, chtype blank)
+static int
+scroll_idl(int n, int del, int ins, chtype blank)
{
int i;
- if(!((parm_delete_line || delete_line) && (parm_insert_line || insert_line)))
+ if (!((parm_delete_line || delete_line) && (parm_insert_line || insert_line)))
return ERR;
GoTo(del, 0);
UpdateAttrs(blank);
- if (n == 1 && delete_line)
- {
+ if (n == 1 && delete_line) {
TPUTS_TRACE("delete_line");
tputs(delete_line, 0, _nc_outch);
- }
- else if (parm_delete_line)
- {
+ } else if (parm_delete_line) {
TPUTS_TRACE("parm_delete_line");
tputs(tparm(parm_delete_line, n, 0), n, _nc_outch);
- }
- else /* if (delete_line) */
- {
- for (i = 0; i < n; i++)
- {
+ } else { /* if (delete_line) */
+ for (i = 0; i < n; i++) {
TPUTS_TRACE("delete_line");
tputs(delete_line, 0, _nc_outch);
}
GoTo(ins, 0);
UpdateAttrs(blank);
- if (n == 1 && insert_line)
- {
+ if (n == 1 && insert_line) {
TPUTS_TRACE("insert_line");
tputs(insert_line, 0, _nc_outch);
- }
- else if (parm_insert_line)
- {
+ } else if (parm_insert_line) {
TPUTS_TRACE("parm_insert_line");
tputs(tparm(parm_insert_line, n, 0), n, _nc_outch);
- }
- else /* if (insert_line) */
- {
- for (i = 0; i < n; i++)
- {
+ } else { /* if (insert_line) */
+ for (i = 0; i < n; i++) {
TPUTS_TRACE("insert_line");
tputs(insert_line, 0, _nc_outch);
}
return OK;
}
-int _nc_scrolln(int n, int top, int bot, int maxy)
+int
+_nc_scrolln(int n, int top, int bot, int maxy)
/* scroll region from top to bot by n lines */
{
- chtype blank=ClrBlank(stdscr);
+ chtype blank = ClrBlank(stdscr);
int i;
- bool cursor_saved=FALSE;
+ bool cursor_saved = FALSE;
int res;
TR(TRACE_MOVE, ("mvcur_scrolln(%d, %d, %d, %d)", n, top, bot, maxy));
}
#endif
- if (n > 0) /* scroll up (forward) */
- {
+ if (n > 0) { /* scroll up (forward) */
/*
* Explicitly clear if stuff pushed off top of region might
* be saved by the terminal.
*/
if (non_dest_scroll_region || (memory_above && top == 0)) {
- for (i = 0; i < n; i++)
- {
+ for (i = 0; i < n; i++) {
GoTo(i, 0);
- ClrToEOL(BLANK);
+ ClrToEOL(BLANK, FALSE);
}
}
res = scroll_csr_forward(n, top, bot, 0, maxy, blank);
- if (res == ERR && change_scroll_region)
- {
- if ((((n==1 && scroll_forward) || parm_index)
- && (SP->_cursrow == bot || SP->_cursrow == bot-1))
- && save_cursor && restore_cursor)
- {
- cursor_saved=TRUE;
+ if (res == ERR && change_scroll_region) {
+ if ((((n == 1 && scroll_forward) || parm_index)
+ && (SP->_cursrow == bot || SP->_cursrow == bot - 1))
+ && save_cursor && restore_cursor) {
+ cursor_saved = TRUE;
TPUTS_TRACE("save_cursor");
tputs(save_cursor, 0, _nc_outch);
}
TPUTS_TRACE("change_scroll_region");
tputs(tparm(change_scroll_region, top, bot), 0, _nc_outch);
- if (cursor_saved)
- {
+ if (cursor_saved) {
TPUTS_TRACE("restore_cursor");
tputs(restore_cursor, 0, _nc_outch);
- }
- else
- {
+ } else {
SP->_cursrow = SP->_curscol = -1;
}
}
if (res == ERR && _nc_idlok)
- res = scroll_idl(n, top, bot-n+1, blank);
- }
- else /* (n < 0) - scroll down (backward) */
- {
+ res = scroll_idl(n, top, bot - n + 1, blank);
+ } else { /* (n < 0) - scroll down (backward) */
/*
* Do explicit clear to end of region if it's possible that the
* terminal might hold on to stuff we push off the end.
*/
- if (non_dest_scroll_region || (memory_below && bot == maxy))
- {
- if (bot == maxy && clr_eos)
- {
+ if (non_dest_scroll_region || (memory_below && bot == maxy)) {
+ if (bot == maxy && clr_eos) {
GoTo(maxy + n, 0);
ClrToEOS(BLANK);
- }
- else if (clr_eol)
- {
- for (i = 0; i < -n; i++)
- {
+ } else if (clr_eol) {
+ for (i = 0; i < -n; i++) {
GoTo(maxy + n + i, 0);
- ClrToEOL(BLANK);
+ ClrToEOL(BLANK, FALSE);
}
}
}
res = scroll_csr_backward(-n, top, bot, 0, maxy, blank);
- if (res == ERR && change_scroll_region)
- {
- if (top != 0 && (SP->_cursrow == top || SP->_cursrow == top-1)
- && save_cursor && restore_cursor)
- {
- cursor_saved=TRUE;
+ if (res == ERR && change_scroll_region) {
+ if (top != 0 && (SP->_cursrow == top || SP->_cursrow == top - 1)
+ && save_cursor && restore_cursor) {
+ cursor_saved = TRUE;
TPUTS_TRACE("save_cursor");
tputs(save_cursor, 0, _nc_outch);
}
TPUTS_TRACE("change_scroll_region");
tputs(tparm(change_scroll_region, top, bot), 0, _nc_outch);
- if (cursor_saved)
- {
+ if (cursor_saved) {
TPUTS_TRACE("restore_cursor");
tputs(restore_cursor, 0, _nc_outch);
- }
- else
- {
+ } else {
SP->_cursrow = SP->_curscol = -1;
}
}
if (res == ERR && _nc_idlok)
- res = scroll_idl(-n, bot+n+1, top, blank);
+ res = scroll_idl(-n, bot + n + 1, top, blank);
}
if (res == ERR)
- return(ERR);
+ return (ERR);
_nc_scroll_window(curscr, n, top, bot, blank);
/* shift hash values too - they can be reused */
_nc_scroll_oldhash(n, top, bot);
- return(OK);
+ return (OK);
}
-
-void _nc_screen_resume()
+void
+_nc_screen_resume(void)
{
/* make sure terminal is in a sane known state */
SP->_current_attr = A_NORMAL;
putp(orig_pair);
if (exit_attribute_mode)
putp(exit_attribute_mode);
- else
- {
+ else {
/* turn off attributes */
if (exit_alt_charset_mode)
putp(exit_alt_charset_mode);
putp(auto_right_margin ? enter_am_mode : exit_am_mode);
}
-void _nc_screen_init()
+void
+_nc_screen_init(void)
{
_nc_screen_resume();
}
/* wrap up screen handling */
-void _nc_screen_wrap()
+void
+_nc_screen_wrap(void)
{
UpdateAttrs(A_NORMAL);
+#ifdef NCURSES_EXT_FUNCS
+ if (SP->_coloron
+ && !SP->_default_color) {
+ SP->_default_color = TRUE;
+ _nc_do_color(-1, 0, FALSE, _nc_outch);
+ SP->_default_color = FALSE;
+
+ mvcur(SP->_cursrow, SP->_curscol, screen_lines - 1, 0);
+ SP->_cursrow = screen_lines - 1;
+ SP->_curscol = 0;
+
+ ClrToEOL(BLANK, TRUE);
+ }
+#endif
}
#if USE_XMC_SUPPORT
-void _nc_do_xmc_glitch(attr_t previous)
+void
+_nc_do_xmc_glitch(attr_t previous)
{
- attr_t chg = XMC_CHANGES(previous ^ SP->_current_attr);
-
- while (chg != 0) {
- if (chg & 1) {
- SP->_curscol += magic_cookie_glitch;
- if (SP->_curscol >= SP->_columns)
- wrap_cursor();
- T(("bumped to %d,%d after cookie", SP->_cursrow, SP->_curscol));
- }
- chg >>= 1;
+ attr_t chg = XMC_CHANGES(previous ^ SP->_current_attr);
+
+ while (chg != 0) {
+ if (chg & 1) {
+ SP->_curscol += magic_cookie_glitch;
+ if (SP->_curscol >= SP->_columns)
+ wrap_cursor();
+ T(("bumped to %d,%d after cookie", SP->_cursrow, SP->_curscol));
}
+ chg >>= 1;
+ }
}
#endif /* USE_XMC_SUPPORT */
-# $Id: Makefile.in,v 1.28 1998/11/29 01:03:31 Rick.Ohnemus Exp $
+# $Id: Makefile.in,v 1.31 2000/05/28 01:40:32 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
LN_S = @LN_S@
CC = @CC@
+CPP = @CPP@
CFLAGS = @CFLAGS@
CPPFLAGS = @CPPFLAGS@ \
LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@
SHLIB_DIRS = -L../lib -L$(libdir)
-SHLIB_LIST = $(SHLIB_DIRS) -lncurses @SHLIB_LIST@
+SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@
MK_SHARED_LIB = @MK_SHARED_LIB@
../include/panel.h
################################################################################
-all install :: $(AUTO_SRC) $(LIBRARIES)
+all \
+libs \
+install :: $(AUTO_SRC) $(LIBRARIES)
sources: $(AUTO_SRC)
#include "panel.priv.h"
-#undef _nc_free_obscure
-void _nc_free_obscure(
- PANEL *pan)
- { /* void */ }
-
-#undef _nc_override
-void _nc_override(
- const PANEL *pan,
- int show)
- { /* void */ }
-
-#undef _nc_calculate_obscure
-void _nc_calculate_obscure(void)
- { /* void */ }
-
-#undef _nc_panel_is_linked
-bool _nc_panel_is_linked(
- const PANEL *pan)
- { return(*(bool *)0); }
-
-#undef _nc_panel_link_bottom
-void _nc_panel_link_bottom(
- PANEL *pan)
- { /* void */ }
/* ./p_above.c */
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_bottom.c,v 1.5 1999/09/29 15:22:32 juergen Exp $")
-
-/*+-------------------------------------------------------------------------
- __panel_link_bottom(pan) - link panel into stack at bottom
---------------------------------------------------------------------------*/
-static void
-panel_link_bottom(PANEL *pan)
-{
-#ifdef TRACE
- dStack("<lb%d>",1,pan);
- if(_nc_panel_is_linked(pan))
- return;
-#endif
-
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
-
- assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
-
- pan->below = _nc_bottom_panel;
- pan->above = _nc_bottom_panel->above;
- if (pan->above)
- pan->above->below = pan;
- _nc_bottom_panel->above = pan;
-
- dStack("<lb%d>",9,pan);
-}
+MODULE_ID("$Id: p_bottom.c,v 1.7 1999/11/25 13:49:26 juergen Exp $")
int
bottom_panel(PANEL *pan)
{
- if(!pan)
- return(ERR);
- if(Is_Bottom(pan))
- return(OK);
- dBug(("--> bottom_panel %s", USER_PTR(pan->user)));
- if(_nc_panel_is_linked(pan))
- (void)hide_panel(pan);
- panel_link_bottom(pan);
- return(OK);
+ int err = OK;
+
+ if (pan) {
+
+ if(!Is_Bottom(pan)) {
+
+ dBug(("--> bottom_panel %s", USER_PTR(pan->user)));
+
+ HIDE_PANEL(pan,err,FALSE);
+ assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
+
+ dStack("<lb%d>",1,pan);
+
+ pan->below = _nc_bottom_panel;
+ pan->above = _nc_bottom_panel->above;
+ if (pan->above)
+ pan->above->below = pan;
+ _nc_bottom_panel->above = pan;
+
+ dStack("<lb%d>",9,pan);
+ }
+ }
+ else
+ err = ERR;
+
+ return(err);
}
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_delete.c,v 1.2 1998/02/11 12:14:01 tom Exp $")
+MODULE_ID("$Id: p_delete.c,v 1.4 1999/11/25 13:49:26 juergen Exp $")
int
del_panel(PANEL *pan)
{
+ int err = OK;
if(pan)
{
dBug(("--> del_panel %s", USER_PTR(pan->user)));
- if(_nc_panel_is_linked(pan))
- (void)hide_panel(pan);
+ HIDE_PANEL(pan,err,FALSE);
free((void *)pan);
- return(OK);
}
- return(ERR);
+ else
+ err = ERR;
+ return(err);
}
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_hidden.c,v 1.3 1999/09/18 11:04:19 juergen Exp $")
+MODULE_ID("$Id: p_hidden.c,v 1.4 1999/11/22 18:02:41 juergen Exp $")
int
panel_hidden(const PANEL *pan)
{
if(!pan)
return(ERR);
- return(_nc_panel_is_linked(pan) ? FALSE : TRUE);
+ return(IS_LINKED(pan) ? FALSE : TRUE);
}
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_hide.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
-
-/*+-------------------------------------------------------------------------
- __panel_unlink(pan) - unlink panel from stack
---------------------------------------------------------------------------*/
-static void
-__panel_unlink(PANEL *pan)
-{
- PANEL *prev;
- PANEL *next;
-
-#ifdef TRACE
- dStack("<u%d>",1,pan);
- if(!_nc_panel_is_linked(pan))
- return;
-#endif
-
- PANEL_UPDATE(pan,(PANEL*)0);
-
- prev = pan->below;
- next = pan->above;
-
- if(prev)
- { /* if non-zero, we will not update the list head */
- prev->above = next;
- if(next)
- next->below = prev;
- }
- else if(next)
- next->below = prev;
- if(pan == _nc_bottom_panel)
- _nc_bottom_panel = next;
- if(pan == _nc_top_panel)
- _nc_top_panel = prev;
-
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
- dStack("<u%d>",9,pan);
-}
+MODULE_ID("$Id: p_hide.c,v 1.5 1999/11/25 13:49:26 juergen Exp $")
int
hide_panel(register PANEL *pan)
{
+ int err = OK;
+
if(!pan)
return(ERR);
dBug(("--> hide_panel %s", USER_PTR(pan->user)));
+ dStack("<u%d>",1,pan);
+
+ HIDE_PANEL(pan,err,TRUE);
- if(!_nc_panel_is_linked(pan))
- {
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
- return(ERR);
- }
+ dStack("<u%d>",9,pan);
- __panel_unlink(pan);
- return(OK);
+ return(err);
}
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_move.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
+MODULE_ID("$Id: p_move.c,v 1.5 1999/11/25 13:49:26 juergen Exp $")
int
move_panel(PANEL *pan, int starty, int startx)
{
- WINDOW *win;
-
if(!pan)
return(ERR);
- if(_nc_panel_is_linked(pan))
- PANEL_UPDATE(pan,(PANEL*)0);
- win = pan->win;
- if(mvwin(win,starty,startx))
+
+ if (IS_LINKED(pan))
+ PANEL_UPDATE(pan,(PANEL*)0, TRUE);
+
+ if (mvwin(pan->win,starty,startx))
return(ERR);
+
return(OK);
}
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_new.c,v 1.4 1999/09/29 15:22:32 juergen Exp $")
+MODULE_ID("$Id: p_new.c,v 1.5 1999/11/22 18:02:41 juergen Exp $")
+
+#ifdef TRACE
+static char* stdscr_id;
+static char* new_id;
+#endif
/*+-------------------------------------------------------------------------
Get root (i.e. stdscr's) panel.
pan->below = (PANEL*)0;
pan->above = (PANEL*)0;
#ifdef TRACE
- pan->user = "stdscr";
+ if (!stdscr_id)
+ stdscr_id = strdup("stdscr");
+ pan->user = stdscr_id;
#else
pan->user = (void*)0;
#endif
{
PANEL *pan = (PANEL*)0;
- (void)root_panel();
+ if (!win)
+ return(pan);
+
+ if (!_nc_stdscr_pseudo_panel)
+ (void)root_panel();
assert(_nc_stdscr_pseudo_panel);
if (!(win->_flags & _ISPAD) && (pan = (PANEL*)malloc(sizeof(PANEL))))
pan->above = (PANEL *)0;
pan->below = (PANEL *)0;
#ifdef TRACE
- pan->user = "new";
+ if (!new_id)
+ new_id = strdup("new");
+ pan->user = new_id;
#else
pan->user = (char *)0;
#endif
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_replace.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
+MODULE_ID("$Id: p_replace.c,v 1.5 1999/11/25 13:49:26 juergen Exp $")
int
replace_panel(PANEL *pan, WINDOW *win)
{
if(!pan)
return(ERR);
- if(_nc_panel_is_linked(pan))
- PANEL_UPDATE(pan,(PANEL*)0);
+
+ if (IS_LINKED(pan))
+ PANEL_UPDATE(pan,(PANEL*)0, TRUE);
+
pan->win = win;
+
return(OK);
}
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_show.c,v 1.5 1999/09/29 15:22:32 juergen Exp $")
-
-static void
-panel_link_top(PANEL *pan)
-{
-#ifdef TRACE
- dStack("<lt%d>",1,pan);
- if(_nc_panel_is_linked(pan))
- return;
-#endif
-
- assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
-
- pan->above = (PANEL *)0;
- pan->below = (PANEL *)0;
-
- _nc_top_panel->above = pan;
- pan->below = _nc_top_panel;
- _nc_top_panel = pan;
-
- dStack("<lt%d>",9,pan);
-}
+MODULE_ID("$Id: p_show.c,v 1.7 1999/11/25 13:49:26 juergen Exp $")
int
show_panel(PANEL *pan)
-{
+{
+ int err = OK;
+
if(!pan)
return(ERR);
dBug(("--> show_panel %s", USER_PTR(pan->user)));
- if(_nc_panel_is_linked(pan))
- (void)hide_panel(pan);
+ HIDE_PANEL(pan,err,FALSE);
+
+ dStack("<lt%d>",1,pan);
+ assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel);
- panel_link_top(pan);
+ _nc_top_panel->above = pan;
+ pan->below = _nc_top_panel;
+ pan->above = (PANEL *)0;
+ _nc_top_panel = pan;
+
+ dStack("<lt%d>",9,pan);
return(OK);
}
*/
#include "panel.priv.h"
-MODULE_ID("$Id: p_update.c,v 1.3 1999/09/29 15:22:32 juergen Exp $")
+MODULE_ID("$Id: p_update.c,v 1.5 1999/11/25 13:49:26 juergen Exp $")
void
update_panels(void)
pan = _nc_bottom_panel;
while(pan && pan->above)
{
- PANEL_UPDATE(pan,pan->above);
+ PANEL_UPDATE(pan,pan->above, FALSE);
pan = pan->above;
}
pan = _nc_bottom_panel;
while (pan)
{
- if (is_wintouched(pan->win))
- Wnoutrefresh(pan);
+ Wnoutrefresh(pan);
pan = pan->above;
}
}
-/* $Id: panel.priv.h,v 1.10 1999/09/29 15:21:58 juergen Exp $ */
+/* $Id: panel.priv.h,v 1.13 2000/01/15 20:39:53 juergen Exp $ */
#ifndef _PANEL_PRIV_H
#define _PANEL_PRIV_H
#define Is_Top(p) (((p)!=(PANEL*)0) && !EMPTY_STACK() && (_nc_top_panel==(p)))
#define Is_Pseudo(p) ((p) && ((p)==_nc_bottom_panel))
+/* borrowed from curses.priv.h */
+#define CHANGED_RANGE(line,start,end) \
+ if (line->firstchar == _NOCHANGE \
+ || line->firstchar > (start)) \
+ line->firstchar = start; \
+ if (line->lastchar == _NOCHANGE \
+ || line->lastchar < (end)) \
+ line->lastchar = end
+
/*+-------------------------------------------------------------------------
- _nc_panel_is_linked(pan) - check to see if panel is in the stack
+ IS_LINKED(pan) - check to see if panel is in the stack
--------------------------------------------------------------------------*/
/* This works! The only case where it would fail is, when the list has
only one element. But this could only be the pseudo panel at the bottom */
-#define _nc_panel_is_linked(p) ((((p)->above!=(PANEL*)0)||((p)->below!=(PANEL*)0)||((p)==_nc_bottom_panel)) ? TRUE : FALSE)
+#define IS_LINKED(p) (((p)->above || (p)->below ||((p)==_nc_bottom_panel)) ? TRUE : FALSE)
#define PSTARTX(pan) ((pan)->win->_begx)
-#define PENDX(pan) ((pan)->win->_begx + getmaxx((pan)->win))
+#define PENDX(pan) ((pan)->win->_begx + getmaxx((pan)->win) - 1)
#define PSTARTY(pan) ((pan)->win->_begy)
-#define PENDY(pan) ((pan)->win->_begy + getmaxy((pan)->win))
+#define PENDY(pan) ((pan)->win->_begy + getmaxy((pan)->win) - 1)
/*+-------------------------------------------------------------------------
PANELS_OVERLAPPED(pan1,pan2) - check panel overlapped
---------------------------------------------------------------------------*/
#define PANELS_OVERLAPPED(pan1,pan2) \
(( !(pan1) || !(pan2) || \
- PSTARTY(pan1) >= PENDY(pan2) || PENDY(pan1) <= PSTARTY(pan2) ||\
- PSTARTX(pan1) >= PENDX(pan2) || PENDX(pan1) <= PSTARTX(pan2) ) \
+ PSTARTY(pan1) > PENDY(pan2) || PENDY(pan1) < PSTARTY(pan2) ||\
+ PSTARTX(pan1) > PENDX(pan2) || PENDX(pan1) < PSTARTX(pan2) ) \
? FALSE : TRUE)
-#define PANEL_UPDATE(pan,panstart) { int y; PANEL* pan2 = panstart;\
- if (!pan2) {\
+/*+-------------------------------------------------------------------------
+ Compute the intersection rectangle of two overlapping rectangles
+---------------------------------------------------------------------------*/
+#define COMPUTE_INTERSECTION(pan1,pan2,ix1,ix2,iy1,iy2)\
+ ix1 = (PSTARTX(pan1) < PSTARTX(pan2)) ? PSTARTX(pan2) : PSTARTX(pan1);\
+ ix2 = (PENDX(pan1) < PENDX(pan2)) ? PENDX(pan1) : PENDX(pan2);\
+ iy1 = (PSTARTY(pan1) < PSTARTY(pan2)) ? PSTARTY(pan2) : PSTARTY(pan1);\
+ iy2 = (PENDY(pan1) < PENDY(pan2)) ? PENDY(pan1) : PENDY(pan2);\
+ assert((ix1<=ix2) && (iy1<=iy2));\
+
+
+/*+-------------------------------------------------------------------------
+ Walk through the panel stack starting at the given location and
+ check for intersections; overlapping panels are "touched", so they
+ are incrementally overwriting cells that should be hidden.
+ If the "touch" flag is set, the panel gets touched before it is
+ updated.
+---------------------------------------------------------------------------*/
+#define PANEL_UPDATE(pan,panstart,touch)\
+{ PANEL* pan2 = ((panstart) ? (panstart) : _nc_bottom_panel);\
+ if (touch)\
Touchpan(pan);\
- pan2 = _nc_bottom_panel;\
- }\
while(pan2) {\
if ((pan2 != pan) && PANELS_OVERLAPPED(pan,pan2)) {\
- for(y = PSTARTY(pan); y < PENDY(pan); y++) {\
- if( (y >= PSTARTY(pan2)) && (y < PENDY(pan2)) &&\
- ((is_linetouched(pan->win,y - PSTARTY(pan)) == TRUE)) )\
- Touchline(pan2,y - PSTARTY(pan2),1);\
+ int y,ix1,ix2,iy1,iy2;\
+ COMPUTE_INTERSECTION(pan,pan2,ix1,ix2,iy1,iy2);\
+ for(y = iy1; y <= iy2; y++) {\
+ if (is_linetouched(pan->win,y - PSTARTY(pan))) {\
+ struct ldat* line = &(pan2->win->_line[y - PSTARTY(pan2)]);\
+ CHANGED_RANGE(line,ix1-PSTARTX(pan2),ix2-PSTARTX(pan2));\
+ }\
}\
}\
pan2 = pan2->above;\
- }\
+ }\
+}
+
+/*+-------------------------------------------------------------------------
+ Remove panel from stack.
+---------------------------------------------------------------------------*/
+#define PANEL_UNLINK(pan,err) \
+{ err = ERR;\
+ if (pan) {\
+ if (IS_LINKED(pan)) {\
+ if ((pan)->below)\
+ (pan)->below->above = (pan)->above;\
+ if ((pan)->above)\
+ (pan)->above->below = (pan)->below;\
+ if ((pan) == _nc_bottom_panel) \
+ _nc_bottom_panel = (pan)->above;\
+ if ((pan) == _nc_top_panel) \
+ _nc_top_panel = (pan)->below;\
+ err = OK;\
+ }\
+ (pan)->above = (pan)->below = (PANEL*)0;\
+ }\
}
+
+#define HIDE_PANEL(pan,err,err_if_unlinked)\
+ if (IS_LINKED(pan)) {\
+ PANEL_UPDATE(pan,(PANEL*)0,TRUE);\
+ PANEL_UNLINK(pan,err);\
+ } \
+ else {\
+ if (err_if_unlinked)\
+ err = ERR;\
+ }
+
#endif /* _PANEL_PRIV_H */
#!/bin/sh
+# $Id: MKtermsort.sh,v 1.6 2000/01/25 11:35:36 tom Exp $
#
# MKtermsort.sh -- generate indirection vectors for the various sort methods
#
# The output of this script is C source for nine arrays that list three sort
# orders for each of the three different classes of terminfo capabilities.
#
+# keep the order independent of locale:
+LANGUAGE=C
+LC_ALL=C
+export LANGUAGE
+export LC_ALL
+#
AWK=${1-awk}
DATA=${2-../include/Caps}
echo "/*";
echo " * termsort.c --- sort order arrays for use by infocmp.";
echo " *";
-echo " * Note: this file is generated using termsort.sh, do not edit by hand.";
+echo " * Note: this file is generated using MKtermsort.sh, do not edit by hand.";
echo " */";
echo "static const int bool_terminfo_sort[] = {";
echo "};";
echo "";
-echo "static const int bool_from_termcap[] = {";
+echo "static const bool bool_from_termcap[] = {";
$AWK <$DATA '
-$3 == "bool" && substr($5, 1, 1) == "-" {print "0,\t/* ", $2, " */";}
-$3 == "bool" && substr($5, 1, 1) == "Y" {print "1,\t/* ", $2, " */";}
+$3 == "bool" && substr($5, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";}
+$3 == "bool" && substr($5, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";}
'
echo "};";
echo "";
-echo "static const int num_from_termcap[] = {";
+echo "static const bool num_from_termcap[] = {";
$AWK <$DATA '
-$3 == "num" && substr($5, 1, 1) == "-" {print "0,\t/* ", $2, " */";}
-$3 == "num" && substr($5, 1, 1) == "Y" {print "1,\t/* ", $2, " */";}
+$3 == "num" && substr($5, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";}
+$3 == "num" && substr($5, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";}
'
echo "};";
echo "";
-echo "static const int str_from_termcap[] = {";
+echo "static const bool str_from_termcap[] = {";
$AWK <$DATA '
-$3 == "str" && substr($5, 1, 1) == "-" {print "0,\t/* ", $2, " */";}
-$3 == "str" && substr($5, 1, 1) == "Y" {print "1,\t/* ", $2, " */";}
+$3 == "str" && substr($5, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";}
+$3 == "str" && substr($5, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";}
'
echo "};";
echo "";
-
-# $Id: Makefile.in,v 1.37 1998/05/31 00:07:33 tom Exp $
+# $Id: Makefile.in,v 1.41 2000/07/08 01:56:25 tom Exp $
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
LN_S = @LN_S@
CC = @CC@
+CPP = @CPP@
CFLAGS = @CFLAGS@
INCDIR = $(srcdir)/../include
CFLAGS_NORMAL = $(CCFLAGS)
CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE
CFLAGS_PROFILE = $(CCFLAGS) -pg
-CFLAGS_SHARED = $(CCFLAGS) # @CC_SHARED_OPTS@
+CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
TESTPROGS = mvcur$x tctest$x hardscroll$x hashmap$x
# Default library, for linking applications
-DEPS_CURSES = @LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
+DEPS_CURSES = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
################################################################################
all: $(AUTO_SRC) $(PROGS)
uninstall: uninstall.progs
# this line simplifies the configure-script
-install.libs:
+libs \
+install.libs \
uninstall.libs:
install.progs: $(PROGS) $(INSTALL_PREFIX)$(bindir)
/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+ * 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 *
#include "termsort.c" /* this C file is generated */
#include <parametrized.h> /* so is this */
-MODULE_ID("$Id: dump_entry.c,v 1.37 1999/03/14 12:29:30 tom Exp $")
+MODULE_ID("$Id: dump_entry.c,v 1.53 2000/04/15 21:23:30 tom Exp $")
#define INDENT 8
-
#define DISCARD(string) string = ABSENT_STRING
+#define PRINTF (void) printf
+
+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 tracelevel; /* level of debug output */
static bool pretty; /* true if we format if-then-else strings */
-static char *outbuf; /* the output-buffer */
-static size_t out_used; /* ...its current length */
-static size_t out_size; /* ...and its allocated length */
+static DYNBUF outbuf;
+static DYNBUF tmpbuf;
/* indirection pointers for implementing sort and display modes */
static const int *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 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;
#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 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
-void _nc_leaks_dump_entry(void)
+static void
+free_DYN(DYNBUF * p)
{
- if (outbuf != 0) {
- free(outbuf);
- outbuf = 0;
- }
+ 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
-NCURSES_CONST char *nametrans(const char *name)
+NCURSES_CONST char *
+nametrans(const char *name)
/* translate a capability name from termcap to terminfo */
{
- const struct name_table_entry *np;
+ const struct name_table_entry *np;
if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0)
- switch(np->nte_type)
- {
+ switch (np->nte_type) {
case BOOLEAN:
if (bool_from_termcap[np->nte_index])
- return(boolcodes[np->nte_index]);
+ return (boolcodes[np->nte_index]);
break;
case NUMBER:
if (num_from_termcap[np->nte_index])
- return(numcodes[np->nte_index]);
+ return (numcodes[np->nte_index]);
break;
case STRING:
if (str_from_termcap[np->nte_index])
- return(strcodes[np->nte_index]);
+ return (strcodes[np->nte_index]);
break;
}
- return(0);
+ return (0);
}
-void dump_init(const char *version, int mode, int sort, int twidth, int traceval, bool formatted)
+void
+dump_init(const char *version, int mode, int sort, int twidth, int traceval,
+ bool formatted)
/* set up for entry display */
{
width = twidth;
if (version == 0)
tversion = V_ALLCAPS;
else if (!strcmp(version, "SVr1") || !strcmp(version, "SVR1")
- || !strcmp(version, "Ultrix"))
+ || !strcmp(version, "Ultrix"))
tversion = V_SVR1;
else if (!strcmp(version, "HP"))
tversion = V_HPUX;
tversion = V_ALLCAPS;
/* implement display modes */
- switch (outform = mode)
- {
+ switch (outform = mode) {
case F_LITERAL:
case F_TERMINFO:
bool_names = boolnames;
}
/* implement sort modes */
- switch(sortmode = sort)
- {
+ switch (sortmode = sort) {
case S_NOSORT:
if (traceval)
(void) fprintf(stderr,
- "%s: sorting by term structure order\n", _nc_progname);
+ "%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);
+ "%s: sorting by terminfo name order\n", _nc_progname);
bool_indirect = bool_terminfo_sort;
num_indirect = num_terminfo_sort;
str_indirect = str_terminfo_sort;
case S_VARIABLE:
if (traceval)
(void) fprintf(stderr,
- "%s: sorting by C variable order\n", _nc_progname);
+ "%s: sorting by C variable order\n", _nc_progname);
bool_indirect = bool_variable_sort;
num_indirect = num_variable_sort;
str_indirect = str_variable_sort;
case S_TERMCAP:
if (traceval)
(void) fprintf(stderr,
- "%s: sorting by termcap name order\n", _nc_progname);
+ "%s: sorting by termcap name order\n", _nc_progname);
bool_indirect = bool_termcap_sort;
num_indirect = num_termcap_sort;
str_indirect = str_termcap_sort;
if (traceval)
(void) fprintf(stderr,
- "%s: width = %d, tversion = %d, outform = %d\n",
- _nc_progname, width, tversion, outform);
+ "%s: width = %d, tversion = %d, outform = %d\n",
+ _nc_progname, width, tversion, outform);
}
-static TERMTYPE *cur_type;
+static TERMTYPE *cur_type;
-static int dump_predicate(int type, int idx)
+static int
+dump_predicate(int type, int 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;
- }
+ 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 */
+ return (FALSE); /* pacify compiler */
}
-static void set_obsolete_termcaps(TERMTYPE *tp);
-static void repair_acsc(TERMTYPE *tp);
+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))
-static bool version_filter(int type, int idx)
+static bool
+version_filter(int type, int 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)
- {
+ switch (tversion) {
+ case V_ALLCAPS: /* SVr4, XSI Curses */
+ return (TRUE);
+
+ case V_SVR1: /* System V Release 1, Ultrix */
+ switch (type) {
case BOOLEAN:
/* below and including xon_xoff */
return ((idx <= 20) ? TRUE : FALSE);
break;
case V_HPUX: /* Hewlett-Packard */
- switch (type)
- {
+ switch (type) {
case BOOLEAN:
/* below and including xon_xoff */
return ((idx <= 20) ? TRUE : FALSE);
return ((idx <= 10) ? TRUE : FALSE);
case STRING:
if (idx <= 144) /* below and including prtr_non */
- return(TRUE);
+ return (TRUE);
else if (FNKEY(idx)) /* function keys */
- return(TRUE);
- else if (idx==147||idx==156||idx==157) /* plab_norm,label_on,label_off */
- return(TRUE);
+ return (TRUE);
+ else if (idx == 147 || idx == 156 || idx == 157) /* plab_norm,label_on,label_off */
+ return (TRUE);
else
- return(FALSE);
+ return (FALSE);
}
break;
case V_AIX: /* AIX */
- switch (type)
- {
+ switch (type) {
case BOOLEAN:
/* below and including xon_xoff */
return ((idx <= 20) ? TRUE : FALSE);
return ((idx <= 7) ? TRUE : FALSE);
case STRING:
if (idx <= 144) /* below and including prtr_non */
- return(TRUE);
+ return (TRUE);
else if (FNKEY(idx)) /* function keys */
- return(TRUE);
+ return (TRUE);
else
- return(FALSE);
+ return (FALSE);
}
break;
case V_BSD: /* BSD */
- switch (type)
- {
+ switch (type) {
case BOOLEAN:
return bool_from_termcap[idx];
case NUMBER:
break;
}
- return(FALSE); /* pacify the compiler */
+ return (FALSE); /* pacify the compiler */
}
-static
-void append_output (const char *src)
+static void
+force_wrap(void)
{
- if (src == 0) {
- out_used = 0;
- append_output("");
- } else {
- size_t need = strlen(src);
- size_t want = need + out_used + 1;
- if (want > out_size) {
- out_size += want; /* be generous */
- if (outbuf == 0)
- outbuf = malloc(out_size);
- else
- outbuf = realloc(outbuf, out_size);
- }
- (void)strcpy(outbuf + out_used, src);
- out_used += need;
- }
+ oldcol = column;
+ strcpy_DYN(&outbuf, trailer);
+ column = INDENT;
}
-static
-void force_wrap(void)
+static void
+wrap_concat(const char *src)
{
- oldcol = column;
- append_output(trailer);
- column = INDENT;
-}
+ int need = strlen(src);
+ int want = strlen(separator) + need;
-static
-void wrap_concat(const char *src)
-{
- int need = strlen(src);
- int want = strlen(separator) + need;
-
- if (column > INDENT
- && column + want > width) {
- force_wrap();
- }
- append_output(src);
- append_output(separator);
- column += need;
+ if (column > INDENT
+ && column + want > width) {
+ force_wrap();
+ }
+ strcpy_DYN(&outbuf, src);
+ strcpy_DYN(&outbuf, separator);
+ column += need;
}
#define IGNORE_SEP_TRAIL(first,last,sep_trail) \
* 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 int
+termcap_length(const char *src)
{
- static const char pattern[] = ":\\\n\t:";
+ static const char pattern[] = ":\\\n\t:";
- int len = 0;
- const char *const t = src + strlen(src);
+ int len = 0;
+ const char *const t = src + strlen(src);
- while (*src != '\0') {
- IGNORE_SEP_TRAIL(src, t, pattern);
- src++;
- len++;
- }
- return len;
+ while (*src != '\0') {
+ IGNORE_SEP_TRAIL(src, t, pattern);
+ src++;
+ len++;
+ }
+ return len;
}
#else
#define termcap_length(src) strlen(src)
#endif
-static char * fmt_complex(char *dst, char *src, int level)
+static char *
+fmt_complex(char *src, int level)
{
- int percent = 0;
- int n;
-
- dst += strlen(dst);
- while (*src != '\0') {
- switch (*src) {
- case '\\':
- percent = 0;
- *dst++ = *src++;
- break;
- case '%':
- percent = 1;
- break;
- case '?': /* "if" */
- case 't': /* "then" */
- case 'e': /* "else" */
- if (percent) {
- percent = 0;
- dst[-1] = '\n';
- for (n = 0; n <= level; n++)
- *dst++ = '\t';
- *dst++ = '%';
- *dst++ = *src;
- *dst = '\0';
- if (*src++ == '?') {
- src = fmt_complex(dst, src, level+1);
- dst += strlen(dst);
- } else if (level == 1) {
- _nc_warning("%%%c without %%?", *src);
- }
- continue;
- }
- break;
- case ';': /* "endif" */
- if (percent) {
- percent = 0;
- if (level > 1) {
- dst[-1] = '\n';
- for (n = 0; n < level; n++)
- *dst++ = '\t';
- *dst++ = '%';
- *dst++ = *src++;
- *dst = '\0';
- return src;
- }
- _nc_warning("%%; without %%?");
- }
- break;
- default:
- percent = 0;
- break;
+ int percent = 0;
+ int n;
+ bool if_then = strstr(src, "%?") != 0;
+ bool params = !if_then && (strlen(src) > 50) && (strstr(src, "%p") != 0);
+
+ while (*src != '\0') {
+ switch (*src) {
+ case '\\':
+ percent = 0;
+ strncpy_DYN(&tmpbuf, src++, 1);
+ break;
+ case '%':
+ percent = 1;
+ break;
+ case '?': /* "if" */
+ case 't': /* "then" */
+ case 'e': /* "else" */
+ if (percent) {
+ percent = 0;
+ tmpbuf.text[tmpbuf.used - 1] = '\n';
+ /* treat a "%e%?" as else-if, on the same level */
+ if (!strncmp(src, "e%?", 3)) {
+ for (n = 0; n < level; n++)
+ strncpy_DYN(&tmpbuf, "\t", 1);
+ strncpy_DYN(&tmpbuf, "%", 1);
+ strncpy_DYN(&tmpbuf, src, 3);
+ src += 3;
+ } else {
+ for (n = 0; n <= level; n++)
+ strncpy_DYN(&tmpbuf, "\t", 1);
+ strncpy_DYN(&tmpbuf, "%", 1);
+ strncpy_DYN(&tmpbuf, src, 1);
+ if (*src++ == '?') {
+ src = fmt_complex(src, level + 1);
+ } else if (level == 1) {
+ _nc_warning("%%%c without %%?", *src);
+ }
+ }
+ continue;
+ }
+ break;
+ case ';': /* "endif" */
+ if (percent) {
+ percent = 0;
+ if (level > 1) {
+ tmpbuf.text[tmpbuf.used - 1] = '\n';
+ for (n = 0; n < level; n++)
+ strncpy_DYN(&tmpbuf, "\t", 1);
+ strncpy_DYN(&tmpbuf, "%", 1);
+ strncpy_DYN(&tmpbuf, src++, 1);
+ return src;
}
- *dst++ = *src++;
+ _nc_warning("%%; without %%?");
+ }
+ break;
+ case 'p':
+ if (percent && params) {
+ tmpbuf.text[tmpbuf.used - 1] = '\n';
+ for (n = 0; n <= level; n++)
+ strncpy_DYN(&tmpbuf, "\t", 1);
+ strncpy_DYN(&tmpbuf, "%", 1);
+ }
+ percent = 0;
+ break;
+ default:
+ percent = 0;
+ break;
}
- *dst = '\0';
- return src;
+ strncpy_DYN(&tmpbuf, src++, 1);
+ }
+ return src;
}
-int fmt_entry(TERMTYPE *tterm,
- int (*pred)(int type, int idx),
- bool suppress_untranslatable,
- bool infodump,
- int numbers)
+int
+fmt_entry(TERMTYPE * tterm,
+ int (*pred) (int type, int idx),
+ bool suppress_untranslatable,
+ bool infodump,
+ int numbers)
{
-int i, j;
-char buffer[MAX_TERMINFO_LENGTH];
-NCURSES_CONST char *name;
-int predval, len;
-int num_bools = 0;
-int num_values = 0;
-int num_strings = 0;
-bool outcount = 0;
+ int i, j;
+ char buffer[MAX_TERMINFO_LENGTH];
+ NCURSES_CONST char *name;
+ int predval, len;
+ int num_bools = 0;
+ int num_values = 0;
+ int num_strings = 0;
+ bool outcount = 0;
#define WRAP_CONCAT \
wrap_concat(buffer); \
pred = dump_predicate;
}
- append_output(0);
- append_output(tterm->term_names);
- append_output(separator);
- column = out_used;
+ strcpy_DYN(&outbuf, 0);
+ strcpy_DYN(&outbuf, tterm->term_names);
+ strcpy_DYN(&outbuf, separator);
+ column = outbuf.used;
force_wrap();
- for_each_boolean(j,tterm) {
+ for_each_boolean(j, tterm) {
i = BoolIndirect(j);
- name = ExtBoolname(tterm,i,bool_names);
+ name = ExtBoolname(tterm, i, bool_names);
if (!version_filter(BOOLEAN, i))
continue;
- else if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
- && (OBSOLETE(name) && outform != F_LITERAL))
+ else if (isObsolete(outform, name))
continue;
predval = pred(BOOLEAN, i);
if (column != INDENT)
force_wrap();
- for_each_number(j,tterm) {
+ for_each_number(j, tterm) {
i = NumIndirect(j);
- name = ExtNumname(tterm,i,num_names);
+ name = ExtNumname(tterm, i, num_names);
if (!version_filter(NUMBER, i))
continue;
- else if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
- && (OBSOLETE(name) && outform != F_LITERAL))
+ else if (isObsolete(outform, name))
continue;
predval = pred(NUMBER, i);
force_wrap();
len += num_bools
- + num_values * 2
- + strlen(tterm->term_names) + 1;
+ + num_values * 2
+ + strlen(tterm->term_names) + 1;
if (len & 1)
- len++;
+ 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);
+ }
+ }
- repair_acsc(tterm);
for_each_string(j, tterm) {
i = StrIndirect(j);
- name = ExtStrname(tterm,i,str_names);
+ name = ExtStrname(tterm, i, str_names);
if (!version_filter(STRING, i))
continue;
- else if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
- && (OBSOLETE(name) && outform != F_LITERAL))
+ else if (isObsolete(outform, name))
continue;
/*
* for ich/ich1 to work. If they're not defined, force
* them to be output as defined and empty.
*/
- if (outform==F_TERMCAP)
- {
-#undef CUR
-#define CUR tterm->
- if (insert_character || parm_ich)
- {
+ if (outform == F_TERMCAP) {
+ if (insert_character || parm_ich) {
if (&tterm->Strings[i] == &enter_insert_mode
- && enter_insert_mode == ABSENT_STRING)
- {
+ && enter_insert_mode == ABSENT_STRING) {
(void) strcpy(buffer, "im=");
- goto catenate;
+ WRAP_CONCAT;
+ continue;
}
if (&tterm->Strings[i] == &exit_insert_mode
- && exit_insert_mode == ABSENT_STRING)
- {
+ && exit_insert_mode == ABSENT_STRING) {
(void) strcpy(buffer, "ei=");
- goto catenate;
+ WRAP_CONCAT;
+ continue;
}
}
-
- if (init_3string != 0
- && termcap_reset != 0
- && !strcmp(init_3string, termcap_reset))
- DISCARD(init_3string);
-
- if (reset_2string != 0
- && termcap_reset != 0
- && !strcmp(reset_2string, termcap_reset))
- DISCARD(reset_2string);
}
predval = pred(STRING, i);
buffer[0] = '\0';
+
if (predval != FAIL) {
if (tterm->Strings[i] != ABSENT_STRING
- && i + 1 > num_strings)
+ && i + 1 > num_strings)
num_strings = i + 1;
- if (!VALID_STRING(tterm->Strings[i]))
+
+ if (!VALID_STRING(tterm->Strings[i])) {
sprintf(buffer, "%s@", name);
- else if (outform == F_TERMCAP || outform == F_TCONVERR)
- {
- char *srccap = _nc_tic_expand(tterm->Strings[i], FALSE, numbers);
+ WRAP_CONCAT;
+ } else if (outform == F_TERMCAP || outform == F_TCONVERR) {
+ char *srccap = _nc_tic_expand(tterm->Strings[i], TRUE, numbers);
char *cv = _nc_infotocap(name, srccap, parametrized[i]);
- if (cv == 0)
- {
- if (outform == F_TCONVERR)
- sprintf(buffer, "%s=!!! %s WILL NOT CONVERT !!!", name, srccap);
- else if (suppress_untranslatable)
+ if (cv == 0) {
+ if (outform == F_TCONVERR) {
+ sprintf(buffer, "%s=!!! %s WILL NOT CONVERT !!!",
+ name, srccap);
+ } else if (suppress_untranslatable) {
continue;
- else
- sprintf(buffer, "..%s=%s", name, srccap);
- }
- else
+ } 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 += strlen(tterm->Strings[i]) + 1;
- }
- else
- {
- char *src = _nc_tic_expand(tterm->Strings[i], outform==F_TERMINFO, numbers);
- sprintf(buffer, "%s=", name);
- if (pretty && outform==F_TERMINFO)
- fmt_complex(buffer + strlen(buffer), src, 1);
- else
- strcat(buffer, src);
+ WRAP_CONCAT;
+ } else {
+ char *src = _nc_tic_expand(tterm->Strings[i],
+ 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 += strlen(tterm->Strings[i]) + 1;
+ wrap_concat(tmpbuf.text);
+ outcount = TRUE;
}
-
- catenate:
- WRAP_CONCAT;
}
}
len += num_strings * 2;
* 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 (memory_lock)
- {
+ if (tversion == V_HPUX) {
+ if (memory_lock) {
(void) sprintf(buffer, "meml=%s", memory_lock);
WRAP_CONCAT;
}
- if (memory_unlock)
- {
+ if (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];
+ } 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++)
- {
+ for (cp = acstrans; *cp; cp++) {
sp = strchr(acs_chars, *cp);
if (sp)
*tp++ = sp[1];
- else
- {
+ else {
box_ok = FALSE;
break;
}
}
tp[0] = '\0';
- if (box_ok)
- {
+ if (box_ok) {
(void) strcpy(buffer, "box1=");
- (void) strcat(buffer, _nc_tic_expand(boxchars, outform==F_TERMINFO, numbers));
+ (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)
- {
- j = out_used;
+ if (outcount) {
+ bool trimmed = FALSE;
+ j = outbuf.used;
if (j >= 2
- && outbuf[j-1] == '\t'
- && outbuf[j-2] == '\n') {
- out_used -= 2;
+ && outbuf.text[j - 1] == '\t'
+ && outbuf.text[j - 2] == '\n') {
+ outbuf.used -= 2;
+ trimmed = TRUE;
} else if (j >= 4
- && outbuf[j-1] == ':'
- && outbuf[j-2] == '\t'
- && outbuf[j-3] == '\n'
- && outbuf[j-4] == '\\') {
- out_used -= 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;
}
- outbuf[out_used] = '\0';
- column = oldcol;
}
-
#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, out_used, outbuf);
+ tterm->term_names, len, outbuf.used, outbuf.text);
#endif
/*
* Here's where we use infodump to trigger a more stringent length check
* It gives an idea of which entries are deadly to even *scan past*,
* as opposed to *use*.
*/
- return(infodump ? len : termcap_length(outbuf));
+ return (infodump ? len : termcap_length(outbuf.text));
}
-int dump_entry(TERMTYPE *tterm, bool limited, int numbers, int (*pred)(int type, int idx))
+int
+dump_entry(TERMTYPE * tterm, bool limited, int numbers, int (*pred) (int
+ type, int idx))
/* dump a single entry */
{
- int len, critlen;
- const char *legend;
- bool infodump;
+ int len, critlen;
+ const char *legend;
+ bool infodump;
- if (outform==F_TERMCAP || outform==F_TCONVERR)
- {
+ if (outform == F_TERMCAP || outform == F_TCONVERR) {
critlen = MAX_TERMCAP_LENGTH;
legend = "older termcap";
infodump = FALSE;
set_obsolete_termcaps(tterm);
- }
- else
- {
+ } else {
critlen = MAX_TERMINFO_LENGTH;
legend = "terminfo";
infodump = TRUE;
}
- if (((len = fmt_entry(tterm, pred, FALSE, infodump, numbers)) > critlen) && limited)
- {
- (void) printf("# (untranslatable capabilities removed to fit entry within %d bytes)\n",
- critlen);
- if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen)
- {
+ if (((len = fmt_entry(tterm, pred, FALSE, infodump, numbers)) > critlen)
+ && limited) {
+ PRINTF("# (untranslatable capabilities removed to fit entry within %d bytes)\n",
+ critlen);
+ if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen) {
/*
* We pick on sgr because it's a nice long string capability that
- * is really just an optimization hack.
+ * is really just an optimization hack. Another good candidate is
+ * acsc since it is both long and unused by BSD termcap.
*/
char *oldsgr = set_attributes;
+ char *oldacsc = acs_chars;
set_attributes = ABSENT_STRING;
- (void) printf("# (sgr removed to fit entry within %d bytes)\n",
- critlen);
- if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen)
- {
+ PRINTF("# (sgr removed to fit entry within %d bytes)\n",
+ critlen);
+ if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen) {
+ acs_chars = ABSENT_STRING;
+ PRINTF("# (acsc removed to fit entry within %d bytes)\n",
+ critlen);
+ }
+ if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen) {
int oldversion = tversion;
tversion = V_BSD;
- (void) printf("# (terminfo-only capabilities suppressed to fit entry within %d bytes)\n",
- critlen);
+ PRINTF("# (terminfo-only capabilities suppressed to fit entry within %d bytes)\n",
+ critlen);
- if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers)) > critlen)
- {
+ if ((len = fmt_entry(tterm, pred, TRUE, infodump, numbers))
+ > critlen) {
(void) fprintf(stderr,
- "warning: %s entry is %d bytes long\n",
- _nc_first_name(tterm->term_names),
- len);
- (void) printf(
- "# WARNING: this entry, %d bytes long, may core-dump %s libraries!\n",
- len, legend);
+ "warning: %s entry is %d bytes long\n",
+ _nc_first_name(tterm->term_names),
+ len);
+ PRINTF(
+ "# WARNING: this entry, %d bytes long, may core-dump %s libraries!\n",
+ len, legend);
}
tversion = oldversion;
}
set_attributes = oldsgr;
+ acs_chars = oldacsc;
}
}
- (void) fputs(outbuf, stdout);
+ (void) fputs(outbuf.text, stdout);
return len;
}
-int dump_uses(const char *name, bool infodump)
+int
+dump_uses(const char *name, bool infodump)
/* dump "use=" clauses in the appropriate format */
{
char buffer[MAX_TERMINFO_LENGTH];
- append_output(0);
- (void)sprintf(buffer, "%s%s", infodump ? "use=" : "tc=", name);
+ strcpy_DYN(&outbuf, 0);
+ (void) sprintf(buffer, "%s%s", infodump ? "use=" : "tc=", name);
wrap_concat(buffer);
- (void) fputs(outbuf, stdout);
- return out_used;
+ (void) fputs(outbuf.text, stdout);
+ return outbuf.used;
}
-void compare_entry(void (*hook)(int t, int i, const char *name), TERMTYPE *tp GCC_UNUSED)
+void
+compare_entry(void (*hook) (int t, int i, const char *name), TERMTYPE * tp
+ GCC_UNUSED, bool quiet)
/* compare two entries */
{
- int i, j;
- NCURSES_CONST char * name;
+ int i, j;
+ NCURSES_CONST char *name;
- (void) fputs(" comparing booleans.\n", stdout);
- for_each_boolean(j,tp)
- {
+ if (!quiet)
+ fputs(" comparing booleans.\n", stdout);
+ for_each_boolean(j, tp) {
i = BoolIndirect(j);
- name = ExtBoolname(tp,i,bool_names);
+ name = ExtBoolname(tp, i, bool_names);
- if ((outform == F_LITERAL || outform == F_TERMINFO || outform == F_VARIABLE)
- && (OBSOLETE(name) && outform != F_LITERAL))
+ if (isObsolete(outform, name))
continue;
- (*hook)(BOOLEAN, i, name);
+ (*hook) (CMP_BOOLEAN, i, name);
}
- (void) fputs(" comparing numbers.\n", stdout);
- for_each_number(j,tp)
- {
+ if (!quiet)
+ fputs(" comparing numbers.\n", stdout);
+ for_each_number(j, tp) {
i = NumIndirect(j);
- name = ExtNumname(tp,i,num_names);
+ name = ExtNumname(tp, i, num_names);
- if ((outform==F_LITERAL || outform==F_TERMINFO || outform==F_VARIABLE)
- && (OBSOLETE(name) && outform != F_LITERAL))
+ if (isObsolete(outform, name))
continue;
- (*hook)(NUMBER, i, name);
+ (*hook) (CMP_NUMBER, i, name);
}
- (void) fputs(" comparing strings.\n", stdout);
- for_each_string(j,tp)
- {
+ if (!quiet)
+ fputs(" comparing strings.\n", stdout);
+ for_each_string(j, tp) {
i = StrIndirect(j);
- name = ExtStrname(tp,i,str_names);
+ name = ExtStrname(tp, i, str_names);
- if ((outform==F_LITERAL || outform==F_TERMINFO || outform==F_VARIABLE)
- && (OBSOLETE(name) && outform != F_LITERAL))
+ if (isObsolete(outform, name))
continue;
- (*hook)(STRING, i, name);
+ (*hook) (CMP_STRING, i, name);
}
+
+ /* (void) fputs(" comparing use entries.\n", stdout); */
+ (*hook) (CMP_USE, 0, "use");
+
}
#define NOTSET(s) ((s) == 0)
#undef CUR
#define CUR tp->
-static void set_obsolete_termcaps(TERMTYPE *tp)
+static void
+set_obsolete_termcaps(TERMTYPE * tp)
{
#include "capdefaults.c"
}
* Convert an alternate-character-set string to canonical form: sorted and
* unique.
*/
-static void repair_acsc(TERMTYPE *tp)
+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 = acs_chars[n];
- if (source >= target) {
- fix_needed = TRUE;
- break;
- }
- source = target;
- if (acs_chars[n+1])
- n++;
+ 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 = acs_chars[n];
+ if (source >= target) {
+ fix_needed = TRUE;
+ break;
}
- if (fix_needed) {
- memset(mapped, 0, sizeof(mapped));
- for (n = 0; acs_chars[n] != 0; n++) {
- source = acs_chars[n];
- if ((target = (unsigned char)acs_chars[n+1]) != 0) {
- mapped[source] = target;
- n++;
- } else {
- extra = source;
- }
+ 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 = acs_chars[n];
+ if ((target = (unsigned char) acs_chars[n + 1]) != 0) {
+ mapped[source] = target;
+ n++;
+ } else {
+ extra = source;
}
- for (n = m = 0; n < sizeof(mapped); n++) {
- if (mapped[n]) {
- acs_chars[m++] = n;
- acs_chars[m++] = mapped[n];
- }
+ }
+ for (n = m = 0; n < sizeof(mapped); n++) {
+ if (mapped[n]) {
+ acs_chars[m++] = n;
+ acs_chars[m++] = mapped[n];
}
- if (extra)
- acs_chars[m++] = extra; /* garbage in, garbage out */
- acs_chars[m] = 0;
}
+ if (extra)
+ acs_chars[m++] = extra; /* garbage in, garbage out */
+ acs_chars[m] = 0;
}
+ }
}
#define S_VARIABLE 3 /* sort by C variable names */
#define S_TERMCAP 4 /* sort by termcap names */
+/* capability types for the comparison hook */
+#define CMP_BOOLEAN 0 /* comparison on booleans */
+#define CMP_NUMBER 1 /* comparison on numerics */
+#define CMP_STRING 2 /* comparison on strings */
+#define CMP_USE 3 /* comparison on use capabilities */
+
extern NCURSES_CONST char *nametrans(const char *);
extern void dump_init(const char *, int, int, int, int, bool);
extern int fmt_entry(TERMTYPE *, int (*)(int, int), bool, bool, int);
extern int dump_entry(TERMTYPE *, bool, int, int (*)(int, int));
extern int dump_uses(const char *, bool);
-extern void compare_entry(void (*)(int, int, const char *), TERMTYPE *);
+extern void compare_entry(void (*)(int, int, const char *), TERMTYPE *, bool);
+extern void repair_acsc(TERMTYPE * tp);
#define FAIL -1
/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* infocmp.c -- decompile an entry, or compare two entries
* written by Eric S. Raymond
#include <term_entry.h>
#include <dump_entry.h>
-MODULE_ID("$Id: infocmp.c,v 1.44 1999/06/16 00:39:48 tom Exp $")
+MODULE_ID("$Id: infocmp.c,v 1.54 2000/03/19 02:56:14 tom Exp $")
#define L_CURL "{"
#define R_CURL "}"
#define MAXTERMS 32 /* max # terminal arguments we can handle */
+#define MAX_STRING 1024 /* maximum formatted string */
const char *_nc_progname = "infocmp";
-typedef char path[PATH_MAX];
+typedef char path[PATH_MAX];
/***************************************************************************
*
***************************************************************************/
static char *tname[MAXTERMS]; /* terminal type names */
-static TERMTYPE term[MAXTERMS]; /* terminfo entries */
+static ENTRY entries[MAXTERMS]; /* terminfo entries */
static int termcount; /* count of terminal entries */
+static bool limited = TRUE; /* "-r" option is not set */
+static bool quiet = 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 numbers = 0; /* format "%'char'" to/from "%{number}" */
-static int outform; /* output format */
-static int sortmode; /* sort_mode */
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;
#if NO_LEAKS
#undef ExitProgram
-static void ExitProgram(int code) GCC_NORETURN;
-static void ExitProgram(int code)
+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(&term[termcount]);
- _nc_leaks_dump_entry();
- _nc_free_and_exit(code);
+ while (termcount-- > 0)
+ _nc_free_termtype(&entries[termcount].tterm);
+ _nc_leaks_dump_entry();
+ _nc_free_and_exit(code);
}
#endif
-static char *canonical_name(char *ptr, char *buf)
+static char *
+canonical_name(char *ptr, char *buf)
/* extract the terminal type's primary name */
{
- char *bp;
+ char *bp;
(void) strcpy(buf, ptr);
- if ((bp = strchr(buf, '|')) != (char *)NULL)
+ if ((bp = strchr(buf, '|')) != 0)
*bp = '\0';
- return(buf);
+ return (buf);
}
/***************************************************************************
*
***************************************************************************/
-static int capcmp(const char *s, const char *t)
+static int
+capcmp(int idx, const char *s, const char *t)
/* capability comparison function */
{
if (!VALID_STRING(s) && !VALID_STRING(t))
- return(0);
+ return (s != t);
else if (!VALID_STRING(s) || !VALID_STRING(t))
- return(1);
+ return (1);
- if (ignorepads)
- return(_nc_capcmp(s, t));
+ if ((idx == acs_chars_index) || !ignorepads)
+ return (strcmp(s, t));
else
- return(strcmp(s, t));
+ return (_nc_capcmp(s, t));
}
-static int use_predicate(int type, int idx)
+static int
+use_predicate(int type, int idx)
/* predicate function to use for use decompilation */
{
- TERMTYPE *tp;
+ ENTRY *ep;
- switch(type)
+ switch (type) {
+ case BOOLEAN:
{
- case BOOLEAN: {
- int is_set = FALSE;
+ 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'.
- */
- for (tp = &term[1]; tp < term + termcount; tp++)
- if (tp->Booleans[idx]) {
- is_set = TRUE;
- break;
- }
- if (is_set != term->Booleans[idx])
- return(!is_set);
- else
- return(FAIL);
+ /*
+ * 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;
+ 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 (tp = &term[1]; tp < term + termcount; tp++)
- if (tp->Numbers[idx] >= 0) {
- value = tp->Numbers[idx];
- break;
- }
-
- if (value != term->Numbers[idx])
- return(value != ABSENT_NUMERIC);
- else
- return(FAIL);
+ /*
+ * 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;
}
- case STRING: {
- char *termstr, *usestr = ABSENT_STRING;
+ if (usestr == ABSENT_STRING && termstr == ABSENT_STRING)
+ return (FAIL);
+ else if (!usestr || !termstr || capcmp(idx, usestr, termstr))
+ return (TRUE);
+ else
+ return (FAIL);
+ }
+ }
- termstr = term->Strings[idx];
+ return (FALSE); /* pacify compiler */
+}
- /*
- * 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 (tp = &term[1]; tp < term + termcount; tp++)
- if (tp->Strings[idx])
- {
- usestr = tp->Strings[idx];
- break;
- }
-
- if (usestr == ABSENT_STRING && termstr == ABSENT_STRING)
- return(FAIL);
- else if (!usestr || !termstr || capcmp(usestr, termstr))
- return(TRUE);
- else
- return(FAIL);
+static bool
+useeq(ENTRY * e1, ENTRY * e2)
+/* are the use references in two entries equivalent? */
+{
+ int 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;
}
- }
- return(FALSE); /* pacify compiler */
+ if (!foundmatch)
+ return (FALSE);
+ }
+
+ return (TRUE);
}
-static bool entryeq(TERMTYPE *t1, TERMTYPE *t2)
-/* are two terminal types equal */
+static bool
+entryeq(TERMTYPE * t1, TERMTYPE * t2)
+/* are two entries equivalent? */
{
- int i;
+ int i;
for (i = 0; i < NUM_BOOLEANS(t1); i++)
if (t1->Booleans[i] != t2->Booleans[i])
- return(FALSE);
+ return (FALSE);
for (i = 0; i < NUM_NUMBERS(t1); i++)
if (t1->Numbers[i] != t2->Numbers[i])
- return(FALSE);
+ return (FALSE);
for (i = 0; i < NUM_STRINGS(t1); i++)
- if (capcmp(t1->Strings[i], t2->Strings[i]))
- return(FALSE);
+ if (capcmp(i, t1->Strings[i], t2->Strings[i]))
+ return (FALSE);
- return(TRUE);
+ return (TRUE);
}
#define TIC_EXPAND(result) _nc_tic_expand(result, outform==F_TERMINFO, numbers)
-static void compare_predicate(int type, int idx, const char *name)
-/* predicate function to use for entry difference reports */
+static void
+print_uses(ENTRY * ep, FILE * fp)
+/* print an entry's use references */
{
- register TERMTYPE *t1 = &term[0];
- register TERMTYPE *t2 = &term[1];
- char *s1, *s2;
+ int i;
- switch(type)
- {
- case BOOLEAN:
- switch(compare)
- {
- case C_DIFFERENCE:
- if (t1->Booleans[idx] != t2->Booleans[idx])
- (void) printf("\t%s: %c:%c.\n",
- name,
- t1->Booleans[idx] ? 'T' : 'F',
- t2->Booleans[idx] ? 'T' : 'F');
- break;
+ 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);
+ }
+}
- case C_COMMON:
- if (t1->Booleans[idx] && t2->Booleans[idx])
- (void) printf("\t%s= T.\n", name);
- break;
+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 ("?");
+ }
+}
- case C_NAND:
- if (!t1->Booleans[idx] && !t2->Booleans[idx])
- (void) printf("\t!%s.\n", name);
- break;
- }
- break;
+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;
+ }
+}
- case NUMBER:
- switch(compare)
- {
- case C_DIFFERENCE:
- if (t1->Numbers[idx] != t2->Numbers[idx])
- (void) printf("\t%s: %d:%d.\n",
- name, t1->Numbers[idx], t2->Numbers[idx]);
- 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));
+ }
+}
- case C_COMMON:
- if (t1->Numbers[idx]!=-1 && t2->Numbers[idx]!=-1
- && t1->Numbers[idx] == t2->Numbers[idx])
- (void) printf("\t%s= %d.\n", name, t1->Numbers[idx]);
- break;
+static void
+compare_predicate(int type, int 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_NAND:
- if (t1->Numbers[idx]==-1 && t2->Numbers[idx] == -1)
- (void) printf("\t!%s.\n", name);
- 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 STRING:
- s1 = t1->Strings[idx];
- s2 = t2->Strings[idx];
- switch(compare)
- {
- case C_DIFFERENCE:
- if (capcmp(s1, s2))
- {
- char buf1[BUFSIZ], buf2[BUFSIZ];
-
- if (s1 == (char *)NULL)
- (void) strcpy(buf1, "NULL");
- else
- {
- (void) strcpy(buf1, "'");
- (void) strcat(buf1, TIC_EXPAND(s1));
- (void) strcat(buf1, "'");
- }
-
- if (s2 == (char *)NULL)
- (void) strcpy(buf2, "NULL");
- else
- {
- (void) strcpy(buf2, "'");
- (void) strcat(buf2, TIC_EXPAND(s2));
- (void) strcat(buf2, "'");
- }
-
- if (strcmp(buf1, buf2))
- (void) printf("\t%s: %s, %s.\n",
- name, buf1, buf2);
- }
- 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 (s1 && s2 && !capcmp(s1, s2))
- (void) printf("\t%s= '%s'.\n", name, TIC_EXPAND(s1));
- 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 (!s1 && !s2)
- (void) printf("\t!%s.\n", name);
- break;
- }
- 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;
+ }
+ }
}
/***************************************************************************
*
***************************************************************************/
-typedef struct {const char *from; const char *to;} assoc;
+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 */
+ {"\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 */
+ {"\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 modes widely supported by emulators */
- {"\033=", "DECPAM"}, /* application keypad mode */
- {"\033>", "DECPNM"}, /* normal keypad mode */
- {"\033<", "DECANSI"}, /* enter ANSI mode */
+ {"\033=", "DECPAM"}, /* application keypad mode */
+ {"\033>", "DECPNM"}, /* normal keypad mode */
+ {"\033<", "DECANSI"}, /* enter ANSI mode */
- { (char *)0, (char *)0}
+ {(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}
+ {"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}
+ {"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 void analyze_string(const char *name, const char *cap, TERMTYPE *tp)
+static void
+analyze_string(const char *name, const char *cap, TERMTYPE * tp)
{
- char buf[MAX_TERMINFO_LENGTH];
- char buf2[MAX_TERMINFO_LENGTH];
- const char *sp, *ep;
- const assoc *ap;
+ char buf[MAX_TERMINFO_LENGTH];
+ char buf2[MAX_TERMINFO_LENGTH];
+ const char *sp, *ep;
+ const assoc *ap;
if (cap == ABSENT_STRING || cap == CANCELLED_STRING)
return;
(void) printf("%s: ", name);
buf[0] = '\0';
- for (sp = cap; *sp; sp++)
- {
- int i;
- size_t len = 0;
+ for (sp = cap; *sp; sp++) {
+ int i;
+ size_t len = 0;
const char *expansion = 0;
/* first, check other capabilities in this entry */
- for (i = 0; i < STRCOUNT; i++)
- {
- char *cp = tp->Strings[i];
+ 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)
- {
+ if (cp != ABSENT_STRING && cp != CANCELLED_STRING && cp[0] && cp
+ != cap) {
len = strlen(cp);
(void) strncpy(buf2, sp, len);
buf2[len] = '\0';
/* now check the standard capabilities */
if (!expansion)
- for (ap = std_caps; ap->from; ap++)
- {
+ for (ap = std_caps; ap->from; ap++) {
len = strlen(ap->from);
- if (strncmp(ap->from, sp, len) == 0)
- {
+ if (strncmp(ap->from, sp, len) == 0) {
expansion = ap->to;
break;
}
/* now check for private-mode sequences */
if (!expansion
- && sp[0] == '\033' && sp[1] == '[' && sp[2] == '?'
- && (len = strspn(sp + 3, "0123456789;"))
- && ((sp[3 + len] == 'h') || (sp[3 + len] == 'l')))
- {
- char buf3[MAX_TERMINFO_LENGTH];
+ && sp[0] == '\033' && sp[1] == '[' && sp[2] == '?'
+ && (len = strspn(sp + 3, "0123456789;"))
+ && ((sp[3 + len] == 'h') || (sp[3 + len] == 'l'))) {
+ char buf3[MAX_TERMINFO_LENGTH];
(void) strcpy(buf2, (sp[3 + len] == 'h') ? "DEC+" : "DEC-");
(void) strncpy(buf3, sp + 3, len);
ep = strtok(buf3, ";");
do {
- bool found = FALSE;
-
- for (ap = private_modes; ap->from; ap++)
- {
- size_t tlen = strlen(ap->from);
-
- if (strncmp(ap->from, ep, tlen) == 0)
- {
- (void) strcat(buf2, ap->to);
- found = TRUE;
- break;
- }
- }
-
- if (!found)
- (void) strcat(buf2, ep);
- (void) strcat(buf2, ";");
- } while
- ((ep = strtok((char *)NULL, ";")));
+ bool found = FALSE;
+
+ for (ap = private_modes; ap->from; ap++) {
+ size_t tlen = strlen(ap->from);
+
+ if (strncmp(ap->from, ep, tlen) == 0) {
+ (void) strcat(buf2, ap->to);
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (!found)
+ (void) strcat(buf2, ep);
+ (void) strcat(buf2, ";");
+ } while
+ ((ep = strtok((char *) 0, ";")));
buf2[strlen(buf2) - 1] = '\0';
expansion = buf2;
}
/* now check for ECMA highlight sequences */
if (!expansion
- && sp[0] == '\033' && sp[1] == '['
- && (len = strspn(sp + 2, "0123456789;"))
- && sp[2 + len] == 'm')
- {
- char buf3[MAX_TERMINFO_LENGTH];
+ && sp[0] == '\033' && sp[1] == '['
+ && (len = strspn(sp + 2, "0123456789;"))
+ && sp[2 + len] == 'm') {
+ char buf3[MAX_TERMINFO_LENGTH];
(void) strcpy(buf2, "SGR:");
(void) strncpy(buf3, sp + 2, len);
ep = strtok(buf3, ";");
do {
- bool found = FALSE;
-
- for (ap = ecma_highlights; ap->from; ap++)
- {
- size_t tlen = strlen(ap->from);
-
- if (strncmp(ap->from, ep, tlen) == 0)
- {
- (void) strcat(buf2, ap->to);
- found = TRUE;
- break;
- }
- }
-
- if (!found)
- (void) strcat(buf2, ep);
- (void) strcat(buf2, ";");
- } while
- ((ep = strtok((char *)NULL, ";")));
+ bool found = FALSE;
+
+ for (ap = ecma_highlights; ap->from; ap++) {
+ size_t tlen = strlen(ap->from);
+
+ if (strncmp(ap->from, ep, tlen) == 0) {
+ (void) strcat(buf2, ap->to);
+ found = TRUE;
+ break;
+ }
+ }
+
+ if (!found)
+ (void) strcat(buf2, ep);
+ (void) strcat(buf2, ";");
+ } while
+ ((ep = strtok((char *) 0, ";")));
buf2[strlen(buf2) - 1] = '\0';
expansion = buf2;
}
/* now check for scroll region reset */
- if (!expansion)
- {
+ if (!expansion) {
(void) sprintf(buf2, "\033[1;%dr", tp->Numbers[2]);
len = strlen(buf2);
if (strncmp(buf2, sp, len) == 0)
}
/* now check for home-down */
- if (!expansion)
- {
+ if (!expansion) {
(void) sprintf(buf2, "\033[%d;1H", tp->Numbers[2]);
len = strlen(buf2);
if (strncmp(buf2, sp, len) == 0)
- expansion = "LL";
+ expansion = "LL";
}
/* now look at the expansion we got, if any */
- if (expansion)
- {
+ if (expansion) {
(void) sprintf(buf + strlen(buf), "{%s}", expansion);
sp += len - 1;
continue;
- }
- else
- {
+ } else {
/* couldn't match anything */
buf2[0] = *sp;
buf2[1] = '\0';
*
***************************************************************************/
-static void file_comparison(int argc, char *argv[])
+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 *tails[MAXCOMPARE];
- ENTRY *qp, *rp;
- int i, n;
+ int filecount = 0;
+ ENTRY *heads[MAXCOMPARE];
+ ENTRY *tails[MAXCOMPARE];
+ ENTRY *qp, *rp;
+ int i, n;
- dump_init((char *)NULL, F_LITERAL, S_TERMINFO, 0, itrace, FALSE);
+ 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) == NULL)
+ 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 = (ENTRY *)NULL;
+ _nc_head = _nc_tail = 0;
/* parse entries out of the source file */
_nc_set_source(argv[n]);
_nc_read_entry_source(stdin, NULL, TRUE, FALSE, NULLHOOK);
if (itrace)
- (void) fprintf(stderr, "Resolving file %d...\n", n-0);
+ (void) fprintf(stderr, "Resolving file %d...\n", n - 0);
- /* do use resolution */
- if (!_nc_resolve_uses())
- {
+ /* maybe do use resolution */
+ if (!_nc_resolve_uses(!limited)) {
(void) fprintf(stderr,
- "There are unresolved use entries in %s:\n",
- argv[n]);
- for_entry_list(qp)
- if (qp->nuses)
- {
+ "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);
}
+ }
exit(EXIT_FAILURE);
}
if (itrace)
(void) fprintf(stderr, "Entries are now in core...\n");
- /*
- * The entry-matching loop. We're not using the use[]
- * slots any more (they got zeroed out by resolve_uses) so
- * we stash each entry's matches in the other file there.
- * Sigh, this is intrinsically quadratic.
- */
- for (qp = heads[0]; qp; qp = qp->next)
- {
+ /* 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))
- {
- /*
- * This is why the uses structure parent element is
- * (void *) -- so we can have either (char *) for
- * names or entry structure pointers in them and still
- * be type-safe.
- */
- if (qp->nuses < MAX_USES)
- qp->uses[qp->nuses].parent = (void *)rp;
- qp->nuses++;
-
- if (rp->nuses < MAX_USES)
- rp->uses[rp->nuses].parent = (void *)qp;
- rp->nuses++;
+ 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++;
}
}
if (itrace)
(void) fprintf(stderr, "Name matches are done...\n");
- for (qp = heads[0]; qp; qp = qp->next)
- if (qp->nuses > 1)
- {
+ 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->nuses,
- argv[1]);
- for (i = 0; i < qp->nuses; i++)
+ "%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(((ENTRY *)qp->uses[i].parent)->tterm.term_names));
+ "\t%s\n",
+ _nc_first_name((qp->crosslinks[i])->tterm.term_names));
}
- for (rp = heads[1]; rp; rp = rp->next)
- if (rp->nuses > 1)
- {
+ }
+
+ 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->nuses,
- argv[0]);
- for (i = 0; i < rp->nuses; i++)
+ "%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(((ENTRY *)rp->uses[i].parent)->tterm.term_names));
+ "\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->nuses == 0)
+ if (qp->ncrosslinks == 0)
(void) printf("\t%s\n",
- _nc_first_name(qp->tterm.term_names));
+ _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->nuses == 0)
+ if (rp->ncrosslinks == 0)
(void) printf("\t%s\n",
- _nc_first_name(rp->tterm.term_names));
+ _nc_first_name(rp->tterm.term_names));
(void) printf("The following entries are equivalent:\n");
- for (qp = heads[0]; qp; qp = qp->next)
- {
- rp = (ENTRY *)qp->uses[0].parent;
+ for (qp = heads[0]; qp; qp = qp->next) {
+ rp = qp->crosslinks[0];
- if (qp->nuses == 1 && entryeq(&qp->tterm, &rp->tterm))
- {
- char name1[NAMESIZE], name2[NAMESIZE];
+ if (qp->ncrosslinks == 1) {
+ rp = qp->crosslinks[0];
- (void) canonical_name(qp->tterm.term_names, name1);
- (void) canonical_name(rp->tterm.term_names, name2);
+ 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) printf("%s = %s\n", name1, name2);
+ (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)
- {
- rp = (ENTRY *)qp->uses[0].parent;
+ for (qp = heads[0]; qp; qp = qp->next) {
+ if (qp->ncrosslinks == 1) {
+ rp = qp->crosslinks[0];
#if NCURSES_XNAMES
- if (termcount > 1)
+ /* sorry - we have to do this on each pass */
_nc_align_termtype(&qp->tterm, &rp->tterm);
#endif
- if (qp->nuses == 1 && !entryeq(&qp->tterm, &rp->tterm))
- {
- char name1[NAMESIZE], name2[NAMESIZE];
+ if (!(entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp))) {
+ char name1[NAMESIZE], name2[NAMESIZE];
- term[0] = qp->tterm;
- term[1] = rp->tterm;
+ entries[0] = *qp;
+ entries[1] = *rp;
- (void) canonical_name(qp->tterm.term_names, name1);
- (void) canonical_name(rp->tterm.term_names, name2);
+ (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, "infocmp: dumping differences\n");
- (void) printf("comparing %s to %s.\n", name1, name2);
- compare_entry(compare_predicate, term);
- break;
+ switch (compare) {
+ case C_DIFFERENCE:
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: dumping differences\n");
+ (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,
- "infocmp: dumping common capabilities\n");
- (void) printf("comparing %s to %s.\n", name1, name2);
- compare_entry(compare_predicate, term);
- break;
+ case C_COMMON:
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: dumping common capabilities\n");
+ (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,
- "infocmp: dumping differences\n");
- (void) printf("comparing %s to %s.\n", name1, name2);
- compare_entry(compare_predicate, term);
- break;
+ case C_NAND:
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: dumping differences\n");
+ (void) printf("comparing %s to %s.\n", name1, name2);
+ compare_entry(compare_predicate, &entries->tterm, quiet);
+ break;
+ }
}
}
}
}
-static void usage(void)
+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)"
- ," -V print version"
- ," -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"
- ," -r with -C, output in termcap form"
- ," -s [d|i|l|c] sort fields"
- ," -u produce source with 'use='"
- ," -v number (verbose)"
- ," -w number (width)"
- };
- const size_t first = 3;
- const size_t last = sizeof(tbl)/sizeof(tbl[0]);
- 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]);
- }
- exit(EXIT_FAILURE);
+ 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)"
+ ," -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"
+ ," -u produce source with 'use='"
+ ," -v number (verbose)"
+ ," -w number (width)"
+ };
+ const size_t first = 3;
+ const size_t last = sizeof(tbl) / sizeof(tbl[0]);
+ 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]);
+ }
+ exit(EXIT_FAILURE);
}
-static char * name_initializer(const char *type)
+static char *
+name_initializer(const char *type)
{
static char *initializer;
char *s;
if (initializer == 0)
- initializer = malloc(strlen(term->term_names) + 20);
+ initializer = (char *) malloc(strlen(entries->tterm.term_names) + 20);
- (void) sprintf(initializer, "%s_data_%s", type, term->term_names);
- for (s = initializer; *s != 0 && *s != '|'; s++)
- {
+ (void) sprintf(initializer, "%s_data_%s", type, entries->tterm.term_names);
+ for (s = initializer; *s != 0 && *s != '|'; s++) {
if (!isalnum(*s))
*s = '_';
}
}
/* dump C initializers for the terminal type */
-static void dump_initializers(void)
+static void
+dump_initializers(TERMTYPE * term)
{
- int n;
+ int n;
const char *str = 0;
- int size;
+ int size;
- (void) printf("static bool %s[] = %s\n", name_initializer("bool"), L_CURL);
+ (void) printf("static char %s[] = %s\n", name_initializer("bool"), L_CURL);
- for_each_boolean(n,term)
- {
- switch((int)(term->Booleans[n]))
- {
+ for_each_boolean(n, term) {
+ switch ((int) (term->Booleans[n])) {
case TRUE:
str = "TRUE";
break;
break;
}
(void) printf("\t/* %3d: %-8s */\t%s,\n",
- n, ExtBoolname(term,n,boolnames), str);
+ 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])
- {
+ for_each_number(n, term) {
+ char buf[BUFSIZ];
+ switch (term->Numbers[n]) {
case ABSENT_NUMERIC:
str = "ABSENT_NUMERIC";
break;
str = buf;
break;
}
- (void) printf("\t/* %3d: %-8s */\t%s,\n", n, ExtNumname(term,n,numnames), str);
+ (void) printf("\t/* %3d: %-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)
- {
- char buf[BUFSIZ], *sp, *tp;
+ for_each_string(n, term) {
+ char buf[MAX_STRING], *sp, *tp;
if (term->Strings[n] == ABSENT_STRING)
str = "ABSENT_STRING";
else if (term->Strings[n] == CANCELLED_STRING)
str = "CANCELLED_STRING";
- else
- {
+ else {
tp = buf;
*tp++ = '"';
- for (sp = term->Strings[n]; *sp; sp++)
- {
- if (isascii(*sp) && isprint(*sp) && *sp !='\\' && *sp != '"')
+ for (sp = term->Strings[n];
+ *sp != 0 && (tp - buf) < MAX_STRING - 6;
+ sp++) {
+ if (isascii(*sp) && isprint(*sp) && *sp != '\\' && *sp != '"')
*tp++ = *sp;
- else
- {
+ else {
(void) sprintf(tp, "\\%03o", *sp & 0xff);
tp += 4;
}
str = buf;
}
#if NCURSES_XNAMES
- if (n == STRCOUNT)
- {
+ if (n == STRCOUNT) {
(void) printf("%s;\n", R_CURL);
- (void) printf("static char * %s[] = %s\n", name_initializer("string_ext"), L_CURL);
+ (void) printf("static char * %s[] = %s\n",
+ name_initializer("string_ext"), L_CURL);
}
#endif
- (void) printf("\t/* %3d: %-8s */\t%s,\n", n, ExtStrname(term,n,strnames), str);
+ (void) printf("\t/* %3d: %-8s */\t%s,\n", n, ExtStrname(term, n,
+ strnames), str);
}
(void) printf("%s;\n", R_CURL);
}
/* dump C initializers for the terminal type */
-static void dump_termtype(void)
+static void
+dump_termtype(TERMTYPE * term)
{
(void) printf("\t%s\n\t\t\"%s\",\n", L_CURL, term->term_names);
(void) printf("\t\t(char *)0,\t/* pointer to string table */\n");
(void) printf("\t\t(char *)0,\t/* pointer to extended string table */\n");
(void) printf("\t\t%s,\t/* ...corresponding names */\n",
(NUM_STRINGS(term) != STRCOUNT)
- ? name_initializer("string_ext")
- : "(char **)0");
+ ? 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 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("\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");
#endif /* NCURSES_XNAMES */
*
***************************************************************************/
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
{
- char *terminal, *firstdir, *restdir;
- /* Avoid "local data >32k" error with mwcc */
- /* Also avoid overflowing smaller stacks on systems like AmigaOS */
- path *tfile = malloc(sizeof(path)*MAXTERMS);
- int c, i, len;
- bool formatted = FALSE;
- bool filecompare = FALSE;
- int initdump = 0;
- bool init_analyze = FALSE;
- bool limited = TRUE;
-
- if ((terminal = getenv("TERM")) == NULL)
- {
- (void) fprintf(stderr,
- "infocmp: environment variable TERM not set\n");
- return EXIT_FAILURE;
- }
+ char *terminal, *firstdir, *restdir;
+ /* Avoid "local data >32k" error with mwcc */
+ /* Also avoid overflowing smaller stacks on systems like AmigaOS */
+ path *tfile = (path *) malloc(sizeof(path) * MAXTERMS);
+ int c, i, len;
+ bool formatted = FALSE;
+ bool filecompare = FALSE;
+ int initdump = 0;
+ bool init_analyze = FALSE;
+
+ if ((terminal = getenv("TERM")) == 0) {
+ (void) fprintf(stderr,
+ "infocmp: environment variable TERM not set\n");
+ return EXIT_FAILURE;
+ }
- /* where is the terminfo database location going to default to? */
- restdir = firstdir = 0;
+ /* where is the terminfo database location going to default to? */
+ restdir = firstdir = 0;
- while ((c = getopt(argc, argv, "deEcCfFGgIinlLprR:s:uv:Vw:A:B:1T")) != EOF)
- switch (c)
- {
- case 'd':
- compare = C_DIFFERENCE;
- break;
+ while ((c = getopt(argc, argv, "adeEcCfFGgIinlLpqrR:s:uv:Vw:A:B:1T")) != EOF)
+ switch (c) {
+#if NCURSES_XNAMES
+ case 'a':
+ _nc_disable_period = TRUE;
+ use_extended_names(TRUE);
+ break;
+#endif
+ case 'd':
+ compare = C_DIFFERENCE;
+ break;
- case 'e':
- initdump |= 1;
- break;
+ case 'e':
+ initdump |= 1;
+ break;
- case 'E':
- initdump |= 2;
- break;
+ case 'E':
+ initdump |= 2;
+ break;
- case 'c':
- compare = C_COMMON;
- break;
+ case 'c':
+ compare = C_COMMON;
+ break;
- case 'C':
- outform = F_TERMCAP;
- tversion = "BSD";
- if (sortmode == S_DEFAULT)
- sortmode = S_TERMCAP;
- break;
+ case 'C':
+ outform = F_TERMCAP;
+ tversion = "BSD";
+ if (sortmode == S_DEFAULT)
+ sortmode = S_TERMCAP;
+ break;
- case 'f':
- formatted = TRUE;
- break;
+ case 'f':
+ formatted = TRUE;
+ break;
- case 'G':
- numbers = 1;
- break;
+ case 'G':
+ numbers = 1;
+ break;
- case 'g':
- numbers = -1;
- break;
+ case 'g':
+ numbers = -1;
+ break;
- case 'F':
- filecompare = TRUE;
- break;
+ case 'F':
+ filecompare = TRUE;
+ break;
- case 'I':
- outform = F_TERMINFO;
- if (sortmode == S_DEFAULT)
- sortmode = S_VARIABLE;
- tversion = 0;
- break;
+ case 'I':
+ outform = F_TERMINFO;
+ if (sortmode == S_DEFAULT)
+ sortmode = S_VARIABLE;
+ tversion = 0;
+ break;
- case 'i':
- init_analyze = TRUE;
- break;
+ case 'i':
+ init_analyze = TRUE;
+ break;
- case 'l':
- outform = F_TERMINFO;
- break;
+ case 'l':
+ outform = F_TERMINFO;
+ break;
- case 'L':
- outform = F_VARIABLE;
- if (sortmode == S_DEFAULT)
- sortmode = S_VARIABLE;
- break;
+ case 'L':
+ outform = F_VARIABLE;
+ if (sortmode == S_DEFAULT)
+ sortmode = S_VARIABLE;
+ break;
- case 'n':
- compare = C_NAND;
- break;
+ case 'n':
+ compare = C_NAND;
+ break;
- case 'p':
- ignorepads = TRUE;
- break;
+ case 'p':
+ ignorepads = TRUE;
+ break;
- case 'r':
- tversion = 0;
- limited = FALSE;
- break;
+ case 'q':
+ quiet = TRUE;
+ s_absent = "-";
+ s_cancel = "@";
+ bool_sep = ", ";
+ break;
- case 'R':
- tversion = optarg;
- break;
+ case 'r':
+ tversion = 0;
+ limited = FALSE;
+ 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,
- "infocmp: unknown sort mode\n");
- return EXIT_FAILURE;
- }
- break;
+ case 'R':
+ tversion = optarg;
+ break;
- case 'u':
- compare = C_USEALL;
- 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,
+ "infocmp: unknown sort mode\n");
+ return EXIT_FAILURE;
+ }
+ break;
- case 'v':
- itrace = atoi(optarg);
- _nc_tracing = (1 << itrace) - 1;
- break;
+ case 'u':
+ compare = C_USEALL;
+ break;
- case 'V':
- (void) fputs(NCURSES_VERSION, stdout);
- putchar('\n');
- ExitProgram(EXIT_SUCCESS);
+ case 'v':
+ itrace = atoi(optarg);
+ set_trace_level(itrace);
+ break;
- case 'w':
- mwidth = atoi(optarg);
- break;
+ case 'V':
+ (void) fputs(NCURSES_VERSION, stdout);
+ putchar('\n');
+ ExitProgram(EXIT_SUCCESS);
- case 'A':
- firstdir = optarg;
- break;
+ case 'w':
+ mwidth = atoi(optarg);
+ break;
- case 'B':
- restdir = optarg;
- break;
+ case 'A':
+ firstdir = optarg;
+ break;
- case '1':
- mwidth = 0;
- break;
+ case 'B':
+ restdir = optarg;
+ break;
- case 'T':
- limited = FALSE;
- break;
- default:
- usage();
- }
+ case '1':
+ mwidth = 0;
+ break;
- /* by default, sort by terminfo name */
- if (sortmode == S_DEFAULT)
- sortmode = S_TERMINFO;
+ case 'T':
+ limited = FALSE;
+ break;
+ default:
+ usage();
+ }
- /* set up for display */
- dump_init(tversion, outform, sortmode, mwidth, itrace, formatted);
+ /* 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;
+ /* set up for display */
+ dump_init(tversion, outform, sortmode, mwidth, itrace, formatted);
- /* if user is after a comparison, make sure we have two entries */
- if (compare != C_DEFAULT && optind >= argc - 1)
- argv[argc++] = terminal;
+ /* make sure we have at least one terminal name to work with */
+ if (optind >= argc)
+ argv[argc++] = terminal;
- /* exactly two terminal names with no options means do -d */
- if (argc - optind == 2 && compare == C_DEFAULT)
- compare = C_DIFFERENCE;
+ /* if user is after a comparison, make sure we have two entries */
+ if (compare != C_DEFAULT && optind >= argc - 1)
+ argv[argc++] = terminal;
- if (!filecompare)
- {
- /* grab the entries */
- termcount = 0;
- for (; optind < argc; optind++)
- {
- if (termcount >= MAXTERMS)
- {
- (void) fprintf(stderr,
- "infocmp: too many terminal type arguments\n");
- return EXIT_FAILURE;
- }
- else
- {
- const char *directory = termcount ? restdir : firstdir;
- int status;
-
- tname[termcount] = argv[optind];
-
- if (directory)
- {
- (void) sprintf(tfile[termcount], "%s/%c/%s",
- directory,
- *argv[optind], argv[optind]);
- if (itrace)
- (void) fprintf(stderr,
- "infocmp: reading entry %s from file %s\n",
- argv[optind], tfile[termcount]);
-
- status = _nc_read_file_entry(tfile[termcount],
- &term[termcount]);
- }
- else
- {
- if (itrace)
- (void) fprintf(stderr,
- "infocmp: reading entry %s from system directories %s\n",
- argv[optind], tname[termcount]);
-
- status = _nc_read_entry(tname[termcount],
- tfile[termcount],
- &term[termcount]);
- directory = TERMINFO; /* for error message */
- }
+ /* 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++) {
+ if (termcount >= MAXTERMS) {
+ (void) fprintf(stderr,
+ "infocmp: too many terminal type arguments\n");
+ return EXIT_FAILURE;
+ } else {
+ const char *directory = termcount ? restdir : firstdir;
+ int status;
+
+ tname[termcount] = argv[optind];
- if (status <= 0)
- {
+ if (directory) {
+ (void) sprintf(tfile[termcount], "%s/%c/%s",
+ directory,
+ *argv[optind], argv[optind]);
+ if (itrace)
(void) fprintf(stderr,
- "infocmp: couldn't open terminfo file %s.\n",
- tfile[termcount]);
- return EXIT_FAILURE;
- }
- termcount++;
+ "infocmp: reading entry %s from file %s\n",
+ argv[optind], tfile[termcount]);
+
+ status = _nc_read_file_entry(tfile[termcount],
+ &entries[termcount].tterm);
+ } else {
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: reading entry %s from system directories %s\n",
+ argv[optind], tname[termcount]);
+
+ status = _nc_read_entry(tname[termcount],
+ tfile[termcount],
+ &entries[termcount].tterm);
+ directory = TERMINFO; /* for error message */
+ }
+
+ if (status <= 0) {
+ (void) fprintf(stderr,
+ "infocmp: couldn't open terminfo file %s.\n",
+ tfile[termcount]);
+ return EXIT_FAILURE;
}
+ repair_acsc(&entries[termcount].tterm);
+ termcount++;
}
+ }
#if NCURSES_XNAMES
- if (termcount > 1)
- _nc_align_termtype(&term[0], &term[1]);
+ 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();
- if (initdump & 2)
- dump_initializers();
- ExitProgram(EXIT_SUCCESS);
- }
+ /* 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);
+ ExitProgram(EXIT_SUCCESS);
+ }
- /* analyze the init strings */
- if (init_analyze)
- {
+ /* analyze the init strings */
+ if (init_analyze) {
#undef CUR
-#define CUR term[0].
- analyze_string("is1", init_1string, &term[0]);
- analyze_string("is2", init_2string, &term[0]);
- analyze_string("is3", init_3string, &term[0]);
- analyze_string("rs1", reset_1string, &term[0]);
- analyze_string("rs2", reset_2string, &term[0]);
- analyze_string("rs3", reset_3string, &term[0]);
- analyze_string("smcup", enter_ca_mode, &term[0]);
- analyze_string("rmcup", exit_ca_mode, &term[0]);
+#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
- ExitProgram(EXIT_SUCCESS);
- }
+ ExitProgram(EXIT_SUCCESS);
+ }
- /*
- * Here's where the real work gets done
- */
- switch (compare)
- {
- case C_DEFAULT:
- if (itrace)
- (void) fprintf(stderr,
- "infocmp: about to dump %s\n",
- tname[0]);
- (void) printf("#\tReconstructed via infocmp from file: %s\n",
- tfile[0]);
- len = dump_entry(&term[0], limited, numbers, NULL);
- putchar('\n');
- if (itrace)
- (void)fprintf(stderr, "infocmp: length %d\n", len);
- break;
+ /*
+ * Here's where the real work gets done
+ */
+ switch (compare) {
+ case C_DEFAULT:
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: about to dump %s\n",
+ tname[0]);
+ (void) printf("#\tReconstructed via infocmp from file: %s\n",
+ tfile[0]);
+ len = dump_entry(&entries[0].tterm, limited, numbers, NULL);
+ putchar('\n');
+ if (itrace)
+ (void) fprintf(stderr, "infocmp: length %d\n", len);
+ break;
- case C_DIFFERENCE:
- if (itrace)
- (void)fprintf(stderr, "infocmp: dumping differences\n");
- (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
- compare_entry(compare_predicate, term);
- break;
+ case C_DIFFERENCE:
+ if (itrace)
+ (void) fprintf(stderr, "infocmp: dumping differences\n");
+ (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,
- "infocmp: dumping common capabilities\n");
- (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
- compare_entry(compare_predicate, term);
- break;
+ case C_COMMON:
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: dumping common capabilities\n");
+ (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,
- "infocmp: dumping differences\n");
- (void) printf("comparing %s to %s.\n", tname[0], tname[1]);
- compare_entry(compare_predicate, term);
- break;
+ case C_NAND:
+ if (itrace)
+ (void) fprintf(stderr,
+ "infocmp: dumping differences\n");
+ (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, "infocmp: dumping use entry\n");
- len = dump_entry(&term[0], limited, numbers, use_predicate);
- for (i = 1; i < termcount; i++)
- len += dump_uses(tname[i], !(outform==F_TERMCAP || outform==F_TCONVERR));
- putchar('\n');
- if (itrace)
- (void)fprintf(stderr, "infocmp: length %d\n", len);
- break;
- }
+ case C_USEALL:
+ if (itrace)
+ (void) fprintf(stderr, "infocmp: dumping use entry\n");
+ len = dump_entry(&entries[0].tterm, limited, numbers, use_predicate);
+ for (i = 1; i < termcount; i++)
+ len += dump_uses(tname[i], !(outform == F_TERMCAP || outform
+ == F_TCONVERR));
+ putchar('\n');
+ if (itrace)
+ (void) fprintf(stderr, "infocmp: length %d\n", 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);
+ } 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);
- ExitProgram(EXIT_SUCCESS);
+ ExitProgram(EXIT_SUCCESS);
}
/* infocmp.c ends here */
+# $Id: modules,v 1.10 2000/01/02 01:30:45 tom Exp $
# Program modules (some are in ncurses lib!)
##############################################################################
-# Copyright (c) 1998 Free Software Foundation, Inc. #
+# 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"), #
#
@ base
-clear progs $(srcdir) ../include/term.h
+clear progs $(srcdir) ../include/term.h
tic progs $(srcdir) ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h
toe progs $(srcdir) ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h
-dump_entry progs $(srcdir) ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h ../include/parametrized.h termsort.c
+dump_entry progs $(srcdir) ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h ../include/parametrized.h $(INCDIR)/capdefaults.c termsort.c
infocmp progs $(srcdir) ../include/term.h $(INCDIR)/tic.h $(srcdir)/dump_entry.h
tput progs $(srcdir) ../include/term.h
tset progs $(srcdir) ../include/term.h
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
* Author: Thomas E. Dickey <dickey@clark.net> 1997,1998 *
****************************************************************************/
/*
- * $Id: progs.priv.h,v 1.19 1999/02/23 11:10:32 tom Exp $
+ * $Id: progs.priv.h,v 1.22 2000/04/08 23:47:39 tom Exp $
*
* progs.priv.h
*
#define EXIT_FAILURE 1
#endif
+#ifndef R_OK
+#define R_OK 4 /* Test for readable. */
+#endif
+
+#ifndef W_OK
+#define W_OK 2 /* Test for writable. */
+#endif
+
+#ifndef X_OK
+#define X_OK 1 /* Test for executable. */
+#endif
+
#ifndef F_OK
#define F_OK 0 /* Test for existence. */
#endif
/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
#include <dump_entry.h>
#include <term_entry.h>
-MODULE_ID("$Id: tic.c,v 1.52 1999/09/25 22:47:54 tom Exp $")
+MODULE_ID("$Id: tic.c,v 1.69 2000/04/08 23:53:49 tom Exp $")
const char *_nc_progname = "tic";
-static FILE *log_fp;
-static FILE *tmp_fp;
-static bool showsummary = FALSE;
-static const char *to_remove;
+static FILE *log_fp;
+static FILE *tmp_fp;
+static bool showsummary = FALSE;
+static const char *to_remove;
-static void (*save_check_termtype)(TERMTYPE *);
-static void check_termtype(TERMTYPE *tt);
+static void (*save_check_termtype) (TERMTYPE *);
+static void check_termtype(TERMTYPE * tt);
-static const char usage_string[] = "[-h] [-v[n]] [-e names] [-CILNRTcfrswx1] source-file\n";
+static const char usage_string[] = "[-h] [-v[n]] [-e names] [-CILNRTcfrswx1] source-file\n";
-static void cleanup(void)
+static void
+cleanup(void)
{
- if (tmp_fp != 0)
- fclose(tmp_fp);
- if (to_remove != 0) {
+ if (tmp_fp != 0)
+ fclose(tmp_fp);
+ if (to_remove != 0) {
#if HAVE_REMOVE
- remove(to_remove);
+ remove(to_remove);
#else
- unlink(to_remove);
+ unlink(to_remove);
#endif
- }
+ }
}
-static void failed(const char *msg)
+static void
+failed(const char *msg)
{
- perror(msg);
- cleanup();
- exit(EXIT_FAILURE);
+ perror(msg);
+ cleanup();
+ exit(EXIT_FAILURE);
}
-static void usage(void)
+static void
+usage(void)
{
- static const char *const tbl[] = {
+ static const char *const tbl[] =
+ {
"Options:",
" -1 format translation output one capability per line",
" -C translate entries to termcap source form",
" -N disable smart defaults for source translation",
" -R restrict translation to given terminfo/termcap version",
" -T remove size-restrictions on compiled description",
+#if NCURSES_XNAMES
+ " -a retain commented-out capabilities (sets -x also)",
+#endif
" -c check only, validate input without compiling or translating",
" -f format complex strings for readability",
" -G format %{number} to %'char'",
"",
"Parameters:",
" <file> file to translate or compile"
- };
- size_t j;
+ };
+ size_t j;
- printf("Usage: %s %s\n", _nc_progname, usage_string);
- for (j = 0; j < sizeof(tbl)/sizeof(tbl[0]); j++)
- puts(tbl[j]);
- exit(EXIT_FAILURE);
+ fprintf(stderr, "Usage: %s %s\n", _nc_progname, usage_string);
+ for (j = 0; j < sizeof(tbl) / sizeof(tbl[0]); j++) {
+ fputs(tbl[j], stderr);
+ putc('\n', stderr);
+ }
+ exit(EXIT_FAILURE);
}
#define L_BRACE '{'
#define R_BRACE '}'
#define S_QUOTE '\'';
-static void write_it(ENTRY *ep)
+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++ = 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++ = (int)value;
- *d++ = S_QUOTE;
- t = (v + 1);
- }
- }
- }
- *d = 0;
- if (strlen(result) < strlen(s))
- strcpy(s, result);
+ 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++ = 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++ = (int) 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);
+ _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)
+static bool
+immedhook(ENTRY * ep GCC_UNUSED)
/* write out entries with no use capabilities immediately to save storage */
{
#ifndef HAVE_BIG_CORE
* 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;
+ if (ep->nuses == 0) {
+ int oldline = _nc_curr_line;
write_it(ep);
_nc_curr_line = oldline;
free(ep->tterm.str_table);
- return(TRUE);
+ return (TRUE);
}
#endif /* HAVE_BIG_CORE */
- return(FALSE);
+ return (FALSE);
}
-static void put_translate(int c)
+static void
+put_translate(int c)
/* emit a comment char, translating terminfo names to termcap names */
{
static bool in_name = FALSE;
- static char namebuf[132], suffix[132], *sp;
-
- if (!in_name)
- {
- if (c == '<')
- {
- in_name = TRUE;
- sp = namebuf;
+ 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);
}
- else
+ if (c == '\n' || c == '@') {
+ namebuf[used++] = '\0';
+ (void) putchar('<');
+ (void) fputs(namebuf, stdout);
putchar(c);
- }
- else if (c == '\n' || c == '@')
- {
- *sp++ = '\0';
- (void) putchar('<');
- (void) fputs(namebuf, stdout);
- putchar(c);
- in_name = FALSE;
- }
- else if (c != '>')
- *sp++ = c;
- else /* ah! candidate name! */
- {
- char *up;
- NCURSES_CONST char *tp;
-
- *sp++ = '\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';
- }
+ in_name = FALSE;
+ } else if (c != '>') {
+ namebuf[used++] = 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(':');
+ 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
- {
- /* 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)
+static char *
+stripped(char *src)
{
- while (isspace(*src))
- src++;
- if (*src != '\0') {
- char *dst = strcpy(malloc(strlen(src)+1), src);
- size_t len = strlen(dst);
- while (--len != 0 && isspace(dst[len]))
- dst[len] = '\0';
- return dst;
- }
- return 0;
+ while (isspace(*src))
+ src++;
+ if (*src != '\0') {
+ char *dst = strcpy(malloc(strlen(src) + 1), src);
+ size_t len = strlen(dst);
+ while (--len != 0 && isspace(dst[len]))
+ dst[len] = '\0';
+ return dst;
+ }
+ return 0;
}
/* Parse the "-e" option-value into a list of names */
-static const char **make_namelist(char *src)
+static const char **
+make_namelist(char *src)
{
- const 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 = fopen(src, "r");
- if (fp == 0)
- failed(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;
- nn++;
- }
- }
- if (pass == 1) {
- dst = (const char **)calloc(nn+1, sizeof(*dst));
- 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 = (const char **)calloc(nn+1, sizeof(*dst));
+ const 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 = fopen(src, "r");
+ if (fp == 0)
+ failed(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;
+ nn++;
}
+ }
+ if (pass == 1) {
+ dst = typeCalloc(const char *, nn + 1);
+ rewind(fp);
+ }
}
- if (showsummary) {
- fprintf(log_fp, "Entries that will be compiled:\n");
- for (n = 0; dst[n] != 0; n++)
- fprintf(log_fp, "%d:%s\n", n+1, dst[n]);
+ 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(const char *, nn + 1);
}
- return dst;
+ }
+ if (showsummary) {
+ fprintf(log_fp, "Entries that will be compiled:\n");
+ for (n = 0; dst[n] != 0; n++)
+ fprintf(log_fp, "%d:%s\n", n + 1, dst[n]);
+ }
+ return dst;
}
-static bool matches(const char **needle, const char *haystack)
+static bool
+matches(const 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
+ 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;
- return(code);
+ break;
+ }
+ }
+ } else
+ code = TRUE;
+ return (code);
}
-int main (int argc, char *argv[])
+static FILE *
+open_tempfile(char *name)
{
-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? */
-int numbers = 0; /* format "%'char'" to/from "%{number}" */
-bool infodump = FALSE; /* running as captoinfo? */
-bool capdump = FALSE; /* running as infotocap? */
-bool forceresolve = FALSE; /* force resolution */
-bool limited = TRUE;
-char *tversion = (char *)NULL;
-const char *source_file = "terminfo";
-const char **namelst = 0;
-char *outdir = (char *)NULL;
-bool check_only = FALSE;
-
- log_fp = stderr;
-
- if ((_nc_progname = strrchr(argv[0], '/')) == NULL)
- _nc_progname = argv[0];
- else
- _nc_progname++;
+ 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;
+}
- infodump = (strcmp(_nc_progname, "captoinfo") == 0);
- capdump = (strcmp(_nc_progname, "infotocap") == 0);
+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? */
+ int numbers = 0; /* format "%'char'" to/from "%{number}" */
+ bool infodump = FALSE; /* running as captoinfo? */
+ bool capdump = FALSE; /* running as infotocap? */
+ bool forceresolve = FALSE; /* force resolution */
+ bool limited = TRUE;
+ char *tversion = (char *) NULL;
+ const char *source_file = "terminfo";
+ const char **namelst = 0;
+ char *outdir = (char *) NULL;
+ bool check_only = FALSE;
+
+ log_fp = stderr;
+
+ if ((_nc_progname = strrchr(argv[0], '/')) == NULL)
+ _nc_progname = argv[0];
+ else
+ _nc_progname++;
+
+ if ((infodump = (strcmp(_nc_progname, "captoinfo") == 0)) != FALSE) {
+ outform = F_TERMINFO;
+ sortmode = S_TERMINFO;
+ }
+ if ((capdump = (strcmp(_nc_progname, "infotocap") == 0)) != FALSE) {
+ outform = F_TERMCAP;
+ sortmode = S_TERMCAP;
+ }
#if NCURSES_XNAMES
- use_extended_names(FALSE);
+ 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:TVce:fGgo:rsvwx")) != EOF) {
- 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;
- break;
- case 'R':
- tversion = optarg;
- break;
- case 'T':
- limited = FALSE;
- break;
- case 'V':
- puts(NCURSES_VERSION);
- return 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;
+ /*
+ * 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:TVace:fGgo:rsvwx")) != EOF) {
+ 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;
+ break;
+ case 'R':
+ tversion = optarg;
+ break;
+ case 'T':
+ limited = FALSE;
+ break;
+ case 'V':
+ puts(NCURSES_VERSION);
+ return 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 'x':
- use_extended_names(TRUE);
- break;
+ case 'a':
+ _nc_disable_period = TRUE;
+ /* FALLTHRU */
+ case 'x':
+ use_extended_names(TRUE);
+ break;
#endif
- default:
- usage();
- }
- last_opt = this_opt;
+ default:
+ usage();
}
+ last_opt = this_opt;
+ }
- debug_level = (v_opt > 0) ? v_opt : (v_opt == 0);
- _nc_tracing = (1 << debug_level) - 1;
-
- if (_nc_tracing)
- {
- save_check_termtype = _nc_check_termtype;
- _nc_check_termtype = check_termtype;
- }
+ debug_level = (v_opt > 0) ? v_opt : (v_opt == 0);
+ set_trace_level(debug_level);
+ if (_nc_tracing) {
+ save_check_termtype = _nc_check_termtype;
+ _nc_check_termtype = check_termtype;
+ }
#ifndef 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();
- return EXIT_FAILURE;
- }
+ /*
+ * 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();
+ return EXIT_FAILURE;
+ }
#endif /* HAVE_BIG_CORE */
+ if (optind < argc) {
+ source_file = argv[optind++];
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);
- return 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 ((source_file = tmpnam(my_tmpname)) != 0
- && (tmp_fp = fopen(source_file, "w")) != 0) {
- fprintf(tmp_fp, "%s\n", termcap);
- fclose(tmp_fp);
- tmp_fp = fopen(source_file, "r");
- to_remove = source_file;
- } else {
- failed("tmpnam");
- }
- }
+ fprintf(stderr,
+ "%s: Too many file names. Usage:\n\t%s %s",
+ _nc_progname,
+ _nc_progname,
+ usage_string);
+ return 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 = fopen(source_file, "r");
+ to_remove = source_file;
} else {
- /* tic */
- fprintf (stderr,
- "%s: File name needed. Usage:\n\t%s %s",
- _nc_progname,
- _nc_progname,
- usage_string);
- cleanup();
- return EXIT_FAILURE;
+ failed("tmpnam");
}
+ }
+ } else {
+ /* tic */
+ fprintf(stderr,
+ "%s: File name needed. Usage:\n\t%s %s",
+ _nc_progname,
+ _nc_progname,
+ usage_string);
+ cleanup();
+ return EXIT_FAILURE;
}
+ }
- if (tmp_fp == 0
- && (tmp_fp = fopen(source_file, "r")) == 0) {
- fprintf (stderr, "%s: Can't open %s\n", _nc_progname, source_file);
- return EXIT_FAILURE;
- }
+ if (tmp_fp == 0
+ && (tmp_fp = fopen(source_file, "r")) == 0) {
+ fprintf(stderr, "%s: Can't open %s\n", _nc_progname, source_file);
+ return EXIT_FAILURE;
+ }
- 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 (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);
#ifndef HAVE_BIG_CORE
- if (!(check_only || infodump || capdump))
- _nc_set_writedir(outdir);
+ if (!(check_only || infodump || capdump))
+ _nc_set_writedir(outdir);
#endif /* HAVE_BIG_CORE */
- _nc_read_entry_source(tmp_fp, (char *)NULL,
- !smart_defaults, FALSE,
- (check_only || infodump || capdump) ? NULLHOOK : immedhook);
-
- /* do use resolution */
- if (check_only || (!infodump && !capdump) || forceresolve) {
- if (!_nc_resolve_uses() && !check_only) {
- cleanup();
- return EXIT_FAILURE;
- }
+ _nc_read_entry_source(tmp_fp, (char *) NULL,
+ !smart_defaults, FALSE,
+ (check_only || infodump || capdump) ? NULLHOOK : immedhook);
+
+ /* do use resolution */
+ if (check_only || (!infodump && !capdump) || forceresolve) {
+ if (!_nc_resolve_uses(TRUE) && !check_only) {
+ cleanup();
+ return 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, 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);
- }
+ /* 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, 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);
+ /* 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-- )
- if (infodump)
- (void) putchar(fgetc(tmp_fp));
- else
- put_translate(fgetc(tmp_fp));
-
- len = dump_entry(&qp->tterm, limited, numbers, NULL);
- for (j = 0; j < qp->nuses; j++)
- len += dump_uses((char *)(qp->uses[j].parent), !capdump);
- (void) putchar('\n');
- if (debug_level != 0 && !limited)
- printf("# length=%d\n", len);
+ } 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--) {
+ if (infodump)
+ (void) putchar(fgetc(tmp_fp));
+ else
+ put_translate(fgetc(tmp_fp));
}
- if (!namelst)
- {
- 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;
- }
+
+ len = dump_entry(&qp->tterm, limited, numbers, NULL);
+ for (j = 0; j < qp->nuses; j++)
+ len += dump_uses(qp->uses[j].name, !capdump);
+ (void) putchar('\n');
+ if (debug_level != 0 && !limited)
+ printf("# length=%d\n", len);
+ }
+ }
+ if (!namelst) {
+ 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;
}
+ 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();
- return(EXIT_SUCCESS);
+ /* 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();
+ return (EXIT_SUCCESS);
}
/*
* precisely what's needed (see comp_parse.c).
*/
-TERMINAL *cur_term; /* tweak to avoid linking lib_cur_term.c */
+TERMINAL *cur_term; /* tweak to avoid linking lib_cur_term.c */
#undef CUR
#define CUR tp->
+/*
+ * 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(char *a, char *b)
+{
+ while (*b != 0) {
+ while (*a != *b) {
+ if (*a == 0)
+ return FALSE;
+ a++;
+ }
+ a++;
+ b++;
+ }
+ return TRUE;
+}
+
+static void
+check_sgr(TERMTYPE * tp, char *zero, int num, char *cap, const char *name)
+{
+ char *test = tparm(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(test, cap)) {
+ _nc_warning("%s differs from sgr(%d): %s", name, num,
+ _nc_visbuf(test));
+ }
+ } else if (strcmp(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);
+ }
+}
+
+#define CHECK_SGR(num,name) check_sgr(tp, zero, num, name, #name)
+
/* other sanity-checks (things that we don't want in the normal
* logic that reads a terminfo entry)
*/
-static void check_termtype(TERMTYPE *tp)
+static void
+check_termtype(TERMTYPE * tp)
{
- 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).
- */
- 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))
+ 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).
+ */
+ 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;
- 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 (!strcmp(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(_nc_tinfo_fkeys[j].code),
- keyname(_nc_tinfo_fkeys[k].code));
- first = FALSE;
- } else {
- fprintf(stderr, ", %s",
- keyname(_nc_tinfo_fkeys[k].code));
+ if (!strcmp(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(_nc_tinfo_fkeys[j].code),
+ keyname(_nc_tinfo_fkeys[k].code));
+ first = FALSE;
+ } else {
+ fprintf(stderr, ", %s",
+ keyname(_nc_tinfo_fkeys[k].code));
}
}
- if (!first)
- fprintf(stderr, "\n");
}
+ if (!first)
+ fprintf(stderr, "\n");
+ }
- /*
- * Quick check for color. We could also check if the ANSI versus
- * non-ANSI strings are misused.
- */
- if ((max_colors > 0) != (max_pairs > 0)
- || (max_colors > max_pairs))
- _nc_warning("inconsistent values for max_colors and max_pairs");
-
- PAIRED(set_foreground, set_background)
- PAIRED(set_a_foreground, set_a_background)
-
- /*
- * 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)
-
- /*
- * 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)
-
- /*
- * Some standard applications (e.g., vi) and some non-curses
- * applications (e.g., jove) get confused if we have both ich/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) || PRESENT(parm_ich))) {
- _nc_warning("non-curses applications may be confused by ich/ich1 with smir/rmir");
- }
+ /*
+ * Quick check for color. We could also check if the ANSI versus
+ * non-ANSI strings are misused.
+ */
+ if ((max_colors > 0) != (max_pairs > 0)
+ || (max_colors > max_pairs))
+ _nc_warning("inconsistent values for max_colors and max_pairs");
+
+ PAIRED(set_foreground, set_background);
+ PAIRED(set_a_foreground, set_a_background);
- /*
- * Finally, do the non-verbose checks
- */
- if (save_check_termtype != 0)
- save_check_termtype(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)
+ && !strcmp(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 (PRESENT(set_attributes)) {
+ char *zero = tparm(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, 0);
+
+ zero = strdup(zero);
+ 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);
+ }
+
+ /*
+ * Some standard applications (e.g., vi) and some non-curses
+ * applications (e.g., jove) get confused if we have both ich/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) || PRESENT(parm_ich))) {
+ _nc_warning("non-curses applications may be confused by ich/ich1 with smir/rmir");
+ }
+
+ /*
+ * Finally, do the non-verbose checks
+ */
+ if (save_check_termtype != 0)
+ save_check_termtype(tp);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * 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 *
#include <dump_entry.h>
#include <term_entry.h>
-MODULE_ID("$Id: toe.c,v 0.19 1998/03/08 01:02:46 tom Exp $")
+MODULE_ID("$Id: toe.c,v 1.22 2000/03/11 21:47:35 tom Exp $")
+
+#define isDotname(name) (!strcmp(name, ".") || !strcmp(name, ".."))
const char *_nc_progname;
static int typelist(int eargc, char *eargv[], bool,
- void (*)(const char *, TERMTYPE *));
+ void (*)(const char *, TERMTYPE *));
static void deschook(const char *, TERMTYPE *);
#if NO_LEAKS
#undef ExitProgram
-static void ExitProgram(int code) GCC_NORETURN;
-static void ExitProgram(int code)
+static void
+ExitProgram(int code) GCC_NORETURN;
+ static void ExitProgram(int code)
{
- _nc_free_entries(_nc_head);
- _nc_leaks_dump_entry();
- _nc_free_and_exit(code);
+ _nc_free_entries(_nc_head);
+ _nc_leaks_dump_entry();
+ _nc_free_and_exit(code);
}
#endif
-int main (int argc, char *argv[])
+static char *
+get_directory(char *path)
+{
+ if (path != 0) {
+ struct stat sb;
+ if (stat(path, &sb) != 0
+ || (sb.st_mode & S_IFMT) != S_IFDIR
+ || access(path, R_OK | X_OK) != 0)
+ path = 0;
+ }
+ return path;
+}
+
+int
+main(int argc, char *argv[])
{
- bool direct_dependencies = FALSE;
- bool invert_dependencies = FALSE;
- bool header = FALSE;
- int i, c, debug_level = 0;
- int code;
+ bool direct_dependencies = FALSE;
+ bool invert_dependencies = FALSE;
+ bool header = FALSE;
+ int i, c;
+ int code;
- if ((_nc_progname = strrchr(argv[0], '/')) == NULL)
+ if ((_nc_progname = strrchr(argv[0], '/')) == 0)
_nc_progname = argv[0];
else
_nc_progname++;
while ((c = getopt(argc, argv, "huv:UV")) != EOF)
- switch (c)
- {
+ switch (c) {
case 'h':
header = TRUE;
break;
direct_dependencies = TRUE;
break;
case 'v':
- debug_level = atoi(optarg);
- _nc_tracing = (1 << debug_level) - 1;
+ set_trace_level(atoi(optarg));
break;
case 'U':
invert_dependencies = TRUE;
putchar('\n');
ExitProgram(EXIT_SUCCESS);
default:
- (void) fprintf (stderr, "usage: toe [-huUV] [-v n] [file...]\n");
+ (void) fprintf(stderr, "usage: toe [-huUV] [-v n] [file...]\n");
ExitProgram(EXIT_FAILURE);
}
- if (direct_dependencies || invert_dependencies)
- {
- if (freopen(argv[optind], "r", stdin) == NULL)
- {
+ if (direct_dependencies || invert_dependencies) {
+ if (freopen(argv[optind], "r", stdin) == 0) {
(void) fflush(stdout);
fprintf(stderr, "%s: can't open %s\n", _nc_progname, argv[optind]);
ExitProgram(EXIT_FAILURE);
/* parse entries out of the source file */
_nc_set_source(argv[optind]);
- _nc_read_entry_source(stdin, (char *)NULL,
- FALSE, FALSE,
- NULLHOOK);
+ _nc_read_entry_source(stdin, 0, FALSE, FALSE, NULLHOOK);
}
/* maybe we want a direct-dependency listing? */
- if (direct_dependencies)
- {
- ENTRY *qp;
+ if (direct_dependencies) {
+ ENTRY *qp;
for_entry_list(qp)
- if (qp->nuses)
- {
- int j;
+ if (qp->nuses) {
+ int j;
- (void) printf("%s:", _nc_first_name(qp->tterm.term_names));
- for (j = 0; j < qp->nuses; j++)
- (void) printf(" %s", (char *)(qp->uses[j].parent));
- putchar('\n');
- }
+ (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;
+ if (invert_dependencies) {
+ ENTRY *qp, *rp;
+ int matchcount;
- for_entry_list(qp)
- {
+ for_entry_list(qp) {
matchcount = 0;
- for_entry_list(rp)
- {
+ for_entry_list(rp) {
if (rp->nuses == 0)
continue;
for (i = 0; i < rp->nuses; i++)
- if (_nc_name_match(qp->tterm.term_names,(char*)rp->uses[i].parent, "|"))
- {
+ 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));
+ _nc_first_name(qp->tterm.term_names));
(void) printf(" %s",
- _nc_first_name(rp->tterm.term_names));
+ _nc_first_name(rp->tterm.term_names));
}
}
if (matchcount)
* If we get this far, user wants a simple terminal type listing.
*/
if (optind < argc) {
- code = typelist(argc-optind, argv+optind, header, deschook);
+ code = typelist(argc - optind, argv + optind, header, deschook);
} else {
- char *by_env, *home, *eargv[3];
- int j;
+ char *home, *eargv[3];
+ char personal[PATH_MAX];
+ int j;
j = 0;
- if ((by_env = getenv("TERMINFO")) != (char *)NULL)
- eargv[j++] = by_env;
- else
- {
- if ((home = getenv("HOME")) != (char *)NULL)
- {
- char personal[PATH_MAX];
- struct stat sb;
-
+ if ((eargv[j] = get_directory(getenv("TERMINFO"))) != 0) {
+ j++;
+ } else {
+ if ((home = getenv("HOME")) != 0) {
(void) sprintf(personal, PRIVATE_INFO, home);
- if (stat(personal, &sb) == 0
- && (sb.st_mode & S_IFMT) == S_IFDIR)
- eargv[j++] = personal;
+ if ((eargv[j] = get_directory(personal)) != 0)
+ j++;
}
- eargv[j++] = TERMINFO;
+ if ((eargv[j] = get_directory(TERMINFO)) != 0)
+ j++;
}
- eargv[j] = (char *)NULL;
+ eargv[j] = 0;
code = typelist(j, eargv, header, deschook);
}
ExitProgram(code);
}
-static void deschook(const char *cn, TERMTYPE *tp)
+static void
+deschook(const char *cn, TERMTYPE * tp)
/* display a description for the type */
{
const char *desc;
- if ((desc = strrchr(tp->term_names, '|')) == (char *)NULL)
+ if ((desc = strrchr(tp->term_names, '|')) == 0)
desc = "(No description)";
else
++desc;
(void) printf("%-10s\t%s\n", cn, desc);
}
-static int typelist(int eargc, char *eargv[],
- bool verbosity,
- void (*hook)(const char *, TERMTYPE *tp))
+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;
+ int i;
- for (i = 0; i < eargc; i++)
- {
- DIR *termdir;
+ for (i = 0; i < eargc; i++) {
+ DIR *termdir;
struct dirent *subdir;
- if ((termdir = opendir(eargv[i])) == (DIR *)NULL)
- {
+ 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)
+ "%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)) != NULL)
- {
- size_t len = NAMLEN(subdir);
- char buf[PATH_MAX];
- char name_1[PATH_MAX];
- DIR *entrydir;
+ while ((subdir = readdir(termdir)) != 0) {
+ size_t len = NAMLEN(subdir);
+ char buf[PATH_MAX];
+ char name_1[PATH_MAX];
+ DIR *entrydir;
struct dirent *entry;
strncpy(name_1, subdir->d_name, len)[len] = '\0';
- if (!strcmp(name_1, ".")
- || !strcmp(name_1, ".."))
+ if (isDotname(name_1))
continue;
- (void) strcpy(buf, eargv[i]);
- (void) strcat(buf, "/");
- (void) strcat(buf, name_1);
- (void) strcat(buf, "/");
+ (void) sprintf(buf, "%s/%s/", eargv[i], name_1);
chdir(buf);
entrydir = opendir(".");
- while ((entry = readdir(entrydir)) != NULL)
- {
- char name_2[PATH_MAX];
- TERMTYPE lterm;
- char *cn;
- int status;
+ 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 (!strcmp(name_2, ".")
- || !strcmp(name_2, ".."))
+ if (isDotname(name_2))
continue;
status = _nc_read_file_entry(name_2, <erm);
- if (status <= 0)
- {
+ if (status <= 0) {
(void) fflush(stdout);
(void) fprintf(stderr,
- "toe: couldn't open terminfo file %s.\n",
- name_2);
- return(EXIT_FAILURE);
+ "toe: couldn't open terminfo file %s.\n",
+ name_2);
+ return (EXIT_FAILURE);
}
/* only visit things once, by primary name */
cn = _nc_first_name(lterm.term_names);
- if (!strcmp(cn, name_2))
- {
+ if (!strcmp(cn, name_2)) {
/* apply the selected hook function */
- (*hook)(cn, <erm);
+ (*hook) (cn, <erm);
}
if (lterm.term_names) {
free(lterm.term_names);
- lterm.term_names = NULL;
+ lterm.term_names = 0;
}
if (lterm.str_table) {
free(lterm.str_table);
- lterm.str_table = NULL;
+ lterm.str_table = 0;
}
}
closedir(entrydir);
closedir(termdir);
}
- return(EXIT_SUCCESS);
+ return (EXIT_SUCCESS);
}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* tput.c -- shellscript access to terminal capabilities
*
#include <termsort.c>
#endif
-MODULE_ID("$Id: tput.c,v 1.14 1999/07/31 21:18:29 Goran.Uddeborg Exp $")
+MODULE_ID("$Id: tput.c,v 1.16 2000/03/19 01:08:08 tom Exp $")
#define PUTS(s) fputs(s, stdout)
#define PUTCHAR(c) putchar(c)
static char *prg_name;
-static void quit(int status, const char *fmt, ...)
+static void
+quit(int status, const char *fmt,...)
{
-va_list argp;
+ va_list argp;
- va_start(argp,fmt);
- vfprintf (stderr, fmt, argp);
- fprintf(stderr, "\n");
- va_end(argp);
- exit(status);
+ va_start(argp, fmt);
+ vfprintf(stderr, fmt, argp);
+ fprintf(stderr, "\n");
+ va_end(argp);
+ exit(status);
}
-static void usage(void)
+static void
+usage(void)
{
- fprintf(stderr, "usage: %s [-S] [-T term] capname\n", prg_name);
- exit(EXIT_FAILURE);
+ fprintf(stderr, "usage: %s [-S] [-T term] capname\n", prg_name);
+ exit(EXIT_FAILURE);
}
-static int tput(int argc, char *argv[])
+static int
+tput(int argc, char *argv[])
{
-char *name;
-char *s;
-int i, j, c;
-int reset, status;
-FILE *f;
-
- reset = 0;
- name = argv[0];
- if (strcmp(name, "reset") == 0) {
- reset = 1;
+ NCURSES_CONST char *name;
+ char *s;
+ int i, j, c;
+ int reset, status;
+ FILE *f;
+
+ reset = 0;
+ name = argv[0];
+ if (strcmp(name, "reset") == 0) {
+ reset = 1;
+ }
+ if (reset || strcmp(name, "init") == 0) {
+ if (init_prog != 0) {
+ system(init_prog);
}
- if (reset || strcmp(name, "init") == 0) {
- if (init_prog != NULL) {
- system(init_prog);
- }
- FLUSH;
+ FLUSH;
- if (reset && reset_1string != NULL) {
- PUTS(reset_1string);
- } else if (init_1string != NULL) {
- PUTS(init_1string);
- }
- FLUSH;
-
- if (reset && reset_2string != NULL) {
- PUTS(reset_2string);
- } else if (init_2string != NULL) {
- PUTS(init_2string);
- }
- FLUSH;
-
- if (set_lr_margin != NULL) {
- PUTS(tparm(set_lr_margin, 0, columns - 1));
- } else if (set_left_margin_parm != NULL
- && set_right_margin_parm != NULL) {
- PUTS(tparm(set_left_margin_parm, 0));
- PUTS(tparm(set_right_margin_parm, columns - 1));
- } else if (clear_margins != NULL && set_left_margin != NULL
- && set_right_margin != NULL) {
- PUTS(clear_margins);
- if (carriage_return != NULL) {
- PUTS(carriage_return);
- } else {
- PUTCHAR('\r');
- }
- PUTS(set_left_margin);
- if (parm_right_cursor) {
- PUTS(tparm(parm_right_cursor, columns - 1));
- } else {
- for(i = 0; i < columns - 1; i++) {
- PUTCHAR(' ');
- }
- }
- PUTS(set_right_margin);
- if (carriage_return != NULL) {
- PUTS(carriage_return);
- } else {
- PUTCHAR('\r');
- }
- }
- FLUSH;
-
- if (init_tabs != 8) {
- if (clear_all_tabs != NULL && set_tab != NULL) {
- for(i = 0; i < columns - 1; i += 8) {
- if (parm_right_cursor) {
- PUTS(tparm(parm_right_cursor, 8));
- } else {
- for(j = 0; j < 8; j++)
- PUTCHAR(' ');
- }
- PUTS(set_tab);
- }
- FLUSH;
- }
- }
+ if (reset && reset_1string != 0) {
+ PUTS(reset_1string);
+ } else if (init_1string != 0) {
+ PUTS(init_1string);
+ }
+ FLUSH;
- if (reset && reset_file != NULL) {
- f = fopen(reset_file, "r");
- if (f == NULL) {
- quit(errno, "Can't open reset_file: '%s'", reset_file);
- }
- while((c = fgetc(f)) != EOF) {
- PUTCHAR(c);
- }
- fclose(f);
- } else if (init_file != NULL) {
- f = fopen(init_file, "r");
- if (f == NULL) {
- quit(errno, "Can't open init_file: '%s'", init_file);
- }
- while((c = fgetc(f)) != EOF) {
- PUTCHAR(c);
- }
- fclose(f);
+ if (reset && reset_2string != 0) {
+ PUTS(reset_2string);
+ } else if (init_2string != 0) {
+ PUTS(init_2string);
+ }
+ FLUSH;
+
+ if (set_lr_margin != 0) {
+ PUTS(tparm(set_lr_margin, 0, columns - 1));
+ } else if (set_left_margin_parm != 0
+ && set_right_margin_parm != 0) {
+ PUTS(tparm(set_left_margin_parm, 0));
+ PUTS(tparm(set_right_margin_parm, columns - 1));
+ } else 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(parm_right_cursor, columns - 1));
+ } else {
+ for (i = 0; i < columns - 1; i++) {
+ PUTCHAR(' ');
}
- FLUSH;
-
- if (reset && reset_3string != NULL) {
- PUTS(reset_3string);
- } else if (init_2string != NULL) {
- PUTS(init_2string);
+ }
+ 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(parm_right_cursor, 8));
+ } else {
+ for (j = 0; j < 8; j++)
+ PUTCHAR(' ');
+ }
+ PUTS(set_tab);
}
FLUSH;
- return 0;
+ }
}
- if (strcmp(name, "longname") == 0) {
- PUTS(longname());
- return 0;
+ if (reset && reset_file != 0) {
+ f = fopen(reset_file, "r");
+ if (f == 0) {
+ quit(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(errno, "Can't open init_file: '%s'", init_file);
+ }
+ while ((c = fgetc(f)) != EOF) {
+ PUTCHAR(c);
+ }
+ fclose(f);
}
+ FLUSH;
-#ifndef PURE_TERMINFO
- {
- const struct name_table_entry *np;
-
- if ((np = _nc_find_entry(name, _nc_get_hash_table(1))) != 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;
- }
+ if (reset && reset_3string != 0) {
+ PUTS(reset_3string);
+ } else if (init_2string != 0) {
+ PUTS(init_2string);
}
+ FLUSH;
+ return 0;
+ }
+
+ if (strcmp(name, "longname") == 0) {
+ PUTS(longname());
+ return 0;
+ }
+#ifndef PURE_TERMINFO
+ {
+ const struct name_table_entry *np;
+
+ if ((np = _nc_find_entry(name, _nc_get_hash_table(1))) != 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;
+ }
+ }
#endif
- if ((status = tigetflag(name)) != -1)
- return(status != 0);
- else if ((status = tigetnum(name)) != CANCELLED_NUMERIC) {
- (void) printf("%d\n", status);
- return(0);
- }
- else if ((s = tigetstr(name)) == CANCELLED_STRING)
- quit(4, "%s: unknown terminfo capability '%s'", prg_name, name);
- else if (s != (char *)NULL) {
- if (argc > 1) {
- int k;
-
- /* 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++)
- if (isdigit(argv[k][0])) {
- long val = atol(argv[k]);
- argv[k] = (char *)val;
- }
-
- s = tparm(s,argv[1],argv[2],argv[3],argv[4],
- argv[5],argv[6],argv[7],argv[8],
- argv[9]);
+ if ((status = tigetflag(name)) != -1) {
+ return (status != 0);
+ } else if ((status = tigetnum(name)) != CANCELLED_NUMERIC) {
+ (void) printf("%d\n", status);
+ return (0);
+ } else if ((s = tigetstr(name)) == CANCELLED_STRING) {
+ quit(4, "%s: unknown terminfo capability '%s'", prg_name, name);
+ } else if (s != 0) {
+ if (argc > 1) {
+ int k;
+ char * params[10];
+
+ /* 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++) {
+ if (isdigit(argv[k][0])) {
+ long val = atol(argv[k]);
+ params[k] = (char *)val;
+ } else {
+ params[k] = argv[k];
}
+ }
+ for (k = argc; k <= 9; k++)
+ params[k] = 0;
- /* use putp() in order to perform padding */
- putp(s);
- return(0);
+ s = tparm(s,
+ params[1], params[2], params[3],
+ params[4], params[5], params[6],
+ params[7], params[8], params[9]);
}
- return(0);
+
+ /* use putp() in order to perform padding */
+ putp(s);
+ return (0);
+ }
+ return (0);
}
-int main(int argc, char **argv)
+int
+main(int argc, char **argv)
{
-char *s, *term;
-int errret, cmdline = 1;
-int c;
-char buf[BUFSIZ];
-int errors = 0;
-
- prg_name = argv[0];
- s = strrchr(prg_name, '/');
- if (s != NULL && *++s != '\0')
+ char *s, *term;
+ int errret, cmdline = 1;
+ int c;
+ char buf[BUFSIZ];
+ int errors = 0;
+
+ prg_name = argv[0];
+ s = strrchr(prg_name, '/');
+ if (s != 0 && *++s != '\0')
prg_name = s;
- term = getenv("TERM");
-
- while ((c = getopt (argc, argv, "ST:")) != EOF)
- switch (c)
- {
- case 'S':
- cmdline = 0;
- break;
- case 'T':
- use_env(FALSE);
- term = optarg;
- break;
- default:
- usage();
- /* NOTREACHED */
- }
- argc -= optind;
- argv += optind;
-
- if (cmdline && argc == 0) {
- usage();
- /* NOTREACHED */
+ term = getenv("TERM");
+
+ while ((c = getopt(argc, argv, "ST:")) != EOF)
+ switch (c) {
+ case 'S':
+ cmdline = 0;
+ break;
+ case 'T':
+ use_env(FALSE);
+ term = optarg;
+ break;
+ default:
+ usage();
+ /* NOTREACHED */
}
-
- if (term == NULL || *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)
- return tput(argc, argv);
-
- while (fgets(buf, sizeof(buf), stdin) != (char *)NULL) {
- 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(*cp))
- *cp = '\0';
- else if (cp == buf || cp[-1] == 0)
- argvec[argnum++] = cp;
- }
- argvec[argnum] = (char *)NULL;
-
- if (tput(argnum, argvec) != 0)
- errors++;
+ argc -= optind;
+ argv += optind;
+
+ if (cmdline && argc == 0) {
+ usage();
+ /* NOTREACHED */
+ }
+
+ 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)
+ return 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(*cp))
+ *cp = '\0';
+ else if (cp == buf || cp[-1] == 0)
+ argvec[argnum++] = cp;
}
+ argvec[argnum] = 0;
- return errors > 0;
-}
+ if (tput(argnum, argvec) != 0)
+ errors++;
+ }
+ return errors > 0;
+}
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
****************************************************************************/
-
/*
* tset.c - terminal initialization utility
*
#include <sys/ptem.h>
#endif
-#include <curses.h> /* for bool typedef */
+#include <curses.h> /* for bool typedef */
#include <dump_entry.h>
-MODULE_ID("$Id: tset.c,v 0.37 1999/03/14 12:30:02 tom Exp $")
+MODULE_ID("$Id: tset.c,v 0.41 2000/03/12 00:03:00 tom Exp $")
extern char **environ;
static TTY mode, oldmode;
-static int terasechar = -1; /* new erase character */
-static int intrchar = -1; /* new interrupt character */
-static int isreset; /* invoked as reset */
-static int tkillchar = -1; /* new kill character */
-static int tlines, tcolumns; /* window size */
+static int terasechar = -1; /* new erase character */
+static int intrchar = -1; /* new interrupt character */
+static int isreset; /* invoked as reset */
+static int tkillchar = -1; /* new kill character */
+static int tlines, tcolumns; /* window size */
#define LOWERCASE(c) ((isalpha(c) && isupper(c)) ? tolower(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);
+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);
}
-#if !HAVE_STRDUP
-#define strdup _nc_strdup
-extern char *_nc_strdup(const char *);
-#endif /* not HAVE_STRDUP */
-
static void
-err(const char *fmt, ...)
+err(const char *fmt,...)
{
- va_list ap;
- va_start(ap, fmt);
- (void)fprintf(stderr, "tset: ");
- (void)vfprintf(stderr, fmt, ap);
- va_end(ap);
- (void)fprintf(stderr, "\n");
- exit(EXIT_FAILURE);
- /* NOTREACHED */
+ va_list ap;
+ va_start(ap, fmt);
+ (void) fprintf(stderr, "tset: ");
+ (void) vfprintf(stderr, fmt, ap);
+ va_end(ap);
+ (void) fprintf(stderr, "\n");
+ exit(EXIT_FAILURE);
+ /* NOTREACHED */
}
static void
failed(const char *msg)
{
- char temp[BUFSIZ];
- perror(strcat(strcpy(temp, "tset: "), msg));
- exit(EXIT_FAILURE);
- /* NOTREACHED */
+ char temp[BUFSIZ];
+ perror(strncat(strcpy(temp, "tset: "), msg, sizeof(temp) - 10));
+ exit(EXIT_FAILURE);
+ /* NOTREACHED */
}
static void
cat(char *file)
{
- register int fd, nr, nw;
- char buf[BUFSIZ];
-
- if ((fd = open(file, O_RDONLY, 0)) < 0)
- failed(file);
-
- while ((nr = read(fd, buf, sizeof(buf))) > 0)
- if ((nw = write(STDERR_FILENO, buf, (size_t)nr)) == -1)
- failed("write to stderr");
- if (nr != 0)
- failed(file);
- (void)close(fd);
+ register int fd, nr, nw;
+ char buf[BUFSIZ];
+
+ if ((fd = open(file, O_RDONLY, 0)) < 0)
+ failed(file);
+
+ while ((nr = read(fd, buf, sizeof(buf))) > 0)
+ if ((nw = write(STDERR_FILENO, buf, (size_t) nr)) == -1)
+ failed("write to stderr");
+ if (nr != 0)
+ failed(file);
+ (void) close(fd);
}
static int
outc(int c)
{
- return putc(c, stderr);
+ return putc(c, stderr);
}
/* Prompt the user for a terminal type. */
static const char *
askuser(const char *dflt)
{
- static char answer[256];
- char *p;
+ static char answer[256];
+ char *p;
- /* We can get recalled; if so, don't continue uselessly. */
- if (feof(stdin) || ferror(stdin)) {
- (void)fprintf(stderr, "\n");
+ /* We can get recalled; if so, don't continue uselessly. */
+ if (feof(stdin) || ferror(stdin)) {
+ (void) fprintf(stderr, "\n");
+ exit(EXIT_FAILURE);
+ }
+ 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) {
+ (void) fprintf(stderr, "\n");
exit(EXIT_FAILURE);
+ }
+ return (dflt);
}
- 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) {
- (void)fprintf(stderr, "\n");
- exit(EXIT_FAILURE);
- }
- return (dflt);
- }
- if ((p = strchr(answer, '\n')) != 0)
- *p = '\0';
- if (answer[0])
- return (answer);
- if (dflt != 0)
- return (dflt);
- }
+ if ((p = strchr(answer, '\n')) != 0)
+ *p = '\0';
+ if (answer[0])
+ return (answer);
+ if (dflt != 0)
+ return (dflt);
+ }
}
/**************************************************************************
#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. */
- speed_t speed; /* Baud rate to compare against. */
+ 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. */
+ speed_t speed; /* Baud rate to compare against. */
} MAP;
static MAP *cur, *maplist;
typedef struct speeds {
- const char *string;
- int speed;
+ 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 },
- { "19200", B19200 },
- { "38400", B38400 },
- { "19200", B19200 },
- { "38400", B38400 },
+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},
+ {"19200", B19200},
+ {"38400", B38400},
+ {"19200", B19200},
+ {"38400", B38400},
#ifdef B19200
- { "19200", B19200 },
+ {"19200", B19200},
#else
#ifdef EXTA
- { "19200", EXTA },
+ {"19200", EXTA},
#endif
#endif
#ifdef B38400
- { "38400", B38400 },
+ {"38400", B38400},
#else
#ifdef EXTB
- { "38400", EXTB },
+ {"38400", EXTB},
#endif
#endif
#ifdef B57600
- { "57600", B57600 },
+ {"57600", B57600},
#endif
#ifdef B115200
- { "115200", B115200 },
+ {"115200", B115200},
#endif
#ifdef B230400
- { "230400", B230400 },
+ {"230400", B230400},
#endif
#ifdef B460800
- { "460800", B460800 },
+ {"460800", B460800},
#endif
- { (char *)0, 0 }
+ {(char *) 0, 0}
};
static int
tbaudrate(char *rate)
{
- const SPEEDS *sp;
- int found = FALSE;
+ const SPEEDS *sp;
+ int found = FALSE;
- /* The baudrate number can be preceded by a 'B', which is ignored. */
- if (*rate == 'B')
- ++rate;
+ /* 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;
- }
+ 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);
+ }
+ if (!found)
+ err("unknown baud rate %s", rate);
+ return (sp->speed);
}
/*
static void
add_mapping(const char *port, char *arg)
{
- MAP *mapp;
- char *copy, *p;
- const char *termp;
- char *base = 0;
-
- copy = strdup(arg);
- mapp = malloc(sizeof(MAP));
- if (copy == 0 || mapp == 0)
- failed("malloc");
- 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. */
+ MAP *mapp;
+ char *copy, *p;
+ const char *termp;
+ char *base = 0;
+
+ copy = strdup(arg);
+ mapp = malloc(sizeof(MAP));
+ if (copy == 0 || mapp == 0)
+ failed("malloc");
+ 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->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;
+ 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;
+ }
#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);
+ (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
}
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);
+ 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);
}
/**************************************************************************
static const char *
get_termcap_entry(char *userarg)
{
- int rval, errret;
- char *p;
- const char *ttype;
+ int rval, errret;
+ char *p;
+ const char *ttype;
#if HAVE_GETTTYNAM
- struct ttyent *t;
+ struct ttyent *t;
#else
- FILE *fp;
+ FILE *fp;
#endif
- char *ttypath;
+ char *ttypath;
- if (userarg) {
- ttype = userarg;
- goto found;
- }
+ if (userarg) {
+ ttype = userarg;
+ goto found;
+ }
- /* Try the environment. */
- if ((ttype = getenv("TERM")) != 0)
- goto map;
+ /* Try the environment. */
+ if ((ttype = getenv("TERM")) != 0)
+ goto map;
- if ((ttypath = ttyname(STDERR_FILENO)) != 0) {
- if ((p = strrchr(ttypath, '/')) != 0)
- ++p;
- else
- p = ttypath;
+ if ((ttypath = ttyname(STDERR_FILENO)) != 0) {
+ if ((p = strrchr(ttypath, '/')) != 0)
+ ++p;
+ else
+ p = 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;
- }
+ /*
+ * 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(*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);
+ 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(*s))
+ *s = '\0';
+ else if (t == 0)
+ t = s;
+ else if (d == 0 && s != buffer && s[-1] == '\0')
+ d = s;
}
-#endif /* HAVE_GETTTYNAM */
+ 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";
+ /* If still undefined, use "unknown". */
+ ttype = "unknown";
-map: ttype = mapped(ttype);
+ 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.
+ /*
+ * 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 && *p != '/') {
+ /* 'unsetenv("TERMCAP")' is not portable.
+ * The 'environ' array is better.
*/
-found: if ((p = getenv("TERMCAP")) != 0 && *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;
- }
+ 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 ((rval = setupterm((NCURSES_CONST char *)ttype, STDOUT_FILENO, &errret)) != OK) {
- if (errret == 0) {
- (void)fprintf(stderr, "tset: unknown terminal type %s\n",
- ttype);
- ttype = 0;
- }
- else {
- (void)fprintf(stderr, "tset: can't initialize terminal type %s (error %d)\n", ttype, errret);
- ttype = 0;
- }
- ttype = askuser(ttype);
+ }
+
+ /*
+ * 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 ((rval = setupterm((NCURSES_CONST char *) ttype, STDOUT_FILENO,
+ &errret)) != OK) {
+ if (errret == 0) {
+ (void) fprintf(stderr, "tset: unknown terminal type %s\n",
+ ttype);
+ ttype = 0;
+ } else {
+ (void) fprintf(stderr,
+ "tset: can't initialize terminal type %s (error %d)\n",
+ ttype, errret);
+ ttype = 0;
}
+ ttype = askuser(ttype);
+ }
#if BROKEN_LINKER
- tgetflag("am"); /* force lib_termcap.o to be linked for 'ospeed' */
+ tgetflag("am"); /* force lib_termcap.o to be linked for 'ospeed' */
#endif
- return (ttype);
+ return (ttype);
}
/**************************************************************************
#define CHK(val, dft) ((int)val <= 0 ? dft : val)
-static bool set_tabs (void);
+static bool set_tabs(void);
/*
* Reset the terminal mode bits to a sensible state. Very useful after
reset_mode(void)
{
#ifdef TERMIOS
- tcgetattr(STDERR_FILENO, &mode);
+ tcgetattr(STDERR_FILENO, &mode);
#else
- stty(STDERR_FILENO,&mode);
+ stty(STDERR_FILENO, &mode);
#endif
#ifdef TERMIOS
#if defined(VDISCARD) && defined(CDISCARD)
- mode.c_cc[VDISCARD] = CHK(mode.c_cc[VDISCARD], 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);
+ 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);
+ 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);
+ 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);
+ mode.c_cc[VLNEXT] = CHK(mode.c_cc[VLNEXT], CLNEXT);
#endif
- mode.c_cc[VQUIT] = CHK(mode.c_cc[VQUIT], CQUIT);
+ 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);
+ 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);
+ 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);
+ 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);
+ 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);
+ mode.c_cc[VWERASE] = CHK(mode.c_cc[VWERASE], CWERASE);
#endif
- mode.c_iflag &= ~(IGNBRK | PARMRK | INPCK | ISTRIP | INLCR | IGNCR
+ mode.c_iflag &= ~(IGNBRK | PARMRK | INPCK | ISTRIP | INLCR | IGNCR
#ifdef IUCLC
- | IUCLC
+ | IUCLC
#endif
#ifdef IXANY
- | IXANY
+ | IXANY
#endif
- | IXOFF);
+ | IXOFF);
- mode.c_iflag |= (BRKINT | IGNPAR | ICRNL | IXON
+ mode.c_iflag |= (BRKINT | IGNPAR | ICRNL | IXON
#ifdef IMAXBEL
- | IMAXBEL
+ | IMAXBEL
#endif
- );
+ );
- mode.c_oflag &= ~(0
+ mode.c_oflag &= ~(0
#ifdef OLCUC
- | OLCUC
+ | OLCUC
#endif
#ifdef OCRNL
- | OCRNL
+ | OCRNL
#endif
#ifdef ONOCR
- | ONOCR
+ | ONOCR
#endif
#ifdef ONLRET
- | ONLRET
+ | ONLRET
#endif
#ifdef OFILL
- | OFILL
+ | OFILL
#endif
#ifdef OFDEL
- | OFDEL
+ | OFDEL
#endif
#ifdef NLDLY
- | NLDLY | CRDLY | TABDLY | BSDLY | VTDLY | FFDLY
+ | NLDLY | CRDLY | TABDLY | BSDLY | VTDLY | FFDLY
#endif
- );
+ );
- mode.c_oflag |= (OPOST
+ mode.c_oflag |= (OPOST
#ifdef ONLCR
- | ONLCR
+ | ONLCR
#endif
- );
+ );
- mode.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD | CLOCAL);
- mode.c_cflag |= (CS8 | CREAD);
- mode.c_lflag &= ~(ECHONL | NOFLSH
+ mode.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD | CLOCAL);
+ mode.c_cflag |= (CS8 | CREAD);
+ mode.c_lflag &= ~(ECHONL | NOFLSH
#ifdef TOSTOP
- | TOSTOP
+ | TOSTOP
#endif
#ifdef ECHOPTR
- | ECHOPRT
+ | ECHOPRT
#endif
#ifdef XCASE
- | XCASE
+ | XCASE
#endif
- );
+ );
- mode.c_lflag |= (ISIG | ICANON | ECHO | ECHOE | ECHOK
+ mode.c_lflag |= (ISIG | ICANON | ECHO | ECHOE | ECHOK
#ifdef ECHOCTL
- | ECHOCTL
+ | ECHOCTL
#endif
#ifdef ECHOKE
- | ECHOKE
+ | ECHOKE
#endif
- );
+ );
#endif
#ifdef TERMIOS
- tcsetattr(STDERR_FILENO, TCSADRAIN, &mode);
+ tcsetattr(STDERR_FILENO, TCSADRAIN, &mode);
#else
- stty(STDERR_FILENO, &mode);
+ stty(STDERR_FILENO, &mode);
#endif
}
static int
default_erase(void)
{
- int result;
+ int result;
- if (over_strike
- && key_backspace != 0
- && strlen(key_backspace) == 1)
- result = key_backspace[0];
- else
- result = CERASE;
+ if (over_strike
+ && key_backspace != 0
+ && strlen(key_backspace) == 1)
+ result = key_backspace[0];
+ else
+ result = CERASE;
- return result;
+ return result;
}
/*
set_control_chars(void)
{
#ifdef TERMIOS
- if (mode.c_cc[VERASE] == 0 || terasechar >= 0)
- mode.c_cc[VERASE] = terasechar >= 0 ? terasechar : default_erase();
+ if (mode.c_cc[VERASE] == 0 || terasechar >= 0)
+ mode.c_cc[VERASE] = terasechar >= 0 ? terasechar : default_erase();
- if (mode.c_cc[VINTR] == 0 || intrchar >= 0)
- mode.c_cc[VINTR] = intrchar >= 0 ? intrchar : CINTR;
+ if (mode.c_cc[VINTR] == 0 || intrchar >= 0)
+ mode.c_cc[VINTR] = intrchar >= 0 ? intrchar : CINTR;
- if (mode.c_cc[VKILL] == 0 || tkillchar >= 0)
- mode.c_cc[VKILL] = tkillchar >= 0 ? tkillchar : CKILL;
+ if (mode.c_cc[VKILL] == 0 || tkillchar >= 0)
+ mode.c_cc[VKILL] = tkillchar >= 0 ? tkillchar : CKILL;
#endif
}
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")) {
+ /*
+ * 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;
+ mode.c_iflag |= IUCLC;
+ mode.c_oflag |= OLCUC;
#endif
- } else if (tgetflag("LC")) {
+ } else if (tgetflag("LC")) {
#ifdef IUCLC
- mode.c_iflag &= ~IUCLC;
- mode.c_oflag &= ~OLCUC;
+ 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;
- }
+ }
+ 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;
+ mode.c_oflag |= ONLCR;
#endif
- mode.c_iflag |= ICRNL;
- mode.c_lflag |= ECHO;
+ mode.c_iflag |= ICRNL;
+ mode.c_lflag |= ECHO;
#ifdef OXTABS
- mode.c_oflag |= 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. */
+ /* test used to be tgetflag("NL") */
+ if (newline != (char *) 0 && newline[0] == '\n' && !newline[1]) {
+ /* Newline, not linefeed. */
#ifdef ONLCR
- mode.c_oflag &= ~ONLCR;
+ mode.c_oflag &= ~ONLCR;
#endif
- mode.c_iflag &= ~ICRNL;
- }
+ mode.c_iflag &= ~ICRNL;
+ }
#ifdef __OBSOLETE__
- if (tgetflag("HD")) /* Half duplex. */
- mode.c_lflag &= ~ECHO;
+ 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;
+ /* test used to be tgetflag("pt") */
+ if (has_hardware_tabs) /* Print tabs. */
+ mode.c_oflag &= ~OXTABS;
#endif /* OXTABS */
- mode.c_lflag |= (ECHOE | ECHOK);
+ mode.c_lflag |= (ECHOE | ECHOK);
#endif
}
static void
set_init(void)
{
- char *p;
- bool settle;
+ char *p;
+ bool settle;
#ifdef __OBSOLETE__
- if (pad_char != (char *)0) /* Get/set pad character. */
- PC = pad_char[0];
+ 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);
- tcsetattr(STDERR_FILENO, TCSADRAIN, &oldmode);
- }
+ if (oldmode.c_oflag & (TAB3 | ONLCR | OCRNL | ONLRET)) {
+ oldmode.c_oflag &= (TAB3 | ONLCR | OCRNL | ONLRET);
+ tcsetattr(STDERR_FILENO, TCSADRAIN, &oldmode);
+ }
#endif
- settle = set_tabs();
+ 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 (isreset) {
+ if ((p = reset_1string) != 0) {
+ tputs(p, 0, outc);
+ settle = TRUE;
}
-
- if (settle) {
- (void)putc('\r', stderr);
- (void)fflush(stderr);
- (void)napms(1000); /* Settle the terminal. */
+ 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. */
+ }
}
/*
static bool
set_tabs()
{
- 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 that .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);
+ 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 that .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);
}
- return (FALSE);
+ putc('\r', stderr);
+ return (TRUE);
+ }
+ return (FALSE);
}
/**************************************************************************
report(const char *name, int which, unsigned def)
{
#ifdef TERMIOS
- 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");
-
- /*
- * Check 'delete' before 'backspace', since the key_backspace value
- * is ambiguous.
- */
- 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", newer, newer);
- } else
- (void)fprintf(stderr, "%c.\n", newer);
+ 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");
+
+ /*
+ * Check 'delete' before 'backspace', since the key_backspace value
+ * is ambiguous.
+ */
+ 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", newer, newer);
+ } else
+ (void) fprintf(stderr, "%c.\n", newer);
#endif
}
static void
obsolete(char **argv)
{
- for (; *argv; ++argv) {
- char *parm = argv[0];
+ for (; *argv; ++argv) {
+ char *parm = argv[0];
- if (parm[0] == '-' && parm[1] == '\0')
- {
- argv[0] = strdup("-q");
- continue;
- }
+ 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;
- }
+ 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(const char* pname)
+usage(const char *pname)
{
- (void)fprintf(stderr,
-"usage: %s [-IQrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]\n", pname);
- exit(EXIT_FAILURE);
+ (void) fprintf(stderr,
+ "usage: %s [-IQrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]\n", pname);
+ exit(EXIT_FAILURE);
}
-static char arg_to_char(void)
+static char
+arg_to_char(void)
{
- return (optarg[0] == '^' && optarg[1] != '\0')
- ? ((optarg[1] == '?') ? '\177' : CTRL(optarg[1]))
- : optarg[0];
+ return (optarg[0] == '^' && optarg[1] != '\0')
+ ? ((optarg[1] == '?') ? '\177' : CTRL(optarg[1]))
+ : optarg[0];
}
int
main(int argc, char **argv)
{
#if defined(TIOCGWINSZ) && defined(TIOCSWINSZ)
- struct winsize win;
+ struct winsize win;
#endif
- int ch, noinit, noset, quiet, Sflag, sflag, showterm;
- const char *p;
- const char *ttype;
+ int ch, noinit, noset, quiet, Sflag, sflag, showterm;
+ const char *p;
+ const char *ttype;
#ifdef TERMIOS
- if (tcgetattr(STDERR_FILENO, &mode) < 0)
- failed("standard error");
+ if (tcgetattr(STDERR_FILENO, &mode) < 0)
+ failed("standard error");
- oldmode = mode;
- ospeed = cfgetospeed(&mode);
+ oldmode = mode;
+ ospeed = cfgetospeed(&mode);
#else
- if (gtty(STDERR_FILENO, &mode) < 0)
- failed("standard error");
+ if (gtty(STDERR_FILENO, &mode) < 0)
+ failed("standard error");
- oldmode = mode;
- ospeed = mode.sg_ospeed;
+ oldmode = mode;
+ ospeed = mode.sg_ospeed;
#endif
- if ((p = strrchr(*argv, '/')) != 0)
- ++p;
- else
- p = *argv;
- if (!CaselessCmp(p, "reset")) {
- isreset = 1;
- reset_mode();
- }
-
- obsolete(argv);
- noinit = noset = quiet = Sflag = sflag = showterm = 0;
- while ((ch = getopt(argc, argv, "a:d:e:Ii:k:m:np:qQSrs")) != EOF) {
- switch (ch) {
- case 'q': /* display term only */
- noset = 1;
- 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 'S': /* OBSOLETE: output TERM & TERMCAP */
- Sflag = 1;
- break;
- case 'r': /* display term on stderr */
- showterm = 1;
- break;
- case 's': /* output TERM set command */
- sflag = 1;
- break;
- case '?':
- default:
- usage(*argv);
- }
+ if ((p = strrchr(*argv, '/')) != 0)
+ ++p;
+ else
+ p = *argv;
+ if (!CaselessCmp(p, "reset")) {
+ isreset = 1;
+ reset_mode();
+ }
+
+ obsolete(argv);
+ noinit = noset = quiet = Sflag = sflag = showterm = 0;
+ while ((ch = getopt(argc, argv, "a:d:e:Ii:k:m:np:qQSrs")) != EOF) {
+ switch (ch) {
+ case 'q': /* display term only */
+ noset = 1;
+ 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 'S': /* OBSOLETE: output TERM & TERMCAP */
+ Sflag = 1;
+ break;
+ case 'r': /* display term on stderr */
+ showterm = 1;
+ break;
+ case 's': /* output TERM set command */
+ sflag = 1;
+ break;
+ case '?':
+ default:
+ usage(*argv);
}
- argc -= optind;
- argv += optind;
+ }
+ argc -= optind;
+ argv += optind;
- if (argc > 1)
- usage(*argv);
+ if (argc > 1)
+ usage(*argv);
- ttype = get_termcap_entry(*argv);
+ ttype = get_termcap_entry(*argv);
- if (!noset) {
- tcolumns = columns;
- tlines = lines;
+ if (!noset) {
+ tcolumns = columns;
+ tlines = lines;
#if defined(TIOCGWINSZ) && defined(TIOCSWINSZ)
- /* Set window size */
- (void)ioctl(STDERR_FILENO, TIOCGWINSZ, &win);
- if (win.ws_row == 0 && win.ws_col == 0 &&
- tlines > 0 && tcolumns > 0) {
- win.ws_row = tlines;
- win.ws_col = tcolumns;
- (void)ioctl(STDERR_FILENO, TIOCSWINSZ, &win);
- }
+ /* Set window size */
+ (void) ioctl(STDERR_FILENO, TIOCGWINSZ, &win);
+ if (win.ws_row == 0 && win.ws_col == 0 &&
+ tlines > 0 && tcolumns > 0) {
+ win.ws_row = tlines;
+ win.ws_col = tcolumns;
+ (void) ioctl(STDERR_FILENO, TIOCSWINSZ, &win);
+ }
#endif
- set_control_chars();
- set_conversions();
+ set_control_chars();
+ set_conversions();
- if (!noinit)
- set_init();
+ if (!noinit)
+ set_init();
- /* Set the modes if they've changed. */
- if (memcmp(&mode, &oldmode, sizeof(mode)))
+ /* Set the modes if they've changed. */
+ if (memcmp(&mode, &oldmode, sizeof(mode))) {
#ifdef TERMIOS
- tcsetattr(STDERR_FILENO, TCSADRAIN, &mode);
+ tcsetattr(STDERR_FILENO, TCSADRAIN, &mode);
#else
- stty(STDERR_FILENO, &mode);
+ stty(STDERR_FILENO, &mode);
#endif
}
+ }
- /* 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.
- */
- if (!quiet) {
- report("Erase", VERASE, CERASE);
- report("Kill", VKILL, CINTR);
- report("Interrupt", VINTR, CKILL);
- }
- }
+ /* Get the terminal name from the entry. */
+ ttype = _nc_first_name(cur_term->type.term_names);
- if (Sflag)
- err("The -S option is not supported under terminfo.");
-
- if (sflag) {
- /*
- * Figure out what shell we're using. A hack, we look for an
- * environmental variable SHELL ending in "csh".
- */
- if ((p = getenv("SHELL")) != 0
- && !strcmp(p + strlen(p) - 3, "csh"))
- p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n";
- else
- p = "TERM=%s;\n";
- (void) printf(p, ttype);
+ 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) {
+ report("Erase", VERASE, CERASE);
+ report("Kill", VKILL, CINTR);
+ report("Interrupt", VINTR, CKILL);
}
+ }
+
+ if (Sflag)
+ err("The -S option is not supported under terminfo.");
+
+ if (sflag) {
+ /*
+ * Figure out what shell we're using. A hack, we look for an
+ * environmental variable SHELL ending in "csh".
+ */
+ if ((p = getenv("SHELL")) != 0
+ && !strcmp(p + strlen(p) - 3, "csh"))
+ p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n";
+ else
+ p = "TERM=%s;\n";
+ (void) printf(p, ttype);
+ }
- return EXIT_SUCCESS;
+ return EXIT_SUCCESS;
}
/* tset.c ends here */
+++ /dev/null
-.*-.*-linux.* libform=4
-.*-.*-linux.* libmenu=4
-.*-.*-linux.* libncurses=4
-.*-.*-linux.* libpanel=4
#define TYPEOF_CHTYPE long
#define USE_DATABASE 1
#define USE_HASHMAP 1
-#define USE_SCROLL_HINTS 1
#define USE_LINKS 1
#define NCURSES_NO_PADDING 1
#define USE_SIGWINCH 1
Current history:
+2000/03/04 Fix a few spelling errors
+1999/09/04 Minor fix to build/link on BeOS
1999/05/16 Minor fix to build/link on CLIX
1999/05/09 Update to build/link on NeXT
1999/04/17 Update to work with ncurses 5.0 beta1 (TERMTYPE struct)
released to USENET in comp.sources. TED was originally written to
test both terminfos and termcaps. The original intent was to
create a terminfo editor. This code fell quite short of its goal.
-Tests were controled by command line switches and editing was done
+Tests were controlled by command line switches and editing was done
with pen and paper.
In 1995 Eric S. Raymond got interested in the program and added
-# $Id: Makefile.in,v 1.9 1999/09/18 23:33:48 tom Exp $
+# $Id: Makefile.in,v 1.19 2000/07/08 01:56:35 tom Exp $
# Makefile for tack
#
# The variable 'srcdir' refers to the source-distribution, and can be set with
exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
+mandir = @mandir@/man1
includedir = @includedir@
datadir = @datadir@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
AWK = @AWK@
LN_S = @LN_S@
CC = @CC@
+CPP = @CPP@
CFLAGS = @CFLAGS@
INCDIR = $(srcdir)/../include
CFLAGS_NORMAL = $(CCFLAGS)
CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE
CFLAGS_PROFILE = $(CCFLAGS) -pg
-CFLAGS_SHARED = $(CCFLAGS) # @CC_SHARED_OPTS@
+CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@
CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@)
LD = @LD@
-LINK = $(CC)
+LINK = @LINK_PROGS@ $(CC)
LDFLAGS = @EXTRA_LDFLAGS@ \
@PROG_ARGS@ @LDFLAGS@ @LD_MODEL@ @LIBS@ @EXTRA_LIBS@
LDFLAGS_NORMAL = $(LDFLAGS)
LDFLAGS_DEBUG = $(LDFLAGS) @CC_G_OPT@
LDFLAGS_PROFILE = $(LDFLAGS) -pg
-LDFLAGS_SHARED = $(LDFLAGS) @CC_SHARED_OPTS@ # @LD_SHARED_OPTS@
+LDFLAGS_SHARED = $(LDFLAGS) @LD_SHARED_OPTS@
LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@)
LINT = @LINT@
LINT_OPTS = @LINT_OPTS@
-LINT_LIBS = -lncurses @LIBS@
+LINT_LIBS = -lncurses@LIB_SUFFIX@ @LIBS@
PROGS = tack$x
# Default library, for linking applications
-DEPS_CURSES = ../lib/libncurses@DFT_DEP_SUFFIX@
+DEPS_CURSES = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
################################################################################
all: $(PROGS)
uninstall: uninstall.tack
# this line simplifies the configure-script
-install.libs:
+libs \
+install.libs \
uninstall.libs:
-install.tack: $(PROGS) $(INSTALL_PREFIX)$(bindir)
- $(INSTALL_PROGRAM) tack$x $(INSTALL_PREFIX)$(bindir)/tack$x
+install.tack: $(PROGS) \
+ $(INSTALL_PREFIX)$(bindir) \
+ $(INSTALL_PREFIX)$(mandir)
+ $(INSTALL_PROGRAM) tack$x $(INSTALL_PREFIX)$(bindir)/tack$x
+ $(INSTALL_DATA) $(srcdir)/tack.1 $(INSTALL_PREFIX)$(mandir)/tack.1
uninstall.tack:
-@rm -f $(INSTALL_PREFIX)$(bindir)/tack$x
+ -@rm -f $(INSTALL_PREFIX)$(mandir)/tack.1
-$(INSTALL_PREFIX)$(bindir) :
+$(INSTALL_PREFIX)$(bindir) \
+$(INSTALL_PREFIX)$(mandir) :
$(srcdir)/../mkinstalldirs $@
#
cd ../ncurses; $(MAKE) $(CF_MFLAGS)
lint:
- $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/clear.c $(LINT_LIBS)
+ $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/*.c $(LINT_LIBS)
###############################################################################
# The remainder of this file is automatically generated during configuration
--- $Id: README,v 1.1 1999/04/18 01:41:31 tom Exp $
+-- $Id: README,v 1.2 2000/03/12 02:39:12 Daniel.Weaver Exp $
-The 'tack' program is distributed with ncurses, but is not an integral
-part of ncurses (the two are licensed differently, and the tack directory
-may be removed without causing ncurses to configure or build properly).
+The 'tack' program is a diagnostic that is designed to create and
+verify the correctness of terminfo's. This program can be used to
+create new terminal descriptions that are not included in the standard
+release. Although 'tack' is distributed with ncurses, it is not an
+integral part of ncurses. It may be removed from the release without
+limiting the usefulness of ncurses on those terminals described in the
+terminfo data base. The best way to remove 'tack' from the build is
+to delete or rename the 'tack' directory before running the configure
+script.
+
+Unlike most of ncurses the 'tack' program is covered under the GNU
+Public License.
#include <tack.h>
-MODULE_ID("$Id: ansi.c,v 1.2 1999/08/21 23:11:57 tom Exp $")
+MODULE_ID("$Id: ansi.c,v 1.5 2000/04/22 21:06:57 tom Exp $")
/*
* Standalone tests for ANSI terminals. Three entry points:
#define MAX_MODES 256
static char default_bank[] = "\033(B\017";
-static int private_use, ape, terminal_class, got_escape;
+static int private_use, ape, terminal_class;
static short ansi_value[256];
-static char ansi_buf[512], pack_buf[512];
-static char *ach, *pch;
+static unsigned char ansi_buf[512], pack_buf[512];
struct ansi_reports {
int lvl, final;
{63, 0, "(DECRQSS) Top and bottom margins", "\033P$qr\033\\"},
{63, 0, "(DECRQSS) Character attributes", "\033P$qm\033\\"},
{63, 0, "(DECRQSS) Illegal request", "\033P$q@\033\\"},
- {63, 0, "(DECRQUPSS) User pref suplemental set", "\033[&u"},
+ {63, 0, "(DECRQUPSS) User pref supplemental set", "\033[&u"},
{63, 0, "(DECRQPSR) Cursor information", "\033[1$w"},
{63, 0, "(DECRQPSR) Tab stop information", "\033[2$w"},
{64, 0, "(DA) Tertiary device attributes", "\033[=0c"},
{"\033[0$~\033[1$}", "\033[0$}", 0, 0, 0},
{"Data sent to enabled status line", "1", "$}", 0, 0},
{"\033[2$~\033[1$}", "\033[0$}", 0, 0, 0},
- {"Disbale status line", "0", "$~", "\033[0$~", 0},
+ {"Disable status line", "0", "$~", "\033[0$~", 0},
{"Top status line", "1", "$~", "\033[1$~", 0},
{"Bottom status line", "2", "$~", "\033[2$~", 0},
- {"Eraseable character", "0", "\"q", "\033[0\"q", 0},
- {"Noneraseable character", "1", "\"q", "\033[1\"q", "\033[0\"q"},
+ {"Erasable character", "0", "\"q", "\033[0\"q", 0},
+ {"Nonerasable character", "1", "\"q", "\033[1\"q", "\033[0\"q"},
{"Top and bottom margins", "3;10", "r", "\0337\033[3;10r", 0},
{"\033[r\0338", 0, 0, 0, 0},
{"Top and bottom margins", "default", "r", "\0337\033[r", "\0338"},
{0, 0, 0, 0, 0}
};
-/*
-** pack_ansi()
-**
-** read and pack an ANSI character
-*/
-static int
-pack_ansi(void)
-{
- int ch;
-
- if (*pch)
- return *pch++;
-
- while (1) {
- ch = getchp(char_mask);
- if (ch == EOF)
- return EOF;
- if (ch == A_DC1 || ch == A_DC3)
- continue;
- *ach++ = ch;
- *ach = '\0';
- if (got_escape && ch >= ' ') {
- got_escape = 0;
- if (ch < '@' || ch > '_') {
- *pch++ = A_ESC;
- *pch = ch;
- pch[1] = '\0';
- return A_ESC;
- }
- ch += 0x40;
- break;
- } else if (ch == A_ESC) {
- got_escape = 1;
- } else {
- break;
- }
- }
- *pch++ = ch;
- *pch = '\0';
- return ch;
-}
-
/*
** read_ansi()
static void
read_ansi(void)
{
- int ch;
+ int ch, i, j, last_escape;
fflush(stdout);
- ach = ansi_buf;
- pch = pack_buf;
- ansi_buf[0] = pack_buf[0] = '\0';
- got_escape = 0;
- ch = pack_ansi();
- if (ch == A_ESC)
- do {
- ch = pack_ansi();
- if (ch == EOF)
- return;
- } while (ch < '0' || ch > '~');
- else
- if (ch == A_CSI)
- do {
- ch = pack_ansi();
- if (ch == EOF)
- return;
- } while (ch < '@' || ch > '~');
- else
- if (ch == A_DCS)
- do {
- ch = pack_ansi();
- if (ch == EOF)
- return;
- } while (ch != A_ST);
+ read_key(ansi_buf, sizeof(ansi_buf));
+ /* Throw away control characters inside CSI sequences.
+ Convert two character 7-bit sequences into 8-bit sequences. */
+ for (i = j = last_escape = 0; (ch = ansi_buf[i]) != 0; i++) {
+ if (ch == A_ESC) {
+ if (last_escape == A_ESC) {
+ pack_buf[j++] = A_ESC;
+ }
+ last_escape = A_ESC;
+ } else
+ if (last_escape == A_ESC && ch >= '@' && ch <= '_') {
+ pack_buf[j++] = last_escape = ch + 0x40;
+ } else
+ if (last_escape != A_CSI || (ch > 0x20 && ch != 0x80)) {
+ if (last_escape == A_ESC) {
+ pack_buf[j++] = A_ESC;
+ }
+ if (ch > 0x80 && ch < 0xa0) {
+ last_escape = ch;
+ }
+ pack_buf[j++] = ch;
+ }
+ }
+ if (last_escape == A_ESC) {
+ pack_buf[j++] = A_ESC;
+ }
+ pack_buf[j] = '\0';
return;
}
tc < report_list[i].lvl) {
put_crlf();
menu_prompt();
- ptext(" <return> to continue > ");
+ ptext("/status [q] > ");
j = wait_here();
- if (j != 'c' && j != 'C')
- return j;
+ if (j != 'n' && j != 'N')
+ return 0;
tc = report_list[i].lvl;
+ lc = 1;
} else if (lc + 2 >= lines) {
put_crlf();
ptext("Hit any key to continue ");
break;
}
j = pack_buf[0] & 0xff;
- if (j == A_CSI || j == A_DCS) {
- s = expand(ansi_buf);
- if (char_count + expand_chars >= columns) {
- put_str("\r\n ");
- lc++;
- }
- put_str(s);
+ if (j != A_CSI && j != A_DCS) {
+ put_crlf();
+ s = "*** The above request gives illegal response ***";
+ ptext(s);
+ for (j = strlen(s); j < 49; j++)
+ putchp(' ');
}
- put_crlf();
+ s = expand(ansi_buf);
+ if (char_count + expand_chars >= columns) {
+ put_str("\r\n ");
+ lc++;
+ }
+ putln(s);
if (vcr) { /* find out how big the screen is */
tc_putp(report_list[i].request);
if (!valid_mode('R'))
}
}
menu_prompt();
- ptext(" r->repeat test, <return> to continue > ");
+ ptext("/status r->repeat test, <return> to continue > ");
return wait_here();
}
ptext("Begin ANSI status report testing. ");
ptext(" Parity bit set will be displayed in reverse video. ");
ptext(" If the terminal hangs, hit any alphabetic key. ");
- ptextln(" Use c to continue testing. Use any other letter to quit.");
+ ptextln(" Use n to continue testing. Use q to quit.");
put_crlf();
}
/*
-** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
+** Copyright (C) 1991, 1997-2000 Free Software Foundation, Inc.
**
** This file is part of TACK.
**
#include <tack.h>
-MODULE_ID("$Id: charset.c,v 1.2 1999/05/09 18:30:49 tom Exp $")
+MODULE_ID("$Id: charset.c,v 1.4 2000/03/04 20:30:52 tom Exp $")
/*
Menu definitions for alternate character set and SGR tests.
static void charset_attributes(struct test_list *t, int *state, int *ch);
static void charset_sgr(struct test_list *t, int *state, int *ch);
-const struct test_list acs_test_list[] = {
+struct test_list acs_test_list[] = {
{0, 0, 0, 0, "e) edit terminfo", 0, &edit_menu},
{MENU_NEXT, 3, "bel", 0, 0, charset_bel, 0},
{MENU_NEXT, 3, "flash", 0, 0, charset_flash, 0},
/*
** charset_smacs(test_list, status, ch)
**
-** display all posible acs characters
+** display all possible acs characters
** (smacs) (rmacs)
*/
static void
#include <tack.h>
-MODULE_ID("$Id: color.c,v 1.1 1999/04/18 01:24:45 tom Exp $")
+MODULE_ID("$Id: color.c,v 1.2 2000/03/04 21:05:54 tom Exp $")
/*
* Color terminal tests. Has only one entry point: test_color().
static int
rainbow(int n)
-{ /* print the programable color display */
+{ /* print the programmable color display */
int i, c, d, palette_full, initial_pair;
static const struct {
const char *name;
#include <sys/time.h>
#endif
-MODULE_ID("$Id: control.c,v 1.2 1999/06/16 00:45:59 tom Exp $")
+MODULE_ID("$Id: control.c,v 1.3 2000/03/04 21:10:59 tom Exp $")
/* terminfo test program control subroutines */
int tt_delay_max; /* max number of milliseconds we can delay */
int tt_delay_used; /* number of milliseconds consumed in delay */
const char *tt_cap[TT_MAX]; /* value of string */
-int tt_affected[TT_MAX]; /* lines or columns effected (repitition factor) */
+int tt_affected[TT_MAX]; /* lines or columns effected (repetition factor) */
int tt_count[TT_MAX]; /* Number of times sent */
int tt_delay[TT_MAX]; /* Number of milliseconds delay */
int ttp; /* number of entries used */
/* Saved value of the above data base */
const char *tx_cap[TT_MAX]; /* value of string */
-int tx_affected[TT_MAX]; /* lines or columns effected (repitition factor) */
+int tx_affected[TT_MAX]; /* lines or columns effected (repetition factor) */
int tx_count[TT_MAX]; /* Number of times sent */
int tx_index[TT_MAX]; /* String index */
int tx_delay[TT_MAX]; /* Number of milliseconds delay */
#include <tack.h>
-MODULE_ID("$Id: crum.c,v 1.2 1999/08/21 23:09:08 tom Exp $")
+MODULE_ID("$Id: crum.c,v 1.3 2000/03/04 21:09:18 tom Exp $")
/*
* Test cursor movement.
rf = rt;
}
}
- if (sel & 4) { /* paramiterized relative cursor movement */
+ if (sel & 4) { /* parameterized relative cursor movement */
if (parm_right_cursor)
if (cf < ct) {
s = tparm(parm_right_cursor, ct - cf);
#include <time.h>
#include <tic.h>
-MODULE_ID("$Id: edit.c,v 1.3 1999/06/16 00:43:43 tom Exp $")
+MODULE_ID("$Id: edit.c,v 1.5 2000/03/25 17:26:12 tom Exp $")
/*
* Terminfo edit features
/*
** send_info_string(str)
**
-** Return the terminfo string prefixed by the correct seperator
+** Return the terminfo string prefixed by the correct separator
*/
static void
send_info_string(
/*
** save_info_string(str, fp)
**
-** Write the terminfo string prefixed by the correct seperator
+** Write the terminfo string prefixed by the correct separator
*/
static void
save_info_string(
switch (nt->nte_type) {
case STRING:
_nc_reset_input((FILE *) 0, buf);
- _nc_trans_string(tmp);
+ _nc_trans_string(tmp, tmp + sizeof(tmp));
s = (char *)malloc(strlen(tmp) + 1);
strcpy(s, tmp);
CUR Strings[nt->nte_index] = s;
**
** Scan the name list and get the names.
** Enter each name into the can-test data base.
-** <space> ( and ) may be used as seperators.
+** <space> ( and ) may be used as separators.
*/
void
can_test(
** cap_index(name-list, index-list)
**
** Scan the name list and return a list of indexes.
-** <space> ( and ) may be used as seperators.
+** <space> ( and ) may be used as separators.
** This list is terminated with -1.
*/
void
**
** Scan the name list and see if the cap is in the list.
** Return TRUE if we find an exact match.
-** <space> ( and ) may be used as seperators.
+** <space> ( and ) may be used as separators.
*/
int
cap_match(
ptextln("That string is not currently defined. Please enter a new value, including the padding delay:");
read_string(buf, sizeof(buf));
_nc_reset_input((FILE *) 0, buf);
- _nc_trans_string(pad);
+ _nc_trans_string(pad, pad + sizeof(pad));
t = (char *)malloc(strlen(pad) + 1);
strcpy(t, pad);
CUR Strings[x] = t;
#include <tack.h>
-MODULE_ID("$Id: fun.c,v 1.2 1999/06/16 00:46:12 tom Exp $")
+MODULE_ID("$Id: fun.c,v 1.3 2000/03/04 20:29:21 tom Exp $")
/*
* Test the function keys on the terminal. The code for echo tests
static void
fresh_line(void)
-{ /* clear the line for a new fumction key line */
+{ /* clear the line for a new function key line */
if (over_strike) {
put_crlf();
} else {
mm[i] = '\0';
put_crlf();
if (mm[0] != 'a' || mm[1] != 'b' || mm[2] != 'c') {
- sprintf(temp, "Error string recieved was: %s", expand(mm));
+ sprintf(temp, "Error string received was: %s", expand(mm));
ptextln(temp);
} else {
putln("Thank you\n");
{
ptextln("The following commands may also be entered:");
ptextln(" clear clear screen.");
- ptextln(" columns print a test patterm to help count screen width.");
- ptextln(" lines print a test patterm to help count screen length.");
+ ptextln(" columns print a test pattern to help count screen width.");
+ ptextln(" lines print a test pattern to help count screen length.");
ptextln(" end exit.");
ptextln(" echo redisplay last report.");
if (crx) {
/*
** Copyright (C) 1991, 1997 Free Software Foundation, Inc.
-**
+**
** This file is part of TACK.
-**
+**
** TACK 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, or (at your option)
** any later version.
-**
+**
** TACK 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 TACK; see the file COPYING. If not, write to
** the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
#include <tack.h>
-MODULE_ID("$Id: init.c,v 1.1 1999/04/18 01:05:23 tom Exp $")
+MODULE_ID("$Id: init.c,v 1.2 2000/05/13 19:58:48 Daniel.Weaver Exp $")
#if NCURSES_VERSION_MAJOR >= 5 || NCURSES_VERSION_PATCH >= 981219
#define _nc_get_curterm(p) _nc_get_tty_mode(p)
fflush(stdout); /* waste some time */
sleep(1); /* waste more time */
charset_can_test();
- can_test("lines cols cr nxon rf if iprog rmp", FLAG_CAN_TEST);
+ can_test("lines cols cr nxon rf if iprog rmp smcup rmcup", FLAG_CAN_TEST);
edit_init(); /* initialize the edit data base */
if (send_reset_init && enter_ca_mode) {
#include <tack.h>
-MODULE_ID("$Id: menu.c,v 1.1 1998/01/10 00:29:30 tom Exp $")
+MODULE_ID("$Id: menu.c,v 1.2 2000/03/04 21:13:53 tom Exp $")
/*
Menu control
}
nch = 0;
if (test->test_procedure) {
- /* The procedure takes precidence so I can pass
+ /* The procedure takes precedence so I can pass
the menu entry as an argument.
*/
can_test(test->caps_done, FLAG_TESTED);
/*
** menu_can_scan(menu-structure)
**
-** Recursivly scan the menu tree and find which cap names can be tested.
+** Recursively scan the menu tree and find which cap names can be tested.
*/
void
menu_can_scan(
/*
** menu_search(menu-structure, cap)
**
-** Recursivly search the menu tree and execute any tests that use cap.
+** Recursively search the menu tree and execute any tests that use cap.
*/
static void
menu_search(
#include <tack.h>
#include <time.h>
-MODULE_ID("$Id: output.c,v 1.4 1999/06/16 00:46:53 tom Exp $")
+MODULE_ID("$Id: output.c,v 1.5 2000/03/04 21:06:57 tom Exp $")
/* globals */
long char_sent; /* number of characters sent */
** ptext(string)
**
** Output a string but do not assume the terminal will wrap to a
-** new line. Break the line at a word boundry then send a CR LF.
-** This is more estetic on 40 column terminals.
+** new line. Break the line at a word boundary then send a CR LF.
+** This is more esthetic on 40 column terminals.
*/
void
ptext(const char *s)
#include <tack.h>
-MODULE_ID("$Id: pad.c,v 1.1 1998/01/10 00:30:27 tom Exp $")
+MODULE_ID("$Id: pad.c,v 1.2 2000/03/04 21:04:58 tom Exp $")
/* test the pad counts on the terminal */
break;
}
clear_select++;
+ /* FALLTHRU */
case 2:
end_message = "Clear one character per line. ";
if (newline) {
break;
}
clear_select++;
+ /* FALLTHRU */
case 3:
end_message = "Clear one full line. ";
break;
if (enter_insert_mode || exit_insert_mode ||
enter_delete_mode || exit_delete_mode ||
!insert_character || !delete_character) {
- /* this test is quitely ignored */
+ /* this test is quietly ignored */
return;
}
if (skip_pad_test(t, state, ch,
} while(still_testing());
pad_test_shutdown(t, 1);
ptextln(xch1);
- ptext("The preceeding two lines should be the same. ");
+ ptext("The preceding two lines should be the same. ");
pad_done_message(t, state, ch);
}
#include <tack.h>
#include <time.h>
-MODULE_ID("$Id: sync.c,v 1.1 1998/01/10 00:31:07 tom Exp $")
+MODULE_ID("$Id: sync.c,v 1.2 2000/03/04 20:28:16 tom Exp $")
/* terminal-synchronization and performance tests */
ptextln(" the terminal is overrun with data.");
ptext("\nENQ sequence from (u9): ");
putln(expand(tty_ENQ));
- ptext("ACK recieved: ");
+ ptext("ACK received: ");
putln(expand(tty_ACK));
len = user8 ? strlen(user8) : 0;
sprintf(temp, "Length of ACK %d. Expected length of ACK %d.",
}
/*
-** sync_symmary(test_list, status, ch)
+** sync_summary(test_list, status, ch)
**
** Print out the test results.
*/
** Boston, MA 02111-1307, USA.
*/
/*
- * Operating system dependant functions. We assume the POSIX API.
+ * Operating system dependent functions. We assume the POSIX API.
* Note: on strict-POSIX systems (including BSD/OS) the select_delay_type
* global has no effect.
*/
#endif
#endif
-MODULE_ID("$Id: sysdep.c,v 1.6 1999/09/04 13:45:00 tom Exp $")
+MODULE_ID("$Id: sysdep.c,v 1.7 2000/03/04 21:02:11 tom Exp $")
#if DECL_ERRNO
extern int errno;
** Boston, MA 02111-1307, USA.
*/
-/* $Id: tack.h,v 1.5 1999/06/26 22:14:07 tom Exp $ */
+/* $Id: tack.h,v 1.6 2000/03/04 21:10:07 tom Exp $ */
#ifndef _TACK_H
#define _TACK_H 1
extern int tt_delay_max; /* max number of milliseconds we can delay */
extern int tt_delay_used; /* number of milliseconds consumed in delay */
extern const char *tt_cap[TT_MAX]; /* value of string */
-extern int tt_affected[TT_MAX]; /* lines or columns effected (repitition
+extern int tt_affected[TT_MAX]; /* lines or columns effected (repetition
factor) */
extern int tt_count[TT_MAX]; /* Number of times sent */
extern int tt_delay[TT_MAX]; /* Number of milliseconds delay */
extern int ttp; /* number of entries used */
extern const char *tx_cap[TT_MAX]; /* value of string */
-extern int tx_affected[TT_MAX]; /* lines or columns effected (repitition
+extern int tx_affected[TT_MAX]; /* lines or columns effected (repetition
factor) */
extern int tx_count[TT_MAX]; /* Number of times sent */
extern int tx_delay[TT_MAX]; /* Number of milliseconds delay */
-# $Id: Makefile.in,v 1.54 1999/10/23 20:01:19 tom Exp $
+# $Id: Makefile.in,v 1.58 2000/05/28 01:28:39 tom Exp $
##############################################################################
-# Copyright (c) 1998,1999 Free Software Foundation, Inc. #
+# Copyright (c) 1998,1999,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"), #
includedir = @includedir@
CC = @CC@
+CPP = @CPP@
CFLAGS = @CFLAGS@
CPPFLAGS = -I../test -I$(srcdir) @CPPFLAGS@ -DHAVE_CONFIG_H
ncurses$x \
newdemo$x \
rain$x \
+ railroad$x \
tclock$x \
testaddch$x \
testcurs$x \
rain$x: $(MODEL)/rain.o $(LOCAL_LIBS)
@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/rain.o $(LDFLAGS_DEFAULT)
+railroad$x: $(MODEL)/railroad.o $(LOCAL_LIBS)
+ @ECHO_LINK@ $(LINK) -o $@ $(MODEL)/railroad.o $(LDFLAGS_DEFAULT)
+
tclock$x: $(MODEL)/tclock.o $(LOCAL_LIBS)
@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/tclock.o $(LDFLAGS_DEFAULT) $(MATH_LIB)
xmas$x: $(MODEL)/xmas.o $(LOCAL_LIBS)
@ECHO_LINK@ $(LINK) -o $@ $(MODEL)/xmas.o $(LDFLAGS_DEFAULT)
-install:
-install.libs:
+libs \
+install \
+install.libs \
install.test:
uninstall:
/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1999,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 *
/*
* Author: Thomas E. Dickey <dickey@clark.net> 1999
*
- * $Id: cardfile.c,v 1.2 1999/06/16 00:41:57 tom Exp $
+ * $Id: cardfile.c,v 1.4 2000/03/19 01:34:00 tom Exp $
*
* File format: text beginning in column 1 is a title; other text forms the content.
*/
#endif
typedef struct _card {
- struct _card *link;
- PANEL *panel;
- FORM *form;
- char *title;
- char *content;
+ struct _card *link;
+ PANEL *panel;
+ FORM *form;
+ char *title;
+ char *content;
} CARD;
static CARD *all_cards;
#if !HAVE_STRDUP
#define strdup my_strdup
-static char *strdup (char *s)
+static char *
+strdup(char *s)
{
- char *p = (char *)malloc(strlen(s)+1);
+ char *p = (char *) malloc(strlen(s) + 1);
if (p)
strcpy(p, s);
- return(p);
+ return (p);
}
#endif /* not HAVE_STRDUP */
-static char *skip(char *buffer)
+static char *
+skip(char *buffer)
{
while (isspace(*buffer))
buffer++;
return buffer;
}
-static void trim(char *buffer)
+static void
+trim(char *buffer)
{
unsigned n = strlen(buffer);
while (n-- && isspace(buffer[n]))
- buffer[n] = 0;
+ buffer[n] = 0;
}
/*******************************************************************************/
-static CARD *add_title(const char *title)
+static CARD *
+add_title(const char *title)
{
CARD *card, *p, *q;
- for (p = all_cards, q = 0; p != 0; q = p, p = p->link)
- {
+ for (p = all_cards, q = 0; p != 0; q = p, p = p->link) {
int cmp = strcmp(p->title, title);
if (cmp == 0)
return p;
break;
}
- card = (CARD *)calloc(1, sizeof(CARD));
+ card = (CARD *) calloc(1, sizeof(CARD));
card->title = strdup(title);
card->content = strdup("");
- if (q == 0)
- {
+ if (q == 0) {
card->link = all_cards;
all_cards = card;
- }
- else
- {
- card->link = q->link;
+ } else {
+ card->link = q->link;
q->link = card;
}
return card;
}
-static void add_content(CARD *card, char *content)
+static void
+add_content(CARD * card, char *content)
{
unsigned total, offset;
content = skip(content);
- if ((total = strlen(content)) != 0)
- {
- if ((offset = strlen(card->content)) != 0)
- {
+ if ((total = strlen(content)) != 0) {
+ if ((offset = strlen(card->content)) != 0) {
total += 1 + offset;
- card->content = (char *)realloc(card->content, total + 1);
+ card->content = (char *) realloc(card->content, total + 1);
strcpy(card->content + offset++, " ");
- }
- else
- {
- card->content = (char *)malloc(total + 1);
+ } else {
+ card->content = (char *) malloc(total + 1);
}
strcpy(card->content + offset, content);
}
}
-static CARD *find_card(char *title)
+static CARD *
+new_card(void)
+{
+ CARD *card = add_title("");
+ add_content(card, "");
+ return card;
+}
+
+static CARD *
+find_card(char *title)
{
CARD *card;
return card;
}
-static void read_data(char *fname)
+static void
+read_data(char *fname)
{
FILE *fp;
CARD *card = 0;
char buffer[BUFSIZ];
- if ((fp = fopen(fname, "r")) != 0)
- {
- while (fgets(buffer, sizeof(buffer), fp))
- {
+ if ((fp = fopen(fname, "r")) != 0) {
+ while (fgets(buffer, sizeof(buffer), fp)) {
trim(buffer);
- if (isspace(*buffer))
- {
+ if (isspace(*buffer)) {
if (card == 0)
card = add_title("");
add_content(card, buffer);
- }
- else if ((card = find_card(buffer)) == 0)
- {
+ } else if ((card = find_card(buffer)) == 0) {
card = add_title(buffer);
}
}
/*******************************************************************************/
-static void write_data(const char *fname)
+static void
+write_data(const char *fname)
{
FILE *fp;
CARD *p = 0;
if (!strcmp(fname, default_name))
fname = "cardfile.out";
- if ((fp = fopen(fname, "w")) != 0)
- {
- for (p = all_cards; p != 0; p = p->link)
- {
+ if ((fp = fopen(fname, "w")) != 0) {
+ for (p = all_cards; p != 0; p = p->link) {
FIELD **f = form_fields(p->form);
- for (n = 0; f[n] != 0; n++)
- {
+ for (n = 0; f[n] != 0; n++) {
char *s = field_buffer(f[n], 0);
if (s != 0
- && (s = strdup(s)) != 0)
- {
+ && (s = strdup(s)) != 0) {
trim(s);
fprintf(fp, "%s%s\n", n ? "\t" : "", s);
free(s);
/*
* Count the cards
*/
-static int count_cards(void)
+static int
+count_cards(void)
{
CARD *p;
int count = 0;
/*
* Shuffle the panels to keep them in a natural hierarchy.
*/
-static void order_cards(CARD *first, int depth)
+static void
+order_cards(CARD * first, int depth)
{
- if (first)
- {
+ if (first) {
if (depth && first->link)
- order_cards(first->link, depth-1);
+ order_cards(first->link, depth - 1);
top_panel(first->panel);
}
}
/*
* Return the next card in the list
*/
-static CARD *next_card(CARD *now)
+static CARD *
+next_card(CARD * now)
{
if (now->link)
- now = now->link;
+ now = now->link;
return now;
}
/*
* Return the previous card in the list
*/
-static CARD *prev_card(CARD *now)
+static CARD *
+prev_card(CARD * now)
{
CARD *p;
for (p = all_cards; p != 0; p = p->link)
return now;
}
-
/*******************************************************************************/
-static int form_virtualize(WINDOW *w)
+static int
+form_virtualize(WINDOW *w)
{
- int c = wgetch(w);
+ int c = wgetch(w);
- switch(c)
- {
+ switch (c) {
case CTRL('W'):
- return(MAX_FORM_COMMAND + 4);
+ return (MAX_FORM_COMMAND + 4);
case CTRL('N'):
- return(MAX_FORM_COMMAND + 3);
+ return (MAX_FORM_COMMAND + 3);
case CTRL('P'):
- return(MAX_FORM_COMMAND + 2);
+ return (MAX_FORM_COMMAND + 2);
case CTRL('Q'):
case 033:
- return(MAX_FORM_COMMAND + 1);
+ return (MAX_FORM_COMMAND + 1);
case KEY_BACKSPACE:
- return(REQ_DEL_PREV);
+ return (REQ_DEL_PREV);
case KEY_DC:
- return(REQ_DEL_CHAR);
+ return (REQ_DEL_CHAR);
case KEY_LEFT:
- return(REQ_LEFT_CHAR);
+ return (REQ_LEFT_CHAR);
case KEY_RIGHT:
- return(REQ_RIGHT_CHAR);
+ return (REQ_RIGHT_CHAR);
case KEY_DOWN:
case KEY_NEXT:
- return(REQ_NEXT_FIELD);
+ return (REQ_NEXT_FIELD);
case KEY_UP:
case KEY_PREVIOUS:
- return(REQ_PREV_FIELD);
+ return (REQ_PREV_FIELD);
default:
- return(c);
+ return (c);
}
}
/*******************************************************************************/
-static void cardfile(char *fname)
+static void
+cardfile(char *fname)
{
WINDOW *win;
CARD *p;
addstr("Arrow keys move left/right within a field, up/down between fields");
/* make a panel for each CARD */
- for (p = all_cards; p != 0; p = p->link)
- {
- FIELD **f = (FIELD **)calloc(3, sizeof(FIELD *));
+ for (p = all_cards; p != 0; p = p->link) {
+ FIELD **f = (FIELD **) calloc(3, sizeof(FIELD *));
win = newwin(panel_high, panel_wide, x, y);
keypad(win, TRUE);
set_field_back(f[0], A_REVERSE);
set_field_buffer(f[0], 0, p->title);
- f[1] = new_field(form_high-1, form_wide, 1, 0, 0, 0);
+ f[1] = new_field(form_high - 1, form_wide, 1, 0, 0, 0);
set_field_buffer(f[1], 0, p->content);
set_field_just(f[1], JUSTIFY_LEFT);
order_cards(top_card = all_cards, visible_cards);
- update_panels();
-
- while (!finished)
- {
+ while (!finished) {
update_panels();
doupdate();
- switch(form_driver(top_card->form, ch = form_virtualize(panel_window(top_card->panel))))
- {
+ switch (form_driver(top_card->form, ch =
+ form_virtualize(panel_window(top_card->panel)))) {
case E_OK:
break;
case E_UNKNOWN_COMMAND:
switch (ch) {
- case MAX_FORM_COMMAND+1:
+ case MAX_FORM_COMMAND + 1:
finished = TRUE;
break;
- case MAX_FORM_COMMAND+2:
+ case MAX_FORM_COMMAND + 2:
top_card = prev_card(top_card);
order_cards(top_card, visible_cards);
break;
- case MAX_FORM_COMMAND+3:
+ case MAX_FORM_COMMAND + 3:
top_card = next_card(top_card);
order_cards(top_card, visible_cards);
break;
- case MAX_FORM_COMMAND+4:
+ case MAX_FORM_COMMAND + 4:
write_data(fname);
break;
default:
/*******************************************************************************/
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
{
int n;
cbreak();
noecho();
- if (argc > 1)
- {
+ if (argc > 1) {
for (n = 1; n < argc; n++)
read_data(argv[n]);
+ if (count_cards() == 0)
+ new_card();
cardfile(argv[1]);
- }
- else
- {
+ } else {
read_data(default_name);
+ if (count_cards() == 0)
+ new_card();
cardfile(default_name);
}
for ac_func in \
-curses_version \
gettimeofday \
napms \
resizeterm \
strdup \
+use_default_colors \
vsscanf \
+wresize \
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1471: checking for $ac_func" >&5
+echo "configure:1472: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1476 "configure"
+#line 1477 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
; return 0; }
EOF
-if { (eval echo configure:1499: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1500: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
done
+echo $ac_n "checking for function curses_version""... $ac_c" 1>&6
+echo "configure:1526: checking for function curses_version" >&5
+if eval "test \"`echo '$''{'cf_cv_func_curses_version'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+if test "$cross_compiling" = yes; then
+ cf_cv_func_curses_version=unknown
+else
+ cat > conftest.$ac_ext <<EOF
+#line 1535 "configure"
+#include "confdefs.h"
+
+#include <curses.h>
+int main()
+{
+ char temp[1024];
+ sprintf(temp, "%s\n", curses_version());
+ exit(0);
+}
+
+EOF
+if { (eval echo configure:1547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+then
+ cf_cv_func_curses_version=yes
+
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -fr conftest*
+ cf_cv_func_curses_version=no
+
+fi
+rm -fr conftest*
+fi
+
+rm -f core
+fi
+
+echo "$ac_t""$cf_cv_func_curses_version" 1>&6
+test "$cf_cv_func_curses_version" = yes && cat >> confdefs.h <<\EOF
+#define HAVE_CURSES_VERSION 1
+EOF
+
+
echo $ac_n "checking if sys/time.h conflicts with sys/select.h""... $ac_c" 1>&6
-echo "configure:1525: checking if sys/time.h conflicts with sys/select.h" >&5
+echo "configure:1571: checking if sys/time.h conflicts with sys/select.h" >&5
if eval "test \"`echo '$''{'cf_cv_sys_time_select'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1531 "configure"
+#line 1577 "configure"
#include "confdefs.h"
#if HAVE_SYS_TIME_H
; return 0; }
EOF
-if { (eval echo configure:1545: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:1591: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
cf_cv_sys_time_select=yes
else
dnl
dnl Author: Thomas E. Dickey <dickey@clark.net> 1996,1997,1998
dnl
-dnl $Id: configure.in,v 1.27 1999/10/23 20:01:42 tom Exp $
+dnl $Id: configure.in,v 1.29 1999/12/19 03:12:13 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)
)
AC_CHECK_FUNCS( \
-curses_version \
gettimeofday \
napms \
resizeterm \
strdup \
+use_default_colors \
vsscanf \
+wresize \
)
+dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS.
+dnl It's a character string "SVR4", not documented.
+AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[
+AC_TRY_RUN([
+#include <curses.h>
+int main()
+{
+ char temp[1024];
+ sprintf(temp, "%s\n", curses_version());
+ exit(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_SYS_TIME_SELECT]
AC_MSG_CHECKING(if sys/time.h conflicts with sys/select.h)
/****************************************************************************
- * Copyright (c) 1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1999,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 *
/*
* Author: Thomas E. Dickey <dickey@clark.net> 1999
*
- * $Id: dots.c,v 1.2 1999/10/23 13:24:32 tom Exp $
+ * $Id: dots.c,v 1.4 2000/02/13 01:05:13 tom Exp $
*
* A simple demo of the terminfo interface.
*/
tputs(tparm(cursor_address, y, x), 1, outc);
if (max_colors > 0) {
- z = ranf() * max_colors;
+ z = (int)(ranf() * max_colors);
if (ranf() > 0.01) {
tputs(tparm(set_a_foreground, z), 1, outc);
} else {
/*
* Author: Thomas E. Dickey <dickey@clark.net> 1998
*
- * $Id: filter.c,v 1.2 1998/05/10 00:39:27 tom Exp $
+ * $Id: filter.c,v 1.3 1999/11/13 23:39:19 tom Exp $
*/
#include <test.priv.h>
if (has_colors()) {
int background = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors () != ERR)
background = -1;
#endif
/*
- * $Id: firework.c,v 1.15 1999/10/16 21:33:39 tom Exp $
+ * $Id: firework.c,v 1.16 1999/11/13 23:39:16 tom Exp $
*/
#include <test.priv.h>
if (has_colors()) {
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
my_bg = -1;
#endif
* modified 10-18-89 for curses (jrl)
* 10-18-89 added signal handling
*
- * $Id: gdc.c,v 1.10 1997/10/18 20:06:06 tom Exp $
+ * $Id: gdc.c,v 1.14 2000/04/23 00:03:11 tom Exp $
*/
#include <test.priv.h>
#define XLENGTH 54
#define YDEPTH 5
-/* it won't be */
-static time_t now; /* yeah! */
-static struct tm *tm;
-
-static short disp[11] = {
- 075557, 011111, 071747, 071717, 055711,
- 074717, 074757, 071111, 075757, 075717, 002020
+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 char scrol;
static int sigtermed = 0;
+static bool redirected = FALSE;
+static bool hascolor = FALSE;
-static int hascolor = 0;
-
-static void set(int, int);
-static void standt(int);
-static void movto(int, int);
-
-static
-RETSIGTYPE sighndl(int signo)
+static RETSIGTYPE
+sighndl(int signo)
{
- signal(signo, sighndl);
- sigtermed=signo;
+ signal(signo, sighndl);
+ sigtermed = signo;
+ if (redirected) {
+ endwin();
+ exit(EXIT_FAILURE);
+ }
}
static void
drawbox(void)
{
- chtype bottom[XLENGTH+1];
- int n;
+ chtype bottom[XLENGTH + 1];
+ int n;
- if(hascolor)
- attrset(COLOR_PAIR(3));
+ if (hascolor)
+ attrset(COLOR_PAIR(3));
- mvaddch(YBASE - 1, XBASE - 1, ACS_ULCORNER);
- hline(ACS_HLINE, XLENGTH);
- mvaddch(YBASE - 1, XBASE + XLENGTH, ACS_URCORNER);
+ 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);
- mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
- for (n = 0; n < XLENGTH; n++)
- bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR));
- mvaddchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
- mvaddch(YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER);
+ mvaddch(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER);
+ mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
+ for (n = 0; n < XLENGTH; n++)
+ bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR));
+ mvaddchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH);
+ mvaddch(YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER);
- move(YBASE, XBASE - 1);
- vline(ACS_VLINE, YDEPTH);
+ move(YBASE, XBASE - 1);
+ vline(ACS_VLINE, YDEPTH);
- move(YBASE, XBASE + XLENGTH);
- vline(ACS_VLINE, YDEPTH);
+ move(YBASE, XBASE + XLENGTH);
+ vline(ACS_VLINE, YDEPTH);
- if(hascolor)
- attrset(COLOR_PAIR(2));
+ if (hascolor)
+ attrset(COLOR_PAIR(2));
}
-int
-main(int argc, char *argv[])
+static void
+standt(int on)
{
-long t, a;
-int i, j, s, k;
-int n = 0;
-
- signal(SIGINT,sighndl);
- signal(SIGTERM,sighndl);
- signal(SIGKILL,sighndl);
-
- initscr();
- cbreak();
- noecho();
- nodelay(stdscr, 1);
- curs_set(0);
-
- hascolor = has_colors();
-
- if(hascolor) {
- int bg = COLOR_BLACK;
- start_color();
-#ifdef NCURSES_VERSION
- if (use_default_colors() == OK)
- bg = -1;
-#endif
- init_pair(1, COLOR_BLACK, COLOR_RED);
- init_pair(2, COLOR_RED, bg);
- init_pair(3, COLOR_WHITE, bg);
- attrset(COLOR_PAIR(2));
+ if (on) {
+ if (hascolor) {
+ attron(COLOR_PAIR(1));
+ } else {
+ attron(A_STANDOUT);
}
-
- clear();
- refresh();
- while(--argc > 0) {
- if(**++argv == '-')
- scrol = 1;
- else
- n = atoi(*argv);
+ } else {
+ if (hascolor) {
+ attron(COLOR_PAIR(2));
+ } else {
+ attroff(A_STANDOUT);
}
-
- drawbox();
- do {
- char buf[30];
-
- mask = 0;
- time(&now);
- tm = localtime(&now);
- 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))) {
- movto(YBASE + i, XBASE + 2*j);
- }
- addstr(" ");
- }
- }
- }
- if(!s) {
- older[i] = newer[i];
- }
- }
- if(!s) {
- if (scrol)
- drawbox();
- refresh();
- if (scrol)
- napms(150);
- }
- }
- }
-
- /* this depends on the detailed format of ctime(3) */
- (void) strcpy(buf, ctime(&now));
- (void) strcpy(buf + 10, buf + 19);
- mvaddstr(16, 30, buf);
-
- movto(6, 0);
- drawbox();
- refresh();
- sleep(1);
- while(wgetch(stdscr) != ERR)
- continue;
- if (sigtermed) {
- standend();
- clear();
- refresh();
- curs_set(1);
- endwin();
- fprintf(stderr, "gdc terminated by signal %d\n", sigtermed);
- return EXIT_FAILURE;
- }
- } while(--n);
- standend();
- clear();
- refresh();
- curs_set(1);
- endwin();
- return EXIT_SUCCESS;
+ }
}
static void
set(int t, int n)
{
-int i, m;
+ 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;
+ 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
-standt(int on)
+usage(void)
{
- if (on) {
- if(hascolor) {
- attron(COLOR_PAIR(1));
- } else {
- attron(A_STANDOUT);
+ 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]);
+ exit(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;
+
+ signal(SIGINT, sighndl);
+ signal(SIGTERM, sighndl);
+ signal(SIGKILL, sighndl);
+
+ while ((k = getopt(argc, argv, "sn")) != EOF) {
+ 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++]);
+ }
+ if (optind < argc)
+ usage();
+
+ if (redirected) {
+ char *name = getenv("TERM");
+ if (name == 0
+ || newterm(name, ofp, ifp) == 0) {
+ fprintf(stderr, "cannot open terminal\n");
+ exit(EXIT_FAILURE);
+ }
+
+ } else {
+ initscr();
+ }
+ cbreak();
+ noecho();
+ nodelay(stdscr, 1);
+ curs_set(0);
+
+ hascolor = has_colors();
+
+ if (hascolor) {
+ int bg = COLOR_BLACK;
+ start_color();
+#ifdef HAVE_USE_DEFAULT_COLORS
+ if (use_default_colors() == OK)
+ bg = -1;
+#endif
+ init_pair(1, COLOR_BLACK, COLOR_RED);
+ init_pair(2, COLOR_RED, bg);
+ init_pair(3, COLOR_WHITE, bg);
+ attrset(COLOR_PAIR(2));
+ }
+
+ restart:
+ for (j = 0; j < 5; j++)
+ older[j] = newer[j] = next[j] = 0;
+
+ clear();
+ drawbox();
+
+ 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];
+ }
}
- } else {
- if(hascolor) {
- attron(COLOR_PAIR(2));
- } else {
- attroff(A_STANDOUT);
+ if (!s) {
+ if (scrol)
+ drawbox();
+ 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 well 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 -TD
+ */
+ if (scrol)
+ napms(85);
}
+ }
}
-}
-static void
-movto(int line, int col)
-{
- move(line, col);
+ /* 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();
+ 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) {
+ standend();
+ endwin();
+ fprintf(stderr, "gdc terminated by signal %d\n", sigtermed);
+ return EXIT_FAILURE;
+ }
+ default:
+ continue;
+ }
+ } while (--count);
+ standend();
+ endwin();
+ return EXIT_SUCCESS;
}
*
* Date: 05.Nov.90
*
- * $Id: hanoi.c,v 1.16 1999/10/23 15:01:01 tom Exp $
+ * $Id: hanoi.c,v 1.18 2000/04/01 20:01:08 tom Exp $
*/
#include <test.priv.h>
Usage();
return EXIT_FAILURE;
}
-#ifdef NCURSES_VERSION
+#ifdef TRACE
trace(TRACE_MAXIMUM);
#endif
initscr();
int i;
int bg = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
bg = -1;
#endif
* Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995. Mouse support
* added September 20th 1995.
*
- * $Id: knight.c,v 1.14 1997/08/20 16:22:38 hjl Exp $
+ * $Id: knight.c,v 1.15 1999/11/13 23:39:10 tom Exp $
*/
#include <test.priv.h>
int bg = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
bg = -1;
#endif
# Test-Program modules
-# $Id: modules,v 1.11 1999/10/23 00:41:02 tom Exp $
+# $Id: modules,v 1.13 2000/02/13 01:05:13 tom Exp $
##############################################################################
-# Copyright (c) 1999 Free Software Foundation, Inc. #
+# Copyright (c) 1998,1999,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"), #
ncurses progs $(srcdir) ../include/panel.h ../include/menu.h ../include/form.h
newdemo progs $(srcdir)
rain progs $(srcdir) ../include/term.h
+railroad progs $(srcdir) ../include/termcap.h
tclock progs $(srcdir)
testaddch progs $(srcdir)
testcurs progs $(srcdir)
/****************************************************************************
- * Copyright (c) 1998,1999 Free Software Foundation, Inc. *
+ * Copyright (c) 1998,1999,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 *
AUTHOR
Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
-$Id: ncurses.c,v 1.120 1999/10/23 20:01:30 tom Exp $
+$Id: ncurses.c,v 1.130 2000/07/07 11:05:16 tom Exp $
***************************************************************************/
#ifdef NCURSES_VERSION
#ifdef TRACE
-static int save_trace = TRACE_ORDINARY|TRACE_CALLS;
+static int save_trace = TRACE_ORDINARY | TRACE_CALLS;
extern int _nc_tracing;
#endif
#define mmask_t chtype /* not specified in XSI */
#define attr_t chtype /* not specified in XSI */
-#define ACS_S3 (acs_map['p']) /* scan line 3 */
-#define ACS_S7 (acs_map['r']) /* scan line 7 */
-#define ACS_LEQUAL (acs_map['y']) /* less/equal */
-#define ACS_GEQUAL (acs_map['z']) /* greater/equal */
-#define ACS_PI (acs_map['{']) /* Pi */
-#define ACS_NEQUAL (acs_map['|']) /* not equal */
-#define ACS_STERLING (acs_map['}']) /* UK pound sign */
+#define ACS_S3 (acs_map['p']) /* scan line 3 */
+#define ACS_S7 (acs_map['r']) /* scan line 7 */
+#define ACS_LEQUAL (acs_map['y']) /* less/equal */
+#define ACS_GEQUAL (acs_map['z']) /* greater/equal */
+#define ACS_PI (acs_map['{']) /* Pi */
+#define ACS_NEQUAL (acs_map['|']) /* not equal */
+#define ACS_STERLING (acs_map['}']) /* UK pound sign */
#endif
#define QUIT CTRL('Q')
#define ESCAPE CTRL('[')
-#define BLANK ' ' /* this is the background character */
+#define BLANK ' ' /* this is the background character */
/* 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)
+static void
+do_h_line(int y, int x, chtype c, int to)
{
- if ((to) > (x))
- mvhline(y, x, c, (to) - (x));
+ if ((to) > (x))
+ mvhline(y, x, c, (to) - (x));
}
-static void do_v_line(int y, int x, chtype c, int to)
+static void
+do_v_line(int y, int x, chtype c, int to)
{
- if ((to) > (y))
- mvvline(y, x, c, (to) - (y));
+ if ((to) > (y))
+ mvvline(y, x, c, (to) - (y));
}
/* 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)
+static int
+wGetchar(WINDOW *win)
{
- int c;
+ int c;
#ifdef TRACE
- while ((c = wgetch(win)) == CTRL('T')) {
- if (_nc_tracing) {
- save_trace = _nc_tracing;
- _tracef("TOGGLE-TRACING OFF");
- _nc_tracing = 0;
- } else {
- _nc_tracing = save_trace;
- }
- trace(_nc_tracing);
- if (_nc_tracing)
- _tracef("TOGGLE-TRACING ON");
+ while ((c = wgetch(win)) == CTRL('T')) {
+ if (_nc_tracing) {
+ save_trace = _nc_tracing;
+ _tracef("TOGGLE-TRACING OFF");
+ _nc_tracing = 0;
+ } else {
+ _nc_tracing = save_trace;
}
+ trace(_nc_tracing);
+ if (_nc_tracing)
+ _tracef("TOGGLE-TRACING ON");
+ }
#else
- c = wgetch(win);
+ c = wgetch(win);
#endif
- return c;
+ return c;
}
#define Getchar() wGetchar(stdscr)
-static void Pause(void)
+static void
+Pause(void)
{
- move(LINES - 1, 0);
- addstr("Press any key to continue... ");
- (void) Getchar();
+ move(LINES - 1, 0);
+ addstr("Press any key to continue... ");
+ (void) Getchar();
}
-static void Cannot(const char *what)
+static void
+Cannot(const char *what)
{
- printw("\nThis %s terminal %s\n\n", getenv("TERM"), what);
- Pause();
+ printw("\nThis %s terminal %s\n\n", getenv("TERM"), what);
+ Pause();
}
-static void ShellOut(bool message)
+static void
+ShellOut(bool message)
{
- if (message)
- addstr("Shelling out...");
- def_prog_mode();
- endwin();
- system("sh");
- if (message)
- addstr("returned from shellout.\n");
- refresh();
+ if (message)
+ addstr("Shelling out...");
+ def_prog_mode();
+ endwin();
+ system("sh");
+ if (message)
+ addstr("returned from shellout.\n");
+ refresh();
}
#ifdef NCURSES_MOUSE_VERSION
-static const char *mouse_decode(MEVENT const *ep)
+static const char *
+mouse_decode(MEVENT const *ep)
{
- static char buf[80];
+ static char buf[80];
- (void) sprintf(buf, "id %2d at (%2d, %2d, %2d) state %4lx = {",
- ep->id, ep->x, ep->y, ep->z, ep->bstate);
+ (void) sprintf(buf, "id %2d at (%2d, %2d, %2d) state %4lx = {",
+ ep->id, ep->x, ep->y, ep->z, 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")
- SHOW(BUTTON1_RESERVED_EVENT, "reserved-1")
- 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")
- SHOW(BUTTON2_RESERVED_EVENT, "reserved-2")
- 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")
- SHOW(BUTTON3_RESERVED_EVENT, "reserved-3")
- 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")
- SHOW(BUTTON4_RESERVED_EVENT, "reserved-4")
- SHOW(BUTTON_CTRL, "ctrl")
- SHOW(BUTTON_SHIFT, "shift")
- SHOW(BUTTON_ALT, "alt")
- SHOW(ALL_MOUSE_EVENTS, "all-events")
- SHOW(REPORT_MOUSE_POSITION, "position")
+ 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");
+ SHOW(BUTTON1_RESERVED_EVENT, "reserved-1");
+ 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");
+ SHOW(BUTTON2_RESERVED_EVENT, "reserved-2");
+ 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");
+ SHOW(BUTTON3_RESERVED_EVENT, "reserved-3");
+ 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");
+ SHOW(BUTTON4_RESERVED_EVENT, "reserved-4");
+ 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);
+ if (buf[strlen(buf) - 1] == ' ')
+ buf[strlen(buf) - 2] = '\0';
+ (void) strcat(buf, "}");
+ return (buf);
}
#endif /* NCURSES_MOUSE_VERSION */
*
****************************************************************************/
-static void getch_test(void)
+static void
+getch_test(void)
/* test the keypad feature */
{
-char buf[BUFSIZ];
-int c;
-int incount = 0, firsttime = 0;
-bool blocking = TRUE;
-int y, x;
+ char buf[BUFSIZ];
+ int c;
+ int incount = 0, firsttime = 0;
+ bool blocking = TRUE;
+ int y, x;
refresh();
#ifdef NCURSES_MOUSE_VERSION
- mousemask(ALL_MOUSE_EVENTS, (mmask_t *)0);
+ mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0);
#endif
(void) printw("Delay in 10ths of a second (<CR> for blocking input)? ");
noecho();
nonl();
- if (isdigit(buf[0]))
- {
+ if (isdigit(buf[0])) {
timeout(atoi(buf) * 100);
blocking = FALSE;
}
c = '?';
raw();
- for (;;)
- {
- if (firsttime++)
- {
+ for (;;) {
+ if (firsttime++) {
printw("Key pressed: %04o ", c);
#ifdef NCURSES_MOUSE_VERSION
- if (c == KEY_MOUSE)
- {
- MEVENT event;
+ if (c == KEY_MOUSE) {
+ MEVENT event;
getmouse(&event);
printw("KEY_MOUSE, %s\n", mouse_decode(&event));
- }
- else
-#endif /* NCURSES_MOUSE_VERSION */
- if (c >= KEY_MIN)
- {
+ } else
+#endif /* NCURSES_MOUSE_VERSION */
+ if (c >= KEY_MIN) {
(void) addstr(keyname(c));
addch('\n');
- }
- else if (c > 0x80)
- {
+ } else if (c > 0x80) {
int c2 = (c & 0x7f);
if (isprint(c2))
(void) printw("M-%c", c2);
else
(void) printw("M-%s", unctrl(c2));
addstr(" (high-half character)\n");
- }
- else
- {
+ } else {
if (isprint(c))
(void) printw("%c (ASCII printable character)\n", c);
else
(void) printw("%s (ASCII control character)\n", unctrl(c));
}
getyx(stdscr, y, x);
- if (y >= LINES-1)
- move(0,0);
+ if (y >= LINES - 1)
+ move(0, 0);
clrtoeol();
}
- if (c == 'g')
- {
+ if (c == 'g') {
addstr("getstr test: ");
- echo(); getstr(buf); noecho();
+ echo();
+ getstr(buf);
+ noecho();
printw("I saw `%s'.\n", buf);
}
- if (c == 's')
- {
+ if (c == 's') {
ShellOut(TRUE);
}
if (c == 'x' || c == 'q' || (c == ERR && blocking))
break;
- if (c == '?')
- {
+ if (c == '?') {
addstr("Type any key to see its keypad value. Also:\n");
addstr("g -- triggers a getstr test\n");
addstr("s -- shell out\n");
(void) printw("%05d: input timed out\n", incount++);
else {
(void) printw("%05d: input error\n", incount++);
- break;
+ break;
}
}
#ifdef NCURSES_MOUSE_VERSION
- mousemask(0, (mmask_t *)0);
+ mousemask(0, (mmask_t *) 0);
#endif
timeout(-1);
erase();
endwin();
}
-static int show_attr(int row, int skip, chtype attr, const char *name, bool once)
+static int
+show_attr(int row, int skip, chtype attr, const char *name, bool once)
{
int ncv = tigetnum("ncv");
mvprintw(row, 8, "%s mode:", name);
mvprintw(row, 24, "|");
- if (skip) printw("%*s", skip, " ");
+ if (skip)
+ printw("%*s", skip, " ");
if (once)
attron(attr);
else
- attrset(attr);
+ attrset(attr);
addstr("abcde fghij klmno pqrst uvwxy z");
if (once)
attroff(attr);
- if (skip) printw("%*s", skip, " ");
+ if (skip)
+ printw("%*s", skip, " ");
printw("|");
if (attr != A_NORMAL) {
if (!(termattrs() & attr)) {
printw(" (N/A)");
} else if (ncv > 0 && (getbkgd(stdscr) & A_COLOR)) {
- static const attr_t table[] = {
+ static const attr_t table[] =
+ {
A_STANDOUT,
A_UNDERLINE,
A_REVERSE,
};
unsigned n;
bool found = FALSE;
- for (n = 0; n < sizeof(table)/sizeof(table[0]); n++) {
+ for (n = 0; n < sizeof(table) / sizeof(table[0]); n++) {
if ((table[n] & attr) != 0
- && ((1 << n) & ncv) != 0) {
+ && ((1 << n) & ncv) != 0) {
found = TRUE;
break;
}
return row + 2;
}
-static bool attr_getc(int *skip, int *fg, int *bg)
+static bool
+attr_getc(int *skip, int *fg, int *bg)
{
int ch = Getchar();
return TRUE;
} else if (has_colors()) {
switch (ch) {
- case 'f': *fg = (*fg + 1); break;
- case 'F': *fg = (*fg - 1); break;
- case 'b': *bg = (*bg + 1); break;
- case 'B': *bg = (*bg - 1); break;
+ case 'f':
+ *fg = (*fg + 1);
+ break;
+ case 'F':
+ *fg = (*fg - 1);
+ break;
+ case 'b':
+ *bg = (*bg + 1);
+ break;
+ case 'B':
+ *bg = (*bg - 1);
+ break;
default:
return FALSE;
}
- if (*fg >= COLORS) *fg = 0;
- if (*fg < 0) *fg = COLORS - 1;
- if (*bg >= COLORS) *bg = 0;
- if (*bg < 0) *bg = COLORS - 1;
+ if (*fg >= COLORS)
+ *fg = 0;
+ if (*fg < 0)
+ *fg = COLORS - 1;
+ if (*bg >= COLORS)
+ *bg = 0;
+ if (*bg < 0)
+ *bg = COLORS - 1;
return TRUE;
}
return FALSE;
}
-static void attr_test(void)
+static void
+attr_test(void)
/* test text attributes */
{
int n;
int skip = tigetnum("xmc");
int fg = COLOR_BLACK; /* color pair 0 is special */
int bg = COLOR_BLACK;
- bool *pairs = (bool *)calloc(COLOR_PAIRS, sizeof(bool));
+ bool *pairs = (bool *) calloc(COLOR_PAIRS, sizeof(bool));
pairs[0] = TRUE;
if (skip < 0)
- skip = 0;
+ skip = 0;
- n = skip; /* make it easy */
+ n = skip; /* make it easy */
do {
int row = 2;
if (has_colors()) {
int pair = (fg * COLORS) + bg;
if (!pairs[pair]) {
- init_pair(pair, fg, bg);
+ init_pair(pair, fg, bg);
pairs[pair] = TRUE;
}
normal |= COLOR_PAIR(pair);
mvaddstr(0, 20, "Character attribute test display");
- row = show_attr(row, n, A_STANDOUT, "STANDOUT", TRUE);
- row = show_attr(row, n, A_REVERSE, "REVERSE", TRUE);
- row = show_attr(row, n, A_BOLD, "BOLD", TRUE);
+ row = show_attr(row, n, A_STANDOUT, "STANDOUT", TRUE);
+ row = show_attr(row, n, A_REVERSE, "REVERSE", TRUE);
+ row = show_attr(row, n, A_BOLD, "BOLD", TRUE);
row = show_attr(row, n, A_UNDERLINE, "UNDERLINE", TRUE);
- row = show_attr(row, n, A_DIM, "DIM", TRUE);
- row = show_attr(row, n, A_BLINK, "BLINK", TRUE);
- row = show_attr(row, n, A_PROTECT, "PROTECT", TRUE);
- row = show_attr(row, n, A_INVIS, "INVISIBLE", TRUE);
- row = show_attr(row, n, A_NORMAL, "NORMAL", FALSE);
+ row = show_attr(row, n, A_DIM, "DIM", TRUE);
+ row = show_attr(row, n, A_BLINK, "BLINK", TRUE);
+ row = show_attr(row, n, A_PROTECT, "PROTECT", TRUE);
+ row = show_attr(row, n, A_INVIS, "INVISIBLE", TRUE);
+ row = show_attr(row, n, A_NORMAL, "NORMAL", FALSE);
mvprintw(row, 8,
- "This terminal does %shave the magic-cookie glitch",
- tigetnum("xmc") > -1 ? "" : "not ");
- mvprintw(row+1, 8,
- "Enter a digit to set gaps on each side of displayed attributes");
- mvprintw(row+2, 8,
- "^L = repaint");
+ "This terminal does %shave the magic-cookie glitch",
+ tigetnum("xmc") > -1 ? "" : "not ");
+ mvprintw(row + 1, 8,
+ "Enter a digit to set gaps on each side of displayed attributes");
+ mvprintw(row + 2, 8,
+ "^L = repaint");
if (has_colors())
printw(". f/F/b/F toggle colors (now %d/%d)", fg, bg);
- refresh();
+ refresh();
} while (attr_getc(&n, &fg, &bg));
- free((char *)pairs);
+ free((char *) pairs);
bkgdset(A_NORMAL | BLANK);
erase();
endwin();
"blue",
"magenta",
"cyan",
- "white"
+ "white",
+ "BLACK",
+ "RED",
+ "GREEN",
+ "YELLOW",
+ "BLUE",
+ "MAGENTA",
+ "CYAN",
+ "WHITE"
};
-static void show_color_name(int y, int x, int color)
+static void
+show_color_name(int y, int x, int color)
{
if (COLORS > 8)
mvprintw(y, x, "%02d ", color);
mvaddstr(y, x, color_names[color]);
}
-static void color_test(void)
+static void
+color_test(void)
/* generate a color test pattern */
{
int i;
width = (COLORS > 8) ? 4 : 8;
hello = (COLORS > 8) ? "Test" : "Hello";
- for (base = 0; base < 2; base++)
- {
- top = (COLORS > 8) ? 0 : base * (COLORS+3);
+ for (base = 0; base < 2; base++) {
+ top = (COLORS > 8) ? 0 : base * (COLORS + 3);
clrtobot();
(void) mvprintw(top + 1, 0,
- "%dx%d matrix of foreground/background colors, bright *%s*\n",
- COLORS, COLORS,
- base ? "on" : "off");
+ "%dx%d matrix of foreground/background colors, bright *%s*\n",
+ COLORS, COLORS,
+ base ? "on" : "off");
for (i = 0; i < COLORS; i++)
- show_color_name(top + 2, (i+1) * width, i);
+ show_color_name(top + 2, (i + 1) * width, i);
for (i = 0; i < COLORS; i++)
show_color_name(top + 3 + i, 0, i);
- for (i = 1; i < COLOR_PAIRS; i++)
- {
+ for (i = 1; i < COLOR_PAIRS; i++) {
init_pair(i, i % COLORS, i / COLORS);
- attron((attr_t)COLOR_PAIR(i));
+ attron((attr_t) COLOR_PAIR(i));
if (base)
- attron((attr_t)A_BOLD);
+ attron((attr_t) A_BOLD);
mvaddstr(top + 3 + (i / COLORS), (i % COLORS + 1) * width, hello);
attrset(A_NORMAL);
}
endwin();
}
-static void change_color(int current, int field, int value, int usebase)
+static void
+change_color(int current, int field, int value, int usebase)
{
- short red, green, blue;
+ short red, green, blue;
- if (usebase)
- color_content(current, &red, &green, &blue);
- else
- red = green = blue = 0;
+ if (usebase)
+ color_content(current, &red, &green, &blue);
+ else
+ red = green = blue = 0;
- switch (field) {
- case 0:
- red += value;
- break;
- case 1:
- green += value;
- break;
- case 2:
- blue += value;
- break;
- }
+ switch (field) {
+ case 0:
+ red += value;
+ break;
+ case 1:
+ green += value;
+ break;
+ case 2:
+ blue += value;
+ break;
+ }
- if (init_color(current, red, green, blue) == ERR)
- beep();
+ if (init_color(current, red, green, blue) == ERR)
+ beep();
}
-static void color_edit(void)
+static void
+color_edit(void)
/* display the color test pattern, without trying to edit colors */
{
- int i, this_c = 0, value = 0, current = 0, field = 0;
+ int i, this_c = 0, value = 0, current = 0, field = 0;
int last_c;
+ int max_colors = COLORS > 16 ? 16 : COLORS;
refresh();
- for (i = 0; i < COLORS; i++)
+ for (i = 0; i < max_colors; i++)
init_pair(i, COLOR_WHITE, i);
- mvprintw(LINES-2, 0, "Number: %d", value);
+ mvprintw(LINES - 2, 0, "Number: %d", value);
do {
- short red, green, blue;
+ short red, green, blue;
attron(A_BOLD);
mvaddstr(0, 20, "Color RGB Value Editing");
attroff(A_BOLD);
- for (i = 0; i < COLORS; i++)
- {
+ for (i = 0; i < max_colors; i++) {
mvprintw(2 + i, 0, "%c %-8s:",
- (i == current ? '>' : ' '),
- (i < (int) SIZEOF(color_names)
- ? color_names[i] : ""));
+ (i == current ? '>' : ' '),
+ (i < (int) SIZEOF(color_names)
+ ? color_names[i] : ""));
attrset(COLOR_PAIR(i));
addstr(" ");
attrset(A_NORMAL);
color_content(i, &red, &green, &blue);
addstr(" R = ");
- if (current == i && field == 0) attron(A_STANDOUT);
+ if (current == i && field == 0)
+ attron(A_STANDOUT);
printw("%04d", red);
- if (current == i && field == 0) attrset(A_NORMAL);
+ if (current == i && field == 0)
+ attrset(A_NORMAL);
addstr(", G = ");
- if (current == i && field == 1) attron(A_STANDOUT);
+ if (current == i && field == 1)
+ attron(A_STANDOUT);
printw("%04d", green);
- if (current == i && field == 1) attrset(A_NORMAL);
+ if (current == i && field == 1)
+ attrset(A_NORMAL);
addstr(", B = ");
- if (current == i && field == 2) attron(A_STANDOUT);
+ if (current == i && field == 2)
+ attron(A_STANDOUT);
printw("%04d", blue);
- if (current == i && field == 2) attrset(A_NORMAL);
+ if (current == i && field == 2)
+ attrset(A_NORMAL);
attrset(A_NORMAL);
addstr(")");
}
- mvaddstr(COLORS + 3, 0,
+ mvaddstr(max_colors + 3, 0,
"Use up/down to select a color, left/right to change fields.");
- mvaddstr(COLORS + 4, 0,
+ mvaddstr(max_colors + 4, 0,
"Modify field by typing nnn=, nnn-, or nnn+. ? for help.");
move(2 + current, 0);
last_c = this_c;
this_c = Getchar();
if (isdigit(this_c) && !isdigit(last_c))
- value = 0;
+ value = 0;
- switch (this_c)
- {
+ switch (this_c) {
case KEY_UP:
- current = (current == 0 ? (COLORS - 1) : current - 1);
+ current = (current == 0 ? (max_colors - 1) : current - 1);
break;
case KEY_DOWN:
- current = (current == (COLORS - 1) ? 0 : current + 1);
+ current = (current == (max_colors - 1) ? 0 : current + 1);
break;
case KEY_RIGHT:
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':
+ 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 '?':
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("To quit, do `x' or 'q'");
+ 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("To quit, do `x' or 'q'");
Pause();
erase();
beep();
break;
}
- mvprintw(LINES-2, 0, "Number: %d", value);
+ mvprintw(LINES - 2, 0, "Number: %d", value);
clrtoeol();
} while
(this_c != 'x' && this_c != 'q');
*
****************************************************************************/
-static void slk_test(void)
+static void
+slk_test(void)
/* exercise the soft keys */
{
- int c, fmt = 1;
+ int c, fmt = 1;
char buf[9];
c = CTRL('l');
do {
move(0, 0);
- switch(c)
- {
+ switch (c) {
case CTRL('l'):
erase();
attron(A_BOLD);
case 's':
mvprintw(20, 0, "Press Q to stop the scrolling-test: ");
while ((c = Getchar()) != 'Q' && (c != ERR))
- addch((chtype)c);
+ addch((chtype) c);
break;
case 'd':
fmt = 2;
break;
- case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
(void) mvaddstr(20, 0, "Please enter the label value: ");
echo();
wgetnstr(stdscr, buf, 8);
noecho();
slk_set((c - '0'), buf, fmt);
slk_refresh();
- move(20, 0); clrtoeol();
+ move(20, 0);
+ clrtoeol();
break;
case 'x':
} while
((c = Getchar()) != EOF);
- done:
+ done:
erase();
endwin();
}
/* 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 first)
+static void
+show_upper_chars(int first)
{
- bool C1 = (first == 128);
- int code;
- int last = first + 31;
- int reply;
+ bool C1 = (first == 128);
+ int code;
+ int 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();
+ 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 row = 4 + ((code - first) % 16);
- int col = ((code - first) / 16) * COLS / 2;
- char tmp[80];
- sprintf(tmp, "%3d (0x%x)", code, code);
- mvprintw(row, col, "%*s: ", COLS/4, tmp);
- if (C1)
- nodelay(stdscr, TRUE);
- echochar(code);
- if (C1) {
- /* (yes, this _is_ crude) */
- while ((reply = Getchar()) != ERR) {
- addch(reply);
- napms(10);
- }
- nodelay(stdscr, FALSE);
- }
+ for (code = first; code <= last; code++) {
+ int row = 4 + ((code - first) % 16);
+ int col = ((code - first) / 16) * COLS / 2;
+ char tmp[80];
+ sprintf(tmp, "%3d (0x%x)", code, code);
+ mvprintw(row, col, "%*s: ", COLS / 4, tmp);
+ if (C1)
+ nodelay(stdscr, TRUE);
+ echochar(code);
+ if (C1) {
+ /* (yes, this _is_ crude) */
+ while ((reply = Getchar()) != ERR) {
+ addch(reply);
+ napms(10);
+ }
+ nodelay(stdscr, FALSE);
}
+ }
}
-static int show_1_acs(int n, const char *name, chtype code)
+static int
+show_1_acs(int n, const char *name, chtype code)
{
- const int height = 16;
- int row = 4 + (n % height);
- int col = (n / height) * COLS / 2;
- mvprintw(row, col, "%*s : ", COLS/4, name);
- addch(code);
- return n + 1;
+ const int height = 16;
+ int row = 4 + (n % height);
+ int col = (n / height) * COLS / 2;
+ mvprintw(row, col, "%*s : ", COLS / 4, name);
+ addch(code);
+ return n + 1;
}
-static void show_acs_chars(void)
+static void
+show_acs_chars(void)
/* display the ACS character set */
{
- int n;
+ int n;
#define BOTH(name) #name, name
- erase();
- attron(A_BOLD);
- mvaddstr(0, 20, "Display of the ACS Character Set");
- attroff(A_BOLD);
- refresh();
+ erase();
+ attron(A_BOLD);
+ mvaddstr(0, 20, "Display of the ACS Character Set");
+ attroff(A_BOLD);
+ refresh();
- n = show_1_acs(0, BOTH(ACS_ULCORNER));
- n = show_1_acs(n, BOTH(ACS_LLCORNER));
- n = show_1_acs(n, BOTH(ACS_URCORNER));
- n = show_1_acs(n, BOTH(ACS_LRCORNER));
- n = show_1_acs(n, BOTH(ACS_RTEE));
- n = show_1_acs(n, BOTH(ACS_LTEE));
- n = show_1_acs(n, BOTH(ACS_BTEE));
- n = show_1_acs(n, BOTH(ACS_TTEE));
- n = show_1_acs(n, BOTH(ACS_HLINE));
- n = show_1_acs(n, BOTH(ACS_VLINE));
- n = show_1_acs(n, BOTH(ACS_PLUS));
- n = show_1_acs(n, BOTH(ACS_S1));
- n = show_1_acs(n, BOTH(ACS_S9));
- n = show_1_acs(n, BOTH(ACS_DIAMOND));
- n = show_1_acs(n, BOTH(ACS_CKBOARD));
- n = show_1_acs(n, BOTH(ACS_DEGREE));
- n = show_1_acs(n, BOTH(ACS_PLMINUS));
- n = show_1_acs(n, BOTH(ACS_BULLET));
- n = show_1_acs(n, BOTH(ACS_LARROW));
- n = show_1_acs(n, BOTH(ACS_RARROW));
- n = show_1_acs(n, BOTH(ACS_DARROW));
- n = show_1_acs(n, BOTH(ACS_UARROW));
- n = show_1_acs(n, BOTH(ACS_BOARD));
- n = show_1_acs(n, BOTH(ACS_LANTERN));
- n = show_1_acs(n, BOTH(ACS_BLOCK));
- n = show_1_acs(n, BOTH(ACS_S3));
- n = show_1_acs(n, BOTH(ACS_S7));
- n = show_1_acs(n, BOTH(ACS_LEQUAL));
- n = show_1_acs(n, BOTH(ACS_GEQUAL));
- n = show_1_acs(n, BOTH(ACS_PI));
- n = show_1_acs(n, BOTH(ACS_NEQUAL));
- n = show_1_acs(n, BOTH(ACS_STERLING));
-}
-
-static void acs_display(void)
-{
- int c = 'a';
-
- do {
- switch (c) {
- case 'a':
- show_acs_chars();
- break;
- case '0':
- case '1':
- case '2':
- case '3':
- show_upper_chars((c - '0') * 32 + 128);
- break;
- }
- mvprintw(LINES-3,0, "Note: ANSI terminals may not display C1 characters.");
- mvprintw(LINES-2,0, "Select: a=ACS, 0=C1, 1,2,3=GR characters, q=quit");
- refresh();
- } while ((c = Getchar()) != 'x' && c != 'q');
+ n = show_1_acs(0, BOTH(ACS_ULCORNER));
+ n = show_1_acs(n, BOTH(ACS_LLCORNER));
+ n = show_1_acs(n, BOTH(ACS_URCORNER));
+ n = show_1_acs(n, BOTH(ACS_LRCORNER));
+ n = show_1_acs(n, BOTH(ACS_RTEE));
+ n = show_1_acs(n, BOTH(ACS_LTEE));
+ n = show_1_acs(n, BOTH(ACS_BTEE));
+ n = show_1_acs(n, BOTH(ACS_TTEE));
+ n = show_1_acs(n, BOTH(ACS_HLINE));
+ n = show_1_acs(n, BOTH(ACS_VLINE));
+ n = show_1_acs(n, BOTH(ACS_PLUS));
+ n = show_1_acs(n, BOTH(ACS_S1));
+ n = show_1_acs(n, BOTH(ACS_S9));
+ n = show_1_acs(n, BOTH(ACS_DIAMOND));
+ n = show_1_acs(n, BOTH(ACS_CKBOARD));
+ n = show_1_acs(n, BOTH(ACS_DEGREE));
+ n = show_1_acs(n, BOTH(ACS_PLMINUS));
+ n = show_1_acs(n, BOTH(ACS_BULLET));
+ n = show_1_acs(n, BOTH(ACS_LARROW));
+ n = show_1_acs(n, BOTH(ACS_RARROW));
+ n = show_1_acs(n, BOTH(ACS_DARROW));
+ n = show_1_acs(n, BOTH(ACS_UARROW));
+ n = show_1_acs(n, BOTH(ACS_BOARD));
+ n = show_1_acs(n, BOTH(ACS_LANTERN));
+ n = show_1_acs(n, BOTH(ACS_BLOCK));
+ n = show_1_acs(n, BOTH(ACS_S3));
+ n = show_1_acs(n, BOTH(ACS_S7));
+ n = show_1_acs(n, BOTH(ACS_LEQUAL));
+ n = show_1_acs(n, BOTH(ACS_GEQUAL));
+ n = show_1_acs(n, BOTH(ACS_PI));
+ n = show_1_acs(n, BOTH(ACS_NEQUAL));
+ n = show_1_acs(n, BOTH(ACS_STERLING));
+}
- Pause();
- erase();
- endwin();
+static void
+acs_display(void)
+{
+ int c = 'a';
+
+ do {
+ switch (c) {
+ case 'a':
+ show_acs_chars();
+ break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ show_upper_chars((c - '0') * 32 + 128);
+ break;
+ }
+ mvprintw(LINES - 3, 0,
+ "Note: ANSI terminals may not display C1 characters.");
+ mvprintw(LINES - 2, 0,
+ "Select: a=ACS, 0=C1, 1,2,3=GR characters, q=quit");
+ refresh();
+ } while ((c = Getchar()) != 'x' && c != 'q');
+
+ Pause();
+ erase();
+ endwin();
}
/*
}
bkgdset(normal);
erase();
- mvprintw( 1,20, "Graphic rendition test pattern:");
+ mvprintw(1, 20, "Graphic rendition test pattern:");
- mvprintw( 4, 1, "vanilla");
+ mvprintw(4, 1, "vanilla");
#define set_sgr(mask) bkgdset((normal^(mask)));
set_sgr(A_BOLD);
- mvprintw( 4,40, "bold");
+ mvprintw(4, 40, "bold");
set_sgr(A_UNDERLINE);
- mvprintw( 6, 6, "underline");
+ mvprintw(6, 6, "underline");
- set_sgr(A_BOLD|A_UNDERLINE);
- mvprintw( 6,45, "bold underline");
+ set_sgr(A_BOLD | A_UNDERLINE);
+ mvprintw(6, 45, "bold underline");
set_sgr(A_BLINK);
- mvprintw( 8, 1, "blink");
+ mvprintw(8, 1, "blink");
- set_sgr(A_BLINK|A_BOLD);
- mvprintw( 8,40, "bold blink");
+ set_sgr(A_BLINK | A_BOLD);
+ mvprintw(8, 40, "bold blink");
- set_sgr(A_UNDERLINE|A_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_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_BOLD | A_REVERSE);
+ mvprintw(12, 40, "bold negative");
- set_sgr(A_UNDERLINE|A_REVERSE);
+ 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_BOLD | A_UNDERLINE | A_REVERSE);
+ mvprintw(14, 45, "bold underline negative");
- set_sgr(A_BLINK|A_REVERSE);
+ 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_BOLD | A_BLINK | A_REVERSE);
+ mvprintw(16, 40, "bold blink negative");
- set_sgr(A_UNDERLINE|A_BLINK|A_REVERSE);
+ 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");
+ 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");
+ mvprintw(LINES - 2, 1, "%s background. ", pass == 0 ? "Dark" :
+ "Light");
clrtoeol();
Pause();
}
#define BOTLINES 4 /* number of line stolen from screen bottom */
-typedef struct
-{
+typedef struct {
int y, x;
-}
-pair;
+} pair;
#define FRAME struct frame
FRAME
{
- FRAME *next, *last;
- bool do_scroll;
- bool do_keypad;
- WINDOW *wind;
+ FRAME *next, *last;
+ bool do_scroll;
+ bool do_keypad;
+ WINDOW *wind;
};
/* 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.
*/
-static bool HaveKeypad(FRAME *curp)
+static bool
+HaveKeypad(FRAME * curp)
{
- WINDOW *win = (curp ? curp->wind : stdscr);
- return win->_use_keypad;
+ WINDOW *win = (curp ? curp->wind : stdscr);
+ return win->_use_keypad;
}
-static bool HaveScroll(FRAME *curp)
+static bool
+HaveScroll(FRAME * curp)
{
- WINDOW *win = (curp ? curp->wind : stdscr);
- return win->_scroll;
+ WINDOW *win = (curp ? curp->wind : stdscr);
+ return win->_scroll;
}
-static void newwin_legend(FRAME *curp)
+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 },
-#ifdef NCURSES_VERSION
- { "^X = resize", 0 },
+ 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
+ },
+#ifdef HAVE_WRESIZE
+ {
+ "^X = resize", 0
+ },
#endif
- { "^Q%s = exit", 3 }
- };
- size_t n;
- int y, 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;
- }
- getyx(stdscr, y, x);
- addstr((COLS < (x + 3 + (int)strlen(buf))) ? "\n" : (n ? ", " : ""));
- addstr(buf);
+ {
+ "^Q%s = exit", 3
}
- clrtoeol();
+ };
+ size_t n;
+ int y, 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;
+ }
+ getyx(stdscr, y, x);
+ addstr((COLS < (x + 3 + (int) strlen(buf))) ? "\n" : (n ? ", " : ""));
+ addstr(buf);
+ }
+ clrtoeol();
}
-static void transient(FRAME *curp, NCURSES_CONST char *msg)
+static void
+transient(FRAME * curp, NCURSES_CONST char *msg)
{
newwin_legend(curp);
- if (msg)
- {
+ if (msg) {
mvaddstr(LINES - 1, 0, msg);
refresh();
napms(1000);
}
- move(LINES-1, 0);
+ move(LINES - 1, 0);
printw("%s characters are echoed, window should %sscroll.",
HaveKeypad(curp) ? "Non-arrow" : "All other",
- HaveScroll(curp) ? "" : "not " );
+ HaveScroll(curp) ? "" : "not ");
clrtoeol();
}
-static void newwin_report(FRAME *curp)
+static void
+newwin_report(FRAME * curp)
/* report on the cursor's current position, then restore it */
{
- WINDOW *win = (curp != 0) ? curp->wind : stdscr;
- int y, x;
+ WINDOW *win = (curp != 0) ? curp->wind : stdscr;
+ 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);
+ 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)
+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 */
+ 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 (;;)
- {
+ for (;;) {
move(uli + i, ulj + j);
- newwin_report((FRAME *)0);
+ 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;
+ 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 QUIT:
- case ESCAPE: return((pair *)0);
+ case ESCAPE:
+ return ((pair *) 0);
#ifdef NCURSES_MOUSE_VERSION
case KEY_MOUSE:
{
- MEVENT event;
+ MEVENT event;
getmouse(&event);
if (event.y > uli && event.x > ulj) {
- i = event.y - uli;
- j = event.x - ulj;
+ i = event.y - uli;
+ j = event.x - ulj;
} else {
- beep();
- break;
+ beep();
+ break;
}
}
/* FALLTHRU */
#endif
- default: res.y = uli + i; res.x = ulj + j; return(&res);
+ default:
+ res.y = uli + i;
+ res.x = ulj + j;
+ return (&res);
}
i %= si;
j %= sj;
}
}
-static void outerbox(pair ul, pair lr, bool onoff)
+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)
+ 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;
+ WINDOW *rwindow;
+ pair ul, lr, *tmp;
- move(0, 0); clrtoeol();
+ 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);
+ 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();
+ 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);
+ 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);
wrefresh(rwindow);
- move(0, 0); clrtoeol();
- return(rwindow);
+ move(0, 0);
+ clrtoeol();
+ return (rwindow);
}
-static void newwin_move(FRAME *curp, int dy, int dx)
+static void
+newwin_move(FRAME * curp, int dy, int dx)
{
- WINDOW *win = (curp != 0) ? curp->wind : stdscr;
- int cur_y, cur_x;
- int max_y, max_x;
+ WINDOW *win = (curp != 0) ? curp->wind : stdscr;
+ 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);
+ 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)
+static FRAME *
+delete_framed(FRAME * fp, bool showit)
{
- FRAME *np;
+ FRAME *np;
- fp->last->next = fp->next;
- fp->next->last = fp->last;
+ fp->last->next = fp->next;
+ fp->next->last = fp->last;
- if (showit) {
- werase(fp->wind);
- wrefresh(fp->wind);
- }
- delwin(fp->wind);
+ if (showit) {
+ werase(fp->wind);
+ wrefresh(fp->wind);
+ }
+ delwin(fp->wind);
- np = (fp == fp->next) ? 0 : fp->next;
- free(fp);
- return np;
+ np = (fp == fp->next) ? 0 : fp->next;
+ free(fp);
+ return np;
}
-static void acs_and_scroll(void)
+static void
+acs_and_scroll(void)
/* Demonstrate windows */
{
- int c, i;
+ int c, i;
FILE *fp;
- FRAME *current = (FRAME *)0, *neww;
+ FRAME *current = (FRAME *) 0, *neww;
WINDOW *usescr = stdscr;
#define DUMPFILE "screendump"
#ifdef NCURSES_MOUSE_VERSION
- mousemask(BUTTON1_CLICKED, (mmask_t *)0);
+ mousemask(BUTTON1_CLICKED, (mmask_t *) 0);
#endif
c = CTRL('C');
raw();
do {
- transient((FRAME *)0, (char *)0);
- switch(c)
- {
+ transient((FRAME *) 0, (char *) 0);
+ switch (c) {
case CTRL('C'):
neww = (FRAME *) calloc(1, sizeof(FRAME));
- if ((neww->wind = getwindow()) == (WINDOW *)0)
+ if ((neww->wind = getwindow()) == (WINDOW *) 0)
goto breakout;
- if (current == 0) /* First element, */
- {
- neww->next = neww; /* so point it at itself */
+ if (current == 0) { /* First element, */
+ neww->next = neww; /* so point it at itself */
neww->last = neww;
- }
- else
- {
+ } else {
neww->next = current->next;
neww->last = current;
neww->last->next = neww;
current->do_scroll = HaveScroll(current);
break;
- case CTRL('N'): /* go to next window */
+ case CTRL('N'): /* go to next window */
if (current)
current = current->next;
break;
- case CTRL('P'): /* go to previous window */
+ case CTRL('P'): /* go to previous window */
if (current)
current = current->last;
break;
- case CTRL('F'): /* scroll current window forward */
+ case CTRL('F'): /* scroll current window forward */
if (current)
wscrl(current->wind, 1);
break;
- case CTRL('B'): /* scroll current window backwards */
+ case CTRL('B'): /* scroll current window backwards */
if (current)
wscrl(current->wind, -1);
break;
- case CTRL('K'): /* toggle keypad mode for current */
+ 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('W'): /* save and delete window */
+ case CTRL('W'): /* save and delete window */
if (current == current->next)
break;
- if ((fp = fopen(DUMPFILE, "w")) == (FILE *)0)
+ if ((fp = fopen(DUMPFILE, "w")) == (FILE *) 0)
transient(current, "Can't open screen dump file");
- else
- {
+ else {
(void) putwin(current->wind, fp);
(void) fclose(fp);
}
break;
- case CTRL('R'): /* restore window */
- if ((fp = fopen(DUMPFILE, "r")) == (FILE *)0)
+ case CTRL('R'): /* restore window */
+ if ((fp = fopen(DUMPFILE, "r")) == (FILE *) 0)
transient(current, "Can't open screen dump file");
- else
- {
+ else {
neww = (FRAME *) calloc(1, sizeof(FRAME));
neww->next = current->next;
}
break;
-#ifdef NCURSES_VERSION
- case CTRL('X'): /* resize window */
- if (current)
- {
+#ifdef HAVE_WRESIZE
+ case CTRL('X'): /* resize window */
+ if (current) {
pair *tmp, ul, lr;
int mx, my;
- move(0, 0); clrtoeol();
+ 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)
- {
+ tmp = selectcell(ul.y, ul.x, LINES - BOTLINES - 2, COLS - 2);
+ if (tmp == (pair *) 0) {
beep();
break;
}
/* 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 (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);
- }
+ 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);
+ (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);
wnoutrefresh(stdscr);
wnoutrefresh(current->wind);
- move(0, 0); clrtoeol();
+ move(0, 0);
+ clrtoeol();
doupdate();
}
break;
-#endif /* NCURSES_VERSION */
+#endif /* HAVE_WRESIZE */
case KEY_F(10): /* undocumented --- use this to test area clears */
selectcell(0, 0, LINES - 1, COLS - 1);
break;
case KEY_UP:
- newwin_move(current, -1, 0);
+ newwin_move(current, -1, 0);
break;
case KEY_DOWN:
- newwin_move(current, 1, 0);
+ newwin_move(current, 1, 0);
break;
case KEY_LEFT:
- newwin_move(current, 0, -1);
+ newwin_move(current, 0, -1);
break;
case KEY_RIGHT:
- newwin_move(current, 0, 1);
+ newwin_move(current, 0, 1);
break;
case KEY_BACKSPACE:
int y, x;
getyx(current->wind, y, x);
if (--x < 0) {
- if (--y < 0)
- break;
- x = getmaxx(current->wind) - 1;
+ if (--y < 0)
+ break;
+ x = getmaxx(current->wind) - 1;
}
mvwdelch(current->wind, y, x);
}
default:
if (current)
- waddch(current->wind, (chtype)c);
+ waddch(current->wind, (chtype) c);
else
beep();
break;
wrefresh(usescr);
} while
((c = wGetchar(usescr)) != QUIT
- && !((c == ESCAPE) && (usescr->_use_keypad))
- && (c != ERR));
+ && !((c == ESCAPE) && (usescr->_use_keypad))
+ && (c != ERR));
- breakout:
+ breakout:
while (current != 0)
- current = delete_framed(current, FALSE);
+ current = delete_framed(current, FALSE);
scrollok(stdscr, TRUE); /* reset to driver's default */
#ifdef NCURSES_MOUSE_VERSION
- mousemask(0, (mmask_t *)0);
+ mousemask(0, (mmask_t *) 0);
#endif
noraw();
erase();
static NCURSES_CONST char *mod[] =
{
- "test ",
- "TEST ",
- "(**) ",
- "*()* ",
- "<--> ",
- "LAST "
+ "test ",
+ "TEST ",
+ "(**) ",
+ "*()* ",
+ "<--> ",
+ "LAST "
};
/*+-------------------------------------------------------------------------
wait_a_while(unsigned long msec GCC_UNUSED)
{
#if HAVE_NAPMS
- if(nap_msec == 1)
- wGetchar(stdscr);
- else
- napms(nap_msec);
+ if (nap_msec == 1)
+ wGetchar(stdscr);
+ else
+ napms(nap_msec);
#else
- if(nap_msec == 1)
- wGetchar(stdscr);
- else if(msec > 1000L)
- sleep((int)msec/1000L);
- else
- sleep(1);
+ if (nap_msec == 1)
+ wGetchar(stdscr);
+ else if (msec > 1000L)
+ sleep((int) msec / 1000L);
+ else
+ sleep(1);
#endif
-} /* end of wait_a_while */
+} /* end of wait_a_while */
/*+-------------------------------------------------------------------------
saywhat(text)
static void
saywhat(NCURSES_CONST char *text)
{
- wmove(stdscr,LINES - 1,0);
- wclrtoeol(stdscr);
- waddstr(stdscr, text);
-} /* end of saywhat */
+ wmove(stdscr, LINES - 1, 0);
+ wclrtoeol(stdscr);
+ waddstr(stdscr, text);
+} /* end of saywhat */
/*+-------------------------------------------------------------------------
mkpanel(rows,cols,tly,tlx) - alloc a win and panel and associate them
static PANEL *
mkpanel(int 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 (has_colors()) {
- int fg = (color == COLOR_BLUE) ? COLOR_WHITE : COLOR_BLACK;
- int bg = color;
- init_pair(color, fg, bg);
- wbkgdset(win, COLOR_PAIR(color) | ' ');
- } else {
- wbkgdset(win, A_BOLD | ' ');
- }
+ WINDOW *win;
+ PANEL *pan = 0;
+
+ if ((win = newwin(rows, cols, tly, tlx)) != 0) {
+ if ((pan = new_panel(win)) == 0) {
+ delwin(win);
+ } else if (has_colors()) {
+ int fg = (color == COLOR_BLUE) ? COLOR_WHITE : COLOR_BLACK;
+ int bg = color;
+ init_pair(color, fg, bg);
+ wbkgdset(win, COLOR_PAIR(color) | ' ');
+ } else {
+ wbkgdset(win, A_BOLD | ' ');
}
- return pan;
-} /* end of mkpanel */
+ }
+ return pan;
+} /* end of mkpanel */
/*+-------------------------------------------------------------------------
rmpanel(pan)
--------------------------------------------------------------------------*/
static void
-rmpanel(PANEL *pan)
+rmpanel(PANEL * pan)
{
-WINDOW *win = panel_window(pan);
- del_panel(pan);
- delwin(win);
-} /* end of rmpanel */
+ WINDOW *win = panel_window(pan);
+ del_panel(pan);
+ delwin(win);
+} /* end of rmpanel */
/*+-------------------------------------------------------------------------
pflush()
static void
pflush(void)
{
- update_panels();
- doupdate();
-} /* end of pflush */
+ update_panels();
+ doupdate();
+} /* end of pflush */
/*+-------------------------------------------------------------------------
fill_panel(win)
--------------------------------------------------------------------------*/
static void
-fill_panel(PANEL *pan)
+fill_panel(PANEL * pan)
{
-WINDOW *win = panel_window(pan);
-int num = ((const char *)panel_userptr(pan))[1];
-int y,x;
+ WINDOW *win = panel_window(pan);
+ int num = ((const char *) panel_userptr(pan))[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,num);
- }
+ 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, num);
}
-} /* end of fill_panel */
+ }
+} /* end of fill_panel */
-static void demo_panels(void)
+static void
+demo_panels(void)
{
-int itmp;
-register int y,x;
+ int itmp;
+ register int y, x;
- refresh();
+ refresh();
- for(y = 0; y < LINES - 1; y++)
- {
- for(x = 0; x < COLS; x++)
- wprintw(stdscr,"%d",(y + x) % 10);
+ for (y = 0; y < LINES - 1; y++) {
+ for (x = 0; x < COLS; x++)
+ wprintw(stdscr, "%d", (y + x) % 10);
+ }
+ for (y = 0; y < 5; y++) {
+ PANEL *p1;
+ PANEL *p2;
+ PANEL *p3;
+ PANEL *p4;
+ PANEL *p5;
+
+ p1 = mkpanel(COLOR_RED,
+ LINES / 2 - 2,
+ COLS / 8 + 1,
+ 0,
+ 0);
+ set_panel_userptr(p1, "p1");
+
+ p2 = mkpanel(COLOR_GREEN,
+ LINES / 2 + 1,
+ COLS / 7,
+ LINES / 4,
+ COLS / 10);
+ set_panel_userptr(p2, "p2");
+
+ p3 = mkpanel(COLOR_YELLOW,
+ LINES / 4,
+ COLS / 10,
+ LINES / 2,
+ COLS / 9);
+ set_panel_userptr(p3, "p3");
+
+ p4 = mkpanel(COLOR_BLUE,
+ LINES / 2 - 2,
+ COLS / 8,
+ LINES / 2 - 2,
+ COLS / 3);
+ set_panel_userptr(p4, "p4");
+
+ p5 = mkpanel(COLOR_MAGENTA,
+ LINES / 2 - 2,
+ COLS / 8,
+ LINES / 2,
+ COLS / 2 - 2);
+ set_panel_userptr(p5, "p5");
+
+ fill_panel(p1);
+ fill_panel(p2);
+ fill_panel(p3);
+ fill_panel(p4);
+ fill_panel(p5);
+ hide_panel(p4);
+ hide_panel(p5);
+ pflush();
+ saywhat("press any key to continue");
+ wait_a_while(nap_msec);
+
+ saywhat("h3 s1 s2 s4 s5; press any key to continue");
+ move_panel(p1, 0, 0);
+ hide_panel(p3);
+ show_panel(p1);
+ show_panel(p2);
+ show_panel(p4);
+ show_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s1; press any key to continue");
+ show_panel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s2; press any key to continue");
+ show_panel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("m2; press any key to continue");
+ move_panel(p2, LINES / 3 + 1, COLS / 8);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s3;");
+ show_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("m3; press any key to continue");
+ move_panel(p3, LINES / 4 + 1, COLS / 15);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("b3; press any key to continue");
+ bottom_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s4; press any key to continue");
+ show_panel(p4);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("s5; press any key to continue");
+ show_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t3; press any key to continue");
+ top_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t1; press any key to continue");
+ top_panel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t2; press any key to continue");
+ top_panel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t3; press any key to continue");
+ top_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t4; press any key to continue");
+ top_panel(p4);
+ pflush();
+ wait_a_while(nap_msec);
+
+ for (itmp = 0; itmp < 6; itmp++) {
+ WINDOW *w4 = panel_window(p4);
+ WINDOW *w5 = panel_window(p5);
+
+ saywhat("m4; press any key to continue");
+ wmove(w4, LINES / 8, 1);
+ waddstr(w4, mod[itmp]);
+ move_panel(p4, LINES / 6, itmp * (COLS / 8));
+ wmove(w5, LINES / 6, 1);
+ waddstr(w5, mod[itmp]);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("m5; press any key to continue");
+ wmove(w4, LINES / 6, 1);
+ waddstr(w4, mod[itmp]);
+ move_panel(p5, LINES / 3 - 1, (itmp * 10) + 6);
+ wmove(w5, LINES / 8, 1);
+ waddstr(w5, mod[itmp]);
+ pflush();
+ wait_a_while(nap_msec);
}
- for(y = 0; y < 5; y++)
- {
- PANEL *p1;
- PANEL *p2;
- PANEL *p3;
- PANEL *p4;
- PANEL *p5;
-
- p1 = mkpanel(COLOR_RED, LINES/2 - 2, COLS/8 + 1, 0, 0);
- set_panel_userptr(p1,"p1");
-
- p2 = mkpanel(COLOR_GREEN, LINES/2 + 1, COLS/7, LINES/4, COLS/10);
- set_panel_userptr(p2,"p2");
-
- p3 = mkpanel(COLOR_YELLOW, LINES/4, COLS/10, LINES/2, COLS/9);
- set_panel_userptr(p3,"p3");
-
- p4 = mkpanel(COLOR_BLUE, LINES/2 - 2, COLS/8, LINES/2 - 2, COLS/3);
- set_panel_userptr(p4,"p4");
-
- p5 = mkpanel(COLOR_MAGENTA, LINES/2 - 2, COLS/8, LINES/2, COLS/2 - 2);
- set_panel_userptr(p5,"p5");
-
- fill_panel(p1);
- fill_panel(p2);
- fill_panel(p3);
- fill_panel(p4);
- fill_panel(p5);
- hide_panel(p4);
- hide_panel(p5);
- pflush();
- saywhat("press any key to continue");
- wait_a_while(nap_msec);
-
- saywhat("h3 s1 s2 s4 s5; press any key to continue");
- move_panel(p1,0,0);
- hide_panel(p3);
- show_panel(p1);
- show_panel(p2);
- show_panel(p4);
- show_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s1; press any key to continue");
- show_panel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s2; press any key to continue");
- show_panel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("m2; press any key to continue");
- move_panel(p2, LINES/3 + 1, COLS / 8);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s3;");
- show_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("m3; press any key to continue");
- move_panel(p3, LINES/4 + 1, COLS / 15);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("b3; press any key to continue");
- bottom_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s4; press any key to continue");
- show_panel(p4);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("s5; press any key to continue");
- show_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t3; press any key to continue");
- top_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t1; press any key to continue");
- top_panel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t2; press any key to continue");
- top_panel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t3; press any key to continue");
- top_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t4; press any key to continue");
- top_panel(p4);
- pflush();
- wait_a_while(nap_msec);
-
- for(itmp = 0; itmp < 6; itmp++)
- {
- WINDOW *w4 = panel_window(p4);
- WINDOW *w5 = panel_window(p5);
-
- saywhat("m4; press any key to continue");
- wmove(w4, LINES/8, 1);
- waddstr(w4,mod[itmp]);
- move_panel(p4, LINES/6, itmp*(COLS/8));
- wmove(w5, LINES/6, 1);
- waddstr(w5,mod[itmp]);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("m5; press any key to continue");
- wmove(w4, LINES/6, 1);
- waddstr(w4,mod[itmp]);
- move_panel(p5, LINES/3 - 1,(itmp*10) + 6);
- wmove(w5, LINES/8, 1);
- waddstr(w5,mod[itmp]);
- pflush();
- wait_a_while(nap_msec);
- }
- saywhat("m4; press any key to continue");
- move_panel(p4, LINES/6, itmp*(COLS/8));
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t5; press any key to continue");
- top_panel(p5);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t2; press any key to continue");
- top_panel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("t1; press any key to continue");
- top_panel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d2; press any key to continue");
- rmpanel(p2);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("h3; press any key to continue");
- hide_panel(p3);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d1; press any key to continue");
- rmpanel(p1);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d4; press any key to continue");
- rmpanel(p4);
- pflush();
- wait_a_while(nap_msec);
-
- saywhat("d5; press any key to continue");
- rmpanel(p5);
- pflush();
- wait_a_while(nap_msec);
- if(nap_msec == 1)
- break;
- nap_msec = 100L;
- }
+ saywhat("m4; press any key to continue");
+ move_panel(p4, LINES / 6, itmp * (COLS / 8));
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t5; press any key to continue");
+ top_panel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t2; press any key to continue");
+ top_panel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("t1; press any key to continue");
+ top_panel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d2; press any key to continue");
+ rmpanel(p2);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("h3; press any key to continue");
+ hide_panel(p3);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d1; press any key to continue");
+ rmpanel(p1);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d4; press any key to continue");
+ rmpanel(p4);
+ pflush();
+ wait_a_while(nap_msec);
+
+ saywhat("d5; press any key to continue");
+ rmpanel(p5);
+ pflush();
+ wait_a_while(nap_msec);
+ if (nap_msec == 1)
+ break;
+ nap_msec = 100L;
+ }
erase();
endwin();
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, q to quit (?,t,s flags)",
- "Use ! to shell-out. Toggle legend:?, timer:t, scroll mark:s.",
- "Use +,- (or j,k) to grow/shrink the panner vertically.",
- "Use <,> (or h,l) to grow/shrink the panner horizontally."
- };
- int n = (SIZEOF(legend) - (LINES - line));
- if (line < LINES && (n >= 0)) {
- move(line, 0);
- if (show_panner_legend)
- printw("%s", legend[n]);
- clrtoeol();
- return show_panner_legend;
- }
- return FALSE;
+static int
+panner_legend(int line)
+{
+ static const char *const legend[] =
+ {
+ "Use arrow keys (or U,D,L,R) to pan, q to quit (?,t,s flags)",
+ "Use ! to shell-out. Toggle legend:?, timer:t, scroll mark:s.",
+ "Use +,- (or j,k) to grow/shrink the panner vertically.",
+ "Use <,> (or h,l) to grow/shrink the panner horizontally."
+ };
+ int n = (SIZEOF(legend) - (LINES - line));
+ if (line < LINES && (n >= 0)) {
+ move(line, 0);
+ 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)
+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);
+ 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)
+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);
+ if (!panner_legend(from_y))
+ do_v_line(from_y, from_x, ' ', to_y);
}
-static void panner(WINDOW *pad,
- int top_x, int top_y, int porty, int portx,
- int (*pgetc)(WINDOW *))
+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;
* 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;
+ 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)
- {
+ switch (c) {
case KEY_REFRESH:
erase();
case 't':
timing = !timing;
if (!timing)
- panner_legend(LINES-1);
+ panner_legend(LINES - 1);
break;
#endif
case 's':
/* Move the top-left corner of the pad, keeping the bottom-right
* corner fixed.
*/
- case 'h': /* increase-columns: move left edge to left */
+ case 'h': /* increase-columns: move left edge to left */
if (top_x <= 0)
beep();
- else
- {
+ else {
panner_v_cleanup(top_y, top_x, porty);
top_x--;
}
break;
- case 'j': /* decrease-lines: move top-edge down */
+ case 'j': /* decrease-lines: move top-edge down */
if (top_y >= porty)
beep();
- else
- {
+ else {
panner_h_cleanup(top_y - 1, top_x - (top_x > 0), portx);
top_y++;
}
break;
- case 'k': /* increase-lines: move top-edge up */
+ case 'k': /* increase-lines: move top-edge up */
if (top_y <= 0)
beep();
- else
- {
+ else {
top_y--;
panner_h_cleanup(top_y, top_x, portx);
}
break;
- case 'l': /* decrease-columns: move left-edge to right */
+ case 'l': /* decrease-columns: move left-edge to right */
if (top_x >= portx)
beep();
- else
- {
+ else {
panner_v_cleanup(top_y - (top_y > 0), top_x - 1, porty);
top_x++;
}
/* Move the bottom-right corner of the pad, keeping the top-left
* corner fixed.
*/
- case KEY_IC: /* increase-columns: move right-edge to right */
+ case KEY_IC: /* increase-columns: move right-edge to right */
if (portx >= pxmax || portx >= COLS)
beep();
- else
- {
+ else {
panner_v_cleanup(top_y - (top_y > 0), portx - 1, porty);
++portx;
}
break;
- case KEY_IL: /* increase-lines: move bottom-edge down */
+ case KEY_IL: /* increase-lines: move bottom-edge down */
if (porty >= pymax || porty >= LINES)
beep();
- else
- {
+ else {
panner_h_cleanup(porty - 1, top_x - (top_x > 0), portx);
++porty;
}
break;
- case KEY_DC: /* decrease-columns: move bottom edge up */
+ case KEY_DC: /* decrease-columns: move bottom edge up */
if (portx <= top_x)
beep();
- else
- {
+ else {
portx--;
panner_v_cleanup(top_y - (top_y > 0), portx, porty);
}
break;
- case KEY_DL: /* decrease-lines */
+ case KEY_DL: /* decrease-lines */
if (porty <= top_y)
beep();
- else
- {
+ else {
porty--;
panner_h_cleanup(porty, top_x - (top_x > 0), portx);
}
break;
- case KEY_LEFT: /* pan leftwards */
+ case KEY_LEFT: /* pan leftwards */
if (basex > 0)
basex--;
else
beep();
break;
- case KEY_UP: /* pan upwards */
+ case KEY_UP: /* pan upwards */
if (basey > 0)
basey--;
else
beep();
break;
- case KEY_DOWN: /* pan downwards */
+ 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;
do_h_line(top_y - 1, top_x, ACS_HLINE, portx);
if (scrollers && (pxmax > portx - 1)) {
- int length = (portx - top_x - 1);
+ int length = (portx - top_x - 1);
float ratio = ((float) length) / ((float) pxmax);
- lowend = (int)(top_x + (basex * ratio));
- highend = (int)(top_x + ((basex + length) * ratio));
+ lowend = (int) (top_x + (basex * ratio));
+ highend = (int) (top_x + ((basex + length) * ratio));
do_h_line(porty - 1, top_x, ACS_HLINE, lowend);
if (highend < portx) {
attroff(A_REVERSE);
do_h_line(porty - 1, highend + 1, ACS_HLINE, portx);
}
- } else
+ } else
do_h_line(porty - 1, top_x, ACS_HLINE, portx);
if (scrollers && (pymax > porty - 1)) {
- int length = (porty - top_y - 1);
+ int length = (porty - top_y - 1);
float ratio = ((float) length) / ((float) pymax);
- lowend = (int)(top_y + (basey * ratio));
- highend = (int)(top_y + ((basey + length) * ratio));
+ lowend = (int) (top_y + (basey * ratio));
+ highend = (int) (top_y + ((basey + length) * ratio));
do_v_line(top_y, portx - 1, ACS_VLINE, lowend);
- if (highend < porty) {
+ 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
+ } else
do_v_line(top_y, portx - 1, ACS_VLINE, porty);
mvaddch(top_y - 1, portx - 1, ACS_URCORNER);
wnoutrefresh(stdscr);
pnoutrefresh(pad,
- basey, basex,
- top_y, top_x,
- porty - (pxmax > portx) - 1,
- portx - (pymax > porty) - 1);
+ basey, basex,
+ top_y, top_x,
+ porty - (pxmax > portx) - 1,
+ portx - (pymax > porty) - 1);
doupdate();
#if HAVE_GETTIMEOFDAY
if (timing) {
- double elapsed;
- gettimeofday(&after, 0);
- elapsed = (after.tv_sec + after.tv_usec / 1.0e6)
- - (before.tv_sec + before.tv_usec / 1.0e6);
- move(LINES-1, COLS-20);
- printw("Secs: %2.03f", elapsed);
- refresh();
+ double elapsed;
+ gettimeofday(&after, 0);
+ elapsed = (after.tv_sec + after.tv_usec / 1.0e6)
+ - (before.tv_sec + before.tv_usec / 1.0e6);
+ move(LINES - 1, COLS - 20);
+ printw("Secs: %2.03f", elapsed);
+ refresh();
}
#endif
}
static
-int padgetch(WINDOW *win)
+int
+padgetch(WINDOW *win)
{
- int c;
+ int c;
- switch(c = wGetchar(win))
- {
- case '!': ShellOut(FALSE); return KEY_REFRESH;
- case CTRL('r'): endwin(); refresh(); return KEY_REFRESH;
- case CTRL('l'): return KEY_REFRESH;
- case 'U': return(KEY_UP);
- case 'D': return(KEY_DOWN);
- case 'R': return(KEY_RIGHT);
- case 'L': return(KEY_LEFT);
- case '+': return(KEY_IL);
- case '-': return(KEY_DL);
- case '>': return(KEY_IC);
- case '<': return(KEY_DC);
- case ERR: /* FALLTHRU */
- case 'q': return(KEY_EXIT);
- default: return(c);
+ switch (c = wGetchar(win)) {
+ case '!':
+ ShellOut(FALSE);
+ return KEY_REFRESH;
+ case CTRL('r'):
+ endwin();
+ refresh();
+ return KEY_REFRESH;
+ case CTRL('l'):
+ return KEY_REFRESH;
+ case 'U':
+ return (KEY_UP);
+ case 'D':
+ return (KEY_DOWN);
+ case 'R':
+ return (KEY_RIGHT);
+ case 'L':
+ return (KEY_LEFT);
+ case '+':
+ return (KEY_IL);
+ case '-':
+ return (KEY_DL);
+ case '>':
+ return (KEY_IC);
+ case '<':
+ return (KEY_DC);
+ case ERR: /* FALLTHRU */
+ case 'q':
+ return (KEY_EXIT);
+ default:
+ return (c);
}
}
-static void demo_pad(void)
+#define PAD_HIGH 200
+#define PAD_WIDE 200
+
+static void
+demo_pad(void)
/* Demonstrate pads. */
{
int i, j;
unsigned gridcount = 0;
- WINDOW *panpad = newpad(200, 200);
+ WINDOW *panpad = newpad(PAD_HIGH, PAD_WIDE);
- for (i = 0; i < 200; i++)
- {
- for (j = 0; j < 200; j++)
- if (i % GRIDSIZE == 0 && j % GRIDSIZE == 0)
- {
+ if (panpad == 0) {
+ Cannot("cannot create requested pad");
+ return;
+ }
+
+ for (i = 0; i < PAD_HIGH; i++) {
+ for (j = 0; j < PAD_WIDE; j++)
+ if (i % GRIDSIZE == 0 && j % GRIDSIZE == 0) {
if (i == 0 || j == 0)
waddch(panpad, '+');
else
- waddch(panpad, (chtype)('A' + (gridcount++ % 26)));
- }
- else if (i % GRIDSIZE == 0)
+ waddch(panpad, (chtype) ('A' + (gridcount++ % 26)));
+ } else if (i % GRIDSIZE == 0)
waddch(panpad, '-');
else if (j % GRIDSIZE == 0)
waddch(panpad, '|');
* 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);
+ panner(panpad, 2, 2, LINES - 5, COLS - 15, padgetch);
delwin(panpad);
endwin();
*
****************************************************************************/
-static void Continue (WINDOW *win)
+static void
+Continue(WINDOW *win)
{
noecho();
wmove(win, 10, 1);
wGetchar(win);
}
-static void flushinp_test(WINDOW *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);
+ wclear(win);
- getmaxyx(win, h, w);
+ 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;
+ if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == 0)
+ return;
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(2,COLOR_CYAN,COLOR_BLUE);
- wattrset(subWin, COLOR_PAIR(2) | A_BOLD);
+ if (has_colors()) {
+ init_pair(2, COLOR_CYAN, COLOR_BLUE);
+ wbkgd(subWin, COLOR_PAIR(2) | ' ');
}
- else
- wattrset(subWin, A_BOLD);
-#else
- wattrset(subWin, A_BOLD);
#endif
+ wattrset(subWin, A_BOLD);
box(subWin, ACS_VLINE, ACS_HLINE);
mvwaddstr(subWin, 2, 1, "This is a subwindow");
wrefresh(win);
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.");
+ "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);
+ for (i = 0; i < 5; i++) {
+ mvwprintw(subWin, 1, 1, "Time = %d", i);
wrefresh(subWin);
napms(1000);
flushinp();
}
- delwin (subWin);
+ delwin(subWin);
werase(win);
flash();
wrefresh(win);
napms(1000);
mvwaddstr(win, 2, 1,
- "If you were still typing when the window timer expired,");
+ "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,");
+ "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. ");
+ "test was invalid. You'll see garbage or nothing at all. ");
mvwaddstr(win, 6, 1, "Press a key");
wmove(win, 9, 10);
wrefresh(win);
wGetchar(win);
flushinp();
mvwaddstr(win, 12, 0,
- "If you see any key other than what you typed, flushinp() is broken.");
+ "If you see any key other than what you typed, flushinp() is broken.");
Continue(win);
wmove(win, 9, 10);
wmove(win, 12, 0);
clrtoeol();
waddstr(win,
- "What you typed should now have been deleted; if not, wdelch() failed.");
+ "What you typed should now have been deleted; if not, wdelch() failed.");
Continue(win);
cbreak();
#define MENU_Y 8
#define MENU_X 8
-static int menu_virtualize(int c)
+static int
+menu_virtualize(int c)
{
if (c == '\n' || c == KEY_EXIT)
- return(MAX_COMMAND + 1);
+ return (MAX_COMMAND + 1);
else if (c == 'u')
- return(REQ_SCR_ULINE);
+ return (REQ_SCR_ULINE);
else if (c == 'd')
- return(REQ_SCR_DLINE);
+ return (REQ_SCR_DLINE);
else if (c == 'b' || c == KEY_NPAGE)
- return(REQ_SCR_UPAGE);
+ return (REQ_SCR_UPAGE);
else if (c == 'f' || c == KEY_PPAGE)
- return(REQ_SCR_DPAGE);
+ return (REQ_SCR_DPAGE);
else if (c == 'n' || c == KEY_DOWN)
- return(REQ_NEXT_ITEM);
+ return (REQ_NEXT_ITEM);
else if (c == 'p' || c == KEY_UP)
- return(REQ_PREV_ITEM);
+ return (REQ_PREV_ITEM);
else if (c == ' ')
- return(REQ_TOGGLE_ITEM);
+ return (REQ_TOGGLE_ITEM);
else {
if (c != KEY_MOUSE)
beep();
- return(c);
+ return (c);
}
}
static const char *animals[] =
{
"Lions", "Tigers", "Bears", "(Oh my!)", "Newts", "Platypi", "Lemurs",
- (char *)0
+ (char *) 0
};
-static void menu_test(void)
+static void
+menu_test(void)
{
- MENU *m;
- ITEM *items[SIZEOF(animals)];
- ITEM **ip = items;
- const char **ap;
- int mrows, mcols, c;
- WINDOW *menuwin;
+ MENU *m;
+ ITEM *items[SIZEOF(animals)];
+ ITEM **ip = items;
+ const char **ap;
+ int mrows, mcols, c;
+ WINDOW *menuwin;
#ifdef NCURSES_MOUSE_VERSION
- mousemask(ALL_MOUSE_EVENTS, (mmask_t *)0);
+ 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(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++)
*ip++ = new_item(*ap, "");
- *ip = (ITEM *)0;
+ *ip = (ITEM *) 0;
m = new_menu(items);
- set_menu_format(m, (SIZEOF(animals)+1)/2, 1);
+ set_menu_format(m, (SIZEOF(animals) + 1) / 2, 1);
scale_menu(m, &mrows, &mcols);
- menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
+ menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
set_menu_win(m, menuwin);
keypad(menuwin, TRUE);
box(menuwin, 0, 0);
}
(void) mvprintw(LINES - 2, 0,
- "You chose: %s\n", item_name(current_item(m)));
+ "You chose: %s\n", item_name(current_item(m)));
(void) addstr("Press any key to continue...");
wGetchar(stdscr);
for (ip = items; *ip; ip++)
free_item(*ip);
#ifdef NCURSES_MOUSE_VERSION
- mousemask(0, (mmask_t *)0);
+ mousemask(0, (mmask_t *) 0);
#endif
}
#ifdef TRACE
#define T_TBL(name) { #name, name }
static struct {
- const char *name;
- int mask;
+ const char *name;
+ int mask;
} t_tbl[] = {
- T_TBL(TRACE_DISABLE),
+
+ T_TBL(TRACE_DISABLE),
T_TBL(TRACE_TIMES),
T_TBL(TRACE_TPUTS),
T_TBL(TRACE_UPDATE),
T_TBL(TRACE_BITS),
T_TBL(TRACE_ICALLS),
T_TBL(TRACE_CCALLS),
+ T_TBL(TRACE_DATABASE),
T_TBL(TRACE_MAXIMUM),
- { (char *)0, 0 }
+ {
+ (char *) 0, 0
+ }
};
-static char *tracetrace(int tlevel)
+static char *
+tracetrace(int tlevel)
{
- static char *buf;
- int n;
+ 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 = (char *)malloc(need);
+ buf = (char *) malloc(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)
- {
+ 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,"}"));
+ return (strcat(buf, "}"));
}
/* fake a dynamically reconfigurable menu using the 0th entry to deselect
* the others
*/
-static int run_trace_menu(MENU *m)
+static int
+run_trace_menu(MENU * m)
{
ITEM **items;
ITEM *i, **p;
i = current_item(m);
if (i == items[0]) {
if (item_value(i)) {
- for (p = items+1; *p != 0; p++)
+ 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++)
+ for (p = items + 1; *p != 0; p++)
if (item_value(*p)) {
set_item_value(items[0], FALSE);
changed = TRUE;
}
}
-static void trace_set(void)
+static void
+trace_set(void)
/* interactively set the trace level */
{
- MENU *m;
- ITEM *items[SIZEOF(t_tbl)];
- ITEM **ip = items;
- int mrows, mcols, newtrace;
- int n;
- WINDOW *menuwin;
+ MENU *m;
+ ITEM *items[SIZEOF(t_tbl)];
+ ITEM **ip = items;
+ int mrows, mcols, newtrace;
+ int n;
+ WINDOW *menuwin;
mvaddstr(0, 0, "Interactively set trace level:");
mvaddstr(2, 0, " Press space bar to toggle a selection.");
for (n = 0; t_tbl[n].name != 0; n++)
*ip++ = new_item(t_tbl[n].name, "");
- *ip = (ITEM *)0;
+ *ip = (ITEM *) 0;
m = new_menu(items);
scale_menu(m, &mrows, &mcols);
menu_opts_off(m, O_ONEVALUE);
- menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
+ menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X);
set_menu_win(m, menuwin);
keypad(menuwin, TRUE);
box(menuwin, 0, 0);
_tracef("trace level interactively set to %s", tracetrace(_nc_tracing));
(void) mvprintw(LINES - 2, 0,
- "Trace level is %s\n", tracetrace(_nc_tracing));
+ "Trace level is %s\n", tracetrace(_nc_tracing));
(void) addstr("Press any key to continue...");
wGetchar(stdscr);
*
****************************************************************************/
#if USE_LIBFORM
-static FIELD *make_label(int frow, int fcol, NCURSES_CONST char *label)
+static FIELD *
+make_label(int frow, int fcol, NCURSES_CONST char *label)
{
- FIELD *f = new_field(1, strlen(label), frow, fcol, 0, 0);
+ FIELD *f = new_field(1, strlen(label), frow, fcol, 0, 0);
- if (f)
- {
+ if (f) {
set_field_buffer(f, 0, label);
set_field_opts(f, field_opts(f) & ~O_ACTIVE);
}
- return(f);
+ return (f);
}
-static FIELD *make_field(int frow, int fcol, int rows, int cols, bool secure)
+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);
+ 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);
+ set_field_userptr(f, (void *) 0);
}
- return(f);
+ return (f);
}
-static void display_form(FORM *f)
+static void
+display_form(FORM * f)
{
- WINDOW *w;
+ WINDOW *w;
int rows, cols;
scale_form(f, &rows, &cols);
- if ((w =newwin(rows+2, cols+4, 0, 0)) != (WINDOW *)0)
- {
+ 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);
wrefresh(w);
}
-static void erase_form(FORM *f)
+static void
+erase_form(FORM * f)
{
- WINDOW *w = form_win(f);
- WINDOW *s = form_sub(f);
+ WINDOW *w = form_win(f);
+ WINDOW *s = form_sub(f);
unpost_form(f);
werase(w);
delwin(w);
}
-static int edit_secure(FIELD *me, int c)
+static int
+edit_secure(FIELD * me, int c)
{
- int rows, cols, frow, fcol, nbuf;
+ int rows, cols, frow, fcol, nrow, nbuf;
- if (field_info(me, &rows, &cols, &frow, &fcol, (int *)0, &nbuf) == E_OK
- && nbuf > 0) {
+ if (field_info(me, &rows, &cols, &frow, &fcol, &nrow, &nbuf) == E_OK
+ && nbuf > 0) {
char temp[80];
long len;
strcpy(temp, field_buffer(me, 1));
- len = (long)(char *) field_userptr(me);
+ len = (long) (char *) field_userptr(me);
if (c <= KEY_MAX) {
if (isgraph(c)) {
temp[len++] = c;
temp[--len] = 0;
set_field_buffer(me, 1, temp);
}
- break;
+ break;
}
}
- set_field_userptr(me, (void *)len);
- }
- return c;
+ set_field_userptr(me, (void *) len);
+ }
+ return c;
}
-static int form_virtualize(FORM *f, WINDOW *w)
+static int
+form_virtualize(FORM * f, WINDOW *w)
{
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 }
+ {
+ 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
+ }
};
- static int mode = REQ_INS_MODE;
- int c = wGetchar(w);
- unsigned n;
+ static int mode = REQ_INS_MODE;
+ int c = wGetchar(w);
+ unsigned n;
FIELD *me = current_field(f);
if (c == CTRL(']')) {
mode = REQ_INS_MODE;
c = mode;
} else {
- for (n = 0; n < sizeof(lookup)/sizeof(lookup[0]); n++) {
+ for (n = 0; n < sizeof(lookup) / sizeof(lookup[0]); n++) {
if (lookup[n].code == c) {
c = lookup[n].result;
break;
return c;
}
-static int my_form_driver(FORM *form, int 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
- {
+ && form_driver(form, REQ_VALIDATION) == E_OK)
+ return (TRUE);
+ else {
beep();
- return(FALSE);
+ return (FALSE);
}
}
-static void demo_forms(void)
+static void
+demo_forms(void)
{
- WINDOW *w;
- FORM *form;
- FIELD *f[12], *secure;
- int finished = 0, c;
- unsigned n = 0;
+ WINDOW *w;
+ FORM *form;
+ FIELD *f[12], *secure;
+ int finished = 0, c;
+ unsigned n = 0;
move(18, 0);
addstr("Defined form-traversal keys: ^Q/ESC- exit form\n");
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);
- f[n++] = (FIELD *)0;
+ f[n++] = make_field(5, 30, 1, 9, TRUE);
+ f[n++] = (FIELD *) 0;
form = new_form(f);
w = form_win(form);
raw();
- while (!finished)
- {
- switch(form_driver(form, c = form_virtualize(form, w)))
- {
+ 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();
free_form(form);
for (c = 0; f[c] != 0; c++)
- free_field(f[c]);
+ free_field(f[c]);
noraw();
+ nl();
}
-#endif /* USE_LIBFORM */
+#endif /* USE_LIBFORM */
/****************************************************************************
*
*
****************************************************************************/
-static void fillwin(WINDOW *win, char ch)
+static void
+fillwin(WINDOW *win, char ch)
{
int y, x;
int y1, x1;
getmaxyx(win, y1, x1);
- for (y = 0; y < y1; y++)
- {
+ for (y = 0; y < y1; y++) {
wmove(win, y, 0);
for (x = 0; x < x1; x++)
waddch(win, ch);
}
}
-static void crosswin(WINDOW *win, char 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 (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))))
- {
+ || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3)))) {
wmove(win, y, x);
waddch(win, ch);
}
}
}
-static void overlap_test(void)
+static void
+overlap_test(void)
/* test effects of overlapping windows */
{
- int ch;
+ int ch;
WINDOW *win1 = newwin(9, 20, 3, 3);
WINDOW *win2 = newwin(9, 20, 9, 16);
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");
-
move(18, 0);
printw("a = refresh A, then B, then doupdate. b = refresh B, then A, then doupdaute\n");
printw("c = fill window A with letter A. d = fill window B with letter B.\n");
printw("^Q/ESC = terminate test.");
while ((ch = Getchar()) != QUIT && ch != ESCAPE)
- switch (ch)
- {
+ switch (ch) {
case 'a': /* refresh window A first, then B */
wnoutrefresh(win1);
wnoutrefresh(win2);
do_single_test(const char c)
/* perform a single specified test */
{
- switch (c)
- {
+ switch (c) {
case 'a':
getch_test();
break;
#endif
case 's':
- overlap_test();
+ overlap_test();
break;
#if USE_LIBMENU && defined(TRACE)
case 't':
- trace_set();
+ trace_set();
break;
#endif
static void
usage(void)
{
- static const char *const tbl[] = {
- "Usage: ncurses [options]"
+ 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
," -e fmt specify format for soft-keys test (e)"
," -f rip-off footer line (can repeat)"
," -h rip-off header line (can repeat)"
#endif
};
size_t n;
- for (n = 0; n < sizeof(tbl)/sizeof(tbl[0]); n++)
+ for (n = 0; n < sizeof(tbl) / sizeof(tbl[0]); n++)
fprintf(stderr, "%s\n", tbl[n]);
exit(EXIT_FAILURE);
}
}
#ifdef SIGUSR1
-static RETSIGTYPE announce_sig(int sig)
+static RETSIGTYPE
+announce_sig(int sig)
{
(void) fprintf(stderr, "Handled signal %d\r\n", sig);
}
#endif
-static int rip_footer(WINDOW *win, int columns)
+static int
+rip_footer(WINDOW *win, int columns)
{
- wbkgd(win, A_REVERSE);
- werase(win);
- wmove(win, 0, 0);
- wprintw(win, "footer: %d columns", columns);
- wnoutrefresh(win);
- return OK;
+ wbkgd(win, A_REVERSE);
+ werase(win);
+ wmove(win, 0, 0);
+ wprintw(win, "footer: %d columns", columns);
+ wnoutrefresh(win);
+ return OK;
}
-static int rip_header(WINDOW *win, int columns)
+static int
+rip_header(WINDOW *win, int columns)
{
- wbkgd(win, A_REVERSE);
- werase(win);
- wmove(win, 0, 0);
- wprintw(win, "header: %d columns", columns);
- wnoutrefresh(win);
- return OK;
+ wbkgd(win, A_REVERSE);
+ werase(win);
+ wmove(win, 0, 0);
+ wprintw(win, "header: %d columns", columns);
+ wnoutrefresh(win);
+ return OK;
}
/*+-------------------------------------------------------------------------
int
main(int argc, char *argv[])
{
- int command, c;
- int my_e_param = 1;
+ int command, 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
#if HAVE_LOCALE_H
setlocale(LC_CTYPE, "");
#endif
- while ((c = getopt(argc, argv, "e:fhs:t:")) != EOF) {
+ while ((c = getopt(argc, argv, "a:de:fhs:t:")) != EOF) {
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();
+ usage();
#else
if (my_e_param > 1)
- usage();
+ usage();
#endif
break;
case 'f':
trace(save_trace);
#else
if (!isatty(fileno(stdin)))
- trace(save_trace);
+ trace(save_trace);
#endif /* USE_LIBMENU */
#endif /* TRACE */
bkgdset(BLANK);
/* tests, in general, will want these modes */
- start_color();
+ if (has_colors()) {
+ start_color();
+#ifdef NCURSES_VERSION
+ if (default_colors)
+ use_default_colors();
+ else if (assumed_colors)
+ assume_default_colors(default_fg, default_bg);
+#endif
+ }
set_terminal_modes();
def_prog_mode();
(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);
+ NCURSES_VERSION_MAJOR,
+ NCURSES_VERSION_MINOR,
+ NCURSES_VERSION_PATCH);
#else
(void) puts("Welcome to ncurses. Press ? for help.");
#endif
(void) puts("? = repeat this command summary");
(void) fputs("> ", stdout);
- (void) fflush(stdout); /* necessary under SVr4 curses */
+ (void) fflush(stdout); /* necessary under SVr4 curses */
/*
* This used to be an 'fgets()' call. However (on Linux, at least)
* input stream to be flushed when switching between the two.
*/
command = 0;
- for(;;) {
- char ch;
- if (read(fileno(stdin), &ch, 1) <= 0) {
- if (command == 0)
- command = 'q';
- break;
- } else if (command == 0 && !isspace(ch)) {
- command = ch;
- } else if (ch == '\n' || ch == '\r') {
- if (command != 0)
- break;
- (void) fputs("> ", stdout);
- (void) fflush(stdout);
- }
+ for (;;) {
+ char ch;
+ if (read(fileno(stdin), &ch, 1) <= 0) {
+ if (command == 0)
+ command = 'q';
+ break;
+ } else if (command == 0 && !isspace(ch)) {
+ command = ch;
+ } else if (ch == '\n' || ch == '\r') {
+ 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. The commands `x' or `q' will exit.");
- }
- continue;
+ /*
+ * 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. The commands `x' or `q' will exit.");
+ }
+ continue;
}
} while
(command != 'q');
--- /dev/null
+/****************************************************************************
+ * 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: Thomas E. Dickey <dickey@clark.net> 2000
+ *
+ * $Id: railroad.c,v 1.1 2000/01/15 02:41:27 tom Exp $
+ *
+ * A simple demo of the termcap interface.
+ */
+#include <test.priv.h>
+
+#include <termcap.h>
+#include <ctype.h>
+#include <signal.h>
+
+static char *finisC;
+static char *finisS;
+static char *finisU;
+
+static char *startC;
+static char *startS;
+static char *startU;
+
+static char *backup;
+
+static bool interrupted = FALSE;
+
+static int
+outc(int c)
+{
+ if (interrupted) {
+ char tmp = c;
+ write(STDOUT_FILENO, &tmp, 1);
+ } else {
+ putc(c, stdout);
+ }
+ return 0;
+}
+
+static void
+PutChar(int ch)
+{
+ putchar(ch);
+ fflush(stdout);
+ napms(50); /* not really termcap... */
+}
+
+static void
+Backup(void)
+{
+ tputs(backup != 0 ? backup : "\b", 1, outc);
+}
+
+static void
+ShowCursor(int flag)
+{
+ if (startC != 0 && finisC != 0) {
+ tputs(flag ? startC : finisC, 1, outc);
+ }
+}
+
+static void
+StandOut(int flag)
+{
+ if (startS != 0 && finisS != 0) {
+ tputs(flag ? startS : finisS, 1, outc);
+ }
+}
+
+static void
+Underline(int flag)
+{
+ if (startU != 0 && finisU != 0) {
+ tputs(flag ? startU : finisU, 1, outc);
+ }
+}
+
+static void
+ShowSign(char *string)
+{
+ int ch, first, last;
+
+ while (*string != 0) {
+ ch = *string;
+ last = ch;
+ if (isalpha(ch)) {
+ first = isupper(ch) ? 'A' : 'a';
+ } else if (isdigit(ch)) {
+ first = '0';
+ } else {
+ first = ch;
+ }
+ if (first < last) {
+ Underline(1);
+ while (first < last) {
+ PutChar(first);
+ Backup();
+ first++;
+ }
+ Underline(0);
+ }
+ StandOut(1);
+ PutChar(ch);
+ StandOut(0);
+ fflush(stdout);
+ string++;
+ }
+ putchar('\n');
+}
+
+static void
+cleanup(void)
+{
+ Underline(0);
+ StandOut(0);
+ ShowCursor(1);
+}
+
+static void
+onsig(int n GCC_UNUSED)
+{
+ interrupted = TRUE;
+ cleanup();
+ exit(EXIT_FAILURE);
+}
+
+static void
+railroad(char **args)
+{
+ char *name = getenv("TERM");
+ char buffer[1024];
+ char area[1024], *ap = area;
+ int j;
+
+ if (name == 0)
+ name = "dumb";
+ if (tgetent(buffer, name)) {
+ startS = tgetstr("so", &ap);
+ finisS = tgetstr("se", &ap);
+
+ startU = tgetstr("us", &ap);
+ finisU = tgetstr("ue", &ap);
+
+ backup = tgetstr("le", &ap);
+
+ startC = tgetstr("ve", &ap);
+ finisC = tgetstr("vi", &ap);
+
+ ShowCursor(0);
+
+ for (j = SIGHUP; j <= SIGTERM; j++)
+ if (signal(j, SIG_IGN) != SIG_IGN)
+ signal(j, onsig);
+
+ while (*args) {
+ ShowSign(*args++);
+ }
+ ShowCursor(1);
+ }
+}
+
+int
+main(
+ int argc,
+ char *argv[])
+{
+ if (argc > 1) {
+ railroad(argv + 1);
+ } else {
+ static char *hello[] =
+ {"Hello World", 0};
+ railroad(hello);
+ }
+ return EXIT_SUCCESS;
+}
/*
- * $Id: rain.c,v 1.13 1999/10/23 01:31:26 tom Exp $
+ * $Id: rain.c,v 1.14 1999/11/13 23:39:07 tom Exp $
*/
#include <test.priv.h>
if (has_colors()) {
int bg = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
bg = -1;
#endif
if (has_colors()) {
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
my_bg = -1;
#endif
/****************************************************************************
* Author: Thomas E. Dickey <dickey@clark.net> 1996 *
****************************************************************************/
-/* $Id: test.priv.h,v 1.15 1998/02/11 12:14:04 tom Exp $ */
+/* $Id: test.priv.h,v 1.16 2000/04/15 17:52:08 tom Exp $ */
#if HAVE_CONFIG_H
#include <ncurses_cfg.h>
#endif
#if defined(NCURSES_VERSION) && HAVE_NC_ALLOC_H
#include <nc_alloc.h>
+#else
+#define typeMalloc(type,n) (type *) malloc(n * sizeof(type))
+#define typeRealloc(type,n,p) (type *) realloc(p, n * sizeof(type))
#endif
#ifndef ExitProgram
* wrs(5/28/93) -- modified to be consistent (perform identically) with either
* PDCurses or under Unix System V, R4
*
- * $Id: testcurs.c,v 1.19 1999/02/14 00:42:28 tom Exp $
+ * $Id: testcurs.c,v 1.22 2000/06/17 23:23:34 tom Exp $
*/
#include <test.priv.h>
char *XCursesProgramName = "testcurs";
#endif
-static int initTest (WINDOW **);
-static void display_menu (int,int);
-static void inputTest (WINDOW *);
-static void introTest (WINDOW *);
-static void outputTest (WINDOW *);
-static void padTest (WINDOW *);
-static void scrollTest (WINDOW *);
-# if defined(PDCURSES) && !defined(XCURSES)
-static void resizeTest (WINDOW *);
+static int initTest(WINDOW **);
+static void display_menu(int, int);
+static void inputTest(WINDOW *);
+static void introTest(WINDOW *);
+static void outputTest(WINDOW *);
+static void padTest(WINDOW *);
+static void scrollTest(WINDOW *);
+#if defined(PDCURSES) && !defined(XCURSES)
+static void resizeTest(WINDOW *);
#endif
-struct commands
-{
- NCURSES_CONST char *text;
- void (*function)(WINDOW *);
+struct commands {
+ NCURSES_CONST char *text;
+ void (*function) (WINDOW *);
};
typedef struct commands COMMAND;
const COMMAND command[] =
{
- {"Intro Test", introTest},
- {"Pad Test", padTest},
-# if defined(PDCURSES) && !defined(XCURSES)
- {"Resize Test", resizeTest},
+ {"Intro Test", introTest},
+ {"Pad Test", padTest},
+#if defined(PDCURSES) && !defined(XCURSES)
+ {"Resize Test", resizeTest},
#endif
- {"Scroll Test", scrollTest},
- {"Input Test", inputTest},
- {"Output Test", outputTest}
+ {"Scroll Test", scrollTest},
+ {"Input Test", inputTest},
+ {"Output Test", outputTest}
};
#define MAX_OPTIONS ((sizeof(command)/sizeof(command[0])))
-int width, height;
+int width, height;
int
main(
- int argc GCC_UNUSED,
- char *argv[] GCC_UNUSED)
+ int argc GCC_UNUSED,
+ char *argv[]GCC_UNUSED)
{
-WINDOW *win;
-int key,old_option=(-1),new_option=0;
-bool quit=FALSE;
+ WINDOW *win;
+ int key, old_option = (-1), new_option = 0;
+ bool quit = FALSE;
#ifdef PDCDEBUG
- PDC_debug("testcurs started\n");
+ PDC_debug("testcurs started\n");
#endif
- if (!initTest (&win)) return EXIT_FAILURE;
+ if (!initTest(&win))
+ return EXIT_FAILURE;
+ erase();
+ display_menu(old_option, new_option);
+ while (1) {
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(1,COLOR_WHITE,COLOR_BLUE);
- wbkgd(win, COLOR_PAIR(1));
- }
- else
- wbkgd(win, A_REVERSE);
+ 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);
+ wbkgd(win, A_REVERSE);
#endif
+ werase(win);
+
+ noecho();
+ keypad(stdscr, TRUE);
+ raw();
+ key = getch();
+ 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:
+ break;
+ }
+ if (quit == TRUE)
+ break;
+ }
- erase();
- display_menu(old_option,new_option);
- while(1)
- {
- noecho();
- keypad(stdscr,TRUE);
- raw();
- key = getch();
- 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: break;
- }
- if (quit == TRUE)
- break;
- }
-
- delwin (win);
+ delwin(win);
endwin();
#ifdef XCURSES
return EXIT_SUCCESS;
}
-static
-void Continue (WINDOW *win)
+static void
+Continue(WINDOW *win)
{
- wmove(win, 10, 1);
+ int y1 = getmaxy(win);
+ int x1 = getmaxx(win);
+ int y0 = y1 < 10 ? y1 : 10;
+ int x0 = 1;
+ long save;
+
+ save = mvwinch(win, y0, x1 - 1);
+
+ mvwaddstr(win, y0, x0, " Press any key to continue");
wclrtoeol(win);
- mvwaddstr(win, 10, 1, " Press any key to continue");
- wrefresh(win);
+ getyx(win, y0, x0);
+
+ mvwaddch(win, y0, x1 - 1, save);
+
+ wmove(win, y0, x0);
raw();
wgetch(win);
}
static int
-initTest (WINDOW **win)
+initTest(WINDOW **win)
{
#ifdef PDCDEBUG
PDC_debug("initTest called\n");
#endif
-#ifdef NCURSES_VERSION
+#ifdef TRACE
trace(TRACE_MAXIMUM);
#endif
initscr();
#endif
#ifdef A_COLOR
if (has_colors())
- start_color();
+ start_color();
#endif
- width = 60;
- height = 13; /* Create a drawing window */
- *win = newwin(height, width, (LINES-height)/2, (COLS-width)/2);
- if(*win == NULL)
- {
- endwin();
- return 0;
+ width = 60;
+ height = 13; /* Create a drawing window */
+ *win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2);
+ if (*win == NULL) {
+ endwin();
+ return 0;
}
return 1;
}
static void
-introTest (WINDOW *win)
+introTest(WINDOW *win)
{
- wmove( win, height/2-5, width/2 );
- wvline( win, ACS_VLINE, 10 );
- wmove( win, height/2, width/2-10 );
- whline( win, ACS_HLINE, 20 );
+ wmove(win, height / 2 - 5, width / 2);
+ wvline(win, ACS_VLINE, 10);
+ wmove(win, height / 2, width / 2 - 10);
+ whline(win, ACS_HLINE, 20);
Continue(win);
- beep ();
+ beep();
werase(win);
box(win, ACS_VLINE, ACS_HLINE);
wrefresh(win);
- cbreak ();
- mvwaddstr(win, 1, 1, "You should have rectangle in the middle of the screen");
+ cbreak();
+ mvwaddstr(win, 1, 1,
+ "You should have rectangle in the middle of the screen");
mvwaddstr(win, 2, 1, "You should have heard a beep");
Continue(win);
return;
}
static void
-scrollTest (WINDOW *win)
+scrollTest(WINDOW *win)
{
int i;
+ int half;
int OldX, OldY;
NCURSES_CONST char *Message = "The window will now scroll slowly";
wclear(win);
- mvwprintw (win, height - 2, 1, Message);
- wrefresh (win);
+ getmaxyx(win, OldY, OldX);
+ half = OldY / 2;
+ mvwprintw(win, OldY - 2, 1, Message);
+ wrefresh(win);
scrollok(win, TRUE);
- for (i = 1; i <= height; i++) {
- napms(250);
- scroll(win);
- wrefresh (win);
+ for (i = 1; i <= OldY; i++) {
+ napms(600);
+ scroll(win);
+ wrefresh(win);
}
- getmaxyx (win, OldY, OldX);
- mvwprintw (win, 6, 1, "The top of the window will scroll");
- wmove (win, 1, 1);
- wsetscrreg (win, 0, 4);
+ werase(win);
+ for (i = 1; i < OldY; i++) {
+ mvwprintw(win, i, 1, "Line %d", i);
+ }
+ mvwprintw(win, OldY - 2, 1, "The top of the window will scroll");
+ wmove(win, 1, 1);
+ wsetscrreg(win, 0, half - 1);
box(win, ACS_VLINE, ACS_HLINE);
- wrefresh (win);
- for (i = 1; i <= 5; i++) {
- napms(500);
- scroll(win);
- wrefresh (win);
+ wrefresh(win);
+ for (i = 1; i <= half; i++) {
+ napms(600);
+ scroll(win);
+ box(win, ACS_VLINE, ACS_HLINE);
+ wrefresh(win);
}
- mvwprintw (win, 3, 1, "The bottom of the window will scroll");
- wmove (win, 8, 1);
- wsetscrreg (win, 5, --OldY);
+ werase(win);
+ for (i = 1; i < OldY; i++) {
+ mvwprintw(win, i, 1, "Line %d", i);
+ }
+ mvwprintw(win, 1, 1, "The bottom of the window will scroll");
+ wmove(win, OldY - 2, 1);
+ wsetscrreg(win, half, --OldY);
box(win, ACS_VLINE, ACS_HLINE);
- wrefresh (win);
- for (i = 5; i <= OldY; i++) {
- napms (300);
- wscrl(win,-1);
- wrefresh (win);
+ wrefresh(win);
+ for (i = half; i <= OldY; i++) {
+ napms(600);
+ wscrl(win, -1);
+ box(win, ACS_VLINE, ACS_HLINE);
+ wrefresh(win);
}
- wsetscrreg (win, 0, OldY);
-
+ wsetscrreg(win, 0, OldY);
}
static void
-inputTest (WINDOW *win)
+inputTest(WINDOW *win)
{
- int w, h, bx, by, sw, sh, i, c,num;
- char buffer [80];
+ int w, h, bx, by, sw, sh, i, c, num;
+ char buffer[80];
WINDOW *subWin;
- wclear (win);
+ wclear(win);
- getmaxyx(win, h, w);
+ 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)) == NULL)
- return;
+ if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == NULL)
+ return;
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(2,COLOR_WHITE,COLOR_RED);
- wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
- }
- else
- wbkgd(subWin, A_BOLD);
+ if (has_colors()) {
+ init_pair(2, COLOR_WHITE, COLOR_RED);
+ wbkgd(subWin, COLOR_PAIR(2) | A_BOLD);
+ } else
+ wbkgd(subWin, A_BOLD);
#else
wbkgd(subWin, A_BOLD);
#endif
mvwaddstr(win, 1, 1, "Pressing ^C should do nothing");
wrefresh(win);
- werase (subWin);
+ werase(subWin);
box(subWin, ACS_VLINE, ACS_HLINE);
for (i = 0; i < 5; i++) {
- mvwprintw (subWin, 1, 1, "Time = %d", i);
- wrefresh(subWin);
- napms(1000);
- flushinp();
+ mvwprintw(subWin, 1, 1, "Time = %d", i);
+ wrefresh(subWin);
+ napms(1000);
+ flushinp();
}
- delwin (subWin);
+ delwin(subWin);
werase(win);
flash();
wrefresh(win);
mvwaddstr(win, 4, 1, "The character should now have been deleted");
Continue(win);
- wclear (win);
+ wclear(win);
mvwaddstr(win, 1, 1, "Press keys (or mouse buttons) to show their names");
mvwaddstr(win, 2, 1, "Press spacebar to finish");
wrefresh(win);
#if defined(PDCURSES)
mouse_set(ALL_MOUSE_EVENTS);
#endif
- while(1) {
- wmove(win,3,5);
- c = wgetch(win);
- wclrtobot(win);
- if (c >= KEY_MIN)
- wprintw(win,"Key Pressed: %s", keyname(c));
- else
- if (isprint(c))
- wprintw(win,"Key Pressed: %c", c);
- else
- wprintw(win,"Key Pressed: %s", unctrl(c));
+ while (1) {
+ wmove(win, 3, 5);
+ c = wgetch(win);
+ wclrtobot(win);
+ if (c >= KEY_MIN)
+ wprintw(win, "Key Pressed: %s", keyname(c));
+ else if (isprint(c))
+ wprintw(win, "Key Pressed: %c", c);
+ else
+ wprintw(win, "Key Pressed: %s", unctrl(c));
#if defined(PDCURSES)
- if (c == KEY_MOUSE) {
- int button=0;
- request_mouse_pos();
- if (BUTTON_CHANGED(1))
- button = 1;
- else
- if (BUTTON_CHANGED(2))
- button = 2;
- else
- if (BUTTON_CHANGED(3))
- button = 3;
- else
- button = 0;
- wmove(win,4,18);
- wprintw(win,"Button %d: ",button);
- if (MOUSE_MOVED)
- wprintw(win,"moved: ");
- else
- if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_PRESSED)
- wprintw(win,"pressed: ");
- else
- if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED)
- wprintw(win,"double: ");
- else
- wprintw(win,"released: ");
- wprintw(win," Position: Y: %d X: %d",MOUSE_Y_POS,MOUSE_X_POS);
- }
+ if (c == KEY_MOUSE) {
+ int button = 0;
+ request_mouse_pos();
+ if (BUTTON_CHANGED(1))
+ button = 1;
+ else if (BUTTON_CHANGED(2))
+ button = 2;
+ else if (BUTTON_CHANGED(3))
+ button = 3;
+ else
+ button = 0;
+ wmove(win, 4, 18);
+ wprintw(win, "Button %d: ", button);
+ if (MOUSE_MOVED)
+ wprintw(win, "moved: ");
+ else if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_PRESSED)
+ wprintw(win, "pressed: ");
+ else if ((BUTTON_STATUS(button) & BUTTON_ACTION_MASK) == BUTTON_DOUBLE_CLICKED)
+ wprintw(win, "double: ");
+ else
+ wprintw(win, "released: ");
+ wprintw(win, " Position: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS);
+ }
#endif
- wrefresh(win);
- if (c == ' ')
- break;
+ wrefresh(win);
+ if (c == ' ')
+ break;
}
#if 0
nodelay(win, TRUE);
mouse_set(0L);
#endif
refresh();
- wclear (win);
+ wclear(win);
mvwaddstr(win, 3, 2, "The window should have moved");
- mvwaddstr(win, 4, 2, "This text should have appeared without you pressing a key");
+ mvwaddstr(win, 4, 2,
+ "This text should have appeared without you pressing a key");
mvwaddstr(win, 6, 2, "Enter a number then a string separated by space");
mvwin(win, 2, 1);
wrefresh(win);
noraw();
num = 0;
*buffer = 0;
- mvwscanw(win, 7, 6, "%d %s", &num,buffer);
- mvwprintw(win, 8, 6, "String: %s Number: %d", buffer,num);
+ mvwscanw(win, 7, 6, "%d %s", &num, buffer);
+ mvwprintw(win, 8, 6, "String: %s Number: %d", buffer, num);
Continue(win);
}
static void
-outputTest (WINDOW *win)
+outputTest(WINDOW *win)
{
WINDOW *win1;
- char Buffer [80];
+ char Buffer[80];
chtype ch;
int by, bx;
- nl ();
- wclear (win);
- mvwaddstr(win, 1, 1, "You should now have a screen in the upper left corner, and this text should have wrapped");
+ nl();
+ wclear(win);
+ mvwaddstr(win, 1, 1,
+ "You should now have a screen in the upper left corner, and this text should have wrapped");
mvwin(win, 2, 1);
- waddstr(win,"\nThis text should be down\n");
- waddstr(win, "and broken into two here ^");
+ waddstr(win, "\nThis text should be down\n");
+ waddstr(win, "and broken into two here ^");
Continue(win);
wclear(win);
getbegyx(win, by, bx);
if (LINES < 24 || COLS < 75) {
- mvwaddstr(win, 5, 1, "Some tests have been skipped as they require a");
- mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
- Continue(win);
+ mvwaddstr(win, 5, 1,
+ "Some tests have been skipped as they require a");
+ mvwaddstr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS");
+ Continue(win);
} else {
- win1 = newwin(10, 50, 14, 25);
- if(win1 == NULL)
- {
- endwin();
- return;
- }
+ win1 = newwin(10, 50, 14, 25);
+ if (win1 == NULL) {
+ endwin();
+ return;
+ }
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(3,COLOR_BLUE,COLOR_WHITE);
- wbkgd(win1, COLOR_PAIR(3));
- }
- else
- wbkgd(win1, A_NORMAL);
+ if (has_colors()) {
+ init_pair(3, COLOR_BLUE, COLOR_WHITE);
+ wbkgd(win1, COLOR_PAIR(3));
+ } else
+ wbkgd(win1, A_NORMAL);
#else
- wbkgd(win1, A_NORMAL);
+ wbkgd(win1, A_NORMAL);
#endif
- wclear (win1);
- mvwaddstr(win1, 5, 1, "This text should appear; using overlay option");
- copywin(win, win1,0,0,0,0,9,49,TRUE);
+ wclear(win1);
+ mvwaddstr(win1, 5, 1,
+ "This text should appear; using overlay option");
+ copywin(win, win1, 0, 0, 0, 0, 9, 49, TRUE);
#if defined(PDCURSES) && !defined(XCURSES)
- box(win1,0xb3,0xc4);
+ box(win1, 0xb3, 0xc4);
#else
- box(win1,ACS_VLINE,ACS_HLINE);
+ box(win1, ACS_VLINE, ACS_HLINE);
#endif
- wmove(win1, 8, 26);
- wrefresh(win1);
- wgetch(win1);
-
- wclear(win1);
- wattron(win1, A_BLINK);
- mvwaddstr(win1, 4, 1, "This blinking text should appear in only the second window");
- wattroff(win1, A_BLINK);
- mvwin(win1, by, bx);
- overlay(win, win1);
- mvwin(win1,14,25);
- wmove(win1, 8, 26);
- wrefresh(win1);
- wgetch(win1);
- delwin(win1);
+ wmove(win1, 8, 26);
+ wrefresh(win1);
+ wgetch(win1);
+
+ wclear(win1);
+ wattron(win1, A_BLINK);
+ mvwaddstr(win1, 4, 1,
+ "This blinking text should appear in only the second window");
+ wattroff(win1, A_BLINK);
+ mvwin(win1, by, bx);
+ overlay(win, win1);
+ mvwin(win1, 14, 25);
+ wmove(win1, 8, 26);
+ wrefresh(win1);
+ wgetch(win1);
+ delwin(win1);
}
clear();
mvwaddstr(win, 4, 2, "Only half of the next line is visible");
mvwaddstr(win, 5, 2, "Only half of the next line is visible");
wmove(win, 6, 1);
- wclrtobot (win);
+ wclrtobot(win);
wmove(win, 5, 20);
- wclrtoeol (win);
+ wclrtoeol(win);
mvwaddstr(win, 8, 2, "This line also shouldn't appear");
wmove(win, 8, 1);
wdeleteln(win);
Continue(win);
- wmove (win, 5, 9);
- ch = winch (win);
+ wmove(win, 5, 9);
+ ch = winch(win);
wclear(win);
- wmove (win, 6, 2);
- waddstr (win, "The next char should be l: ");
- winsch (win, ch);
+ wmove(win, 6, 2);
+ waddstr(win, "The next char should be l: ");
+ winsch(win, ch);
Continue(win);
- mvwinsstr( win, 6, 2, "A1B2C3D4E5" );
+ mvwinsstr(win, 6, 2, "A1B2C3D4E5");
Continue(win);
wmove(win, 5, 1);
- winsertln (win);
+ winsertln(win);
mvwaddstr(win, 5, 2, "The lines below should have moved down");
Continue(win);
wclear(win);
wmove(win, 2, 2);
- wprintw(win, "This is a formatted string in a window: %d %s\n", 42, "is it");
+ wprintw(win, "This is a formatted string in a window: %d %s\n", 42,
+ "is it");
mvwaddstr(win, 10, 1, "Enter a string: ");
wrefresh(win);
noraw();
echo();
*Buffer = 0;
- wscanw (win, "%s", Buffer);
+ wscanw(win, "%s", Buffer);
printw("This is a formatted string in stdscr: %d %s\n", 42, "is it");
mvaddstr(10, 1, "Enter a string: ");
*Buffer = 0;
- scanw ("%s", Buffer);
+ scanw("%s", Buffer);
if (tigetstr("cvvis") != 0) {
- wclear(win);
- curs_set(2);
- mvwaddstr(win, 1, 1, "The cursor should appear as a block (visible)");
- Continue(win);
+ wclear(win);
+ curs_set(2);
+ mvwaddstr(win, 1, 1, "The cursor should appear as a block (visible)");
+ Continue(win);
}
if (tigetstr("civis") != 0) {
- wclear(win);
- curs_set(0);
- mvwaddstr(win, 1, 1, "The cursor should have disappeared (invisible)");
- Continue(win);
+ wclear(win);
+ curs_set(0);
+ mvwaddstr(win, 1, 1,
+ "The cursor should have disappeared (invisible)");
+ Continue(win);
}
if (tigetstr("cnorm") != 0) {
- wclear(win);
- curs_set(1);
- mvwaddstr(win, 1, 1, "The cursor should be an underline (normal)");
- Continue(win);
+ wclear(win);
+ curs_set(1);
+ mvwaddstr(win, 1, 1, "The cursor should be an underline (normal)");
+ Continue(win);
}
-
#ifdef A_COLOR
- if ( has_colors() ) {
- wclear(win);
- mvwaddstr(win, 1, 1, "Colors should change after you press a key");
- Continue(win);
- init_pair(1, COLOR_RED, COLOR_WHITE);
- wrefresh(win);
+ if (has_colors()) {
+ wclear(win);
+ mvwaddstr(win, 1, 1, "Colors should change after you press a key");
+ Continue(win);
+ init_pair(1, COLOR_RED, COLOR_WHITE);
+ wrefresh(win);
}
#endif
mvwaddstr(win, 1, 1, "Information About Your Terminal");
mvwaddstr(win, 3, 1, termname());
mvwaddstr(win, 4, 1, longname());
- if ( termattrs() & A_BLINK )
- mvwaddstr(win,5, 1, "This terminal supports blinking.");
+ if (termattrs() & A_BLINK)
+ mvwaddstr(win, 5, 1, "This terminal supports blinking.");
else
- mvwaddstr(win,5, 1, "This terminal does NOT support blinking.");
+ mvwaddstr(win, 5, 1, "This terminal does NOT support blinking.");
- mvwaddnstr( win, 7,5, "Have a nice day!ok", 16 );
+ mvwaddnstr(win, 7, 5, "Have a nice day!ok", 16);
wrefresh(win);
- mvwinnstr( win, 7,5, Buffer, 18 );
- mvaddstr( LINES-2, 10, Buffer );
+ mvwinnstr(win, 7, 5, Buffer, 18);
+ mvaddstr(LINES - 2, 10, Buffer);
refresh();
Continue(win);
}
{
WINDOW *win1;
- savetty ();
+ savetty();
clear();
refresh();
# if defined(OS2)
- resize_term(50,120);
+ resize_term(50, 120);
# else
- resize_term(50,80);
+ resize_term(50, 80);
# endif
win1 = newwin(10, 50, 14, 25);
- if(win1 == NULL)
- { endwin();
- return;
+ if (win1 == NULL) {
+ endwin();
+ return;
}
#ifdef A_COLOR
- if (has_colors())
- {
- init_pair(3,COLOR_BLUE,COLOR_WHITE);
- wattrset(win1, COLOR_PAIR(3));
- }
+ if (has_colors()) {
+ init_pair(3, COLOR_BLUE, COLOR_WHITE);
+ wattrset(win1, COLOR_PAIR(3));
+ }
#endif
- wclear (win1);
+ wclear(win1);
mvwaddstr(win1, 1, 1, "The screen may now have 50 lines");
Continue(win1);
- wclear (win1);
- resetty ();
+ wclear(win1);
+ resetty();
mvwaddstr(win1, 1, 1, "The screen should now be reset");
Continue(win1);
static void
padTest(WINDOW *dummy GCC_UNUSED)
{
-WINDOW *pad, *spad;
-
- pad = newpad(50,100);
- wattron(pad, A_REVERSE);
- mvwaddstr(pad, 5, 2, "This is a new pad");
- wattrset(pad,A_NORMAL);
- mvwaddstr(pad, 8, 0, "The end of this line should be truncated here:except now");
- mvwaddstr(pad,11, 1, "This line should not appear.It will now");
- wmove(pad, 10, 1);
- wclrtoeol(pad);
- mvwaddstr(pad, 10, 1, " Press any key to continue");
- prefresh(pad,0,0,0,0,10,45);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- spad = subpad(pad,12,25,6,52);
- mvwaddstr(spad, 2, 2, "This is a new subpad");
- box(spad,0,0);
- prefresh(pad,0,0,0,0,15,75);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad");
- mvwaddstr(pad, 40, 1, " Press any key to continue");
- prefresh(pad,30,0,0,0,10,45);
- keypad(pad, TRUE);
- raw();
- wgetch(pad);
-
- delwin(pad);
+ WINDOW *pad, *spad;
+
+ pad = newpad(50, 100);
+ wattron(pad, A_REVERSE);
+ mvwaddstr(pad, 5, 2, "This is a new pad");
+ wattrset(pad, A_NORMAL);
+ mvwaddstr(pad, 8, 0,
+ "The end of this line should be truncated here:except now");
+ mvwaddstr(pad, 11, 1, "This line should not appear.It will now");
+ wmove(pad, 10, 1);
+ wclrtoeol(pad);
+ mvwaddstr(pad, 10, 1, " Press any key to continue");
+ prefresh(pad, 0, 0, 0, 0, 10, 45);
+ keypad(pad, TRUE);
+ raw();
+ wgetch(pad);
+
+ spad = subpad(pad, 12, 25, 6, 52);
+ mvwaddstr(spad, 2, 2, "This is a new subpad");
+ box(spad, 0, 0);
+ prefresh(pad, 0, 0, 0, 0, 15, 75);
+ keypad(pad, TRUE);
+ raw();
+ wgetch(pad);
+
+ mvwaddstr(pad, 35, 2, "This is displayed at line 35 in the pad");
+ mvwaddstr(pad, 40, 1, " Press any key to continue");
+ prefresh(pad, 30, 0, 0, 0, 10, 45);
+ keypad(pad, TRUE);
+ raw();
+ wgetch(pad);
+
+ delwin(pad);
}
static void
-display_menu(int old_option,int new_option)
+display_menu(int old_option, int new_option)
{
- register size_t i;
-
- attrset(A_NORMAL);
- mvaddstr(3,20,"PDCurses Test Program");
-
- for (i=0;i<MAX_OPTIONS;i++)
- mvaddstr(5+i,25,command[i].text);
- if (old_option != (-1))
- mvaddstr(5+old_option,25,command[old_option].text);
- attrset(A_REVERSE);
- mvaddstr(5+new_option,25,command[new_option].text);
- attrset(A_NORMAL);
- mvaddstr(13,3,"Use Up and Down Arrows to select - Enter to run - Q to quit");
- refresh();
+ register size_t i;
+
+ attrset(A_NORMAL);
+ mvaddstr(3, 20, "PDCurses Test Program");
+
+ for (i = 0; i < MAX_OPTIONS; i++)
+ mvaddstr(5 + i, 25, command[i].text);
+ if (old_option != (-1))
+ mvaddstr(5 + old_option, 25, command[old_option].text);
+ attrset(A_REVERSE);
+ mvaddstr(5 + new_option, 25, command[new_option].text);
+ attrset(A_NORMAL);
+ mvaddstr(13, 3,
+ "Use Up and Down Arrows to select - Enter to run - Q to quit");
+ refresh();
}
-
* to test the scrolling code in ncurses.
*
* modified by Thomas Dickey <dickey@clark.net> July 1995 to demonstrate
- * the use of 'resizeterm()'.
+ * 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.
* scroll operation worked, and the refresh() code only had to do a
* partial repaint.
*
- * $Id: view.c,v 1.27 1998/08/22 18:33:41 tom Exp $
+ * $Id: view.c,v 1.29 2000/05/21 01:43:03 tom Exp $
*/
#include <test.priv.h>
static RETSIGTYPE finish(int sig) GCC_NORETURN;
static void show_all(void);
-#if defined(SIGWINCH) && defined(TIOCGWINSZ) && defined(NCURSES_VERSION)
+#if defined(SIGWINCH) && defined(TIOCGWINSZ) && defined(HAVE_RESIZETERM)
#define CAN_RESIZE 1
#else
#define CAN_RESIZE 0
#if CAN_RESIZE
static RETSIGTYPE adjust(int sig);
-static int interrupted;
+static int interrupted;
#endif
-static int waiting;
-static int shift;
+static int waiting;
+static int shift;
+static int utf8_mode = FALSE;
-static char *fname;
-static char **lines;
-static char **lptr;
+static char *fname;
+static chtype **lines;
+static chtype **lptr;
-#if !HAVE_STRDUP
-#define strdup my_strdup
-static char *strdup (char *s)
+static void
+usage(void)
{
- char *p;
-
- p = malloc(strlen(s)+1);
- if (p)
- strcpy(p,s);
- return(p);
-}
-#endif /* not HAVE_STRDUP */
-
-static void usage(void)
-{
- static const char *msg[] = {
- "Usage: view [options] file"
+ static const char *msg[] =
+ {
+ "Usage: view [options] file"
,""
,"Options:"
," -n NUM specify maximum number of lines (default 1000)"
," -t trace screen updates"
," -T NUM specify trace mask"
#endif
+ ," -u translate UTF-8 data"
};
size_t n;
for (n = 0; n < SIZEOF(msg); n++)
fprintf(stderr, "%s\n", msg[n]);
- exit (EXIT_FAILURE);
+ exit(EXIT_FAILURE);
+}
+
+static int
+ch_len(chtype * src)
+{
+ int result = 0;
+ while (*src++)
+ result++;
+ return result;
+}
+
+/*
+ * Allocate a string into an array of chtype's. If UTF-8 mode is
+ * active, translate the string accordingly.
+ */
+static chtype *
+ch_dup(char *src)
+{
+ unsigned len = strlen(src);
+ chtype *dst = typeMalloc(chtype, len + 1);
+ unsigned j, k;
+ unsigned utf_count = 0;
+ unsigned utf_char = 0;
+
+#define UCS_REPL 0xfffd
+
+ for (j = k = 0; j < len; j++) {
+ if (utf8_mode) {
+ unsigned c = src[j] & 0xff;
+ /* Combine UTF-8 into Unicode */
+ if (c < 0x80) {
+ /* We received an ASCII character */
+ if (utf_count > 0)
+ dst[k++] = UCS_REPL; /* prev. sequence incomplete */
+ dst[k++] = c;
+ utf_count = 0;
+ } else if (c < 0xc0) {
+ /* We received a continuation byte */
+ if (utf_count < 1) {
+ dst[k++] = UCS_REPL; /* ... unexpectedly */
+ } else {
+ if (!utf_char && !((c & 0x7f) >> (7 - utf_count))) {
+ utf_char = UCS_REPL;
+ }
+ /* characters outside UCS-2 become UCS_REPL */
+ if (utf_char > 0x03ff) {
+ /* value would be >0xffff */
+ utf_char = UCS_REPL;
+ } else {
+ utf_char <<= 6;
+ utf_char |= (c & 0x3f);
+ }
+ utf_count--;
+ if (utf_count == 0)
+ dst[k++] = utf_char;
+ }
+ } else {
+ /* We received a sequence start byte */
+ if (utf_count > 0)
+ dst[k++] = UCS_REPL; /* prev. sequence incomplete */
+ if (c < 0xe0) {
+ utf_count = 1;
+ utf_char = (c & 0x1f);
+ if (!(c & 0x1e))
+ utf_char = UCS_REPL; /* overlong sequence */
+ } else if (c < 0xf0) {
+ utf_count = 2;
+ utf_char = (c & 0x0f);
+ } else if (c < 0xf8) {
+ utf_count = 3;
+ utf_char = (c & 0x07);
+ } else if (c < 0xfc) {
+ utf_count = 4;
+ utf_char = (c & 0x03);
+ } else if (c < 0xfe) {
+ utf_count = 5;
+ utf_char = (c & 0x01);
+ } else {
+ dst[k++] = UCS_REPL;
+ utf_count = 0;
+ }
+ }
+ } else {
+ dst[k++] = src[j];
+ }
+ }
+ dst[k] = 0;
+ return dst;
}
-int main(int argc, char *argv[])
+int
+main(int argc, char *argv[])
{
-int MAXLINES = 1000;
-FILE *fp;
-char buf[BUFSIZ];
-int i;
-char **olptr;
-int done = FALSE;
-int length = 0;
+ int MAXLINES = 1000;
+ FILE *fp;
+ char buf[BUFSIZ];
+ int i;
+ chtype **olptr;
+ int done = FALSE;
+ int length = 0;
#if CAN_RESIZE
-bool use_resize = TRUE;
+ bool use_resize = TRUE;
#endif
- while ((i = getopt(argc, argv, "n:rtT:")) != EOF) {
+ while ((i = getopt(argc, argv, "n:rtT:u")) != EOF) {
switch (i) {
case 'n':
if ((MAXLINES = atoi(optarg)) < 1)
trace(TRACE_CALLS);
break;
#endif
+ case 'u':
+ utf8_mode = TRUE;
+ break;
default:
usage();
}
if (optind + 1 != argc)
usage();
- if ((lines = (char **)calloc(MAXLINES+2, sizeof(*lines))) == 0)
+ if ((lines = typeMalloc(chtype *, MAXLINES + 2)) == 0)
usage();
fname = argv[optind];
return EXIT_FAILURE;
}
- (void) signal(SIGINT, finish); /* arrange interrupts to terminate */
+ (void) signal(SIGINT, finish); /* arrange interrupts to terminate */
#if CAN_RESIZE
if (use_resize)
- (void) signal(SIGWINCH, adjust); /* arrange interrupts to resize */
+ (void) signal(SIGWINCH, adjust); /* arrange interrupts to resize */
#endif
/* slurp the file */
for (lptr = &lines[0]; (lptr - lines) < MAXLINES; lptr++) {
char temp[BUFSIZ], *s, *d;
- int col;
+ int col;
if (fgets(buf, sizeof(buf), fp) == 0)
break;
break;
} else if (*d == '\t') {
col = (col | 7) + 1;
- while ((d-temp) != col)
+ while ((d - temp) != col)
*d++ = ' ';
- } else if (isprint(*d)) {
+ } else if (isprint(*d) || utf8_mode) {
col++;
d++;
} else {
col = (d - temp);
}
}
- *lptr = strdup(temp);
+ *lptr = ch_dup(temp);
}
(void) fclose(fp);
length = lptr - 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 */
- idlok(stdscr, TRUE); /* allow use of insert/delete line */
+ (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 */
+ idlok(stdscr, TRUE); /* allow use of insert/delete line */
lptr = lines;
while (!done) {
got_number = FALSE;
n = 0;
- for (;;) {
+ for (;;) {
#if CAN_RESIZE
if (interrupted)
adjust(0);
waiting = FALSE;
if ((c < 127) && isdigit(c)) {
if (!got_number) {
- mvprintw(0,0, "Count: ");
+ mvprintw(0, 0, "Count: ");
clrtoeol();
}
addch(c);
n = 10 * n + (c - '0');
got_number = TRUE;
- }
- else
+ } else
break;
}
if (!got_number && n == 0)
n = 1;
- switch(c) {
+ switch (c) {
case KEY_DOWN:
case 'n':
olptr = lptr;
break;
#ifdef KEY_RESIZE
- case KEY_RESIZE: /* ignore this; ncurses will repaint */
+ case KEY_RESIZE: /* ignore this; ncurses will repaint */
break;
#endif
#if CAN_RESIZE
finish(0); /* we're done */
}
-static RETSIGTYPE finish(int sig)
+static RETSIGTYPE
+finish(int sig)
{
endwin();
exit(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS);
* Linux. 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)
+static RETSIGTYPE
+adjust(int sig)
{
- if (waiting || sig == 0) {
+ if (waiting || sig == 0) {
struct winsize size;
- if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) {
- resizeterm(size.ws_row, size.ws_col);
- wrefresh(curscr); /* Linux needs this */
- show_all();
- }
- interrupted = FALSE;
- } else {
- interrupted = TRUE;
+ if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) {
+ resizeterm(size.ws_row, size.ws_col);
+ wrefresh(curscr); /* Linux needs this */
+ show_all();
}
- (void) signal(SIGWINCH, adjust); /* some systems need this */
+ interrupted = FALSE;
+ } else {
+ interrupted = TRUE;
+ }
+ (void) signal(SIGWINCH, adjust); /* some systems need this */
}
-#endif /* CAN_RESIZE */
+#endif /* CAN_RESIZE */
-static void show_all(void)
+static void
+show_all(void)
{
- int i;
- char temp[BUFSIZ];
- char *s;
+ int i;
+ char temp[BUFSIZ];
+ chtype *s;
#if CAN_RESIZE
- sprintf(temp, "(%3dx%3d) col %d ", LINES, COLS, shift);
- i = strlen(temp);
- sprintf(temp+i, "view %.*s", (int)(sizeof(temp)-7-i), fname);
+ sprintf(temp, "(%3dx%3d) col %d ", LINES, COLS, shift);
+ i = strlen(temp);
+ sprintf(temp + i, "view %.*s", (int) (sizeof(temp) - 7 - i), fname);
#else
- sprintf(temp, "view %.*s", (int)sizeof(temp)-7, fname);
+ sprintf(temp, "view %.*s", (int) sizeof(temp) - 7, fname);
#endif
- move(0,0);
- printw("%.*s", COLS, temp);
+ move(0, 0);
+ printw("%.*s", COLS, temp);
+ clrtoeol();
+
+ scrollok(stdscr, FALSE); /* prevent screen from moving */
+ for (i = 1; i < LINES; i++) {
+ move(i, 0);
+ printw("%3d:", (lptr + i - lines));
clrtoeol();
-
- scrollok(stdscr, FALSE); /* prevent screen from moving */
- for (i = 1; i < LINES; i++) {
- move(i, 0);
- if ((s = lptr[i-1]) != 0 && (int)strlen(s) > shift)
- printw("%3ld:%.*s", (long) (lptr+i-lines), COLS-4, s + shift);
- else
- printw("%3ld:", (long) (lptr+i-lines));
- clrtoeol();
+ if ((s = lptr[i - 1]) != 0) {
+ int len = ch_len(s);
+ if (len > shift)
+ addchstr(s + shift);
}
- setscrreg(1, LINES-1);
- scrollok(stdscr, TRUE);
- refresh();
+ }
+ setscrreg(1, LINES - 1);
+ scrollok(stdscr, TRUE);
+ refresh();
}
-
-/* view.c ends here */
-
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.26 1999/10/23 01:31:40 tom Exp $
+ $Id: worm.c,v 1.30 2000/04/15 17:51:56 tom Exp $
*/
#include <test.priv.h>
#include <signal.h>
-#define typeAlloc(type,n) (type *) malloc(n * sizeof(type))
-#define typeRealloc(type,n,p) (type *) realloc(p, n * sizeof(type))
-
static chtype flavor[] =
{
'O', '*', '#', '$', '%', '0', '@',
short **ref;
int x, y;
int n;
- int ch;
struct worm *w;
const struct options *op;
int h;
if (has_colors()) {
int bg = COLOR_BLACK;
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
bg = -1;
#endif
}
#endif /* A_COLOR */
- ref = typeAlloc(short *, LINES);
+ ref = typeMalloc(short *, LINES);
for (y = 0; y < LINES; y++) {
- ref[y] = typeAlloc(short, COLS);
+ ref[y] = typeMalloc(short, COLS);
for (x = 0; x < COLS; x++) {
ref[y][x] = 0;
}
for (n = number, w = &worm[0]; --n >= 0; w++) {
w->orientation = w->head = 0;
- if (!(ip = typeAlloc(short, (length + 1)))) {
+ if (!(ip = typeMalloc(short, (length + 1)))) {
fprintf(stderr, "%s: out of memory\n", *argv);
return EXIT_FAILURE;
}
w->xpos = ip;
for (x = length; --x >= 0;)
*ip++ = -1;
- if (!(ip = typeAlloc(short, (length + 1)))) {
+ if (!(ip = typeMalloc(short, (length + 1)))) {
fprintf(stderr, "%s: out of memory\n", *argv);
return EXIT_FAILURE;
}
generation++;
}
#else
+ int ch;
+
if ((ch = getch()) > 0) {
#ifdef KEY_RESIZE
if (ch == KEY_RESIZE) {
last = COLS - 1;
}
if (bottom != LINES - 1) {
- ref = typeRealloc(short *, LINES, ref);
- for (y = COLS; y <= bottom; y++)
+ for (y = LINES; y <= bottom; y++)
free(ref[y]);
+ ref = typeRealloc(short *, LINES, ref);
for (y = bottom + 1; y < LINES; y++) {
- ref[y] = typeAlloc(short, COLS);
+ ref[y] = typeMalloc(short, COLS);
for (x = 0; x < COLS; x++)
ref[y][x] = 0;
}
/******************************************************************************/
/*
- * $Id: xmas.c,v 1.12 1998/01/18 01:13:47 tom Exp $
+ * $Id: xmas.c,v 1.13 1999/11/13 23:39:01 tom Exp $
*/
#include <test.priv.h>
#endif
if (has_colors()) {
start_color();
-#ifdef NCURSES_VERSION
+#ifdef HAVE_USE_DEFAULT_COLORS
if (use_default_colors() == OK)
my_bg = -1;
#endif