aboutsummaryrefslogtreecommitdiff
path: root/contrib/ncurses/include
diff options
context:
space:
mode:
authorRong-En Fan <rafan@FreeBSD.org>2007-01-20 07:32:02 +0000
committerRong-En Fan <rafan@FreeBSD.org>2007-01-20 07:32:02 +0000
commit4a1a95108dd76c4259fe6c37c4471f7969b17983 (patch)
tree1c6c3b549401156e1dbd96b9a6b18521f63ffb58 /contrib/ncurses/include
parent555c9cae3cf9146482732c28c06a73314b618149 (diff)
downloadsrc-4a1a95108dd76c4259fe6c37c4471f7969b17983.tar.gz
src-4a1a95108dd76c4259fe6c37c4471f7969b17983.zip
Import ncurses 5.6-20061217 onto the vender branch
Approved by: delphij
Notes
Notes: svn path=/vendor/ncurses/dist/; revision=166124
Diffstat (limited to 'contrib/ncurses/include')
-rw-r--r--contrib/ncurses/include/Caps8
-rw-r--r--contrib/ncurses/include/Caps.aix416
-rw-r--r--contrib/ncurses/include/Caps.hpux111278
-rw-r--r--contrib/ncurses/include/Caps.keys8
-rw-r--r--contrib/ncurses/include/Caps.osf1r510
-rw-r--r--contrib/ncurses/include/Caps.uwin16
-rwxr-xr-xcontrib/ncurses/include/MKhashsize.sh28
-rwxr-xr-xcontrib/ncurses/include/MKkey_defs.sh25
-rwxr-xr-xcontrib/ncurses/include/MKncurses_def.sh4
-rwxr-xr-xcontrib/ncurses/include/MKparametrized.sh29
-rw-r--r--contrib/ncurses/include/MKterm.h.awk.in34
-rw-r--r--contrib/ncurses/include/curses.h.in391
-rw-r--r--contrib/ncurses/include/curses.tail120
-rw-r--r--contrib/ncurses/include/curses.wide128
-rw-r--r--contrib/ncurses/include/hashed_db.h67
-rw-r--r--contrib/ncurses/include/nc_alloc.h25
-rw-r--r--contrib/ncurses/include/nc_tparm.h65
-rw-r--r--contrib/ncurses/include/ncurses_cfg.hin18
-rw-r--r--contrib/ncurses/include/ncurses_defs46
-rw-r--r--contrib/ncurses/include/ncurses_dll.h41
-rw-r--r--contrib/ncurses/include/term_entry.h16
-rw-r--r--contrib/ncurses/include/tic.h82
22 files changed, 2150 insertions, 305 deletions
diff --git a/contrib/ncurses/include/Caps b/contrib/ncurses/include/Caps
index 795f9daa8500..7c63c7f039a5 100644
--- a/contrib/ncurses/include/Caps
+++ b/contrib/ncurses/include/Caps
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 1998,2001 Free Software Foundation, Inc. #
+# Copyright (c) 1998-2002,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -29,7 +29,7 @@
# Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995
# and: Eric S. Raymond <esr@snark.thyrsus.com>
#
-# $Id: Caps,v 1.35 2002/04/20 15:43:34 tom Exp $
+# $Id: Caps,v 1.36 2006/05/27 15:33:04 tom Exp $
#
# This is the master termcap/terminfo capability table.
#
@@ -967,8 +967,8 @@ acs_plus OTGC str GC - - ----- single intersection
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
#
-memory_lock meml str ml - - ----K memory lock above
-memory_unlock memu str mu - - ----K memory unlock
+memory_lock meml str ml - - ----K lock memory above cursor
+memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
diff --git a/contrib/ncurses/include/Caps.aix4 b/contrib/ncurses/include/Caps.aix4
index c010bbd497ce..75913dc6e9a4 100644
--- a/contrib/ncurses/include/Caps.aix4
+++ b/contrib/ncurses/include/Caps.aix4
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2002,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -28,7 +28,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.aix4,v 1.5 2002/04/20 15:43:42 tom Exp $
+# $Id: Caps.aix4,v 1.7 2006/05/27 15:33:04 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with AIX 4.x's terminfo.
@@ -227,11 +227,11 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
-tilde_glitch hz bool hz - - YB-GE can't print ~'s (hazeltine)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
-needs_xon_xoff nxon bool nx - - ----- padding won't work, xon/xoff required
-prtr_silent mc5i bool 5i - - ----- printer won't echo on screen
+needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
+prtr_silent mc5i bool 5i - - ----- printer will not echo on screen
hard_cursor chts bool HC - - ----- cursor is hard to see
non_rev_rmcup nrrmc bool NR - - ----- smcup does not reverse rmcup
no_pad_char npc bool NP - - ----- pad character does not exist
@@ -275,7 +275,7 @@ maximum_windows wnum num MW - - ----- maximum number of defineable windows
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
-no_color_video ncv num NC - - ----- video attributes that can't be used with colors
+no_color_video ncv num NC - - ----- video attributes that cannot be used with colors
#%.TE
#%.ad
#%
@@ -1069,8 +1069,8 @@ acs_plus OTGC str GC - - ----- single intersection
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
#
-memory_lock meml str ml - - ----K memory lock above
-memory_unlock memu str mu - - ----K memory unlock
+memory_lock meml str ml - - ----K lock memory above cursor
+memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
diff --git a/contrib/ncurses/include/Caps.hpux11 b/contrib/ncurses/include/Caps.hpux11
new file mode 100644
index 000000000000..b74acdb44b70
--- /dev/null
+++ b/contrib/ncurses/include/Caps.hpux11
@@ -0,0 +1,1278 @@
+##############################################################################
+# Copyright (c) 2002-2003,2006 Free Software Foundation, Inc. #
+# #
+# Permission is hereby granted, free of charge, to any person obtaining a #
+# copy of this software and associated documentation files (the "Software"), #
+# to deal in the Software without restriction, including without limitation #
+# the rights to use, copy, modify, merge, publish, distribute, distribute #
+# with modifications, sublicense, and/or sell copies of the Software, and to #
+# permit persons to whom the Software is furnished to do so, subject to the #
+# following conditions: #
+# #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software. #
+# #
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL #
+# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
+# DEALINGS IN THE SOFTWARE. #
+# #
+# Except as contained in this notice, the name(s) of the above copyright #
+# holders shall not be used in advertising or otherwise to promote the sale, #
+# use or other dealings in this Software without prior written #
+# authorization. #
+##############################################################################
+#
+# Author: Thomas Dickey
+#
+# $Id: Caps.hpux11,v 1.4 2006/05/27 15:33:04 tom Exp $
+#
+# This is an adaptation of ncurses' termcap/terminfo capability table, which
+# is designed to align with HPUX 11.x's terminfo.
+#
+# This table is used to generate initializers for tables that drive tic,
+# infocmp, and the library compilation code used to support the termcap
+# compatibility hack. It is also used to generate the tabular portion of the
+# terminfo(5) man page; lines beginning with `#%' are passed through to become
+# the terminfo table.
+#
+# This file has three major sections; a standard-capabilities table, two
+# extension-capability tables, and a section of aliases declarations.
+# The first two have the same format, as follows:
+#
+# FILE FORMAT
+#
+# Column 1: terminfo variable name
+# Column 2: terminfo capability name
+# Column 3: capability type (boolean, numeric, or string)
+# Column 4: termcap capability name
+# Column 5: KEY_xxx name, if any, `-' otherwise
+# Column 6: value for KEY_xxx name, if any, `-' otherwise
+# Column 7: Lead with `Y' if capability should be emitted in termcap
+# translations, `-' otherwise
+# Column 8: capability description
+#
+# The codes following [Y-] in column 7 describe the versions of termcap which
+# use the given capability. This information is not used by the curses library
+# proper; rather, it's there to help the terminfo maintainer avoid emitting
+# termcap entry translations that are more than 1023 bytes long (and tank a
+# lot of old termcap-using programs). The codes read as follows:
+# B = mentioned in the BSD man page for 4.4BSD curses
+# C = used by the 4.4BSD curses library
+# G = mentioned in the documentation for GNU termcap
+# E = used by GNU Emacs
+# K = remove this terminfo capability when translating to standard format
+# The important codes are C and E. A cap with C or E should be preserved in
+# translation if possible. The problem is that preserving all such caps may
+# lead to some termcap translations being too long. The termcap maintainer
+# has a bit of a juggling act to do...potential problem cases are marked with
+# an asterisk (*).
+#
+# The aliases section has the following format:
+#
+# Column 1: either `capalias' or `infoalias'
+# Column 2: name to be aliased
+# Column 3: what name it should translate to. The name IGNORE means it
+# should be discarded with a warning message.
+# Column 4: name of the extension set (used for compiler warning messages)
+# Column 5: capability description (usually an associated terminfo variable)
+#
+# HANDLING TERMCAP AND TERMINFO EXTENSIONS
+#
+# There are basically five different ways to handle termcap and terminfo
+# extensions:
+#
+# 1. Don't list the capname here, or list it but comment it out (the latter
+# is preferable; someone might want to handle it in the future). If you do
+# this, the capability will be treated as unknown and raise a warning from
+# the compiler.
+#
+# 2. Alias it. This is appropriate if the capability has the same meaning
+# as an already-supported one. The compiler will handle aliasing, emitting
+# an appropriate informational message whenever an alias fires.
+#
+# 3. List it in the standard table. You almost certainly do *not* want
+# to do this -- the capabilities in that one, and their order, have been
+# carefully chosen to be SVr4-binary-compatible when they're written out
+# as a terminfo object, and breaking this would be bad. It's up the ncurses
+# library what to do with the terminfo data after it's read in.
+#
+# 4. List it in the aliases table with an IGNORE target field. If you
+# do this, the capability will be ignored on input (though the user will
+# get a warning message about it).
+#
+# 5. List it in the extensions table. If you do this, the compiler will
+# silently accept the capability, but the curses library proper will never
+# see it (because it won't be written out as part of the terminfo object
+# format). It's up to you what you have the compiler do with it.
+#
+# There are two opposite reasons to choose option 5. One is when you want
+# to eat the capability silently and discard it when doing translations
+# to terminfo with tic -I. Some very old obsolete BSD caps like :kn: are
+# in this class. Nothing will ever use them again.
+#
+# More usually, you want the compiler to try to deduce something from the
+# capability value that it can use to translate it into your output format.
+# You'll need to write custom code, probably in postprocess_termcap() or
+# postprocess_terminfo(), to handle the translation.
+#
+# CONTROLLING ENTRY LENGTH
+#
+# Notes on specific elisions made to fit translations within 1023 bytes:
+#
+# Machines with IBM PC-like keyboards want to be able to define the following
+# keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap-
+# only environments for End or Home-Down), key_dc, and key_ic. This is also
+# the set of keys the `joe' editor will be upset if it can't see. So don't
+# trim those out of the set to be translated to termcap, or various users of
+# the termcap file will become irate.
+#
+# It might look tempting to leave those long init strings out of translations.
+# We can't do it (yet); 4.4BSD tput and tset use them.
+#
+# We retain the sgr capability in translation in spite of the fact that neither
+# 4.4BSD nor GNU Emacs uses it, because (a) some entry naming distinctions are
+# hard to understand without it, and (b) the entries in which it is long tend
+# to be older types that don't use up a lot of string space on function keys.
+# The tic(1) translation code will complain and elide it if it makes a critical
+# difference (there is special code in tic to recognize this situation).
+#
+# Yes, BSD tset(1) uses hpa. We elide hpa/vpa anyway because the motion
+# optimizer in BSD curses didn't use them. This omission seems to be the
+# single most effective one, it shortened the resolved length of all thirteen
+# problem entries in the 9.9.0 version of the terminfo master below critical.
+#
+# It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap
+# translations go back over critical if we do this. As 4.4BSD curses fades
+# into history and GNU termcap's application base shrinks towards being GNU
+# Emacs only, we'll probably elide out some BSD-only capabilities in order
+# to buy space for non-essentials Emacs is still using. Capabilities high
+# on that hit list: rc, sc, uc.
+#
+#############################################################################
+#
+# STANDARD CAPABILITIES
+#
+#%The following is a complete table of the capabilities included in a
+#%terminfo description block and available to terminfo-using code. In each
+#%line of the table,
+#%
+#%The \fBvariable\fR is the name by which the programmer (at the terminfo level)
+#%accesses the capability.
+#%
+#%The \fBcapname\fR is the short name used in the text of the database,
+#%and is used by a person updating the database.
+#%Whenever possible, capnames are chosen to be the same as or similar to
+#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses
+#%identical or very similar names). Semantics are also intended to match
+#%those of the specification.
+#%
+#%The termcap code is the old
+#%.B termcap
+#%capability name (some capabilities are new, and have names which termcap
+#%did not originate).
+#%.P
+#%Capability names have no hard length limit, but an informal limit of 5
+#%characters has been adopted to keep them short and to allow the tabs in
+#%the source file
+#%.B Caps
+#%to line up nicely.
+#%
+#%Finally, the description field attempts to convey the semantics of the
+#%capability. You may find some codes in the description field:
+#%.TP
+#%(P)
+#%indicates that padding may be specified
+#%.TP
+#%#[1-9]
+#%in the description field indicates that the string is passed through tparm with
+#%parms as given (#\fIi\fP).
+#%.TP
+#%(P*)
+#%indicates that padding may vary in proportion to the number of
+#%lines affected
+#%.TP
+#%(#\d\fIi\fP\u)
+#%indicates the \fIi\fP\uth\d parameter.
+#%
+#%.PP
+#% These are the boolean capabilities:
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBBooleans name Code\fR
+auto_left_margin bw bool bw - - YB-G- cub1 wraps from column 0 to last column
+auto_right_margin am bool am - - YBCGE terminal has automatic margins
+no_esc_ctlc xsb bool xb - - YBCG- beehive (f1=escape, f2=ctrl C)
+ceol_standout_glitch xhp bool xs - - YBCGE standout not erased by overwriting (hp)
+eat_newline_glitch xenl bool xn - - YBCGE newline ignored after 80 cols (concept)
+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 (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
+memory_below db bool db - - YB-GE display may be retained below the screen
+move_insert_mode mir bool mi - - YBCGE safe to move while in insert mode
+move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
+over_strike os bool os - - YBCG- terminal can overstrike
+status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
+dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
+transparent_underline ul bool ul - - YBCGE underline character overstrikes
+xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
+# end booleans for HPUX 9, 10 (non-color curses)
+needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
+prtr_silent mc5i bool 5i - - ----- printer will not echo on screen
+hard_cursor chts bool HC - - ----- cursor is hard to see
+non_rev_rmcup nrrmc bool NR - - ----- smcup does not reverse rmcup
+no_pad_char npc bool NP - - ----- pad character does not exist
+non_dest_scroll_region ndscr bool ND - - ----- scrolling region is non-destructive
+can_change ccc bool cc - - ----- terminal can re-define existing colors
+back_color_erase bce bool ut - - ----- screen erased with background color
+hue_lightness_saturation hls bool hl - - ----- terminal uses only HLS color notation (Tektronix)
+col_addr_glitch xhpa bool YA - - ----- only positive motion for hpa/mhpa caps
+cr_cancels_micro_mode crxm bool YB - - ----- using cr turns off micro mode
+has_print_wheel daisy bool YC - - ----- printer needs operator to change character set
+row_addr_glitch xvpa bool YD - - ----- only positive motion for vpa/mvpa caps
+semi_auto_right_margin sam bool YE - - ----- printing in last column causes cr
+cpi_changes_res cpix bool YF - - ----- changing character pitch changes resolution
+lpi_changes_res lpix bool YG - - ----- changing line pitch changes resolution
+#%.TE
+#%.ad
+#%
+#%These are the numeric capabilities:
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBNumeric name Code\fR
+columns cols num co - - YBCGE number of columns in a line
+init_tabs it num it - - YB-G- tabs initially every # spaces
+lines lines num li - - YBCGE number of lines on screen or page
+lines_of_memory lm num lm - - YB-G- lines of memory if > line. 0 means varies
+magic_cookie_glitch xmc num sg - - YBCGE number of blank characters left by smso or rmso
+padding_baud_rate pb num pb - - YB-GE lowest baud rate where padding needed
+virtual_terminal vt num vt - - YB--- virtual terminal number (CB/unix)
+width_status_line wsl num ws - - YB-G- number of columns in status line
+# end numbers for HPUX 9, 10 (non-color curses)
+num_labels nlab num Nl - - ----- number of labels on screen
+label_height lh num lh - - ----- rows in each label
+label_width lw num lw - - ----- columns in each label
+max_attributes ma num ma - - YBC-- maximum combined attributes terminal can handle
+maximum_windows wnum num MW - - ----- maximum number of defineable windows
+# These came in with SVr4's color support
+max_colors colors num Co - - ----- maximum number of colors on screen
+max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
+no_color_video ncv num NC - - ----- video attributes that cannot be used with colors
+#%.TE
+#%.ad
+#%
+#%The following numeric capabilities are present in the SVr4.0 term structure,
+#%but are not yet documented in the man page. They came in with SVr4's
+#%printer support.
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBNumeric name Code\fR
+buffer_capacity bufsz num Ya - - ----- numbers of bytes buffered before printing
+dot_vert_spacing spinv num Yb - - ----- spacing of pins vertically in pins per inch
+dot_horz_spacing spinh num Yc - - ----- spacing of dots horizontally in dots per inch
+max_micro_address maddr num Yd - - ----- maximum value in micro_..._address
+max_micro_jump mjump num Ye - - ----- maximum value in parm_..._micro
+micro_col_size mcs num Yf - - ----- character step size when in micro mode
+micro_line_size mls num Yg - - ----- line step size when in micro mode
+number_of_pins npins num Yh - - ----- numbers of pins in print-head
+output_res_char orc num Yi - - ----- horizontal resolution in units per line
+output_res_line orl num Yj - - ----- vertical resolution in units per line
+output_res_horz_inch orhi num Yk - - ----- horizontal resolution in units per inch
+output_res_vert_inch orvi num Yl - - ----- vertical resolution in units per inch
+print_rate cps num Ym - - ----- print rate in characters per second
+wide_char_size widcs num Yn - - ----- character step size when in double wide mode
+buttons btns num BT - - ----- number of buttons on mouse
+bit_image_entwining bitwin num Yo - - ----- number of passes for each bit-image row
+bit_image_type bitype num Yp - - ----- type of bit-image device
+#%.TE
+#%.ad
+#%
+#%These are the string capabilities:
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBString name Code\fR
+back_tab cbt str bt - - YBCGE back tab (P)
+bell bel str bl - - YB-GE audible signal (bell) (P)
+carriage_return cr str cr - - YBCGE carriage return (P*) (P*)
+change_scroll_region csr str cs - - YBCGE change region to line #1 to line #2 (P)
+clear_all_tabs tbc str ct - - YB-G- clear all tab stops (P)
+clear_screen clear str cl - - YBCGE clear screen and home cursor (P*)
+clr_eol el str ce - - YBCGE clear to end of line (P)
+clr_eos ed str cd - - YBCGE clear to end of screen (P*)
+column_address hpa str ch - - -B-GE* horizontal position #1, absolute (P)
+command_character cmdch str CC - - YB-G- terminal settable cmd character in prototype !?
+cursor_address cup str cm - - YBCGE move to row #1 columns #2
+cursor_down cud1 str do - - YBCGE down one line
+cursor_home home str ho - - YBCGE home cursor (if no cup)
+cursor_invisible civis str vi - - YB-G- make cursor invisible
+cursor_left cub1 str le - - YBCGE move left one space
+cursor_mem_address mrcup str CM - - YB-G- memory relative cursor addressing, move to row #1 columns #2
+cursor_normal cnorm str ve - - YBCGE make cursor appear normal (undo civis/cvvis)
+cursor_right cuf1 str nd - - YBCGE non-destructive space (move right one space)
+cursor_to_ll ll str ll - - YBCGE last line, first column (if no cup)
+cursor_up cuu1 str up - - YBCGE up one line
+cursor_visible cvvis str vs - - YBCGE make cursor very visible
+delete_character dch1 str dc - - YBCGE delete character (P*)
+delete_line dl1 str dl - - YBCGE delete line (P*)
+dis_status_line dsl str ds - - YB-G- disable status line
+down_half_line hd str hd - - YB-G- half a line down
+enter_alt_charset_mode smacs str as - - YB-G- start alternate character set (P)
+enter_blink_mode blink str mb - - YB-G- turn on blinking
+enter_bold_mode bold str md - - YB-G- turn on bold (extra bright) mode
+enter_ca_mode smcup str ti - - YBCGE string to start programs using cup
+enter_delete_mode smdc str dm - - YBCGE enter delete mode
+enter_dim_mode dim str mh - - YB-G- turn on half-bright mode
+enter_insert_mode smir str im - - YBCGE enter insert mode
+enter_secure_mode invis str mk - - -B-G-* turn on blank mode (characters invisible)
+enter_protected_mode prot str mp - - -B-G-* turn on protected mode
+enter_reverse_mode rev str mr - - YB-G- turn on reverse video mode
+enter_standout_mode smso str so - - YBCGE begin standout mode
+enter_underline_mode smul str us - - YBCGE begin underline mode
+erase_chars ech str ec - - YB-G- erase #1 characters (P)
+exit_alt_charset_mode rmacs str ae - - YB-G- end alternate character set (P)
+exit_attribute_mode sgr0 str me - - YB-GE turn off all attributes
+exit_ca_mode rmcup str te - - YBCGE strings to end programs using cup
+exit_delete_mode rmdc str ed - - YBCGE end delete mode
+exit_insert_mode rmir str ei - - YBCGE exit insert mode
+exit_standout_mode rmso str se - - YBCGE exit standout mode
+exit_underline_mode rmul str ue - - YBCGE exit underline mode
+flash_screen flash str vb - - YBCGE visible bell (may not move cursor)
+form_feed ff str ff - - YB-G- hardcopy terminal page eject (P*)
+from_status_line fsl str fs - - YB-G- return from status line
+init_1string is1 str i1 - - YB-G- initialization string
+init_2string is2 str is - - YB-G- initialization string
+init_3string is3 str i3 - - YB-G- initialization string
+init_file if str if - - YB-G- name of initialization file
+insert_character ich1 str ic - - YBCGE insert character (P)
+insert_line il1 str al - - YBCGE insert line (P*)
+insert_padding ip str ip - - YBCGE insert padding after inserted character
+key_backspace kbs str kb KEY_BACKSPACE 0407 YB-G- backspace key
+key_catab ktbc str ka KEY_CATAB 0526 -B-G-* clear-all-tabs key
+key_clear kclr str kC KEY_CLEAR 0515 -B-G-* clear-screen or erase key
+key_ctab kctab str kt KEY_CTAB 0525 -B-G-* clear-tab key
+key_dc kdch1 str kD KEY_DC 0512 YB-G- delete-character key
+key_dl kdl1 str kL KEY_DL 0510 -B-G-* delete-line key
+key_down kcud1 str kd KEY_DOWN 0402 YBCGE down-arrow key
+key_eic krmir str kM KEY_EIC 0514 -B-G-* sent by rmir or smir in insert mode
+key_eol kel str kE KEY_EOL 0517 -B-G-* clear-to-end-of-line key
+key_eos ked str kS KEY_EOS 0516 -B-G-* clear-to-end-of-screen key
+key_f0 kf0 str k0 KEY_F(0) 0410 YBCGE F0 function key
+key_f1 kf1 str k1 KEY_F(1) - YBCGE F1 function key
+key_f10 kf10 str k; KEY_F(10) - ----E F10 function key
+key_f2 kf2 str k2 KEY_F(2) - YBCGE F2 function key
+key_f3 kf3 str k3 KEY_F(3) - YBCGE F3 function key
+key_f4 kf4 str k4 KEY_F(4) - YBCGE F4 function key
+key_f5 kf5 str k5 KEY_F(5) - YBCGE F5 function key
+key_f6 kf6 str k6 KEY_F(6) - YBCGE F6 function key
+key_f7 kf7 str k7 KEY_F(7) - YBCGE F7 function key
+key_f8 kf8 str k8 KEY_F(8) - YBCGE F8 function key
+key_f9 kf9 str k9 KEY_F(9) - YBCGE F9 function key
+key_home khome str kh KEY_HOME 0406 YBCGE home key
+key_ic kich1 str kI KEY_IC 0513 YB-GE insert-character key
+key_il kil1 str kA KEY_IL 0511 -B-G-* insert-line key
+key_left kcub1 str kl KEY_LEFT 0404 YBCGE left-arrow key
+key_ll kll str kH KEY_LL 0533 YB-G- lower-left key (home down)
+key_npage knp str kN KEY_NPAGE 0522 YB-GE next-page key
+key_ppage kpp str kP KEY_PPAGE 0523 YB-GE previous-page key
+key_right kcuf1 str kr KEY_RIGHT 0405 YBCGE right-arrow key
+key_sf kind str kF KEY_SF 0520 -B-G-* scroll-forward key
+key_sr kri str kR KEY_SR 0521 -B-G-* scroll-backward key
+key_stab khts str kT KEY_STAB 0524 -B-G-* set-tab key
+key_up kcuu1 str ku KEY_UP 0403 YBCGE up-arrow key
+keypad_local rmkx str ke - - YBCGE leave 'keyboard_transmit' mode
+keypad_xmit smkx str ks - - YBCGE enter 'keyboard_transmit' mode
+lab_f0 lf0 str l0 - - -B-G-* label on function key f0 if not f0
+lab_f1 lf1 str l1 - - -B-G-* label on function key f1 if not f1
+lab_f10 lf10 str la - - ----- label on function key f10 if not f10
+lab_f2 lf2 str l2 - - -B-G-* label on function key f2 if not f2
+lab_f3 lf3 str l3 - - -B-G-* label on function key f3 if not f3
+lab_f4 lf4 str l4 - - -B-G-* label on function key f4 if not f4
+lab_f5 lf5 str l5 - - -B-G-* label on function key f5 if not f5
+lab_f6 lf6 str l6 - - -B-G-* label on function key f6 if not f6
+lab_f7 lf7 str l7 - - -B-G-* label on function key f7 if not f7
+lab_f8 lf8 str l8 - - -B-G-* label on function key f8 if not f8
+lab_f9 lf9 str l9 - - -B-G-* label on function key f9 if not f9
+meta_off rmm str mo - - YB-G-* turn off meta mode
+meta_on smm str mm - - YB-G-* turn on meta mode (8th-bit on)
+newline nel str nw - - YB-G-* newline (behave like cr followed by lf)
+pad_char pad str pc - - YBCGE padding char (instead of null)
+parm_dch dch str DC - - YB-GE delete #1 characters (P*)
+parm_delete_line dl str DL - - YBCGE delete #1 lines (P*)
+parm_down_cursor cud str DO - - YBCGE down #1 lines (P*)
+parm_ich ich str IC - - YB-GE insert #1 characters (P*)
+parm_index indn str SF - - YBCG- scroll forward #1 lines (P)
+parm_insert_line il str AL - - YBCGE insert #1 lines (P*)
+parm_left_cursor cub str LE - - YBCGE move #1 characters to the left (P)
+parm_right_cursor cuf str RI - - YBCGE move #1 characters to the right (P*)
+parm_rindex rin str SR - - YBCG- scroll back #1 lines (P)
+parm_up_cursor cuu str UP - - YBCGE up #1 lines (P*)
+pkey_key pfkey str pk - - -B--- program function key #1 to type string #2
+pkey_local pfloc str pl - - -B--- program function key #1 to execute string #2
+pkey_xmit pfx str px - - -B--- program function key #1 to transmit string #2
+print_screen mc0 str ps - - -B-G-* print contents of screen
+prtr_off mc4 str pf - - -B-G-* turn off printer
+prtr_on mc5 str po - - -B-G-* turn on printer
+repeat_char rep str rp - - YB-GE repeat char #1 #2 times (P*)
+reset_1string rs1 str r1 - - -B--- reset string
+reset_2string rs2 str r2 - - -B--- reset string
+reset_3string rs3 str r3 - - -B--- reset string
+reset_file rf str rf - - -B--- name of reset file
+restore_cursor rc str rc - - YBCG- restore cursor to position of last save_cursor
+row_address vpa str cv - - -B-GE* vertical position #1 absolute (P)
+save_cursor sc str sc - - YBCG- save current cursor position (P)
+scroll_forward ind str sf - - YBCGE scroll text up (P)
+scroll_reverse ri str sr - - YBCGE scroll text down (P)
+set_attributes sgr str sa - - YB-G- define video attributes #1-#9 (PG9)
+set_tab hts str st - - YB-G- set a tab in every row, current columns
+set_window wind str wi - - -B-GE current window is lines #1-#2 cols #3-#4
+tab ht str ta - - YBCGE tab to next 8-space hardware tab stop
+to_status_line tsl str ts - - YB-G- move to status line, column #1
+underline_char uc str uc - - YBCG- underline char and move past it
+up_half_line hu str hu - - YB-G- half a line up
+init_prog iprog str iP - - -B--- path name of program for initialization
+key_a1 ka1 str K1 KEY_A1 0534 YB-GE upper left of keypad
+key_a3 ka3 str K3 KEY_A3 0535 YB-GE upper right of keypad
+key_b2 kb2 str K2 KEY_B2 0536 YB-GE center of keypad
+key_c1 kc1 str K4 KEY_C1 0537 YB-GE lower left of keypad
+key_c3 kc3 str K5 KEY_C3 0540 YB-GE lower right of keypad
+prtr_non mc5p str pO - - -B-G-* turn on printer for #1 bytes
+#
+# SVr1 capabilities stop here. IBM's version of terminfo is the same as
+# SVr4 up to this point, but has a different set afterwards.
+#
+# HPUX defines these if __HP_CURSES_COMPAT is defined:
+memory_lock meml str ml - - ----K lock memory above cursor
+memory_unlock memu str mu - - ----K unlock memory
+#
+#
+plab_norm pln str pn - - ----- program label #1 to show string #2
+label_on smln str LO - - ----- turn on soft labels
+label_off rmln str LF - - ----- turn off soft labels
+key_f11 kf11 str F1 KEY_F(11) - ----E F11 function key
+key_f12 kf12 str F2 KEY_F(12) - ----E F12 function key
+key_f13 kf13 str F3 KEY_F(13) - ----E F13 function key
+key_f14 kf14 str F4 KEY_F(14) - ----E F14 function key
+key_f15 kf15 str F5 KEY_F(15) - ----E F15 function key
+key_f16 kf16 str F6 KEY_F(16) - ----E F16 function key
+key_f17 kf17 str F7 KEY_F(17) - ----E F17 function key
+key_f18 kf18 str F8 KEY_F(18) - ----E F18 function key
+key_f19 kf19 str F9 KEY_F(19) - ----E F19 function key
+key_f20 kf20 str FA KEY_F(20) - ----E F20 function key
+key_f21 kf21 str FB KEY_F(21) - ----E F21 function key
+key_f22 kf22 str FC KEY_F(22) - ----E F22 function key
+key_f23 kf23 str FD KEY_F(23) - ----E F23 function key
+key_f24 kf24 str FE KEY_F(24) - ----E F24 function key
+key_f25 kf25 str FF KEY_F(25) - ----E F25 function key
+key_f26 kf26 str FG KEY_F(26) - ----E F26 function key
+key_f27 kf27 str FH KEY_F(27) - ----E F27 function key
+key_f28 kf28 str FI KEY_F(28) - ----E F28 function key
+key_f29 kf29 str FJ KEY_F(29) - ----E F29 function key
+key_f30 kf30 str FK KEY_F(30) - ----E F30 function key
+key_f31 kf31 str FL KEY_F(31) - ----E F31 function key
+key_f32 kf32 str FM KEY_F(32) - ----E F32 function key
+key_f33 kf33 str FN KEY_F(33) - ----E F33 function key
+key_f34 kf34 str FO KEY_F(34) - ----E F34 function key
+key_f35 kf35 str FP KEY_F(35) - ----E F35 function key
+key_f36 kf36 str FQ KEY_F(36) - ----E F36 function key
+key_f37 kf37 str FR KEY_F(37) - ----E F37 function key
+key_f38 kf38 str FS KEY_F(38) - ----E F38 function key
+key_f39 kf39 str FT KEY_F(39) - ----E F39 function key
+key_f40 kf40 str FU KEY_F(40) - ----E F40 function key
+key_f41 kf41 str FV KEY_F(41) - ----E F41 function key
+key_f42 kf42 str FW KEY_F(42) - ----E F42 function key
+key_f43 kf43 str FX KEY_F(43) - ----E F43 function key
+key_f44 kf44 str FY KEY_F(44) - ----E F44 function key
+key_f45 kf45 str FZ KEY_F(45) - ----E F45 function key
+key_f46 kf46 str Fa KEY_F(46) - ----E F46 function key
+key_f47 kf47 str Fb KEY_F(47) - ----E F47 function key
+key_f48 kf48 str Fc KEY_F(48) - ----E F48 function key
+key_f49 kf49 str Fd KEY_F(49) - ----E F49 function key
+key_f50 kf50 str Fe KEY_F(50) - ----E F50 function key
+key_f51 kf51 str Ff KEY_F(51) - ----E F51 function key
+key_f52 kf52 str Fg KEY_F(52) - ----E F52 function key
+key_f53 kf53 str Fh KEY_F(53) - ----E F53 function key
+key_f54 kf54 str Fi KEY_F(54) - ----E F54 function key
+key_f55 kf55 str Fj KEY_F(55) - ----E F55 function key
+key_f56 kf56 str Fk KEY_F(56) - ----E F56 function key
+key_f57 kf57 str Fl KEY_F(57) - ----E F57 function key
+key_f58 kf58 str Fm KEY_F(58) - ----E F58 function key
+key_f59 kf59 str Fn KEY_F(59) - ----E F59 function key
+key_f60 kf60 str Fo KEY_F(60) - ----E F60 function key
+key_f61 kf61 str Fp KEY_F(61) - ----E F61 function key
+key_f62 kf62 str Fq KEY_F(62) - ----E F62 function key
+key_f63 kf63 str Fr KEY_F(63) - ----E F63 function key
+# end of strings in HPUX 9
+char_padding rmp str rP - - ----- like ip but when in insert mode
+acs_chars acsc str ac - - ----- graphics charset pairs, based on vt100
+key_btab kcbt str kB KEY_BTAB 0541 ----- back-tab key
+enter_xon_mode smxon str SX - - ----- turn on xon/xoff handshaking
+exit_xon_mode rmxon str RX - - ----- turn off xon/xoff handshaking
+enter_am_mode smam str SA - - ----- turn on automatic margins
+exit_am_mode rmam str RA - - ----- turn off automatic margins
+xon_character xonc str XN - - ----- XON character
+xoff_character xoffc str XF - - ----- XOFF character
+ena_acs enacs str eA - - ----- enable alternate char set
+key_beg kbeg str @1 KEY_BEG 0542 ----- begin key
+key_cancel kcan str @2 KEY_CANCEL 0543 ----- cancel key
+key_close kclo str @3 KEY_CLOSE 0544 ----- close key
+key_command kcmd str @4 KEY_COMMAND 0545 ----- command key
+key_copy kcpy str @5 KEY_COPY 0546 ----- copy key
+key_create kcrt str @6 KEY_CREATE 0547 ----- create key
+key_end kend str @7 KEY_END 0550 ----- end key
+key_enter kent str @8 KEY_ENTER 0527 ----- enter/send key
+key_exit kext str @9 KEY_EXIT 0551 ----- exit key
+key_find kfnd str @0 KEY_FIND 0552 ----- find key
+key_help khlp str %1 KEY_HELP 0553 ----- help key
+key_mark kmrk str %2 KEY_MARK 0554 ----- mark key
+key_message kmsg str %3 KEY_MESSAGE 0555 ----- message key
+key_move kmov str %4 KEY_MOVE 0556 ----- move key
+key_next knxt str %5 KEY_NEXT 0557 ----- next key
+key_open kopn str %6 KEY_OPEN 0560 ----- open key
+key_options kopt str %7 KEY_OPTIONS 0561 ----- options key
+key_previous kprv str %8 KEY_PREVIOUS 0562 ----- previous key
+key_print kprt str %9 KEY_PRINT 0532 ----- print key
+key_redo krdo str %0 KEY_REDO 0563 ----- redo key
+key_reference kref str &1 KEY_REFERENCE 0564 ----- reference key
+key_refresh krfr str &2 KEY_REFRESH 0565 ----- refresh key
+key_replace krpl str &3 KEY_REPLACE 0566 ----- replace key
+key_restart krst str &4 KEY_RESTART 0567 ----- restart key
+key_resume kres str &5 KEY_RESUME 0570 ----- resume key
+key_save ksav str &6 KEY_SAVE 0571 ----- save key
+key_suspend kspd str &7 KEY_SUSPEND 0627 ----- suspend key
+key_undo kund str &8 KEY_UNDO 0630 ----- undo key
+key_sbeg kBEG str &9 KEY_SBEG 0572 ----- shifted begin key
+key_scancel kCAN str &0 KEY_SCANCEL 0573 ----- shifted cancel key
+key_scommand kCMD str *1 KEY_SCOMMAND 0574 ----- shifted command key
+key_scopy kCPY str *2 KEY_SCOPY 0575 ----- shifted copy key
+key_screate kCRT str *3 KEY_SCREATE 0576 ----- shifted create key
+key_sdc kDC str *4 KEY_SDC 0577 ----- shifted delete-character key
+key_sdl kDL str *5 KEY_SDL 0600 ----- shifted delete-line key
+key_select kslt str *6 KEY_SELECT 0601 ----- select key
+key_send kEND str *7 KEY_SEND 0602 ----- shifted end key
+key_seol kEOL str *8 KEY_SEOL 0603 ----- shifted clear-to-end-of-line key
+key_sexit kEXT str *9 KEY_SEXIT 0604 ----- shifted exit key
+key_sfind kFND str *0 KEY_SFIND 0605 ----- shifted find key
+key_shelp kHLP str #1 KEY_SHELP 0606 ----- shifted help key
+key_shome kHOM str #2 KEY_SHOME 0607 ----- shifted home key
+key_sic kIC str #3 KEY_SIC 0610 ----- shifted insert-character key
+key_sleft kLFT str #4 KEY_SLEFT 0611 ----- shifted left-arrow key
+key_smessage kMSG str %a KEY_SMESSAGE 0612 ----- shifted message key
+key_smove kMOV str %b KEY_SMOVE 0613 ----- shifted move key
+key_snext kNXT str %c KEY_SNEXT 0614 ----- shifted next key
+key_soptions kOPT str %d KEY_SOPTIONS 0615 ----- shifted options key
+key_sprevious kPRV str %e KEY_SPREVIOUS 0616 ----- shifted previous key
+key_sprint kPRT str %f KEY_SPRINT 0617 ----- shifted print key
+key_sredo kRDO str %g KEY_SREDO 0620 ----- shifted redo key
+key_sreplace kRPL str %h KEY_SREPLACE 0621 ----- shifted replace key
+key_sright kRIT str %i KEY_SRIGHT 0622 ----- shifted right-arrow key
+key_srsume kRES str %j KEY_SRSUME 0623 ----- shifted resume key
+key_ssave kSAV str !1 KEY_SSAVE 0624 ----- shifted save key
+key_ssuspend kSPD str !2 KEY_SSUSPEND 0625 ----- shifted suspend key
+key_sundo kUND str !3 KEY_SUNDO 0626 ----- shifted undo key
+req_for_input rfi str RF - - ----- send next input char (for ptys)
+clr_bol el1 str cb - - ----- Clear to beginning of line
+clear_margins mgc str MC - - ----- clear right and left soft margins
+set_left_margin smgl str ML - - ----- set left soft margin at current column. See smgl. (ML is not in BSD termcap).
+set_right_margin smgr str MR - - ----- set right soft margin at current column
+label_format fln str Lf - - ----- label format
+set_clock sclk str SC - - ----- set clock, #1 hrs #2 mins #3 secs
+display_clock dclk str DK - - ----- display clock
+remove_clock rmclk str RC - - ----- remove clock
+create_window cwin str CW - - ----- define a window #1 from #2,#3 to #4,#5
+goto_window wingo str WG - - ----- go to window #1
+hangup hup str HU - - ----- hang-up phone
+dial_phone dial str DI - - ----- dial number #1
+quick_dial qdial str QD - - ----- dial number #1 without checking
+tone tone str TO - - ----- select touch tone dialing
+pulse pulse str PU - - ----- select pulse dialing
+flash_hook hook str fh - - ----- flash switch hook
+fixed_pause pause str PA - - ----- pause for 2-3 seconds
+wait_tone wait str WA - - ----- wait for dial-tone
+user0 u0 str u0 - - ----- User string #0
+user1 u1 str u1 - - ----- User string #1
+user2 u2 str u2 - - ----- User string #2
+user3 u3 str u3 - - ----- User string #3
+user4 u4 str u4 - - ----- User string #4
+user5 u5 str u5 - - ----- User string #5
+user6 u6 str u6 - - ----- User string #6
+user7 u7 str u7 - - ----- User string #7
+user8 u8 str u8 - - ----- User string #8
+user9 u9 str u9 - - ----- User string #9
+#
+# SVr4 added these capabilities to support color
+#
+orig_pair op str op - - ----- Set default pair to its original value
+orig_colors oc str oc - - ----- Set all color pairs to the original ones
+initialize_color initc str Ic - - ----- initialize color #1 to (#2,#3,#4)
+initialize_pair initp str Ip - - ----- Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7)
+set_color_pair scp str sp - - ----- Set current color pair to #1
+set_foreground setf str Sf - - ----- Set foreground color #1
+set_background setb str Sb - - ----- Set background color #1
+#
+# SVr4 added these capabilities to support printers
+#
+change_char_pitch cpi str ZA - - ----- Change number of characters per inch to #1
+change_line_pitch lpi str ZB - - ----- Change number of lines per inch to #1
+change_res_horz chr str ZC - - ----- Change horizontal resolution to #1
+change_res_vert cvr str ZD - - ----- Change vertical resolution to #1
+define_char defc str ZE - - ----- Define a character #1, #2 dots wide, descender #3
+enter_doublewide_mode swidm str ZF - - ----- Enter double-wide mode
+enter_draft_quality sdrfq str ZG - - ----- Enter draft-quality mode
+enter_italics_mode sitm str ZH - - ----- Enter italic mode
+enter_leftward_mode slm str ZI - - ----- Start leftward carriage motion
+enter_micro_mode smicm str ZJ - - ----- Start micro-motion mode
+enter_near_letter_quality snlq str ZK - - ----- Enter NLQ mode
+enter_normal_quality snrmq str ZL - - ----- Enter normal-quality mode
+enter_shadow_mode sshm str ZM - - ----- Enter shadow-print mode
+enter_subscript_mode ssubm str ZN - - ----- Enter subscript mode
+enter_superscript_mode ssupm str ZO - - ----- Enter superscript mode
+enter_upward_mode sum str ZP - - ----- Start upward carriage motion
+exit_doublewide_mode rwidm str ZQ - - ----- End double-wide mode
+exit_italics_mode ritm str ZR - - ----- End italic mode
+exit_leftward_mode rlm str ZS - - ----- End left-motion mode
+exit_micro_mode rmicm str ZT - - ----- End micro-motion mode
+exit_shadow_mode rshm str ZU - - ----- End shadow-print mode
+exit_subscript_mode rsubm str ZV - - ----- End subscript mode
+exit_superscript_mode rsupm str ZW - - ----- End superscript mode
+exit_upward_mode rum str ZX - - ----- End reverse character motion
+micro_column_address mhpa str ZY - - ----- Like column_address in micro mode
+micro_down mcud1 str ZZ - - ----- Like cursor_down in micro mode
+micro_left mcub1 str Za - - ----- Like cursor_left in micro mode
+micro_right mcuf1 str Zb - - ----- Like cursor_right in micro mode
+micro_row_address mvpa str Zc - - ----- Like row_address #1 in micro mode
+micro_up mcuu1 str Zd - - ----- Like cursor_up in micro mode
+order_of_pins porder str Ze - - ----- Match software bits to print-head pins
+parm_down_micro mcud str Zf - - ----- Like parm_down_cursor in micro mode
+parm_left_micro mcub str Zg - - ----- Like parm_left_cursor in micro mode
+parm_right_micro mcuf str Zh - - ----- Like parm_right_cursor in micro mode
+parm_up_micro mcuu str Zi - - ----- Like parm_up_cursor in micro mode
+select_char_set scs str Zj - - ----- Select character set, #1
+set_bottom_margin smgb str Zk - - ----- Set bottom margin at current line
+set_bottom_margin_parm smgbp str Zl - - ----- Set bottom margin at line #1 or (if smgtp is not given) #2 lines from bottom
+set_left_margin_parm smglp str Zm - - ----- Set left (right) margin at column #1
+set_right_margin_parm smgrp str Zn - - ----- Set right margin at column #1
+set_top_margin smgt str Zo - - ----- Set top margin at current line
+set_top_margin_parm smgtp str Zp - - ----- Set top (bottom) margin at row #1
+start_bit_image sbim str Zq - - ----- Start printing bit image graphics
+start_char_set_def scsd str Zr - - ----- Start character set definition #1, with #2 characters in the set
+stop_bit_image rbim str Zs - - ----- Stop printing bit image graphics
+stop_char_set_def rcsd str Zt - - ----- End definition of character set #1
+subscript_characters subcs str Zu - - ----- List of subscriptable characters
+superscript_characters supcs str Zv - - ----- List of superscriptable characters
+these_cause_cr docr str Zw - - ----- Printing any of these characters causes CR
+zero_motion zerom str Zx - - ----- No motion for subsequent character
+#%.TE
+#%.ad
+#%
+#%The following string capabilities are present in the SVr4.0 term structure,
+#%but were originally not documented in the man page.
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw18.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBString name Code\fR
+char_set_names csnm str Zy - - ----- Produce #1'th item from list of character set names
+key_mouse kmous str Km KEY_MOUSE 0631 ----- Mouse event has occurred
+mouse_info minfo str Mi - - ----- Mouse status information
+req_mouse_pos reqmp str RQ - - ----- Request mouse position
+get_mouse getm str Gm - - ----- Curses should get button events, parameter #1 not documented.
+set_a_foreground setaf str AF - - ----- Set foreground color to #1, using ANSI escape
+set_a_background setab str AB - - ----- Set background color to #1, using ANSI escape
+pkey_plab pfxl str xl - - ----- Program function key #1 to type string #2 and show string #3
+device_type devt str dv - - ----- Indicate language/codeset support
+code_set_init csin str ci - - ----- Init sequence for multiple codesets
+set0_des_seq s0ds str s0 - - ----- Shift to codeset 0 (EUC set 0, ASCII)
+set1_des_seq s1ds str s1 - - ----- Shift to codeset 1
+set2_des_seq s2ds str s2 - - ----- Shift to codeset 2
+set3_des_seq s3ds str s3 - - ----- Shift to codeset 3
+set_lr_margin smglr str ML - - ----- Set both left and right margins to #1, #2. (ML is not in BSD termcap).
+set_tb_margin smgtb str MT - - ----- Sets both top and bottom margins to #1, #2
+bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times
+bit_image_newline binel str Zz - - ----- Move to next row of the bit image
+bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row
+color_names colornm str Yw - - ----- Give name for color #1
+define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region
+end_bit_image_region endbi str Yy - - ----- End a bit-image region
+set_color_band setcolor str Yz - - ----- Change to ribbon color #1
+set_page_length slines str YZ - - ----- Set page length to #1 lines
+#
+# SVr4 added these capabilities for direct PC-clone support
+#
+display_pc_char dispc str S1 - - ----- Display PC character #1
+enter_pc_charset_mode smpch str S2 - - ----- Enter PC character display mode
+exit_pc_charset_mode rmpch str S3 - - ----- Exit PC character display mode
+enter_scancode_mode smsc str S4 - - ----- Enter PC scancode mode
+exit_scancode_mode rmsc str S5 - - ----- Exit PC scancode mode
+pc_term_options pctrm str S6 - - ----- PC terminal options
+scancode_escape scesc str S7 - - ----- Escape for scancode emulation
+alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulation
+#%.TE
+#%.ad
+#%
+#%.in .8i
+#%The XSI Curses standard added these. They are some post-4.1
+#%versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x.
+#%The \fBncurses\fR termcap names for them are invented; according to the
+#%XSI Curses standard, they have no termcap names. If your compiled terminfo
+#%entries use these, they may not be binary-compatible with System V terminfo
+#%entries after SVr4.1; beware!
+#%
+#%.na
+#%.TS H
+#%center expand;
+#%c l l c
+#%c l l c
+#%lw25 lw6 lw2 lw20.
+#%\fBVariable Cap- TCap Description\fR
+#%\fBString name Code\fR
+set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch
+enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode
+enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode
+enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode
+enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode
+enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode
+enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode
+set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6
+exit_horizontal_hl_mode rhhlm str XH - - ----K Exit horizontal highlight mode
+exit_left_hl_mode rlhlm str XL - - ----K Exit left highlight mode
+exit_low_hl_mode rlohlm str XO - - ----K Exit low highlight mode
+exit_right_hl_mode rrhlm str XR - - ----K Exit right highlight mode
+exit_top_hl_mode rthlm str XT - - ----K Exit top highlight mode
+exit_vertical_hl_mode rvhlm str XV - - ----K Exit vertical highlight mode
+#%.TE
+#%.ad
+#
+# The magic token below tells the tic compiler-generator code that all the caps
+# past it should be ignored (not written out) when dumping terminfo objects. It
+# also tells the man page table generator not to pass through following lines
+# This means we can have obsolete capabilities and pseudo-capabilities that are
+# recognized for termcap or terminfo compilation, but not output.
+#
+# %%-STOP-HERE-%%
+#
+# Don't move this casually! In fact, don't move it at all unless you're
+# either doing it to add System V or XPG4 extensions, or have decided you
+# don't care about SVr4 binary compatibility.
+#
+#############################################################################
+#
+# TERMCAP EXTENSION CAPABILITIES
+#
+# The capabilities below are either obsolete or extensions on certain systems.
+# They are not used by SVR4 terminfo. Some are used by captoinfo to translate
+# termcap sources; the rest are listed for completeness, and in case somebody
+# cares about them enough to hack in code that will translate them into
+# terminfo capabilities.
+#
+# The first part of the list is from Ross Ridge's `mytinfo' package
+# (comp.sources.unix, volume 26); the variable names and terminfo names (as
+# well as the termcap codes) match his list.
+#
+# This group of codes is not marked obsolete in 4.4BSD, but have no direct
+# terminfo equivalents. The rs capability is specially translated to terminfo
+# r2, and vice versa, if an entry does not already have an r2. Similarly,
+# i2 is translated to r3 if there is no r3 (because SV terminfo maps is to i2).
+# The ug capability is thrown away, but assumed to be whatever sg is if the
+# latter is nonzero and we're dumping in termcap format.
+#
+termcap_init2 OTi2 str i2 - - YB--- secondary initialization string
+termcap_reset OTrs str rs - - YB-G- terminal reset string
+magic_cookie_glitch_ul OTug num ug - - YBCGE number of blanks left by ul
+#
+# Obsolete termcap capabilities. Some are used for termcap translation. The
+# code uses the 'OT' prefix we put on obsolete capabilities to suppress
+# printing them in terminfo source dumps of compiled entries.
+#
+backspaces_with_bs OTbs bool bs - - YBCGE uses ^H to move left
+crt_no_scrolling OTns bool ns - - YBCG- crt cannot scroll
+no_correctly_working_cr OTnc bool nc - - YBCG- no way to go to start of line
+carriage_return_delay OTdC num dC - - YB-G- pad needed for CR
+new_line_delay OTdN num dN - - YB-G- pad needed for LF
+linefeed_if_not_lf OTnl str nl - - YBCGE use to move down
+backspace_if_not_bs OTbc str bc - - YBCGE move left, if not ^H
+#
+# GNU termcap library extensions. The GNU termcap file distributed with
+# Emacs no longer uses these, but MT showed up in pre-9.0 versions of the
+# BSD termcap file. The name clash with terminfo MT is resolved by type
+# info; MT is converted to km.
+#
+gnu_has_meta_key OTMT bool MT - - ----E has meta key
+# gnu_tab_width OTtw num tw - - ----E tab width in spaces
+#
+# GNU termcap *does* include the following extended capability, Only the
+# now-obsolete Ann Arbor terminals used it.
+#
+# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region
+#
+# The following comments describe capnames so ancient that I believe no
+# software uses them any longer. Some of these have to go because they
+# clash with terminfo names in ways that cannot be resolved by type
+# information.
+#
+# These mytinfo codes are not used in the 4.4BSD curses code. They are
+# marked obsolete in the 4.4BSD manual pages.
+#
+# There is one conflict with terminfo; ma is in both. This conflict is
+# resolved by type information.
+#
+# The `ko' capability is translated by special code. It should contain a
+# comma-separated list of capabilities for which there are corresponding keys.
+# The `kn' code is accepted but ignored.
+#
+# The `ma' capability seems to have been designed to map between the rogue(2)
+# motion keys (including jkhl) and characters emitted by arrow keys on some
+# primitive pre-ANSI terminals. It's so obsolete it's fossilized...
+#
+# Here is a description of memory_lock_above and memory_unlock:
+# "You can 'freeze' data on the screen by turning on Memory Lock in a line of
+# text. All lines above the cursor's current line become locked in place on
+# the screen. Then enter data normally. When the screen fills up, any
+# further data entered forces the first line of unfrozen line text to scroll
+# under the frozen data. Lines scrolled off the screen are inserted into
+# memory immediately preceding the first frozen line." (from the HP 700/96
+# User's manual). VT100/ANSI memory lock set is \E[>2h, reset is \E[>2l.
+#
+# Applications that use terminfo are supposed to behave as though xr is
+# always true.
+#
+linefeed_is_newline OTNL bool NL - - YB--- move down with \n
+# even_parity OTEP bool EP - - -B--- terminal requires even parity
+# odd_parity OTOP bool OP - - -B--- terminal requires odd parity
+# half_duplex OTHD bool HD - - -B--- terminal is half-duplex
+# lower_case_only OTLC bool LC - - -B--- terminal has only lower case
+# upper_case_only OTUC bool UC - - -B--- terminal has only upper case
+backspace_delay OTdB num dB - - YB-G- padding required for ^H
+# form_feed_delay OTdF num dF - - -B-G- padding required for ^L
+horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I
+# vertical_tab_delay OTdV num dV - - -B--- padding required for ^V
+number_of_function_keys OTkn num kn - - -B-G- count of function keys
+other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps
+arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys
+# memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line
+# memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line
+has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I
+return_does_clr_eol OTxr bool xr - - YB--- return clears the line
+# tek_4025_insert_line OTxx bool xx - - -BC-- Tektronix 4025 insert-line glitch
+#
+# mytinfo described this as a termcap capability, but it's not listed in the
+# 4.4BSD man pages, and not found in the 4.4BSD termcap file. The ncurses
+# package, like System V, behaves as though it is always true.
+#
+# rind_only_at_top OTxq bool xq - - ----- reverse index only works from top line
+#
+# University of Waterloo termcap extensions (as described in mytinfo).
+# The `xl' termcap file clashes with a terminfo name; this ambiguity cannot
+# be resolved by a type check. The descriptions are guesses from what was
+# in the mytinfo tables.
+#
+# key_interrupt_char OTki str ki - - ----- string set by interrupt key (?)
+# key_kill_char OTkk str kk - - ----- string set by kill key (?)
+# key_suspend_char OTkz str kz - - ----- string set by suspend key (?)
+# initialization_messy OTxc bool xc - - ----- initialization leaves garbage on the screen (?)
+# ind_at_bottom_does_cr OTxl bool xl - - ----- index does a carriage return
+#
+# Nonstandard capabilities unique to Ross Ridge's `mytinfo' package.
+# SR clashes with a terminfo name; this ambiguity cannot be resolved by a type
+# check.
+#
+# scroll_left OTsl1 str Sl - - ----- scroll screen leftward
+# scroll_right OTsr1 str Sr - - ----- scroll screen rightward
+# parm_scroll_left OTsl str SL - - ----- scroll screen leftward #1 characters
+# parm_scroll_right OTsr str SR - - ----- scroll screen rightward #1 characters
+#
+# The mytinfo capabilities end here.
+#
+# XENIX extensions:
+#
+# Xenix defined its own set of forms-drawing capabilities:
+#
+# cap IBM ASCII description ACS ASCII
+# --- ----------- -------------------- ------------- ------
+# G1 191 \277 M-? single upper right ACS_URCORNER
+# G2 218 \332 M-Z single upper left ACS_ULCORNER
+# G3 192 \300 M-@ single lower left ACS_LLCORNER
+# G4 217 \331 M-Y single lower right ACS_LRCORNER
+# G5 187 \273 M-; double upper right
+# G6 201 \311 M-I double upper left
+# G7 200 \310 M-H double lower left
+# G8 188 \274 M-< double lower right
+# GC 197 \305 M-E single intersection ACS_PLUS _ _
+# GD 194 \302 M-B single down-tick ACS_TTEE |
+# GH 196 \304 M-D single horizontal line ACS_HLINE
+# GL 180 \264 M-4 single left tick ACS_RTEE -|
+# GR 195 \303 M-C single right tick ACS_LTEE |-
+# GU 193 \301 M-A single up tick ACS_BTEE _|_
+# GV 179 \263 M-3 single vertical line ACS_VLINE
+# Gc 206 \316 M-N double intersection
+# Gd 203 \313 M-K double down tick
+# Gh 205 \315 M-M double horizontal line
+# Gl 204 \204 M-L double left tick
+# Gr 185 \271 M-9 double right tick
+# Gu 202 \312 M-J double up tick
+# Gv 186 \272 M-: double vertical line
+#
+# The compiler will translate the single-line caps and discard the others
+# (via IGNORE aliases further down). We don't want to do normal pad
+# translation on these, they're often single-character printable ASCII
+# strings that happen to be numerics. There's awk code in parametrized.sh
+# that detects the acs_ prefix and uses it to suppress pad translation.
+# These terminfo names are invented.
+#
+acs_ulcorner OTG2 str G2 - - ----- single upper left
+acs_llcorner OTG3 str G3 - - ----- single lower left
+acs_urcorner OTG1 str G1 - - ----- single upper right
+acs_lrcorner OTG4 str G4 - - ----- single lower right
+acs_ltee OTGR str GR - - ----- tee pointing right
+acs_rtee OTGL str GL - - ----- tee pointing left
+acs_btee OTGU str GU - - ----- tee pointing up
+acs_ttee OTGD str GD - - ----- tee pointing down
+acs_hline OTGH str GH - - ----- single horizontal line
+acs_vline OTGV str GV - - ----- single vertical line
+acs_plus OTGC str GC - - ----- single intersection
+#
+#############################################################################
+#
+# TERMINFO EXTENSION CAPABILITIES
+#
+# This section is almost all comments. What it's mainly for is to describe
+# what capabilities need to be squeezed out to get down to the XSI Curses
+# standard set. They are flagged with K.
+#
+# HP extensions
+#
+# These extensions follow ptr_non (replacing everything after it) in HP
+# terminfo files. Except for memory_lock and memory_unlock, they are
+# functionally identical to SVr4 extensions, but they make the binary format
+# different. Grrr....
+#
+#memory_lock meml str ml - - ----K memory lock above
+#memory_unlock memu str mu - - ----K memory unlock
+#plab_norm pln str pn - - ----- program label #1 to show string #2
+#label_on smln str LO - - ----- turn on soft labels
+#label_off rmln str LF - - ----- turn off soft labels
+#key_f11 kf11 str F1 - - ----- F11 function key
+#key_f12 kf12 str F2 - - ----- F12 function key
+#key_f13 kf13 str F3 - - ----- F13 function key
+#key_f14 kf14 str F4 - - ----- F14 function key
+#key_f15 kf15 str F5 - - ----- F15 function key
+#key_f16 kf16 str F6 - - ----- F16 function key
+#key_f17 kf17 str F7 - - ----- F17 function key
+#key_f18 kf18 str F8 - - ----- F18 function key
+#key_f19 kf19 str F9 - - ----- F19 function key
+#key_f20 kf20 str FA - - ----- F20 function key
+#key_f21 kf21 str FB - - ----- F21 function key
+#key_f22 kf22 str FC - - ----- F22 function key
+#key_f23 kf23 str FD - - ----- F23 function key
+#key_f24 kf24 str FE - - ----- F24 function key
+#key_f25 kf25 str FF - - ----- F25 function key
+#key_f26 kf26 str FG - - ----- F26 function key
+#key_f27 kf27 str FH - - ----- F27 function key
+#key_f28 kf28 str FI - - ----- F28 function key
+#key_f29 kf29 str FJ - - ----- F29 function key
+#key_f30 kf30 str FK - - ----- F30 function key
+#key_f31 kf31 str FL - - ----- F31 function key
+#key_f32 kf32 str FM - - ----- F32 function key
+#key_f33 kf33 str FN - - ----- F33 function key
+#key_f34 kf34 str FO - - ----- F34 function key
+#key_f35 kf35 str FP - - ----- F35 function key
+#key_f36 kf36 str FQ - - ----- F36 function key
+#key_f37 kf37 str FR - - ----- F37 function key
+#key_f38 kf38 str FS - - ----- F38 function key
+#key_f39 kf39 str FT - - ----- F39 function key
+#key_f40 kf40 str FU - - ----- F40 function key
+#key_f41 kf41 str FV - - ----- F41 function key
+#key_f42 kf42 str FW - - ----- F42 function key
+#key_f43 kf43 str FX - - ----- F43 function key
+#key_f44 kf44 str FY - - ----- F44 function key
+#key_f45 kf45 str FZ - - ----- F45 function key
+#key_f46 kf46 str Fa - - ----- F46 function key
+#key_f47 kf47 str Fb - - ----- F47 function key
+#key_f48 kf48 str Fc - - ----- F48 function key
+#key_f49 kf49 str Fd - - ----- F49 function key
+#key_f50 kf50 str Fe - - ----- F50 function key
+#key_f51 kf51 str Ff - - ----- F51 function key
+#key_f52 kf52 str Fg - - ----- F52 function key
+#key_f53 kf53 str Fh - - ----- F53 function key
+#key_f54 kf54 str Fi - - ----- F54 function key
+#key_f55 kf55 str Fj - - ----- F55 function key
+#key_f56 kf56 str Fk - - ----- F56 function key
+#key_f57 kf57 str Fl - - ----- F57 function key
+#key_f58 kf58 str Fm - - ----- F58 function key
+#key_f59 kf59 str Fn - - ----- F59 function key
+#key_f60 kf60 str Fo - - ----- F60 function key
+#key_f61 kf61 str Fp - - ----- F61 function key
+#key_f62 kf62 str Fq - - ----- F62 function key
+#key_f63 kf63 str Fr - - ----- F63 function key
+#
+# IBM extensions
+#
+# These extensions follow ptr_non (replacing everything after it) in IBM
+# terminfo files.
+#
+# The places in the box[12] capabilities correspond to acsc characters, here is
+# the mapping:
+#
+# box1[0] = ACS_ULCORNER
+# box1[1] = ACS_HLINE
+# box1[2] = ACS_URCORNER
+# box1[3] = ACS_VLINE
+# box1[4] = ACS_LRCORNER
+# box1[5] = ACS_LLCORNER
+# box1[6] = ACS_TTEE
+# box1[7] = ACS_RTEE
+# box1[8] = ACS_BTEE
+# box1[9] = ACS_LTEE
+# box1[10] = ACS_PLUS
+#
+# The box2 characters are the double-line versions of these forms graphics.
+#
+box_chars_1 box1 str bx - - ----K box characters primary set
+#box_chars_2 box2 str by - - ----K box characters secondary set
+#box_attr_1 batt1 str Bx - - ----K attributes for box1
+#box_attr_2 batt2 str By - - ----K attributes for box2
+#color_bg_0 colb0 str d0 - - ----K background color 0
+#color_bg_1 colb1 str d1 - - ----K background color 1
+#color_bg_2 colb2 str d2 - - ----K background color 2
+#color_bg_3 colb3 str d3 - - ----K background color 3
+#color_bg_4 colb4 str d4 - - ----K background color 4
+#color_bg_5 colb5 str d5 - - ----K background color 5
+#color_bg_6 colb6 str d6 - - ----K background color 6
+#color_bg_7 colb7 str d7 - - ----K background color 7
+#color_fg_0 colf0 str c0 - - ----K foreground color 0
+#color_fg_1 colf1 str c1 - - ----K foreground color 1
+#color_fg_2 colf2 str c2 - - ----K foreground color 2
+#color_fg_3 colf3 str c3 - - ----K foreground color 3
+#color_fg_4 colf4 str c4 - - ----K foreground color 4
+#color_fg_5 colf5 str c5 - - ----K foreground color 5
+#color_fg_6 colf6 str c6 - - ----K foreground color 6
+#color_fg_7 colf7 str c7 - - ----K foreground color 7
+#font_0 font0 str f0 - - ----- select font 0
+#font_1 font1 str f1 - - ----- select font 1
+#font_2 font2 str f2 - - ----- select font 2
+#font_3 font3 str f3 - - ----- select font 3
+#font_4 font4 str f4 - - ----K select font 4
+#font_5 font5 str f5 - - ----K select font 5
+#font_6 font6 str f6 - - ----K select font 6
+#font_7 font7 str f7 - - ----K select font 7
+#key_back_tab kbtab str k0 - - ----- backtab key
+#key_do kdo str ki - - ----K do request key
+#key_command kcmd str kd - - ----K command-request key
+#key_command_pane kcpn str kW - - ----K command-pane key
+#key_end kend str kw - - ----- end key
+#key_help khlp str kq - - ----- help key
+#key_newline knl str nl - - ----K newline key
+#key_next_pane knpn str kv - - ----K next-pane key
+#key_prev_cmd kppn str kp - - ----K previous-command key
+#key_prev_pane kppn str kV - - ----K previous-pane key
+#key_quit kquit str kQ - - ----K quit key
+#key_select ksel str kU - - ----- select key
+#key_scroll_left kscl str kz - - ----K scroll left
+#key_scroll_right kscr str kZ - - ----K scroll right
+#key_tab ktab str ko - - ----K tab key
+#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input
+#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output
+#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input
+#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output
+#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input
+#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output
+#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input
+#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output
+#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input
+#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output
+#appl_defined_str apstr str za - - ----K application-defined string
+# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in
+# the IBM manual pages, so the cap name strings are guesses. The terminfo
+# names are almost certainly right, the termcap ones almost certainly wrong.
+#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input
+#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output
+#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input
+#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output
+#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input
+#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output
+#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input
+#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output
+# Undocumented capabilities end here
+#key_sf1 ksf1 str S1 - - ----K special function key 1
+#key_sf2 ksf2 str S2 - - ----K special function key 2
+#key_sf3 ksf3 str S3 - - ----K special function key 3
+#key_sf4 ksf4 str S4 - - ----K special function key 4
+#key_sf5 ksf5 str S5 - - ----K special function key 5
+#key_sf6 ksf6 str S6 - - ----K special function key 6
+#key_sf7 ksf7 str S7 - - ----K special function key 7
+#key_sf8 ksf8 str S8 - - ----K special function key 8
+#key_sf9 ksf9 str S9 - - ----K special function key 9
+#key_sf10 ksf10 str SA - - ----K special function key 10
+# AIX version 3 documents different codes for F11, F12 and does not mention
+# F13-F64. AIX version 4 uses the same naming for F0-F63 as above.
+#key_f11 kf11 str k< - - ----- function key 11
+#key_f12 kf12 str k> - - ----- function key 12
+# Undocumented capabilities end here.
+#key_action kact str kJ - - ----K sent by action key
+# The IBM docs say these capabilities are for table-drawing, and are
+# valid only for aixterm descriptions.
+#enter_topline_mode topl str tp - - ----K start top-line mode
+#enter_bottom_mode btml str bm - - ----K start bottom-line mode
+#enter_rvert_mode rvert str rv - - ----K start right-vertical mode
+#enter_lvert_mode lvert str lv - - ----K start left-vertical mode
+#
+#############################################################################
+#
+# ALIAS DECLARATIONS
+#
+# Here we set up aliases for translating extensions into standard terminfo.
+#
+#---------------------------------- Termcap aliases -------------------------
+#
+# BSD aliases:
+#
+# This is a common error in many termcap files. We'll get notified during
+# translation when this (or any other alias) fires.
+#
+capalias sb sr BSD scroll text down
+#
+# AT&T extensions:
+#
+# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of
+# nonstandard capabilities. Its signature is the KM capability, used to name
+# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this
+# set. Comments in the original, and a little cross-checking with other AT&T
+# documentation, seem to establish the following mappings:
+#
+capalias BO mr AT&T enter_reverse_mode
+capalias CI vi AT&T cursor_invisible
+capalias CV ve AT&T cursor_normal
+capalias DS mh AT&T enter_dim_mode
+#capalias EE me AT&T exit_attribute_mode
+capalias FE LF AT&T label_on
+capalias FL LO AT&T label_off
+capalias XS mk AT&T enter_secure_mode
+#
+# We comment out EE because the conflicting XENIX EE is more common in
+# old entries.
+#
+# XENIX extensions:
+#
+# These are the ones we know how to translate directly:
+#
+capalias EE mh XENIX exit_attribute_mode
+capalias GE ae XENIX exit_alt_charset_mode
+capalias GS as XENIX enter_alt_charset_mode
+capalias CF vi XENIX cursor_invis
+capalias CO ve XENIX cursor_normal
+capalias EN @7 XENIX key_end
+capalias HM kh XENIX key_home
+capalias LD kL XENIX key_dl
+capalias PD kN XENIX key_npage
+capalias PN po XENIX prtr_off
+capalias PS pf XENIX prtr_on
+capalias PU kP XENIX key_ppage
+capalias RT @8 XENIX kent
+capalias UP ku XENIX kcuu1
+capalias G6 IGNORE XENIX double-ACS_ULCORNER
+capalias G7 IGNORE XENIX double-ACS_LLCORNER
+capalias G5 IGNORE XENIX double-ACS_URCORNER
+capalias G8 IGNORE XENIX double-ACS_LRCORNER
+capalias Gr IGNORE XENIX double-ACS_LTEE
+capalias Gr IGNORE XENIX double-ACS_RTEE
+capalias Gu IGNORE XENIX double-ACS_BTEE
+capalias Gd IGNORE XENIX double ACS_TTEE
+capalias Gh IGNORE XENIX double-ACS_HLINE
+capalias Gv IGNORE XENIX double-ACS_VLINE
+capalias Gc IGNORE XENIX double-ACS_PLUS
+capalias GG IGNORE XENIX acs-glitch
+#
+# IBM extensions:
+#
+capalias kq %1 IBM key_help
+#
+# Iris extensions:
+#
+capalias HS mh IRIS enter_dim_mode
+#
+# Tektronix extensions:
+#
+capalias KA k; Tek key_f10
+capalias KB F1 Tek key_f11
+capalias KC F2 Tek key_f12
+capalias KD F3 Tek key_f13
+capalias KE F4 Tek key_f14
+capalias KF F5 Tek key_f15
+capalias BC Sb Tek set_background
+capalias FC Sf Tek set_foreground
+#
+# There are also the following:
+#
+# XENIX XENIX variable name name clash with terminfo?
+# ----- ------------------- -------------------------
+# CL key_char_left
+# CR key_char_right
+# CW key_change_window
+# HP ??
+# LF key_linefeed label_off
+# NU key_next_unlocked_cell
+# PL ??
+# PR ??
+# RC key_recalc remove_clock
+# RF key_toggle_ref req_for_input
+# WL key_word_left
+# WR key_word_right
+#
+# If you know what any of the question-marked ones mean, please tell us.
+#
+#--------------------------------- Terminfo aliases ------------------------
+#
+# IBM extensions:
+#
+infoalias font0 s0ds IBM set0_des_seq
+infoalias font1 s1ds IBM set1_des_seq
+infoalias font2 s2ds IBM set2_des_seq
+infoalias font3 s3ds IBM set3_des_seq
+infoalias kbtab kcbt IBM key_backtab
+infoalias ksel kslt IBM key_select
+#
+# Some others are identical to SVr4/XPG4 capabilities, in particular:
+# kcmd, kend, khlp, and kf11...kf63.
+#
+#############################################################################
+#
+# The following sets edit modes for GNU EMACS
+# Local Variables:
+# case-fold-search:nil
+# truncate-lines:t
+# End:
diff --git a/contrib/ncurses/include/Caps.keys b/contrib/ncurses/include/Caps.keys
index 7ef7545fa5bc..6841ae5c1d5b 100644
--- a/contrib/ncurses/include/Caps.keys
+++ b/contrib/ncurses/include/Caps.keys
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2002,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -29,7 +29,7 @@
# Author: Thomas Dickey
# and: Ilya Zakharevich
#
-# $Id: Caps.keys,v 1.2 2002/04/20 15:43:49 tom Exp $
+# $Id: Caps.keys,v 1.3 2006/05/27 15:33:04 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is illustrates an experimental extension to describe alt-, shift- and
@@ -1057,8 +1057,8 @@ acs_plus OTGC str GC - - ----- single intersection
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
#
-memory_lock meml str ml - - ----K memory lock above
-memory_unlock memu str mu - - ----K memory unlock
+memory_lock meml str ml - - ----K lock memory above cursor
+memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
diff --git a/contrib/ncurses/include/Caps.osf1r5 b/contrib/ncurses/include/Caps.osf1r5
index 28f4681e9e4d..d9ea5646ff5a 100644
--- a/contrib/ncurses/include/Caps.osf1r5
+++ b/contrib/ncurses/include/Caps.osf1r5
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2002 Free Software Foundation, Inc. #
+# Copyright (c) 2002,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -28,7 +28,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.osf1r5,v 1.2 2002/04/20 15:43:58 tom Exp $
+# $Id: Caps.osf1r5,v 1.4 2006/05/27 15:33:04 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with OSF/1 version 5 (Tru64) terminfo.
@@ -227,7 +227,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
-tilde_glitch hz bool hz - - YB-GE can't print ~'s (hazeltine)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
back_color_erase bce bool ut - - ----- screen erased with background color
@@ -977,8 +977,8 @@ acs_plus OTGC str GC - - ----- single intersection
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
#
-memory_lock meml str ml - - ----K memory lock above
-memory_unlock memu str mu - - ----K memory unlock
+memory_lock meml str ml - - ----K lock memory above cursor
+memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
diff --git a/contrib/ncurses/include/Caps.uwin b/contrib/ncurses/include/Caps.uwin
index ea755c142ccc..450eaeb6ae58 100644
--- a/contrib/ncurses/include/Caps.uwin
+++ b/contrib/ncurses/include/Caps.uwin
@@ -1,5 +1,5 @@
##############################################################################
-# Copyright (c) 2001 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2002,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -28,7 +28,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.uwin,v 1.2 2002/04/20 15:44:04 tom Exp $
+# $Id: Caps.uwin,v 1.4 2006/05/27 15:33:04 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with U/Win's terminfo.
@@ -227,11 +227,11 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode
over_strike os bool os - - YBCG- terminal can overstrike
status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line
dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061)
-tilde_glitch hz bool hz - - YB-GE can't print ~'s (hazeltine)
+tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine)
transparent_underline ul bool ul - - YBCGE underline character overstrikes
xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking
-needs_xon_xoff nxon bool nx - - ----- padding won't work, xon/xoff required
-prtr_silent mc5i bool 5i - - ----- printer won't echo on screen
+needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required
+prtr_silent mc5i bool 5i - - ----- printer will not echo on screen
hard_cursor chts bool HC - - ----- cursor is hard to see
non_rev_rmcup nrrmc bool NR - - ----- smcup does not reverse rmcup
no_pad_char npc bool NP - - ----- pad character does not exist
@@ -269,7 +269,7 @@ buttons btns num BT - - ----- number of buttons on mouse
# These came in with SVr4's color support
max_colors colors num Co - - ----- maximum number of colors on screen
max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen
-no_color_video ncv num NC - - ----- video attributes that can't be used with colors
+no_color_video ncv num NC - - ----- video attributes that cannot be used with colors
#%.TE
#%.ad
#%
@@ -793,8 +793,8 @@ acs_plus OTGC str GC - - ----- single intersection
# functionally identical to SVr4 extensions, but they make the binary format
# different. Grrr....
#
-memory_lock meml str ml - - ----K memory lock above
-memory_unlock memu str mu - - ----K memory unlock
+memory_lock meml str ml - - ----K lock memory above cursor
+memory_unlock memu str mu - - ----K unlock memory
#plab_norm pln str pn - - ----- program label #1 to show string #2
#label_on smln str LO - - ----- turn on soft labels
#label_off rmln str LF - - ----- turn off soft labels
diff --git a/contrib/ncurses/include/MKhashsize.sh b/contrib/ncurses/include/MKhashsize.sh
index d11d7bf23c8a..11b3111aff92 100755
--- a/contrib/ncurses/include/MKhashsize.sh
+++ b/contrib/ncurses/include/MKhashsize.sh
@@ -1,4 +1,32 @@
#!/bin/sh
+##############################################################################
+# Copyright (c) 1998,2006 Free Software Foundation, Inc. #
+# #
+# Permission is hereby granted, free of charge, to any person obtaining a #
+# copy of this software and associated documentation files (the "Software"), #
+# to deal in the Software without restriction, including without limitation #
+# the rights to use, copy, modify, merge, publish, distribute, distribute #
+# with modifications, sublicense, and/or sell copies of the Software, and to #
+# permit persons to whom the Software is furnished to do so, subject to the #
+# following conditions: #
+# #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software. #
+# #
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL #
+# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
+# DEALINGS IN THE SOFTWARE. #
+# #
+# Except as contained in this notice, the name(s) of the above copyright #
+# holders shall not be used in advertising or otherwise to promote the sale, #
+# use or other dealings in this Software without prior written #
+# authorization. #
+##############################################################################
+# $Id: MKhashsize.sh,v 1.7 2006/10/22 00:45:39 tom Exp $
#
# MKhashsize.sh --- generate size include for hash functions
#
diff --git a/contrib/ncurses/include/MKkey_defs.sh b/contrib/ncurses/include/MKkey_defs.sh
index ab43b09f4845..b3cb4f7f72cb 100755
--- a/contrib/ncurses/include/MKkey_defs.sh
+++ b/contrib/ncurses/include/MKkey_defs.sh
@@ -1,7 +1,7 @@
#! /bin/sh
-# $Id: MKkey_defs.sh,v 1.8 2002/06/01 17:24:28 tom Exp $
+# $Id: MKkey_defs.sh,v 1.14 2003/12/06 17:10:09 tom Exp $
##############################################################################
-# Copyright (c) 2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 2001-2002,2003 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -30,7 +30,7 @@
#
# MKkey_defs.sh -- generate function-key definitions for curses.h
#
-# Author: Thomas E. Dickey <dickey@herndon4.his.com> 2001
+# Author: Thomas E. Dickey 2001
#
# Extract function-key definitions from the Caps file
#
@@ -43,9 +43,26 @@ pass2=pass2_$$
pass3=pass3_$$
pass4=pass4_$$
trap 'rm -f $data pass[1234]_$$' 0 1 2 5 15
-sed -e 's/[ ]\+/ /g' < $DATA |sort -n +5 >$data
+
+# change repeated tabs (used for readability) to single tabs (needed to make
+# awk see the right field alignment of the corresponding columns):
+if sort -k 6 $DATA >$data 2>/dev/null
+then
+ # POSIX
+ sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n -k 6 >$data
+elif sort -n +5 $DATA >$data 2>/dev/null
+then
+ # SunOS (and SVr4, marked as obsolete but still recognized)
+ sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n +5 >$data
+else
+ echo "Your sort utility is broken. Please install one that works." >&2
+ exit 1
+fi
+
+# add keys that we generate automatically:
cat >>$data <<EOF
key_resize kr1 str R1 KEY_RESIZE + ----- Terminal resize event
+key_event kv1 str V1 KEY_EVENT + ----- We were interrupted by an event
EOF
cat <<EOF
diff --git a/contrib/ncurses/include/MKncurses_def.sh b/contrib/ncurses/include/MKncurses_def.sh
index 3ca08c33dd31..4aac86554b55 100755
--- a/contrib/ncurses/include/MKncurses_def.sh
+++ b/contrib/ncurses/include/MKncurses_def.sh
@@ -1,5 +1,5 @@
#! /bin/sh
-# $Id: MKncurses_def.sh,v 1.1 2000/09/02 17:37:35 tom Exp $
+# $Id: MKncurses_def.sh,v 1.2 2003/10/25 16:19:46 tom Exp $
##############################################################################
# Copyright (c) 2000 Free Software Foundation, Inc. #
# #
@@ -30,7 +30,7 @@
#
# MKncurses_def.sh -- generate fallback definitions for ncurses_cfg.h
#
-# Author: Thomas E. Dickey <dickey@herndon4.his.com> 2000
+# Author: Thomas E. Dickey 2000
#
# Given the choice between constructs such as
#
diff --git a/contrib/ncurses/include/MKparametrized.sh b/contrib/ncurses/include/MKparametrized.sh
index 4c3365529816..2825c822ae25 100755
--- a/contrib/ncurses/include/MKparametrized.sh
+++ b/contrib/ncurses/include/MKparametrized.sh
@@ -1,5 +1,32 @@
#!/bin/sh
-# $Id: MKparametrized.sh,v 1.5 2000/10/01 00:57:24 tom Exp $
+##############################################################################
+# Copyright (c) 1998-2000,2006 Free Software Foundation, Inc. #
+# #
+# Permission is hereby granted, free of charge, to any person obtaining a #
+# copy of this software and associated documentation files (the "Software"), #
+# to deal in the Software without restriction, including without limitation #
+# the rights to use, copy, modify, merge, publish, distribute, distribute #
+# with modifications, sublicense, and/or sell copies of the Software, and to #
+# permit persons to whom the Software is furnished to do so, subject to the #
+# following conditions: #
+# #
+# The above copyright notice and this permission notice shall be included in #
+# all copies or substantial portions of the Software. #
+# #
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, #
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL #
+# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER #
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING #
+# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER #
+# DEALINGS IN THE SOFTWARE. #
+# #
+# Except as contained in this notice, the name(s) of the above copyright #
+# holders shall not be used in advertising or otherwise to promote the sale, #
+# use or other dealings in this Software without prior written #
+# authorization. #
+##############################################################################
+# $Id: MKparametrized.sh,v 1.6 2006/04/22 21:36:16 tom Exp $
#
# MKparametrized.sh -- generate indirection vectors for various sort methods
#
diff --git a/contrib/ncurses/include/MKterm.h.awk.in b/contrib/ncurses/include/MKterm.h.awk.in
index 8243aea52dbe..ee22f014d128 100644
--- a/contrib/ncurses/include/MKterm.h.awk.in
+++ b/contrib/ncurses/include/MKterm.h.awk.in
@@ -1,6 +1,6 @@
BEGIN {
print "/****************************************************************************"
- print " * Copyright (c) 1998,1999,2000,2001 Free Software Foundation, Inc. *"
+ print " * Copyright (c) 1998-2003,2006 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 *"
@@ -30,9 +30,10 @@ BEGIN {
print "/****************************************************************************/"
print "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 */"
print "/* and: Eric S. Raymond <esr@snark.thyrsus.com> */"
+ print "/* and: Thomas E. Dickey 1995-on */"
print "/****************************************************************************/"
print ""
- print "/* $Id: MKterm.h.awk.in,v 1.41 2001/12/23 01:04:38 tom Exp $ */"
+ print "/* $Id: MKterm.h.awk.in,v 1.47 2006/11/26 01:18:23 tom Exp $ */"
print ""
print "/*"
print "** term.h -- Definition of struct term"
@@ -54,15 +55,12 @@ BEGIN {
print " * definition (based on the system for which this was configured)."
print " */"
print ""
- print "#undef HAVE_TERMIOS_H"
- print "#define HAVE_TERMIOS_H 1/*default*/"
- print ""
- print "#undef HAVE_TCGETATTR"
- print "#define HAVE_TCGETATTR 1/*default*/"
- print ""
print "#undef NCURSES_CONST"
print "#define NCURSES_CONST @NCURSES_CONST@"
print ""
+ print "#undef NCURSES_SBOOL"
+ print "#define NCURSES_SBOOL @NCURSES_SBOOL@"
+ print ""
print "#undef NCURSES_XNAMES"
print "#define NCURSES_XNAMES @NCURSES_XNAMES@"
print ""
@@ -74,7 +72,8 @@ BEGIN {
print "#undef GET_TTY"
print ""
print "/* Assume POSIX termio if we have the header and function */"
- print "#if HAVE_TERMIOS_H && HAVE_TCGETATTR"
+ print "/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */"
+ print "#if @HAVE_TERMIOS_H@ && @HAVE_TCGETATTR@"
print ""
print "#undef TERMIOS"
print "#define TERMIOS 1"
@@ -84,7 +83,8 @@ BEGIN {
print ""
print "#else /* !HAVE_TERMIOS_H */"
print ""
- print "#if HAVE_TERMIO_H"
+ print "/* #if HAVE_TERMIO_H */"
+ print "#if @HAVE_TERMIO_H@"
print ""
print "#undef TERMIOS"
print "#define TERMIOS 1"
@@ -199,7 +199,7 @@ END {
print "typedef struct termtype { /* in-core form of terminfo data */"
print " char *term_names; /* str_table offset of term names */"
print " char *str_table; /* pointer to string table */"
- print " char *Booleans; /* array of boolean values */"
+ print " NCURSES_SBOOL *Booleans; /* array of boolean values */"
print " short *Numbers; /* array of integer values */"
print " char **Strings; /* array of string offsets */"
print ""
@@ -224,6 +224,7 @@ END {
print " TTY Ottyb, /* original state of the terminal */"
print " Nttyb; /* current state of the terminal */"
print " int _baudrate; /* used to compute padding */"
+ print " char * _termname; /* used for termname() */"
print "} TERMINAL;"
print ""
print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;"
@@ -268,9 +269,9 @@ END {
print "extern NCURSES_EXPORT(int) _nc_get_tty_mode (TTY *buf);"
print "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);"
print "extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE *);"
+ print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int);"
print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);"
print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);"
- print "extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE *const);"
print "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);"
print ""
print "/* entry points */"
@@ -284,11 +285,18 @@ END {
print "/* terminfo entry points, also declared in curses.h */"
print "#if !defined(__NCURSES_H)"
print "extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);"
- print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...);"
print "extern NCURSES_EXPORT_VAR(char) ttytype[];"
print "extern NCURSES_EXPORT(int) putp (const char *);"
print "extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);"
print "extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);"
+ print ""
+ print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */"
+ print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* implemented */"
+ print "#else"
+ print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* implemented */"
+ print "extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* implemented */"
+ print "#endif"
+ print ""
print "#endif /* __NCURSES_H */"
print ""
print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
diff --git a/contrib/ncurses/include/curses.h.in b/contrib/ncurses/include/curses.h.in
index df6f2a142376..6e517f765651 100644
--- a/contrib/ncurses/include/curses.h.in
+++ b/contrib/ncurses/include/curses.h.in
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2001,2002 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -29,10 +29,10 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
- * and: Thomas E. Dickey 1996-on *
+ * and: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: curses.h.in,v 1.129 2002/06/01 17:22:56 tom Exp $ */
+/* $Id: curses.h.in,v 1.167 2006/11/26 01:14:54 tom Exp $ */
#ifndef __NCURSES_H
#define __NCURSES_H
@@ -41,7 +41,7 @@
#define CURSES_H 1
/* This should be defined for the enhanced functionality to be visible.
- * However, none of the wide-character (enhanced) functionality is implemented.
+ * However, some of the wide-character (enhanced) functionality is missing.
* So we do not define it (yet).
#define _XOPEN_CURSES 1
*/
@@ -55,29 +55,80 @@
#undef NCURSES_VERSION
#define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@"
+/*
+ * Identify the mouse encoding version.
+ */
+#define NCURSES_MOUSE_VERSION @NCURSES_MOUSE_VERSION@
+
+/*
+ * Definitions to facilitate DLL's.
+ */
#include <ncurses_dll.h>
+/*
+ * User-definable tweak to disable the include of <stdbool.h>.
+ */
+#ifndef NCURSES_ENABLE_STDBOOL_H
+#define NCURSES_ENABLE_STDBOOL_H @cf_cv_header_stdbool_h@
+#endif
+
+/*
+ * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses
+ * configured using --disable-macros.
+ */
#ifdef NCURSES_NOMACROS
+#ifndef NCURSES_ATTR_T
#define NCURSES_ATTR_T attr_t
#endif
+#endif /* NCURSES_NOMACROS */
#ifndef NCURSES_ATTR_T
#define NCURSES_ATTR_T int
#endif
+/*
+ * Expands to 'const' if ncurses is configured using --enable-const. Note that
+ * doing so makes it incompatible with other implementations of X/Open Curses.
+ */
#undef NCURSES_CONST
#define NCURSES_CONST @NCURSES_CONST@
+#undef NCURSES_INLINE
+#define NCURSES_INLINE @NCURSES_INLINE@
+
+/*
+ * The internal type used for color values
+ */
#undef NCURSES_COLOR_T
#define NCURSES_COLOR_T short
+/*
+ * The internal type used for window dimensions.
+ */
#undef NCURSES_SIZE_T
#define NCURSES_SIZE_T short
+/*
+ * Control whether tparm() supports varargs or fixed-parameter list.
+ */
+#undef NCURSES_TPARM_VARARGS
+#define NCURSES_TPARM_VARARGS @NCURSES_TPARM_VARARGS@
+
+/*
+ * NCURSES_CH_T is used in building the library, but not used otherwise in
+ * this header file, since that would make the normal/wide-character versions
+ * of the header incompatible.
+ */
#undef NCURSES_CH_T
#define NCURSES_CH_T @NCURSES_CH_T@
+#if @cf_cv_enable_lp64@ && defined(_LP64)
+typedef unsigned chtype;
+typedef unsigned mmask_t;
+#else
typedef unsigned @cf_cv_typeof_chtype@ chtype;
+typedef unsigned @cf_cv_typeof_mmask_t@ mmask_t;
+#endif
#include <stdio.h>
#include <unctrl.h>
@@ -106,24 +157,30 @@ typedef unsigned @cf_cv_typeof_chtype@ chtype;
typedef @cf_cv_type_of_bool@ NCURSES_BOOL;
-#if (!defined(__cplusplus) || !@cf_cv_builtin_bool@) && (!@cf_cv_cc_bool_type@)
+#if @USE_CXX_BOOL@ /* __cplusplus, etc. */
-#if @cf_cv_header_stdbool_h@
-#include <stdbool.h>
-#endif
+/* use the C++ compiler's bool type */
+#define NCURSES_BOOL bool
-#undef bool
+#else /* c89, c99, etc. */
-#if @cf_cv_header_stdbool_h@
-#define bool NCURSES_BOOL
+#if NCURSES_ENABLE_STDBOOL_H
+#include <stdbool.h>
+/* use whatever the C compiler decides bool really is */
+#define NCURSES_BOOL bool
#else
-typedef @cf_cv_type_of_bool@ bool;
+/* there is no predefined bool - use our own */
+#undef bool
+#define bool NCURSES_BOOL
#endif
#endif /* !__cplusplus, etc. */
#ifdef __cplusplus
extern "C" {
+#define NCURSES_CAST(type,value) static_cast<type>(value)
+#else
+#define NCURSES_CAST(type,value) (type)(value)
#endif
/*
@@ -170,45 +227,47 @@ extern NCURSES_EXPORT_VAR(chtype*) _nc_acs_map(void);
extern NCURSES_EXPORT_VAR(chtype) acs_map[];
#endif
+#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)])
+
/* VT100 symbols begin here */
-#define ACS_ULCORNER (acs_map['l']) /* upper left corner */
-#define ACS_LLCORNER (acs_map['m']) /* lower left corner */
-#define ACS_URCORNER (acs_map['k']) /* upper right corner */
-#define ACS_LRCORNER (acs_map['j']) /* lower right corner */
-#define ACS_LTEE (acs_map['t']) /* tee pointing right */
-#define ACS_RTEE (acs_map['u']) /* tee pointing left */
-#define ACS_BTEE (acs_map['v']) /* tee pointing up */
-#define ACS_TTEE (acs_map['w']) /* tee pointing down */
-#define ACS_HLINE (acs_map['q']) /* horizontal line */
-#define ACS_VLINE (acs_map['x']) /* vertical line */
-#define ACS_PLUS (acs_map['n']) /* large plus or crossover */
-#define ACS_S1 (acs_map['o']) /* scan line 1 */
-#define ACS_S9 (acs_map['s']) /* scan line 9 */
-#define ACS_DIAMOND (acs_map['`']) /* diamond */
-#define ACS_CKBOARD (acs_map['a']) /* checker board (stipple) */
-#define ACS_DEGREE (acs_map['f']) /* degree symbol */
-#define ACS_PLMINUS (acs_map['g']) /* plus/minus */
-#define ACS_BULLET (acs_map['~']) /* bullet */
+#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */
+#define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */
+#define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */
+#define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */
+#define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */
+#define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */
+#define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */
+#define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */
+#define ACS_HLINE NCURSES_ACS('q') /* horizontal line */
+#define ACS_VLINE NCURSES_ACS('x') /* vertical line */
+#define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */
+#define ACS_S1 NCURSES_ACS('o') /* scan line 1 */
+#define ACS_S9 NCURSES_ACS('s') /* scan line 9 */
+#define ACS_DIAMOND NCURSES_ACS('`') /* diamond */
+#define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */
+#define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */
+#define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */
+#define ACS_BULLET NCURSES_ACS('~') /* bullet */
/* Teletype 5410v1 symbols begin here */
-#define ACS_LARROW (acs_map[',']) /* arrow pointing left */
-#define ACS_RARROW (acs_map['+']) /* arrow pointing right */
-#define ACS_DARROW (acs_map['.']) /* arrow pointing down */
-#define ACS_UARROW (acs_map['-']) /* arrow pointing up */
-#define ACS_BOARD (acs_map['h']) /* board of squares */
-#define ACS_LANTERN (acs_map['i']) /* lantern symbol */
-#define ACS_BLOCK (acs_map['0']) /* solid square block */
+#define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */
+#define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */
+#define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */
+#define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */
+#define ACS_BOARD NCURSES_ACS('h') /* board of squares */
+#define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */
+#define ACS_BLOCK NCURSES_ACS('0') /* solid square block */
/*
* These aren't documented, but a lot of System Vs have them anyway
* (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings).
* The ACS_names may not match AT&T's, our source didn't know them.
*/
-#define ACS_S3 (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 NCURSES_ACS('p') /* scan line 3 */
+#define ACS_S7 NCURSES_ACS('r') /* scan line 7 */
+#define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */
+#define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */
+#define ACS_PI NCURSES_ACS('{') /* Pi */
+#define ACS_NEQUAL NCURSES_ACS('|') /* not equal */
+#define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */
/*
* Line drawing ACS names are of the form ACS_trbl, where t is the top, r
@@ -228,21 +287,11 @@ extern NCURSES_EXPORT_VAR(chtype) acs_map[];
#define ACS_SBSB ACS_VLINE
#define ACS_SSSS ACS_PLUS
-#if defined(ERR) && ((ERR) != -1)
#undef ERR
-#endif
-
-#if !defined(ERR)
#define ERR (-1)
-#endif
-#if defined(OK) && ((OK) != 0)
#undef OK
-#endif
-
-#if !defined(OK)
#define OK (0)
-#endif
/* values for the _flags member */
#define _SUBWIN 0x01 /* is this a sub-window? */
@@ -277,26 +326,28 @@ typedef chtype attr_t; /* ...must be at least as wide as chtype */
#undef mblen
#endif
#include <libutf8.h>
-#define _WCHAR_T
-#define _WINT_T
#endif
-#if @NCURSES_MBSTATE_T@
+#if @NEED_WCHAR_H@
#include <wchar.h> /* ...to get mbstate_t, etc. */
#endif
-#ifndef _WCHAR_T
-typedef unsigned long wchar_t;
-#endif /* _WCHAR_T */
-#ifndef _WINT_T
-typedef long int wint_t;
-#endif /* _WINT_T */
+#if @NCURSES_WCHAR_T@
+typedef unsigned short wchar_t@NCURSES_OK_WCHAR_T@;
+#endif
+
+#if @NCURSES_WINT_T@
+typedef unsigned int wint_t@NCURSES_OK_WCHAR_T@;
+#endif
#define CCHARW_MAX 5
typedef struct
{
attr_t attr;
wchar_t chars[CCHARW_MAX];
+#if @NCURSES_EXT_COLORS@
+ int ext_color; /* color pair, must be more than 16-bits */
+#endif
}
cchar_t;
@@ -353,6 +404,9 @@ struct _win_st
#ifdef _XOPEN_SOURCE_EXTENDED
cchar_t _bkgrnd; /* current background char/attribute pair */
+#if @NCURSES_EXT_COLORS@
+ int _color; /* current color-pair for non-space character */
+#endif
#endif
};
@@ -369,8 +423,6 @@ extern NCURSES_EXPORT_VAR(int) TABSIZE;
*/
extern NCURSES_EXPORT_VAR(int) ESCDELAY; /* ESC expire time in milliseconds */
-extern NCURSES_EXPORT_VAR(char) ttytype[]; /* needed for backward compatibility */
-
/*
* These functions are extensions - not in XSI Curses.
*/
@@ -379,41 +431,86 @@ extern NCURSES_EXPORT(bool) is_term_resized (int, int);
extern NCURSES_EXPORT(char *) keybound (int, int);
extern NCURSES_EXPORT(const char *) curses_version (void);
extern NCURSES_EXPORT(int) assume_default_colors (int, int);
-extern NCURSES_EXPORT(int) define_key (char *, int);
+extern NCURSES_EXPORT(int) define_key (const char *, int);
+extern NCURSES_EXPORT(int) key_defined (const char *);
extern NCURSES_EXPORT(int) keyok (int, bool);
extern NCURSES_EXPORT(int) resize_term (int, int);
extern NCURSES_EXPORT(int) resizeterm (int, int);
extern NCURSES_EXPORT(int) use_default_colors (void);
extern NCURSES_EXPORT(int) use_extended_names (bool);
+extern NCURSES_EXPORT(int) use_legacy_coding (int);
extern NCURSES_EXPORT(int) wresize (WINDOW *, int, int);
+extern NCURSES_EXPORT(void) nofilter(void);
#else
#define curses_version() NCURSES_VERSION
#endif
/*
+ * This is an extension to support events...
+ */
+#if @NCURSES_EXT_FUNCS@
+#ifdef NCURSES_WGETCH_EVENTS
+#if !defined(__BEOS__) /* Fix _nc_timed_wait() on BEOS... */
+# define NCURSES_EVENT_VERSION 1
+#endif /* !defined(__BEOS__) */
+
+/*
+ * Bits to set in _nc_event.data.flags
+ */
+# define _NC_EVENT_TIMEOUT_MSEC 1
+# define _NC_EVENT_FILE 2
+# define _NC_EVENT_FILE_READABLE 2
+# if 0 /* Not supported yet... */
+# define _NC_EVENT_FILE_WRITABLE 4
+# define _NC_EVENT_FILE_EXCEPTION 8
+# endif
+
+typedef struct
+{
+ int type;
+ union
+ {
+ long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */
+ struct
+ {
+ unsigned int flags;
+ int fd;
+ unsigned int result;
+ } fev; /* _NC_EVENT_FILE */
+ } data;
+} _nc_event;
+
+typedef struct
+{
+ int count;
+ int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */
+ _nc_event *events[1];
+} _nc_eventlist;
+
+extern NCURSES_EXPORT(int) wgetch_events(WINDOW *, _nc_eventlist *); /* experimental */
+extern NCURSES_EXPORT(int) wgetnstr_events(WINDOW *,char *,int,_nc_eventlist *);/* experimental */
+
+#endif /* NCURSES_WGETCH_EVENTS */
+#endif /* NCURSES_EXT_FUNCS */
+
+/*
* GCC (and some other compilers) define '__attribute__'; we're using this
* macro to alert the compiler to flag inconsistencies in printf/scanf-like
* function calls. Just in case '__attribute__' isn't defined, make a dummy.
- * G++ doesn't accept it anyway.
+ * Old versions of G++ do not accept it anyway, at least not consistently with
+ * GCC.
*/
-#if !defined(__GNUC__) && !defined(__attribute__)
+#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__))
#define __attribute__(p) /* nothing */
#endif
/*
- * For g++, turn off our macros that use __attribute__ (g++ recognizes some
- * of them, but not at the same version levels as gcc).
- */
-#ifdef __cplusplus
-#undef GCC_NORETURN
-#undef GCC_PRINTF
-#undef GCC_SCANF
-#undef GCC_UNUSED
-#endif
-
-/*
* We cannot define these in ncurses_cfg.h, since they require parameters to be
- * passed (that's non-portable).
+ * passed (that is non-portable). If you happen to be using gcc with warnings
+ * enabled, define
+ * GCC_PRINTF
+ * GCC_SCANF
+ * to improve checking of calls to printw(), etc.
*/
#ifndef GCC_PRINTFLIKE
#if defined(GCC_PRINTF) && !defined(printf)
@@ -552,7 +649,7 @@ extern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */
extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */
extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */
extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */
-extern NCURSES_EXPORT(int) mvprintw (int,int, NCURSES_CONST char *,...) /* implemented */
+extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */
GCC_PRINTFLIKE(3,4);
extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...) /* implemented */
GCC_SCANFLIKE(3,4);
@@ -577,7 +674,7 @@ extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated
extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */
extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */
extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */
-extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, NCURSES_CONST char *,...) /* implemented */
+extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */
GCC_PRINTFLIKE(4,5);
extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */
GCC_SCANFLIKE(4,5);
@@ -601,9 +698,8 @@ extern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */
extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */
extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */
extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */
-extern NCURSES_EXPORT(int) printw (NCURSES_CONST char *,...) /* implemented */
+extern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */
GCC_PRINTFLIKE(1,2);
-extern NCURSES_EXPORT(int) putp (const char *); /* implemented */
extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */
extern NCURSES_EXPORT(void) qiflush (void); /* implemented */
extern NCURSES_EXPORT(int) raw (void); /* implemented */
@@ -649,13 +745,9 @@ extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *,int,int,int,int); /* implemente
extern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */
extern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */
extern NCURSES_EXPORT(char *) termname (void); /* implemented */
-extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */
-extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */
-extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */
extern NCURSES_EXPORT(void) timeout (int); /* generated */
extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */
extern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */
-extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* implemented */
extern NCURSES_EXPORT(int) typeahead (int); /* implemented */
extern NCURSES_EXPORT(int) ungetch (int); /* implemented */
extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */
@@ -663,23 +755,23 @@ extern NCURSES_EXPORT(void) use_env (bool); /* implemented */
extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */
extern NCURSES_EXPORT(int) vidputs (chtype, int (*)(int)); /* implemented */
extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */
-extern NCURSES_EXPORT(int) vwprintw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */
-extern NCURSES_EXPORT(int) vw_printw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */
+extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list); /* implemented */
+extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* generated */
extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */
extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */
extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */
-extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *const,int); /* implemented */
+extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */
extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */
-extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *const,int); /* implemented */
+extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */
extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */
extern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */
extern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */
extern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */
extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *); /* generated */
-extern NCURSES_EXPORT(int) wattr_on (WINDOW *, NCURSES_CONST attr_t, void *); /* implemented */
-extern NCURSES_EXPORT(int) wattr_off (WINDOW *, NCURSES_CONST attr_t, void *); /* implemented */
-extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */
-extern NCURSES_EXPORT(int) wbkgd (WINDOW *,const chtype); /* implemented */
+extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */
+extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */
+extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */
+extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */
extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */
extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */
extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */
@@ -708,7 +800,7 @@ extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */
extern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */
extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */
extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */
-extern NCURSES_EXPORT(int) wprintw (WINDOW *, NCURSES_CONST char *,...) /* implemented */
+extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented */
GCC_PRINTFLIKE(2,3);
extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */
extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */
@@ -725,7 +817,36 @@ extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */
extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
/*
- * vid_attr() was implemented originally based on the draft of XSI curses.
+ * These are also declared in <term.h>:
+ */
+extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */
+extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */
+extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */
+extern NCURSES_EXPORT(int) putp (const char *); /* implemented */
+
+#if NCURSES_TPARM_VARARGS
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* implemented */
+#else
+extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* implemented */
+extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* implemented */
+#endif
+
+extern NCURSES_EXPORT_VAR(char) ttytype[]; /* needed for backward compatibility */
+
+/*
+ * These functions are not in X/Open, but we use them in macro definitions:
+ */
+extern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */
+extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */
+
+/*
+ * vid_attr() was implemented originally based on a draft of XSI curses.
*/
#ifndef _XOPEN_SOURCE_EXTENDED
#define vid_attr(a,pair,opts) vidattr(a)
@@ -736,7 +857,7 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define NCURSES_ATTR_SHIFT 8
#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT))
-#define A_NORMAL 0L
+#define A_NORMAL (@cf_cv_1UL@ - @cf_cv_1UL@)
#define A_ATTRIBUTES NCURSES_BITS(~(@cf_cv_1UL@ - @cf_cv_1UL@),0)
#define A_CHARTEXT (NCURSES_BITS(@cf_cv_1UL@,0) - @cf_cv_1UL@)
#define A_COLOR NCURSES_BITS(((@cf_cv_1UL@) << 8) - @cf_cv_1UL@,0)
@@ -756,12 +877,34 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define A_TOP NCURSES_BITS(@cf_cv_1UL@,21)
#define A_VERTICAL NCURSES_BITS(@cf_cv_1UL@,22)
-#define COLOR_PAIR(n) NCURSES_BITS(n, 0)
-#define PAIR_NUMBER(a) (((a) & A_COLOR) >> NCURSES_ATTR_SHIFT)
+/*
+ * Most of the pseudo functions are macros that either provide compatibility
+ * with older versions of curses, or provide inline functionality to improve
+ * performance.
+ */
/*
- * pseudo functions
+ * These pseudo functions are always implemented as macros:
*/
+
+#define getyx(win,y,x) (y = getcury(win), x = getcurx(win))
+#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win))
+#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win))
+#define getparyx(win,y,x) (y = getpary(win), x = getparx(win))
+
+#define getsyx(y,x) do { if(newscr->_leaveok) (y)=(x)=-1; \
+ else getyx(newscr,(y),(x)); \
+ } while(0)
+#define setsyx(y,x) do { if((y)==-1 && (x)==-1) newscr->_leaveok=TRUE; \
+ else {newscr->_leaveok=FALSE;wmove(newscr,(y),(x));} \
+ } while(0)
+
+#ifndef NCURSES_NOMACROS
+
+/*
+ * These miscellaneous pseudo functions are provided for compatibility:
+ */
+
#define wgetstr(w, s) wgetnstr(w, s, -1)
#define getnstr(s, n) wgetnstr(stdscr, s, n)
@@ -774,17 +917,6 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define nocrmode() nocbreak()
#define gettmode()
-#define getyx(win,y,x) (y = (win)?(win)->_cury:ERR, x = (win)?(win)->_curx:ERR)
-#define getbegyx(win,y,x) (y = (win)?(win)->_begy:ERR, x = (win)?(win)->_begx:ERR)
-#define getmaxyx(win,y,x) (y = (win)?((win)->_maxy + 1):ERR, x = (win)?((win)->_maxx + 1):ERR)
-#define getparyx(win,y,x) (y = (win)?(win)->_pary:ERR, x = (win)?(win)->_parx:ERR)
-#define getsyx(y,x) do { if(newscr->_leaveok) (y)=(x)=-1; \
- else getyx(newscr,(y),(x)); \
- } while(0)
-#define setsyx(y,x) do { if((y)==-1 && (x)==-1) newscr->_leaveok=TRUE; \
- else {newscr->_leaveok=FALSE;wmove(newscr,(y),(x));} \
- } while(0)
-
/* It seems older SYSV curses versions define these */
#define getattrs(win) ((win)?(win)->_attrs:A_NORMAL)
#define getcurx(win) ((win)?(win)->_curx:ERR)
@@ -798,11 +930,16 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define wstandout(win) (wattrset(win,A_STANDOUT))
#define wstandend(win) (wattrset(win,A_NORMAL))
-#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
-#define wattron(win,at) wattr_on(win, at, (void *)0)
-#define wattroff(win,at) wattr_off(win, at, (void *)0)
+#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL)
+#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL)
+
+#if defined(_XOPEN_SOURCE_EXTENDED) && @NCURSES_EXT_COLORS@
+#define wattrset(win,at) ((win)->_color = PAIR_NUMBER(at), \
+ (win)->_attrs = (at))
+#else
#define wattrset(win,at) ((win)->_attrs = (at))
+#endif
#define scroll(win) wscrl(win,1)
@@ -824,6 +961,12 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define waddchstr(win,str) waddchnstr(win,str,-1)
/*
+ * These apply to the first 256 color pairs.
+ */
+#define COLOR_PAIR(n) NCURSES_BITS(n, 0)
+#define PAIR_NUMBER(a) (NCURSES_CAST(int,(((a) & A_COLOR) >> NCURSES_ATTR_SHIFT)))
+
+/*
* pseudo functions for standard screen
*/
@@ -887,7 +1030,7 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define mvwgetnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n))
#define mvwgetstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : wgetstr(win,str))
#define mvwhline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline(win,c,n))
-#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? (chtype)ERR : winch(win))
+#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win))
#define mvwinchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n))
#define mvwinchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winchstr(win,s))
#define mvwinnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n))
@@ -919,16 +1062,26 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n)
/*
- * Some wide-character functions do not depend on the extensions.
+ * Some wide-character functions can be implemented without the extensions.
*/
#define getbkgd(win) ((win)->_bkgd)
#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a))
#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a))
+#if defined(_XOPEN_SOURCE_EXTENDED) && @NCURSES_EXT_COLORS@
+#define wattr_set(win,a,p,opts) ((win)->_attrs = ((a) & ~A_COLOR), \
+ (win)->_color = (p), \
+ OK)
+#define wattr_get(win,a,p,opts) ((void)((a) != 0 && (*(a) = (win)->_attrs)), \
+ (void)((p) != 0 && (*(p) = (win)->_color)), \
+ OK)
+#else
+#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
#define wattr_get(win,a,p,opts) ((void)((a) != 0 && (*(a) = (win)->_attrs)), \
(void)((p) != 0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \
OK)
+#endif
/*
* XSI curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use
@@ -947,6 +1100,8 @@ extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */
NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list);
#endif
+#endif /* NCURSES_NOMACROS */
+
/*
* Pseudo-character tokens outside ASCII range. The curses wgetch() function
* will return any given one of these only if the corresponding k- capability
diff --git a/contrib/ncurses/include/curses.tail b/contrib/ncurses/include/curses.tail
index 589a2adb7a99..d9f8a3dec59e 100644
--- a/contrib/ncurses/include/curses.tail
+++ b/contrib/ncurses/include/curses.tail
@@ -1,38 +1,81 @@
-/* $Id: curses.tail,v 1.5 2001/12/30 00:01:16 tom Exp $ */
+/*
+ * This file is part of ncurses, designed to be appended after curses.h.in
+ * (see that file for the relevant copyright).
+ */
+/* $Id: curses.tail,v 1.14 2006/05/27 16:28:29 tom Exp $ */
/* mouse interface */
-#define NCURSES_MOUSE_VERSION 1
+
+#if NCURSES_MOUSE_VERSION > 1
+#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 5))
+#else
+#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6))
+#endif
+
+#define NCURSES_BUTTON_RELEASED 001L
+#define NCURSES_BUTTON_PRESSED 002L
+#define NCURSES_BUTTON_CLICKED 004L
+#define NCURSES_DOUBLE_CLICKED 010L
+#define NCURSES_TRIPLE_CLICKED 020L
+#define NCURSES_RESERVED_EVENT 040L
/* event masks */
-#define BUTTON1_RELEASED 000000000001L
-#define BUTTON1_PRESSED 000000000002L
-#define BUTTON1_CLICKED 000000000004L
-#define BUTTON1_DOUBLE_CLICKED 000000000010L
-#define BUTTON1_TRIPLE_CLICKED 000000000020L
-#define BUTTON1_RESERVED_EVENT 000000000040L
-#define BUTTON2_RELEASED 000000000100L
-#define BUTTON2_PRESSED 000000000200L
-#define BUTTON2_CLICKED 000000000400L
-#define BUTTON2_DOUBLE_CLICKED 000000001000L
-#define BUTTON2_TRIPLE_CLICKED 000000002000L
-#define BUTTON2_RESERVED_EVENT 000000004000L
-#define BUTTON3_RELEASED 000000010000L
-#define BUTTON3_PRESSED 000000020000L
-#define BUTTON3_CLICKED 000000040000L
-#define BUTTON3_DOUBLE_CLICKED 000000100000L
-#define BUTTON3_TRIPLE_CLICKED 000000200000L
-#define BUTTON3_RESERVED_EVENT 000000400000L
-#define BUTTON4_RELEASED 000001000000L
-#define BUTTON4_PRESSED 000002000000L
-#define BUTTON4_CLICKED 000004000000L
-#define BUTTON4_DOUBLE_CLICKED 000010000000L
-#define BUTTON4_TRIPLE_CLICKED 000020000000L
-#define BUTTON4_RESERVED_EVENT 000040000000L
-#define BUTTON_CTRL 000100000000L
-#define BUTTON_SHIFT 000200000000L
-#define BUTTON_ALT 000400000000L
-#define ALL_MOUSE_EVENTS 000777777777L
-#define REPORT_MOUSE_POSITION 001000000000L
+#define BUTTON1_RELEASED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)
+#define BUTTON1_PRESSED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED)
+#define BUTTON1_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED)
+#define BUTTON1_DOUBLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED)
+#define BUTTON1_TRIPLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED)
+
+#define BUTTON2_RELEASED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED)
+#define BUTTON2_PRESSED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED)
+#define BUTTON2_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED)
+#define BUTTON2_DOUBLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED)
+#define BUTTON2_TRIPLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED)
+
+#define BUTTON3_RELEASED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED)
+#define BUTTON3_PRESSED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED)
+#define BUTTON3_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED)
+#define BUTTON3_DOUBLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED)
+#define BUTTON3_TRIPLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED)
+
+#define BUTTON4_RELEASED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED)
+#define BUTTON4_PRESSED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED)
+#define BUTTON4_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED)
+#define BUTTON4_DOUBLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED)
+#define BUTTON4_TRIPLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED)
+
+/*
+ * In 32 bits the version-1 scheme does not provide enough space for a 5th
+ * button, unless we choose to change the ABI by omitting the reserved-events.
+ */
+#if NCURSES_MOUSE_VERSION > 1
+
+#define BUTTON5_RELEASED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED)
+#define BUTTON5_PRESSED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED)
+#define BUTTON5_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED)
+#define BUTTON5_DOUBLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED)
+#define BUTTON5_TRIPLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED)
+
+#define BUTTON_CTRL NCURSES_MOUSE_MASK(6, 0001L)
+#define BUTTON_SHIFT NCURSES_MOUSE_MASK(6, 0002L)
+#define BUTTON_ALT NCURSES_MOUSE_MASK(6, 0004L)
+#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(6, 0010L)
+
+#else
+
+#define BUTTON1_RESERVED_EVENT NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT)
+#define BUTTON2_RESERVED_EVENT NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT)
+#define BUTTON3_RESERVED_EVENT NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT)
+#define BUTTON4_RESERVED_EVENT NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT)
+
+#define BUTTON_CTRL NCURSES_MOUSE_MASK(5, 0001L)
+#define BUTTON_SHIFT NCURSES_MOUSE_MASK(5, 0002L)
+#define BUTTON_ALT NCURSES_MOUSE_MASK(5, 0004L)
+#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(5, 0010L)
+
+#endif
+
+#define ALL_MOUSE_EVENTS (REPORT_MOUSE_POSITION - 1)
/* macros to extract single event-bits from masks */
#define BUTTON_RELEASE(e, x) ((e) & (001 << (6 * ((x) - 1))))
@@ -42,8 +85,6 @@
#define BUTTON_TRIPLE_CLICK(e, x) ((e) & (020 << (6 * ((x) - 1))))
#define BUTTON_RESERVED_EVENT(e, x) ((e) & (040 << (6 * ((x) - 1))))
-typedef unsigned long mmask_t;
-
typedef struct
{
short id; /* ID to distinguish multiple devices */
@@ -57,7 +98,7 @@ extern NCURSES_EXPORT(int) ungetmouse (MEVENT *);
extern NCURSES_EXPORT(mmask_t) mousemask (mmask_t, mmask_t *);
extern NCURSES_EXPORT(bool) wenclose (const WINDOW *, int, int);
extern NCURSES_EXPORT(int) mouseinterval (int);
-extern NCURSES_EXPORT(bool) wmouse_trafo (const WINDOW* win,int* y, int* x, bool to_screen);
+extern NCURSES_EXPORT(bool) wmouse_trafo (const WINDOW*, int*, int*, bool);
extern NCURSES_EXPORT(bool) mouse_trafo (int*, int*, bool); /* generated */
#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)
@@ -105,13 +146,12 @@ extern NCURSES_EXPORT(void) trace (const unsigned int);
#define TRACE_CCALLS 0x0400 /* trace per-character calls */
#define TRACE_DATABASE 0x0800 /* trace read/write of terminfo/termcap data */
#define TRACE_ATTRS 0x1000 /* trace attribute updates */
-#define TRACE_MAXIMUM 0xffff /* maximum trace level */
+
+#define TRACE_SHIFT 13 /* number of bits in the trace masks */
+#define TRACE_MAXIMUM ((1 << TRACE_SHIFT) - 1) /* maximum trace level */
#if defined(TRACE) || defined(NCURSES_TEST)
extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable; /* enable optimizations */
-#ifdef _XOPEN_SOURCE_EXTENDED
-extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *);
-#endif
extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
#define OPTIMIZE_MVCUR 0x01 /* cursor movement optimization */
#define OPTIMIZE_HASHMAP 0x02 /* diff hashing to detect scrolls */
@@ -121,6 +161,8 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
#ifdef __cplusplus
+#ifndef NCURSES_NOMACROS
+
/* these names conflict with STL */
#undef box
#undef clear
@@ -128,6 +170,8 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *);
#undef move
#undef refresh
+#endif /* NCURSES_NOMACROS */
+
}
#endif
diff --git a/contrib/ncurses/include/curses.wide b/contrib/ncurses/include/curses.wide
index c5577541ba44..896ecd265435 100644
--- a/contrib/ncurses/include/curses.wide
+++ b/contrib/ncurses/include/curses.wide
@@ -1,21 +1,26 @@
-
+/*
+ * This file is part of ncurses, designed to be appended after curses.h.in
+ * (see that file for the relevant copyright).
+ */
#ifdef _XOPEN_SOURCE_EXTENDED
-/* $Id: curses.wide,v 1.23 2002/05/11 22:25:33 tom Exp $ */
+/* $Id: curses.wide,v 1.32 2006/05/27 19:44:23 tom Exp $ */
extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
-#define WACS_BSSB (&_nc_wacs['l'])
-#define WACS_SSBB (&_nc_wacs['m'])
-#define WACS_BBSS (&_nc_wacs['k'])
-#define WACS_SBBS (&_nc_wacs['j'])
-#define WACS_SBSS (&_nc_wacs['u'])
-#define WACS_SSSB (&_nc_wacs['t'])
-#define WACS_SSBS (&_nc_wacs['v'])
-#define WACS_BSSS (&_nc_wacs['w'])
-#define WACS_BSBS (&_nc_wacs['q'])
-#define WACS_SBSB (&_nc_wacs['x'])
-#define WACS_SSSS (&_nc_wacs['n'])
+#define NCURSES_WACS(c) (&_nc_wacs[(unsigned char)c])
+
+#define WACS_BSSB NCURSES_WACS('l')
+#define WACS_SSBB NCURSES_WACS('m')
+#define WACS_BBSS NCURSES_WACS('k')
+#define WACS_SBBS NCURSES_WACS('j')
+#define WACS_SBSS NCURSES_WACS('u')
+#define WACS_SSSB NCURSES_WACS('t')
+#define WACS_SSBS NCURSES_WACS('v')
+#define WACS_BSSS NCURSES_WACS('w')
+#define WACS_BSBS NCURSES_WACS('q')
+#define WACS_SBSB NCURSES_WACS('x')
+#define WACS_SSSS NCURSES_WACS('n')
#define WACS_ULCORNER WACS_BSSB
#define WACS_LLCORNER WACS_SSBB
@@ -29,31 +34,31 @@ extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs;
#define WACS_VLINE WACS_SBSB
#define WACS_PLUS WACS_SSSS
-#define WACS_S1 (&_nc_wacs['o']) /* scan line 1 */
-#define WACS_S9 (&_nc_wacs['s']) /* scan line 9 */
-#define WACS_DIAMOND (&_nc_wacs['`']) /* diamond */
-#define WACS_CKBOARD (&_nc_wacs['a']) /* checker board */
-#define WACS_DEGREE (&_nc_wacs['f']) /* degree symbol */
-#define WACS_PLMINUS (&_nc_wacs['g']) /* plus/minus */
-#define WACS_BULLET (&_nc_wacs['~']) /* bullet */
+#define WACS_S1 NCURSES_WACS('o') /* scan line 1 */
+#define WACS_S9 NCURSES_WACS('s') /* scan line 9 */
+#define WACS_DIAMOND NCURSES_WACS('`') /* diamond */
+#define WACS_CKBOARD NCURSES_WACS('a') /* checker board */
+#define WACS_DEGREE NCURSES_WACS('f') /* degree symbol */
+#define WACS_PLMINUS NCURSES_WACS('g') /* plus/minus */
+#define WACS_BULLET NCURSES_WACS('~') /* bullet */
/* Teletype 5410v1 symbols */
-#define WACS_LARROW (&_nc_wacs[',']) /* arrow left */
-#define WACS_RARROW (&_nc_wacs['+']) /* arrow right */
-#define WACS_DARROW (&_nc_wacs['.']) /* arrow down */
-#define WACS_UARROW (&_nc_wacs['-']) /* arrow up */
-#define WACS_BOARD (&_nc_wacs['h']) /* board of squares */
-#define WACS_LANTERN (&_nc_wacs['i']) /* lantern symbol */
-#define WACS_BLOCK (&_nc_wacs['0']) /* solid square block */
+#define WACS_LARROW NCURSES_WACS(',') /* arrow left */
+#define WACS_RARROW NCURSES_WACS('+') /* arrow right */
+#define WACS_DARROW NCURSES_WACS('.') /* arrow down */
+#define WACS_UARROW NCURSES_WACS('-') /* arrow up */
+#define WACS_BOARD NCURSES_WACS('h') /* board of squares */
+#define WACS_LANTERN NCURSES_WACS('i') /* lantern symbol */
+#define WACS_BLOCK NCURSES_WACS('0') /* solid square block */
/* ncurses extensions */
-#define WACS_S3 (&_nc_wacs['p']) /* scan line 3 */
-#define WACS_S7 (&_nc_wacs['r']) /* scan line 7 */
-#define WACS_LEQUAL (&_nc_wacs['y']) /* less/equal */
-#define WACS_GEQUAL (&_nc_wacs['z']) /* greater/equal */
-#define WACS_PI (&_nc_wacs['{']) /* Pi */
-#define WACS_NEQUAL (&_nc_wacs['|']) /* not equal */
-#define WACS_STERLING (&_nc_wacs['}']) /* UK pound sign */
+#define WACS_S3 NCURSES_WACS('p') /* scan line 3 */
+#define WACS_S7 NCURSES_WACS('r') /* scan line 7 */
+#define WACS_LEQUAL NCURSES_WACS('y') /* less/equal */
+#define WACS_GEQUAL NCURSES_WACS('z') /* greater/equal */
+#define WACS_PI NCURSES_WACS('{') /* Pi */
+#define WACS_NEQUAL NCURSES_WACS('|') /* not equal */
+#define WACS_STERLING NCURSES_WACS('}') /* UK pound sign */
/*
* Function prototypes for wide-character operations.
@@ -74,23 +79,23 @@ extern NCURSES_EXPORT(void) bkgrndset (const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) border_set (const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* generated:WIDEC */
extern NCURSES_EXPORT(int) box_set (WINDOW *, const cchar_t *, const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) echo_wchar (const cchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) erasewchar (wchar_t*); /* implemented:WIDEC */
+extern NCURSES_EXPORT(int) erasewchar (wchar_t*); /* implemented */
extern NCURSES_EXPORT(int) get_wch (wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) get_wstr (wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) getbkgrnd (cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) getcchar (const cchar_t *, wchar_t*, attr_t*, short*, void*); /* implemented */
extern NCURSES_EXPORT(int) getn_wstr (wint_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) hline_set (const cchar_t *, int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) in_wch (NCURSES_CONST cchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) in_wchnstr (NCURSES_CONST cchar_t *, int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) in_wchstr (NCURSES_CONST cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) in_wch (cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) in_wchnstr (cchar_t *, int); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) in_wchstr (cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) innwstr (wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) ins_nwstr (const wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) ins_wch (const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) ins_wstr (const wchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) inwstr (wchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(char*) key_name (wchar_t); /* implemented */
-extern NCURSES_EXPORT(int) killwchar (wchar_t *); /* implemented:WIDEC */
+extern NCURSES_EXPORT(NCURSES_CONST char*) key_name (wchar_t); /* implemented */
+extern NCURSES_EXPORT(int) killwchar (wchar_t *); /* implemented */
extern NCURSES_EXPORT(int) mvadd_wch (int, int, const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvadd_wchnstr (int, int, const cchar_t *, int);/* generated:WIDEC */
extern NCURSES_EXPORT(int) mvadd_wchstr (int, int, const cchar_t *); /* generated:WIDEC */
@@ -100,9 +105,9 @@ extern NCURSES_EXPORT(int) mvget_wch (int, int, wint_t *); /* generated:WIDEC *
extern NCURSES_EXPORT(int) mvget_wstr (int, int, wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvgetn_wstr (int, int, wint_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvhline_set (int, int, const cchar_t *, int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvin_wch (int, int, NCURSES_CONST cchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, NCURSES_CONST cchar_t *, int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvin_wchstr (int, int, NCURSES_CONST cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvin_wch (int, int, cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, cchar_t *, int); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvin_wchstr (int, int, cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvinnwstr (int, int, wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvins_nwstr (int, int, const wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvins_wch (int, int, const cchar_t *); /* generated:WIDEC */
@@ -118,22 +123,22 @@ extern NCURSES_EXPORT(int) mvwget_wch (WINDOW *, int, int, wint_t *); /* generat
extern NCURSES_EXPORT(int) mvwget_wstr (WINDOW *, int, int, wint_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwgetn_wstr (WINDOW *, int, int, wint_t *, int);/* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwhline_set (WINDOW *, int, int, const cchar_t *, int);/* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, NCURSES_CONST cchar_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, NCURSES_CONST cchar_t *,int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, NCURSES_CONST cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, cchar_t *,int); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwinnwstr (WINDOW *, int, int, wchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwins_nwstr (WINDOW *, int,int, const wchar_t *,int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwins_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwinwstr (WINDOW *, int, int, wchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* missing */
+extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* implemented */
extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, short, const void *); /* implemented */
-extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int); /* missing */
-extern NCURSES_EXPORT(attr_t) term_attrs (void); /* implemented:WIDEC */
-extern NCURSES_EXPORT(int) unget_wch (const wchar_t); /* implemented:WIDEC */
-extern NCURSES_EXPORT(int) vid_attr (attr_t, short, void *); /* implemented:WIDEC */
-extern NCURSES_EXPORT(int) vid_puts (attr_t, short, void *, int (*)(int)); /* implemented:WIDEC */
+extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int); /* implemented */
+extern NCURSES_EXPORT(attr_t) term_attrs (void); /* implemented */
+extern NCURSES_EXPORT(int) unget_wch (const wchar_t); /* implemented */
+extern NCURSES_EXPORT(int) vid_attr (attr_t, short, void *); /* implemented */
+extern NCURSES_EXPORT(int) vid_puts (attr_t, short, void *, int (*)(int)); /* implemented */
extern NCURSES_EXPORT(int) vline_set (const cchar_t *, int); /* generated:WIDEC */
extern NCURSES_EXPORT(int) wadd_wch (WINDOW *,const cchar_t *); /* implemented */
extern NCURSES_EXPORT(int) wadd_wchnstr (WINDOW *,const cchar_t *,int); /* implemented */
@@ -146,12 +151,12 @@ extern NCURSES_EXPORT(int) wborder_set (WINDOW *,const cchar_t*,const cchar_t*,c
extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implemented */
extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *); /* implemented */
extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *); /* generated:WIDEC */
-extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *); /* implemented */
+extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *,wint_t *, int); /* implemented */
extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int); /* implemented */
-extern NCURSES_EXPORT(int) win_wch (WINDOW *, NCURSES_CONST cchar_t *); /* implemented */
-extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, NCURSES_CONST cchar_t *, int); /* implemented */
-extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, NCURSES_CONST cchar_t *); /* generated:WIDEC */
+extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *); /* implemented */
+extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int); /* implemented */
+extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, cchar_t *); /* generated:WIDEC */
extern NCURSES_EXPORT(int) winnwstr (WINDOW *, wchar_t *, int); /* implemented */
extern NCURSES_EXPORT(int) wins_nwstr (WINDOW *, const wchar_t *, int); /* implemented */
extern NCURSES_EXPORT(int) wins_wch (WINDOW *, const cchar_t *); /* implemented */
@@ -160,6 +165,8 @@ extern NCURSES_EXPORT(int) winwstr (WINDOW *, wchar_t *); /* implemented */
extern NCURSES_EXPORT(wchar_t*) wunctrl (cchar_t *); /* implemented */
extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* implemented */
+#ifndef NCURSES_NOMACROS
+
/*
* XSI curses macros for XPG4 conformance.
*/
@@ -186,11 +193,9 @@ extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* imple
#define ins_wch(c) wins_wch(stdscr,c)
#define ins_wstr(t) wins_wstr(stdscr,t)
#define inwstr(c) winwstr(stdscr,c)
-#define vid_attr(a,pair,opts) vidattr(a)
#define vline_set(c,n) wvline_set(stdscr,c,n)
#define wadd_wchstr(win,str) wadd_wchnstr(win,str,-1)
#define waddwstr(win,wstr) waddnwstr(win,wstr,-1)
-#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | COLOR_PAIR(p)), OK)
#define wget_wstr(w,t) wgetn_wstr(w,t,-1)
#define wgetbkgrnd(win,wch) (*wch = win->_bkgrnd, OK)
#define win_wchstr(w,c) win_wchnstr(w,c,-1)
@@ -234,4 +239,11 @@ extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* imple
#define mvwinwstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winwstr(win,c))
#define mvwvline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline_set(win,c,n))
+#endif /* NCURSES_NOMACROS */
+
+#if defined(TRACE) || defined(NCURSES_TEST)
+extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *);
+extern NCURSES_EXPORT(const char *) _nc_viswibuf(const wint_t *);
+#endif
+
#endif /* _XOPEN_SOURCE_EXTENDED */
diff --git a/contrib/ncurses/include/hashed_db.h b/contrib/ncurses/include/hashed_db.h
new file mode 100644
index 000000000000..4dd3933111a8
--- /dev/null
+++ b/contrib/ncurses/include/hashed_db.h
@@ -0,0 +1,67 @@
+/****************************************************************************
+ * Copyright (c) 2006 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Author: Thomas E. Dickey 2006 *
+ ****************************************************************************/
+
+/*
+ * $Id: hashed_db.h,v 1.5 2006/08/19 15:58:34 tom Exp $
+ */
+
+#ifndef HASHED_DB_H
+#define HASHED_DB_H 1
+
+#include <curses.h>
+
+#if USE_HASHED_DB
+
+#include <db.h>
+
+#ifndef DBN_SUFFIX
+#define DBM_SUFFIX ".db"
+#endif
+
+#ifdef DB_VERSION_MAJOR
+#define HASHED_DB_API DB_VERSION_MAJOR
+#else
+#define HASHED_DB_API 1 /* e.g., db 1.8.5 */
+#endif
+
+extern NCURSES_EXPORT(DB *) _nc_db_open(const char * /* path */, bool /* modify */);
+extern NCURSES_EXPORT(bool) _nc_db_have_data(DBT * /* key */, DBT * /* data */, char ** /* buffer */, int * /* size */);
+extern NCURSES_EXPORT(bool) _nc_db_have_index(DBT * /* key */, DBT * /* data */, char ** /* buffer */, int * /* size */);
+extern NCURSES_EXPORT(int) _nc_db_close(DB * /* db */);
+extern NCURSES_EXPORT(int) _nc_db_first(DB * /* db */, DBT * /* key */, DBT * /* data */);
+extern NCURSES_EXPORT(int) _nc_db_next(DB * /* db */, DBT * /* key */, DBT * /* data */);
+extern NCURSES_EXPORT(int) _nc_db_get(DB * /* db */, DBT * /* key */, DBT * /* data */);
+extern NCURSES_EXPORT(int) _nc_db_put(DB * /* db */, DBT * /* key */, DBT * /* data */);
+
+#endif
+
+#endif /* HASHED_DB_H */
diff --git a/contrib/ncurses/include/nc_alloc.h b/contrib/ncurses/include/nc_alloc.h
index c7317a096c52..ad51408761e7 100644
--- a/contrib/ncurses/include/nc_alloc.h
+++ b/contrib/ncurses/include/nc_alloc.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -29,11 +29,15 @@
/****************************************************************************
* Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 *
****************************************************************************/
-/* $Id: nc_alloc.h,v 1.10 2001/12/08 23:49:44 tom Exp $ */
+/* $Id: nc_alloc.h,v 1.13 2005/01/16 00:27:35 tom Exp $ */
#ifndef NC_ALLOC_included
#define NC_ALLOC_included 1
+#ifdef __cplusplus
+extern "C" {
+#endif
+
#if HAVE_LIBDMALLOC
#include <dmalloc.h> /* Gray Watson's library */
#else
@@ -48,6 +52,13 @@
#define HAVE_LIBDBMALLOC 0
#endif
+#if HAVE_LIBMPATROL
+#include <mpatrol.h> /* Memory-Patrol library */
+#else
+#undef HAVE_LIBMPATROL
+#define HAVE_LIBMPATROL 0
+#endif
+
#ifndef NO_LEAKS
#define NO_LEAKS 0
#endif
@@ -55,9 +66,9 @@
#if HAVE_LIBDBMALLOC || HAVE_LIBDMALLOC || NO_LEAKS
#define HAVE_NC_FREEALL 1
struct termtype;
-extern void _nc_free_and_exit(int) GCC_NORETURN;
-extern void _nc_free_tparm(void);
-extern void _nc_leaks_dump_entry(void);
+extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN;
+extern NCURSES_EXPORT(void) _nc_free_tparm(void);
+extern NCURSES_EXPORT(void) _nc_leaks_dump_entry(void);
#define ExitProgram(code) _nc_free_and_exit(code)
#endif
@@ -80,4 +91,8 @@ extern NCURSES_EXPORT(char *) _nc_strdup(const char *);
#define typeCalloc(type,elts) (type *)calloc((elts),sizeof(type))
#define typeRealloc(type,elts,ptr) (type *)_nc_doalloc(ptr, (elts)*sizeof(type))
+#ifdef __cplusplus
+}
+#endif
+
#endif /* NC_ALLOC_included */
diff --git a/contrib/ncurses/include/nc_tparm.h b/contrib/ncurses/include/nc_tparm.h
new file mode 100644
index 000000000000..d1d769be9a27
--- /dev/null
+++ b/contrib/ncurses/include/nc_tparm.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+ * Copyright (c) 2006 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Author: Thomas E. Dickey 2006 *
+ ****************************************************************************/
+
+/* $Id: nc_tparm.h,v 1.4 2006/11/26 00:49:25 tom Exp $ */
+
+/*
+ * Cast parameters past the formatting-string for tparm() to match the
+ * assumption of the varargs code.
+ */
+#define TPARM_ARG long
+#define TPARM_N(n) (TPARM_ARG)(n)
+
+#define TPARM_9(a,b,c,d,e,f,g,h,i,j) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g),TPARM_N(h),TPARM_N(i),TPARM_N(j))
+
+#if NCURSES_TPARM_VARARGS
+#define TPARM_8(a,b,c,d,e,f,g,h,i) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g),TPARM_N(h),TPARM_N(i))
+#define TPARM_7(a,b,c,d,e,f,g,h) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g),TPARM_N(h))
+#define TPARM_6(a,b,c,d,e,f,g) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f),TPARM_N(g))
+#define TPARM_5(a,b,c,d,e,f) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e),TPARM_N(f))
+#define TPARM_4(a,b,c,d,e) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d),TPARM_N(e))
+#define TPARM_3(a,b,c,d) tparm(a,TPARM_N(b),TPARM_N(c),TPARM_N(d))
+#define TPARM_2(a,b,c) tparm(a,TPARM_N(b),TPARM_N(c))
+#define TPARM_1(a,b) tparm(a,TPARM_N(b))
+#define TPARM_0(a) tparm(a)
+#else
+#define TPARM_8(a,b,c,d,e,f,g,h,i) TPARM_9(a,b,c,d,e,f,g,h,i,0)
+#define TPARM_7(a,b,c,d,e,f,g,h) TPARM_8(a,b,c,d,e,f,g,h,0)
+#define TPARM_6(a,b,c,d,e,f,g) TPARM_7(a,b,c,d,e,f,g,0)
+#define TPARM_5(a,b,c,d,e,f) TPARM_6(a,b,c,d,e,f,0)
+#define TPARM_4(a,b,c,d,e) TPARM_5(a,b,c,d,e,0)
+#define TPARM_3(a,b,c,d) TPARM_4(a,b,c,d,0)
+#define TPARM_2(a,b,c) TPARM_3(a,b,c,0)
+#define TPARM_1(a,b) TPARM_2(a,b,0)
+#define TPARM_1(a,b) TPARM_2(a,b,0)
+#define TPARM_0(a) TPARM_1(a,0)
+#endif
diff --git a/contrib/ncurses/include/ncurses_cfg.hin b/contrib/ncurses/include/ncurses_cfg.hin
index 4d40dab8848b..3f8a482a5d84 100644
--- a/contrib/ncurses/include/ncurses_cfg.hin
+++ b/contrib/ncurses/include/ncurses_cfg.hin
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -30,7 +30,7 @@
* Author: Thomas E. Dickey <dickey@clark.net> 1997 *
****************************************************************************/
/*
- * $Id: ncurses_cfg.hin,v 1.3 2000/09/02 17:13:32 tom Exp $
+ * $Id: ncurses_cfg.hin,v 1.7 2005/01/02 01:26:58 tom Exp $
*
* This is a template-file used to generate the "ncurses_cfg.h" file.
*
@@ -39,8 +39,8 @@
* 971222) to autoconf 2.12 or 2.13 to do this.
*
* See:
- * http://dickey.his.com/autoconf/
- * ftp://dickey.his.com/autoconf/
+ * http://invisible-island.net/autoconf/
+ * ftp://invisible-island.net/autoconf/
*/
#ifndef NC_CONFIG_H
#define NC_CONFIG_H
@@ -59,4 +59,14 @@
#endif
#endif
+ /* On HP-UX, the C compiler doesn't grok mbstate_t without
+ -D_XOPEN_SOURCE=500. However, this causes problems on
+ IRIX. So, we #define mbstate_t to int in configure.in
+ only for the C compiler if needed. */
+#ifndef __cplusplus
+#ifdef NEED_MBSTATE_T_DEF
+#define mbstate_t int
+#endif
+#endif
+
#endif /* NC_CONFIG_H */
diff --git a/contrib/ncurses/include/ncurses_defs b/contrib/ncurses/include/ncurses_defs
index f4c46cb2c1cf..bba06615d1f2 100644
--- a/contrib/ncurses/include/ncurses_defs
+++ b/contrib/ncurses/include/ncurses_defs
@@ -1,6 +1,6 @@
-# $Id: ncurses_defs,v 1.14 2002/05/11 19:18:32 tom Exp $
+# $Id: ncurses_defs,v 1.30 2006/08/05 19:27:02 tom Exp $
##############################################################################
-# Copyright (c) 2000-2001,2002 Free Software Foundation, Inc. #
+# Copyright (c) 2000-2005,2006 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
# copy of this software and associated documentation files (the "Software"), #
@@ -45,53 +45,77 @@ GCC_NORETURN /* nothing */
GCC_UNUSED /* nothing */
HAVE_BIG_CORE
HAVE_BSD_CGETENT
+HAVE_BSD_SIGNAL_H
+HAVE_BTOWC
HAVE_BUILTIN_H
HAVE_DIRENT_H
HAVE_ERRNO
HAVE_FCNTL_H
+HAVE_FILTER 1
HAVE_FORM_H
+HAVE_GETBEGX 1
+HAVE_GETCURX 1
HAVE_GETCWD
HAVE_GETEGID
HAVE_GETEUID
+HAVE_GETMAXX 1
HAVE_GETNSTR
HAVE_GETOPT_H
HAVE_GETTIMEOFDAY
HAVE_GETTTYNAM
+HAVE_GETWIN 1
+HAVE_GPM_H
HAVE_GPP_BUILTIN_H
HAVE_GXX_BUILTIN_H
HAVE_HAS_KEY
HAVE_ISASCII
HAVE_ISSETUGID
+HAVE_LANGINFO_CODESET
+HAVE_LIBC_H
HAVE_LIBDBMALLOC
HAVE_LIBDMALLOC
HAVE_LIBFORM
HAVE_LIBGPM
HAVE_LIBMENU
+HAVE_LIBMPATROL
HAVE_LIBPANEL
HAVE_LIMITS_H
HAVE_LINK
HAVE_LOCALE_H
HAVE_LONG_FILE_NAMES
-HAVE_MEMCCPY
+HAVE_MBLEN
+HAVE_MBRLEN
+HAVE_MBRTOWC
+HAVE_MBTOWC
HAVE_MENU_H
HAVE_MKSTEMP
+HAVE_MVVLINE 1
+HAVE_MVWVLINE 1
HAVE_NANOSLEEP
HAVE_NC_ALLOC_H
HAVE_PANEL_H
HAVE_POLL
HAVE_POLL_H
+HAVE_PURIFY
+HAVE_PUTWC
+HAVE_PUTWIN 1
HAVE_REGEXPR_H_FUNCS
HAVE_REGEXP_H_FUNCS
HAVE_REGEX_H_FUNCS
HAVE_REMOVE
HAVE_RESIZETERM
+HAVE_RESIZE_TERM
+HAVE_RIPOFFLINE 1
HAVE_SELECT
HAVE_SETBUF
HAVE_SETBUFFER
+HAVE_SETUPTERM 1
HAVE_SETVBUF
HAVE_SIGACTION
HAVE_SIGVEC
HAVE_SIZECHANGE
+HAVE_SLK_COLOR
+HAVE_SLK_INIT 1
HAVE_STRDUP
HAVE_STRSTR
HAVE_SYMLINK
@@ -107,10 +131,17 @@ HAVE_SYS_TIME_SELECT
HAVE_TCGETATTR
HAVE_TCGETPGRP
HAVE_TELL
+HAVE_TERMATTRS 1
HAVE_TERMIOS_H
HAVE_TERMIO_H
+HAVE_TERMNAME 1
+HAVE_TERM_H 1
+HAVE_TGETENT 1
+HAVE_TIGETNUM 1
+HAVE_TIGETSTR 1
HAVE_TIMES
HAVE_TTYENT_H
+HAVE_TYPEAHEAD 1
HAVE_TYPEINFO
HAVE_TYPE_ATTR_T
HAVE_TYPE_SIGACTION
@@ -120,13 +151,17 @@ HAVE_USE_DEFAULT_COLORS
HAVE_VFSCANF
HAVE_VSNPRINTF
HAVE_VSSCANF
+HAVE_WCTOB
+HAVE_WCTOMB
+HAVE_WCTYPE_H
+HAVE_WINSSTR 1
HAVE_WORKING_POLL
HAVE_WRESIZE
HAVE__DOSCAN
MIXEDCASE_FILENAMES
NCURSES_EXPANDED
+NCURSES_EXT_COLORS
NCURSES_EXT_FUNCS
-NCURSES_NOMACROS
NCURSES_NO_PADDING
NCURSES_PATHSEP ':'
NDEBUG
@@ -147,7 +182,9 @@ USE_DATABASE
USE_GETCAP
USE_GETCAP_CACHE
USE_HARD_TABS
+USE_HASHED_DB
USE_HASHMAP
+USE_HOME_TERMINFO
USE_LINKS
USE_MY_MEMMOVE
USE_OK_BCOPY
@@ -159,6 +196,7 @@ USE_STDIO_VSCAN
USE_STRSTREAM_VSCAN
USE_STRSTREAM_VSCAN_CAST
USE_SYMLINKS
+USE_SYSMOUSE
USE_TERMCAP
USE_WIDEC_SUPPORT
USE_XMC_SUPPORT
diff --git a/contrib/ncurses/include/ncurses_dll.h b/contrib/ncurses/include/ncurses_dll.h
index c961c3e0a49e..c47e5ec548e2 100644
--- a/contrib/ncurses/include/ncurses_dll.h
+++ b/contrib/ncurses/include/ncurses_dll.h
@@ -1,10 +1,41 @@
-/* $Id: ncurses_dll.h,v 1.2 2001/12/09 01:36:34 tom Exp $ */
+/****************************************************************************
+ * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+ * "Software"), to deal in the Software without restriction, including *
+ * without limitation the rights to use, copy, modify, merge, publish, *
+ * distribute, distribute with modifications, sublicense, and/or sell *
+ * copies of the Software, and to permit persons to whom the Software is *
+ * furnished to do so, subject to the following conditions: *
+ * *
+ * The above copyright notice and this permission notice shall be included *
+ * in all copies or substantial portions of the Software. *
+ * *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
+ * *
+ * Except as contained in this notice, the name(s) of the above copyright *
+ * holders shall not be used in advertising or otherwise to promote the *
+ * sale, use or other dealings in this Software without prior written *
+ * authorization. *
+ ****************************************************************************/
+/* $Id: ncurses_dll.h,v 1.5 2006/04/22 22:07:51 tom Exp $ */
#ifndef NCURSES_DLL_H_incl
#define NCURSES_DLL_H_incl 1
-#undef NCURSES_DLL /* cygwin dll not implemented */
-#define NCURSES_STATIC /* cygwin dll not implemented */
+/* no longer needed on cygwin or mingw, thanks to auto-import */
+/* but this structure may be useful at some point for an MSVC build */
+/* so, for now unconditionally define the important flags */
+/* "the right way" for proper static and dll+auto-import behavior */
+#undef NCURSES_DLL
+#define NCURSES_STATIC
#if defined(__CYGWIN__)
# if defined(NCURSES_DLL)
@@ -14,8 +45,8 @@
# endif
# undef NCURSES_IMPEXP
# undef NCURSES_API
-# undef NCURSES_EXPORT(type)
-# undef NCURSES_EXPORT_VAR(type)
+# undef NCURSES_EXPORT
+# undef NCURSES_EXPORT_VAR
# if defined(NCURSES_DLL)
/* building a DLL */
# define NCURSES_IMPEXP __declspec(dllexport)
diff --git a/contrib/ncurses/include/term_entry.h b/contrib/ncurses/include/term_entry.h
index a066be9948d1..c880c3a72175 100644
--- a/contrib/ncurses/include/term_entry.h
+++ b/contrib/ncurses/include/term_entry.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998,1999,2000 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2001,2004 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -29,9 +29,10 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1998-2004 *
****************************************************************************/
-/* $Id: term_entry.h,v 1.32 2001/03/24 21:53:10 tom Exp $ */
+/* $Id: term_entry.h,v 1.34 2005/07/16 21:15:07 tom Exp $ */
/*
* term_entry.h -- interface to entry-manipulation code
@@ -56,7 +57,7 @@ typedef struct entry {
{
char *name;
struct entry *link;
- long line;
+ long line;
}
uses[MAX_USES];
int ncrosslinks;
@@ -133,6 +134,9 @@ extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *);
/* lib_acs.c */
extern NCURSES_EXPORT(void) _nc_init_acs (void); /* corresponds to traditional 'init_acs()' */
+/* lib_termcap.c: trim sgr0 string for termcap users */
+extern NCURSES_EXPORT(char *) _nc_trim_sgr0 (TERMTYPE *);
+
/* parse_entry.c: entry-parsing code */
#if NCURSES_XNAMES
extern NCURSES_EXPORT_VAR(bool) _nc_user_definable;
@@ -148,9 +152,11 @@ extern NCURSES_EXPORT(void) _nc_write_entry (TERMTYPE *const);
/* comp_parse.c: entry list handling */
extern NCURSES_EXPORT(void) _nc_read_entry_source (FILE*, char*, int, bool, bool (*)(ENTRY*));
extern NCURSES_EXPORT(bool) _nc_entry_match (char *, char *);
-extern NCURSES_EXPORT(int) _nc_resolve_uses (bool);
+extern NCURSES_EXPORT(int) _nc_resolve_uses (bool); /* obs 20040705 */
+extern NCURSES_EXPORT(int) _nc_resolve_uses2 (bool, bool);
extern NCURSES_EXPORT(void) _nc_free_entries (ENTRY *);
-extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype)(TERMTYPE *);
+extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype)(TERMTYPE *); /* obs 20040705 */
+extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE *, bool);
/* trace_xnames.c */
extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *);
diff --git a/contrib/ncurses/include/tic.h b/contrib/ncurses/include/tic.h
index 3a3d8e24c0f2..7d9e9d5b7d1c 100644
--- a/contrib/ncurses/include/tic.h
+++ b/contrib/ncurses/include/tic.h
@@ -1,5 +1,5 @@
/****************************************************************************
- * Copyright (c) 1998-2000,2001 Free Software Foundation, Inc. *
+ * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
@@ -29,10 +29,11 @@
/****************************************************************************
* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 *
* and: Eric S. Raymond <esr@snark.thyrsus.com> *
+ * and: Thomas E. Dickey 1996 on *
****************************************************************************/
/*
- * $Id: tic.h,v 1.41 2002/06/01 19:07:02 tom Exp $
+ * $Id: tic.h,v 1.55 2006/08/19 14:17:49 tom Exp $
* tic.h - Global variables and structures for the terminfo
* compiler.
*/
@@ -76,6 +77,15 @@ extern "C" {
#define MAGIC 0432 /* first two bytes of a compiled entry */
+#undef BYTE
+#define BYTE(p,n) (unsigned char)((p)[n])
+
+#define IS_NEG1(p) ((BYTE(p,0) == 0377) && (BYTE(p,1) == 0377))
+#define IS_NEG2(p) ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377))
+#define LOW_MSB(p) (BYTE(p,0) + 256*BYTE(p,1))
+
+#define IS_TIC_MAGIC(p) (LOW_MSB(p) == MAGIC)
+
/*
* The "maximum" here is misleading; XSI guarantees minimum values, which a
* given implementation may exceed.
@@ -83,13 +93,14 @@ extern "C" {
#define MAX_NAME_SIZE 512 /* maximum legal name field size (XSI:127) */
#define MAX_ENTRY_SIZE 4096 /* maximum legal entry size */
-/* The maximum size of individual name or alias is guaranteed in XSI to
- * be 14, since that corresponds to the older filename lengths. Newer
- * systems allow longer aliases, though not many terminal descriptions
- * are written to use them.
+/*
+ * The maximum size of individual name or alias is guaranteed in XSI to be at
+ * least 14, since that corresponds to the older filename lengths. Newer
+ * systems allow longer aliases, though not many terminal descriptions are
+ * written to use them. The MAX_ALIAS symbol is used for warnings.
*/
#if HAVE_LONG_FILE_NAMES
-#define MAX_ALIAS 32 /* POSIX minimum for PATH_MAX */
+#define MAX_ALIAS 32 /* smaller than POSIX minimum for PATH_MAX */
#else
#define MAX_ALIAS 14 /* SVr3 filename length */
#endif
@@ -104,10 +115,10 @@ extern "C" {
*/
#define MAX_DEBUG_LEVEL 15
-#define DEBUG_LEVEL(n) ((n) << 12) /* see TRACE_MAXIMUM */
+#define DEBUG_LEVEL(n) ((n) << TRACE_SHIFT)
#define set_trace_level(n) \
- _nc_tracing &= DEBUG_LEVEL(MAX_DEBUG_LEVEL), \
+ _nc_tracing &= DEBUG_LEVEL(MAX_DEBUG_LEVEL), \
_nc_tracing |= DEBUG_LEVEL(n)
#ifdef TRACE
@@ -203,8 +214,6 @@ struct alias
const char *source;
};
-extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
-
extern NCURSES_EXPORT_VAR(const struct name_table_entry * const) _nc_info_hash_table[];
extern NCURSES_EXPORT_VAR(const struct name_table_entry * const) _nc_cap_hash_table[];
@@ -217,18 +226,18 @@ extern NCURSES_EXPORT(const struct name_table_entry * const *) _nc_get_hash_tabl
#define NOTFOUND ((struct name_table_entry *) 0)
/* out-of-band values for representing absent capabilities */
-#define ABSENT_BOOLEAN (-1) /* 255 */
+#define ABSENT_BOOLEAN ((signed char)-1) /* 255 */
#define ABSENT_NUMERIC (-1)
#define ABSENT_STRING (char *)0
/* out-of-band values for representing cancels */
-#define CANCELLED_BOOLEAN (char)(-2) /* 254 */
+#define CANCELLED_BOOLEAN ((signed char)-2) /* 254 */
#define CANCELLED_NUMERIC (-2)
#define CANCELLED_STRING (char *)(-1)
#define VALID_BOOLEAN(s) ((unsigned char)(s) <= 1) /* reject "-1" */
#define VALID_NUMERIC(s) ((s) >= 0)
-#define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING)
+#define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING)
/* termcap entries longer than this may break old binaries */
#define MAX_TERMCAP_LENGTH 1023
@@ -241,6 +250,10 @@ extern NCURSES_EXPORT(const struct name_table_entry * const *) _nc_get_hash_tabl
#endif
/* access.c */
+extern NCURSES_EXPORT(unsigned) _nc_pathlast (const char *);
+extern NCURSES_EXPORT(bool) _nc_is_abs_path (const char *);
+extern NCURSES_EXPORT(bool) _nc_is_dir_path (const char *);
+extern NCURSES_EXPORT(bool) _nc_is_file_path (const char *);
extern NCURSES_EXPORT(char *) _nc_basename (char *);
extern NCURSES_EXPORT(char *) _nc_rootname (char *);
@@ -266,11 +279,12 @@ extern NCURSES_EXPORT_VAR(long) _nc_start_line;
#define SYN_TERMCAP 1
/* comp_error.c: warning & abort messages */
-extern NCURSES_EXPORT(void) _nc_set_source (const char *const name);
+extern NCURSES_EXPORT(const char *) _nc_get_source (void);
+extern NCURSES_EXPORT(void) _nc_err_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_get_type (char *name);
-extern NCURSES_EXPORT(void) _nc_set_type (const char *const name);
+extern NCURSES_EXPORT(void) _nc_set_source (const char *const);
+extern NCURSES_EXPORT(void) _nc_set_type (const char *const);
extern NCURSES_EXPORT(void) _nc_syserr_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
-extern NCURSES_EXPORT(void) _nc_err_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_warning (const char *const,...) GCC_PRINTFLIKE(1,2);
extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings;
@@ -278,20 +292,50 @@ extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings;
extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int);
/* comp_scan.c: decode string from readable form */
-extern NCURSES_EXPORT(char) _nc_trans_string (char *, char *);
+extern NCURSES_EXPORT(int) _nc_trans_string (char *, char *);
/* captoinfo.c: capability conversion */
extern NCURSES_EXPORT(char *) _nc_captoinfo (const char *, const char *, int const);
extern NCURSES_EXPORT(char *) _nc_infotocap (const char *, const char *, int const);
+/* home_terminfo.c */
+extern NCURSES_EXPORT(char *) _nc_home_terminfo (void);
+
+/* lib_tparm.c */
+#define NUM_PARM 9
+
+extern NCURSES_EXPORT_VAR(int) _nc_tparm_err;
+
+extern NCURSES_EXPORT(int) _nc_tparm_analyze(const char *, char **, int *);
+
/* lib_tputs.c */
extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */
/* comp_main.c: compiler main */
extern const char * _nc_progname;
-/* read_entry.c */
+/* db_iterator.c */
+typedef enum {
+ dbdTIC = 0,
+#if USE_DATABASE
+ dbdEnvOnce,
+ dbdHome,
+ dbdEnvList,
+ dbdCfgList,
+ dbdCfgOnce,
+#endif
+#if USE_TERMCAP
+ dbdEnvOnce2,
+ dbdEnvList2,
+ dbdCfgList2,
+#endif
+ dbdLAST
+} DBDIRS;
+
+extern NCURSES_EXPORT(const char *) _nc_next_db(DBDIRS *, int *);
extern NCURSES_EXPORT(const char *) _nc_tic_dir (const char *);
+extern NCURSES_EXPORT(void) _nc_first_db(DBDIRS *, int *);
+extern NCURSES_EXPORT(void) _nc_last_db(void);
/* write_entry.c */
extern NCURSES_EXPORT(int) _nc_tic_written (void);