diff options
author | peter <peter@FreeBSD.org> | 1999-08-24 01:06:48 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 1999-08-24 01:06:48 +0000 |
commit | bacd15cb1fff2dee94d390e0f84c147cd82ea148 (patch) | |
tree | ad214c5b2c8142ad6dc6d2ce3a9c83e6317d7f77 /contrib/ncurses/include | |
download | FreeBSD-src-bacd15cb1fff2dee94d390e0f84c147cd82ea148.zip FreeBSD-src-bacd15cb1fff2dee94d390e0f84c147cd82ea148.tar.gz |
Import unmodified (but trimmed) ncurses 5.0 prerelease 990821.
This contains the full eti (panel, form, menu) extensions.
bmake glue to follow.
Obtained from: ftp://ftp.clark.net/pub/dickey/ncurses
Diffstat (limited to 'contrib/ncurses/include')
-rw-r--r-- | contrib/ncurses/include/Caps | 1314 | ||||
-rwxr-xr-x | contrib/ncurses/include/MKhashsize.sh | 14 | ||||
-rwxr-xr-x | contrib/ncurses/include/MKparametrized.sh | 34 | ||||
-rw-r--r-- | contrib/ncurses/include/MKterm.h.awk.in | 310 | ||||
-rw-r--r-- | contrib/ncurses/include/Makefile.in | 106 | ||||
-rw-r--r-- | contrib/ncurses/include/capdefaults.c | 87 | ||||
-rw-r--r-- | contrib/ncurses/include/curses.h.in | 1346 | ||||
-rwxr-xr-x | contrib/ncurses/include/edit_cfg.sh | 66 | ||||
-rw-r--r-- | contrib/ncurses/include/headers | 34 | ||||
-rw-r--r-- | contrib/ncurses/include/nc_alloc.h | 72 | ||||
-rw-r--r-- | contrib/ncurses/include/nc_panel.h | 66 | ||||
-rw-r--r-- | contrib/ncurses/include/ncurses_cfg.hin | 56 | ||||
-rw-r--r-- | contrib/ncurses/include/term_entry.h | 155 | ||||
-rw-r--r-- | contrib/ncurses/include/termcap.h.in | 71 | ||||
-rw-r--r-- | contrib/ncurses/include/tic.h | 274 | ||||
-rw-r--r-- | contrib/ncurses/include/unctrl.h.in | 63 |
16 files changed, 4068 insertions, 0 deletions
diff --git a/contrib/ncurses/include/Caps b/contrib/ncurses/include/Caps new file mode 100644 index 0000000..7c10212 --- /dev/null +++ b/contrib/ncurses/include/Caps @@ -0,0 +1,1314 @@ +############################################################################## +# Copyright (c) 1998 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 +# and: Eric S. Raymond <esr@snark.thyrsus.com> +# +# $Id: Caps,v 1.24 1999/01/17 02:01:44 tom Exp $ +# +# This is the master termcap/terminfo capability table. +# +# This table is used to generate initializers for tables that drive tic, +# infocmp, and the library compilation code used to support the termcap +# 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: Lead with `Y' if capability should be emitted in termcap +# translations, `-' otherwise +# Column 6: capability description +# +# The codes following [Y-] in column 5 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 +# a * or **. +# +# 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 (shift, sets parity 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 can't 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 +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 +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 can't 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 +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 YB-G- backspace key +key_catab ktbc str ka -B-G-* clear-all-tabs key +key_clear kclr str kC -B-G-* clear-screen or erase key +key_ctab kctab str kt -B-G-* clear-tab key +key_dc kdch1 str kD YB-G- delete-character key +key_dl kdl1 str kL -B-G-* delete-line key +key_down kcud1 str kd YBCGE down-arrow key +key_eic krmir str kM -B-G-* sent by rmir or smir in insert mode +key_eol kel str kE -B-G-* clear-to-end-of-line key +key_eos ked str kS -B-G-* clear-to-end-of-screen key +key_f0 kf0 str k0 YBCGE F0 function key +key_f1 kf1 str k1 YBCGE F1 function key +key_f10 kf10 str k; ----E F10 function key +key_f2 kf2 str k2 YBCGE F2 function key +key_f3 kf3 str k3 YBCGE F3 function key +key_f4 kf4 str k4 YBCGE F4 function key +key_f5 kf5 str k5 YBCGE F5 function key +key_f6 kf6 str k6 YBCGE F6 function key +key_f7 kf7 str k7 YBCGE F7 function key +key_f8 kf8 str k8 YBCGE F8 function key +key_f9 kf9 str k9 YBCGE F9 function key +key_home khome str kh YBCGE home key +key_ic kich1 str kI YB-GE insert-character key +key_il kil1 str kA -B-G-* insert-line key +key_left kcub1 str kl YBCGE left-arrow key +key_ll kll str kH YB-G- lower-left key (home down) +key_npage knp str kN YB-GE next-page key +key_ppage kpp str kP YB-GE previous-page key +key_right kcuf1 str kr YBCGE right-arrow key +key_sf kind str kF -B-G-* scroll-forward key +key_sr kri str kR -B-G-* scroll-backward key +key_stab khts str kT -B-G-* set-tab key +key_up kcuu1 str ku 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 +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 YB-GE upper left of keypad +key_a3 ka3 str K3 YB-GE upper right of keypad +key_b2 kb2 str K2 YB-GE center of keypad +key_c1 kc1 str K4 YB-GE lower left of keypad +key_c3 kc3 str K5 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. +# +char_padding rmp str rP ----- like ip but when in insert mode +acs_chars acsc str ac ----- graphics charset pairs, based on vt100 +plab_norm pln str pn ----- program label #1 to show string #2 +key_btab kcbt str kB ----- 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 +label_on smln str LO ----- turn on soft labels +label_off rmln str LF ----- turn off soft labels +key_beg kbeg str @1 ----- begin key +key_cancel kcan str @2 ----- cancel key +key_close kclo str @3 ----- close key +key_command kcmd str @4 ----- command key +key_copy kcpy str @5 ----- copy key +key_create kcrt str @6 ----- create key +key_end kend str @7 ----- end key +key_enter kent str @8 ----- enter/send key +key_exit kext str @9 ----- exit key +key_find kfnd str @0 ----- find key +key_help khlp str %1 ----- help key +key_mark kmrk str %2 ----- mark key +key_message kmsg str %3 ----- message key +key_move kmov str %4 ----- move key +key_next knxt str %5 ----- next key +key_open kopn str %6 ----- open key +key_options kopt str %7 ----- options key +key_previous kprv str %8 ----- previous key +key_print kprt str %9 ----- print key +key_redo krdo str %0 ----- redo key +key_reference kref str &1 ----- reference key +key_refresh krfr str &2 ----- refresh key +key_replace krpl str &3 ----- replace key +key_restart krst str &4 ----- restart key +key_resume kres str &5 ----- resume key +key_save ksav str &6 ----- save key +key_suspend kspd str &7 ----- suspend key +key_undo kund str &8 ----- undo key +key_sbeg kBEG str &9 ----- shifted begin key +key_scancel kCAN str &0 ----- shifted cancel key +key_scommand kCMD str *1 ----- shifted command key +key_scopy kCPY str *2 ----- shifted copy key +key_screate kCRT str *3 ----- shifted create key +key_sdc kDC str *4 ----- shifted delete-character key +key_sdl kDL str *5 ----- shifted delete-line key +key_select kslt str *6 ----- select key +key_send kEND str *7 ----- shifted end key +key_seol kEOL str *8 ----- shifted clear-to-end-of-line key +key_sexit kEXT str *9 ----- shifted exit key +key_sfind kFND str *0 ----- shifted find key +key_shelp kHLP str #1 ----- shifted help key +key_shome kHOM str #2 ----- shifted home key +key_sic kIC str #3 ----- shifted insert-character key +key_sleft kLFT str #4 ----- shifted left-arrow key +key_smessage kMSG str %a ----- shifted message key +key_smove kMOV str %b ----- shifted move key +key_snext kNXT str %c ----- shifted next key +key_soptions kOPT str %d ----- shifted options key +key_sprevious kPRV str %e ----- shifted previous key +key_sprint kPRT str %f ----- shifted print key +key_sredo kRDO str %g ----- shifted redo key +key_sreplace kRPL str %h ----- shifted replace key +key_sright kRIT str %i ----- shifted right-arrow key +key_srsume kRES str %j ----- shifted resume key +key_ssave kSAV str !1 ----- shifted save key +key_ssuspend kSPD str !2 ----- shifted suspend key +key_sundo kUND str !3 ----- shifted undo key +req_for_input rfi str RF ----- send next input char (for ptys) +key_f11 kf11 str F1 ----E F11 function key +key_f12 kf12 str F2 ----E F12 function key +key_f13 kf13 str F3 ----E F13 function key +key_f14 kf14 str F4 ----E F14 function key +key_f15 kf15 str F5 ----E F15 function key +key_f16 kf16 str F6 ----E F16 function key +key_f17 kf17 str F7 ----E F17 function key +key_f18 kf18 str F8 ----E F18 function key +key_f19 kf19 str F9 ----E F19 function key +key_f20 kf20 str FA ----E F20 function key +key_f21 kf21 str FB ----E F21 function key +key_f22 kf22 str FC ----E F22 function key +key_f23 kf23 str FD ----E F23 function key +key_f24 kf24 str FE ----E F24 function key +key_f25 kf25 str FF ----E F25 function key +key_f26 kf26 str FG ----E F26 function key +key_f27 kf27 str FH ----E F27 function key +key_f28 kf28 str FI ----E F28 function key +key_f29 kf29 str FJ ----E F29 function key +key_f30 kf30 str FK ----E F30 function key +key_f31 kf31 str FL ----E F31 function key +key_f32 kf32 str FM ----E F32 function key +key_f33 kf33 str FN ----E F33 function key +key_f34 kf34 str FO ----E F34 function key +key_f35 kf35 str FP ----E F35 function key +key_f36 kf36 str FQ ----E F36 function key +key_f37 kf37 str FR ----E F37 function key +key_f38 kf38 str FS ----E F38 function key +key_f39 kf39 str FT ----E F39 function key +key_f40 kf40 str FU ----E F40 function key +key_f41 kf41 str FV ----E F41 function key +key_f42 kf42 str FW ----E F42 function key +key_f43 kf43 str FX ----E F43 function key +key_f44 kf44 str FY ----E F44 function key +key_f45 kf45 str FZ ----E F45 function key +key_f46 kf46 str Fa ----E F46 function key +key_f47 kf47 str Fb ----E F47 function key +key_f48 kf48 str Fc ----E F48 function key +key_f49 kf49 str Fd ----E F49 function key +key_f50 kf50 str Fe ----E F50 function key +key_f51 kf51 str Ff ----E F51 function key +key_f52 kf52 str Fg ----E F52 function key +key_f53 kf53 str Fh ----E F53 function key +key_f54 kf54 str Fi ----E F54 function key +key_f55 kf55 str Fj ----E F55 function key +key_f56 kf56 str Fk ----E F56 function key +key_f57 kf57 str Fl ----E F57 function key +key_f58 kf58 str Fm ----E F58 function key +key_f59 kf59 str Fn ----E F59 function key +key_f60 kf60 str Fo ----E F60 function key +key_f61 kf61 str Fp ----E F61 function key +key_f62 kf62 str Fq ----E F62 function key +key_f63 kf63 str Fr ----E F63 function key +clr_bol el1 str cb ----- Clear to beginning of line +clear_margins mgc str MC ----- clear right and left soft margins +set_left_margin smgl str ML ----- set left soft margin at current column +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 at (#1,#2) +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 +change_line_pitch lpi str ZB ----- Change number of lines per inch +change_res_horz chr str ZC ----- Change horizontal resolution +change_res_vert cvr str ZD ----- Change vertical resolution +define_char defc str ZE ----- Define a character +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 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 +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 #2 lines from bottom +set_left_margin_parm smglp str Zm ----- Set left (right) margin at column #1 (#2) +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 (#2) +start_bit_image sbim str Zq ----- Start printing bit image graphics +start_char_set_def scsd str Zr ----- Start character set definition +stop_bit_image rbim str Zs ----- Stop printing bit image graphics +stop_char_set_def rcsd str Zt ----- End definition of character set +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 ----- List of character set names +key_mouse kmous str Km ----- 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 +set_a_foreground setaf str AF ----- Set foreground color using ANSI escape +set_a_background setab str AB ----- Set background color 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 code set 0 (EUC set 0, ASCII) +set1_des_seq s1ds str s1 ----- Shift to code set 1 +set2_des_seq s2ds str s2 ----- Shift to code set 2 +set3_des_seq s3ds str s3 ----- Shift to code set 3 +set_lr_margin smglr str ML ----- Set both left and right margins to #1, #2 +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 +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 +enter_horizontal_hl_mode ehhlm str Xh ----- Enter horizontal highlight mode +enter_left_hl_mode elhlm str Xl ----- Enter left highlight mode +enter_low_hl_mode elohlm str Xo ----- Enter low highlight mode +enter_right_hl_mode erhlm str Xr ----- Enter right highlight mode +enter_top_hl_mode ethlm str Xt ----- Enter top highlight mode +enter_vertical_hl_mode evhlm str Xv ----- Enter vertical highlight mode +set_a_attributes sgr1 str sA ----- Define second set of video attributes #1-#6 +set_pglen_inch slength str sL ----- YI Set page length to #1 hundredth of an inch +#%.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 +#key_f11 kf11 str k< ----- function key 11 +#key_f12 kf12 str k> ----- function key 12 +# The key_f13 through key_f64 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 certainly wrong. +#key_f13 kf13 str k+ ----- function key 13 +#key_f14 kf14 str k+ ----- function key 14 +#key_f15 kf15 str k+ ----- function key 15 +#key_f16 kf16 str k+ ----- function key 16 +#key_f17 kf17 str k+ ----- function key 17 +#key_f18 kf18 str k+ ----- function key 18 +#key_f19 kf19 str k+ ----- function key 19 +#key_f20 kf20 str k+ ----- function key 20 +#key_f21 kf21 str k+ ----- function key 21 +#key_f22 kf22 str k+ ----- function key 22 +#key_f23 kf23 str k+ ----- function key 23 +#key_f24 kf24 str k+ ----- function key 24 +#key_f25 kf25 str k+ ----- function key 25 +#key_f26 kf26 str k+ ----- function key 26 +#key_f27 kf26 str k+ ----- function key 26 +#key_f28 kf28 str k+ ----- function key 28 +#key_f29 kf29 str k+ ----- function key 29 +#key_f30 kf30 str k+ ----- function key 30 +#key_f31 kf31 str k+ ----- function key 31 +#key_f32 kf31 str k+ ----- function key 32 +#key_f33 kf33 str k+ ----- function key 33 +#key_f34 kf34 str k+ ----- function key 34 +#key_f35 kf35 str k+ ----- function key 35 +#key_f36 kf36 str k+ ----- function key 36 +#key_f37 kf37 str k+ ----- function key 37 +#key_f38 kf38 str k+ ----- function key 38 +#key_f39 kf39 str k+ ----- function key 39 +#key_f40 kf40 str k+ ----- function key 40 +#key_f41 kf41 str k+ ----- function key 41 +#key_f42 kf42 str k+ ----- function key 42 +#key_f43 kf43 str k+ ----- function key 43 +#key_f44 kf44 str k+ ----- function key 44 +#key_f45 kf45 str k+ ----- function key 45 +#key_f46 kf46 str k+ ----- function key 46 +#key_f47 kf47 str k+ ----- function key 47 +#key_f48 kf48 str k+ ----- function key 48 +#key_f49 kf49 str k+ ----- function key 49 +#key_f50 kf50 str k+ ----- function key 50 +#key_f51 kf51 str k+ ----- function key 51 +#key_f52 kf52 str k+ ----- function key 52 +#key_f53 kf53 str k+ ----- function key 53 +#key_f54 kf54 str k+ ----- function key 54 +#key_f55 kf55 str k+ ----- function key 55 +#key_f56 kf56 str k+ ----- function key 56 +#key_f57 kf57 str k+ ----- function key 57 +#key_f58 kf58 str k+ ----- function key 58 +#key_f59 kf59 str k+ ----- function key 59 +#key_f60 kf60 str k+ ----- function key 60 +#key_f61 kf61 str k+ ----- function key 61 +#key_f62 kf62 str k+ ----- function key 62 +#key_f63 kf63 str k+ ----- function key 63 +# 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/MKhashsize.sh b/contrib/ncurses/include/MKhashsize.sh new file mode 100755 index 0000000..d11d7bf --- /dev/null +++ b/contrib/ncurses/include/MKhashsize.sh @@ -0,0 +1,14 @@ +#!/bin/sh +# +# MKhashsize.sh --- generate size include for hash functions +# +echo "/*" +echo " * hashsize.h -- hash and token table constants" +echo " */" + +CAPS="${1-Caps}" +TABSIZE=`grep -v '^[ #]' $CAPS | grep -v "^$" | grep -v "^capalias"| grep -v "^infoalias" | wc -l` + +echo "" +echo "#define CAPTABSIZE ${TABSIZE}" +echo "#define HASHTABSIZE (${TABSIZE} * 2)" diff --git a/contrib/ncurses/include/MKparametrized.sh b/contrib/ncurses/include/MKparametrized.sh new file mode 100755 index 0000000..cbbc3e0 --- /dev/null +++ b/contrib/ncurses/include/MKparametrized.sh @@ -0,0 +1,34 @@ +#!/bin/sh +# +# MKparametrized.sh -- generate indirection vectors for various sort methods +# +# The output of this script is C source for an array specifying whether +# termcap strings should undergo parameter and padding translation. +# +CAPS="${1-Caps}" +cat <<EOF +/* + * parametrized.h --- is a termcap capability parametrized? + * + * Note: this file is generated using parametrized.sh, do not edit by hand. + * A value of -1 in the table means suppress both pad and % translations. + * A value of 0 in the table means do pad but not % translations. + * A value of 1 in the table means do both pad and % translations. + */ + +static short const parametrized[] = { +EOF + +# We detect whether % translations should be done by looking for #[0-9] in the +# description field. We presently suppress padding translation only for the +# XENIX acs_* capabilities. Maybe someday we'll dedicate a flag field for +# this, that would be cleaner.... + +${AWK-awk} <$CAPS ' +$3 != "str" {next;} +$1 ~ /^acs_/ {print "-1,\t/* ", $2, " */"; count++; next;} +$0 ~ /#[0-9]/ {print "1,\t/* ", $2, " */"; count++; next;} + {print "0,\t/* ", $2, " */"; count++;} +END {printf("} /* %d entries */;\n\n", count);} +' + diff --git a/contrib/ncurses/include/MKterm.h.awk.in b/contrib/ncurses/include/MKterm.h.awk.in new file mode 100644 index 0000000..8e913a7 --- /dev/null +++ b/contrib/ncurses/include/MKterm.h.awk.in @@ -0,0 +1,310 @@ + +BEGIN { + print "/****************************************************************************" + print " * Copyright (c) 1998 Free Software Foundation, Inc. *" + print " * *" + print " * Permission is hereby granted, free of charge, to any person obtaining a *" + print " * copy of this software and associated documentation files (the *" + print " * "Software"), to deal in the Software without restriction, including *" + print " * without limitation the rights to use, copy, modify, merge, publish, *" + print " * distribute, distribute with modifications, sublicense, and/or sell *" + print " * copies of the Software, and to permit persons to whom the Software is *" + print " * furnished to do so, subject to the following conditions: *" + print " * *" + print " * The above copyright notice and this permission notice shall be included *" + print " * in all copies or substantial portions of the Software. *" + print " * *" + print " * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *" + print " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *" + print " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *" + print " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *" + print " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *" + print " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *" + print " * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *" + print " * *" + print " * Except as contained in this notice, the name(s) of the above copyright *" + print " * holders shall not be used in advertising or otherwise to promote the *" + print " * sale, use or other dealings in this Software without prior written *" + print " * authorization. *" + print " ****************************************************************************/" + print "" + print "/****************************************************************************/" + print "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 */" + print "/* and: Eric S. Raymond <esr@snark.thyrsus.com> */" + print "/****************************************************************************/" + print "" + print "/* $Id: MKterm.h.awk.in,v 1.35 1999/02/24 01:04:55 tom Exp $ */" + print "" + print "/*" + print "** term.h -- Definition of struct term" + print "*/" + print "" + print "#ifndef _NCU_TERM_H" + print "#define _NCU_TERM_H 1" + print "" + print "#undef NCURSES_VERSION" + print "#define NCURSES_VERSION \"@NCURSES_MAJOR@.@NCURSES_MINOR@\"" + print "" + print "#ifdef __cplusplus" + print "extern \"C\" {" + print "#endif" + print "" + print "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H" + print " * and BROKEN_LINKER definition (based on the system for which this was" + print " * configured)." + print " */" + print "" + print "#undef HAVE_TERMIOS_H" + print "#define HAVE_TERMIOS_H 1/*default*/" + print "" + print "#undef HAVE_TERMIO_H" + print "#define HAVE_TERMIO_H 0/*default*/" + print "" + print "#undef HAVE_TCGETATTR" + print "#define HAVE_TCGETATTR 1/*default*/" + print "" + print "#undef BROKEN_LINKER" + print "#define BROKEN_LINKER 0/*default*/" + print "" + print "#undef NCURSES_CONST" + print "#define NCURSES_CONST @NCURSES_CONST@" + print "" + print "#undef NCURSES_XNAMES" + print "#define NCURSES_XNAMES @NCURSES_XNAMES@" + print "" + print "/* We will use these symbols to hide differences between" + print " * termios/termio/sgttyb interfaces." + print " */" + print "#undef TTY" + print "#undef SET_TTY" + print "#undef GET_TTY" + print "" + print "/* Assume Posix termio if we have the header and function */" + print "#if HAVE_TERMIOS_H && HAVE_TCGETATTR" + print "" + print "#undef TERMIOS" + print "#define TERMIOS 1" + print "" + print "#include <termios.h>" + print "#define TTY struct termios" + print "" + print "#else /* !HAVE_TERMIOS_H */" + print "" + print "#if HAVE_TERMIO_H" + print "" + print "#undef TERMIOS" + print "#define TERMIOS 1" + print "" + print "#include <termio.h>" + print "#define TTY struct termio" + print "" + print "/* Add definitions to make termio look like termios." + print " * But ifdef it, since there are some implementations" + print " * that try to do this for us in a fake <termio.h>." + print " */" + print "#ifndef TCSANOW" + print "#define TCSANOW TCSETA" + print "#endif" + print "#ifndef TCSADRAIN" + print "#define TCSADRAIN TCSETAW" + print "#endif" + print "#ifndef TCSAFLUSH" + print "#define TCSAFLUSH TCSETAF" + print "#endif" + print "#ifndef tcsetattr" + print "#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)" + print "#endif" + print "#ifndef tcgetattr" + print "#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)" + print "#endif" + print "#ifndef cfgetospeed" + print "#define cfgetospeed(t) ((t)->c_cflag & CBAUD)" + print "#endif" + print "#ifndef TCIFLUSH " + print "#define TCIFLUSH 0" + print "#endif" + print "#ifndef TCOFLUSH " + print "#define TCOFLUSH 1" + print "#endif" + print "#ifndef TCIOFLUSH " + print "#define TCIOFLUSH 2" + print "#endif" + print "#ifndef tcflush" + print "#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)" + print "#endif" + print "" + print "#else /* !HAVE_TERMIO_H */" + print "" + print "#undef TERMIOS" + print "#include <sgtty.h>" + print "#include <sys/ioctl.h>" + print "#define TTY struct sgttyb" + print "" + print "#endif /* HAVE_TERMIO_H */" + print "" + print "#endif /* HAVE_TERMIOS_H */" + print "" + print "#ifdef TERMIOS" + print "#define GET_TTY(fd, buf) tcgetattr(fd, buf)" + print "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)" + print "#else" + print "#define GET_TTY(fd, buf) gtty(fd, buf)" + print "#define SET_TTY(fd, buf) stty(fd, buf)" + print "#endif" + print "" + print "#define NAMESIZE 256" + print "" + print "#define CUR cur_term->type." + print "" + } + +$2 == "%%-STOP-HERE-%%" { + print "" + printf "#define BOOLWRITE %d\n", BoolCount + printf "#define NUMWRITE %d\n", NumberCount + printf "#define STRWRITE %d\n", StringCount + print "" + print "/* older synonyms for some capabilities */" + print "#define beehive_glitch no_esc_ctlc" + print "#define teleray_glitch dest_tabs_magic_smso" + print "#define micro_char_size micro_col_size" + print "" + print "#ifdef __INTERNAL_CAPS_VISIBLE" + } + +/^#/ {next;} + +$3 == "bool" { + printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++ + } + +$3 == "num" { + printf "#define %-30s CUR Numbers[%d]\n", $1, NumberCount++ + } + +$3 == "str" { + printf "#define %-30s CUR Strings[%d]\n", $1, StringCount++ + } + +END { + print "#endif /* __INTERNAL_CAPS_VISIBLE */" + print "" + print "" + print "/*" + print " * Predefined terminfo array sizes" + print " */" + printf "#define BOOLCOUNT %d\n", BoolCount + printf "#define NUMCOUNT %d\n", NumberCount + printf "#define STRCOUNT %d\n", StringCount + print "" + print "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 " short *Numbers; /* array of integer values */" + print " char **Strings; /* array of string offsets */" + print "" + print "#if NCURSES_XNAMES" + print " char *ext_str_table; /* pointer to extended string table */" + print " char **ext_Names; /* corresponding names */" + print "" + print " unsigned short num_Booleans;/* count total Booleans */" + print " unsigned short num_Numbers; /* count total Numbers */" + print " unsigned short num_Strings; /* count total Strings */" + print "" + print " unsigned short ext_Booleans;/* count extensions to Booleans */" + print " unsigned short ext_Numbers; /* count extensions to Numbers */" + print " unsigned short ext_Strings; /* count extensions to Strings */" + print "#endif /* NCURSES_XNAMES */" + print "" + print "} TERMTYPE;" + print "" + print "typedef struct term { /* describe an actual terminal */" + print " TERMTYPE type; /* terminal type description */" + print " short Filedes; /* file description being written to */" + print " TTY Ottyb, /* original state of the terminal */" + print " Nttyb; /* current state of the terminal */" + print " int _baudrate; /* used to compute padding */" + print "} TERMINAL;" + print "" + print "extern TERMINAL *cur_term;" + print "" + print "#if BROKEN_LINKER" + print "#define boolnames _nc_boolnames()" + print "#define boolcodes _nc_boolcodes()" + print "#define boolfnames _nc_boolfnames()" + print "#define numnames _nc_numnames()" + print "#define numcodes _nc_numcodes()" + print "#define numfnames _nc_numfnames()" + print "#define strnames _nc_strnames()" + print "#define strcodes _nc_strcodes()" + print "#define strfnames _nc_strfnames()" + print "" + print "extern NCURSES_CONST char * const *_nc_boolnames(void);" + print "extern NCURSES_CONST char * const *_nc_boolcodes(void);" + print "extern NCURSES_CONST char * const *_nc_boolfnames(void);" + print "extern NCURSES_CONST char * const *_nc_numnames(void);" + print "extern NCURSES_CONST char * const *_nc_numcodes(void);" + print "extern NCURSES_CONST char * const *_nc_numfnames(void);" + print "extern NCURSES_CONST char * const *_nc_strnames(void);" + print "extern NCURSES_CONST char * const *_nc_strcodes(void);" + print "extern NCURSES_CONST char * const *_nc_strfnames(void);" + print "" + print "#else" + print "" + print "extern NCURSES_CONST char *const boolnames[];" + print "extern NCURSES_CONST char *const boolcodes[];" + print "extern NCURSES_CONST char *const boolfnames[];" + print "extern NCURSES_CONST char *const numnames[];" + print "extern NCURSES_CONST char *const numcodes[];" + print "extern NCURSES_CONST char *const numfnames[];" + print "extern NCURSES_CONST char *const strnames[];" + print "extern NCURSES_CONST char *const strcodes[];" + print "extern NCURSES_CONST char *const strfnames[];" + print "" + print "#endif" + print "" + print "/* internals */" + print "extern int _nc_set_tty_mode(TTY *buf);" + print "extern int _nc_get_tty_mode(TTY *buf);" + print "extern int _nc_read_entry(const char * const, char * const, TERMTYPE *const);" + print "extern int _nc_read_file_entry(const char *const, TERMTYPE *);" + print "extern char *_nc_first_name(const char *const);" + print "extern int _nc_name_match(const char *const, const char *const, const char *const);" + print "extern int _nc_read_termcap_entry(const char *const, TERMTYPE *const);" + print "extern const TERMTYPE *_nc_fallback(const char *);" + print "" + print "/* entry points */" + print "extern TERMINAL *set_curterm(TERMINAL *);" + print "extern int del_curterm(TERMINAL *);" + print "" + print "/* miscellaneous entry points */" + print "extern int restartterm(NCURSES_CONST char *, int, int *);" + print "extern int setupterm(NCURSES_CONST char *,int,int *);" + print "" + print "/* terminfo entry points, also declared in curses.h */" + print "#if !defined(__NCURSES_H)" + print "extern char *tigetstr(NCURSES_CONST char *);" + print "extern char *tparm(NCURSES_CONST char *, ...);" + print "extern char ttytype[];" + print "extern int putp(const char *);" + print "extern int tigetflag(NCURSES_CONST char *);" + print "extern int tigetnum(NCURSES_CONST char *);" + print "#endif /* __NCURSES_H */" + print "" + print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */" + print "#if !defined(_NCU_TERMCAP_H)" + print "extern char *tgetstr(NCURSES_CONST char *, char **);" + print "extern char *tgoto(const char *, int, int);" + print "extern int tgetent(char *, const char *);" + print "extern int tgetflag(NCURSES_CONST char *);" + print "extern int tgetnum(NCURSES_CONST char *);" + print "extern int tputs(const char *, int, int (*)(int));" + print "#endif /* _NCU_TERMCAP_H */" + print "" + print "#ifdef __cplusplus" + print "}" + print "#endif" + print "" + print "#endif /* _NCU_TERM_H */" + } diff --git a/contrib/ncurses/include/Makefile.in b/contrib/ncurses/include/Makefile.in new file mode 100644 index 0000000..724be6d --- /dev/null +++ b/contrib/ncurses/include/Makefile.in @@ -0,0 +1,106 @@ +# $Id: Makefile.in,v 1.22 1998/02/11 12:13:46 tom Exp $ +############################################################################## +# Copyright (c) 1998 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 +# +# Makefile for ncurses source code. +# +# This makes/installs ncurses include-files +# +# The variable 'srcdir' refers to the source-distribution, and can be set with +# the configure script by "--srcdir=DIR". + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = /bin/sh +THIS = Makefile + +INSTALL_PREFIX = @INSTALL_PREFIX@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +includedir = @includedir@ + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +AWK = @AWK@ +LN_S = @LN_S@ + +VERSION = @cf_cv_rel_version@ + +# These files are generated by the configure script +CONFIG_SRC = \ + MKterm.h.awk \ + curses.h \ + termcap.h \ + unctrl.h + +# These files are generated by this makefile +AUTO_SRC = \ + hashsize.h \ + parametrized.h \ + term.h + +################################################################################ +all \ +sources \ +install :: $(AUTO_SRC) + +term.h: $(srcdir)/Caps MKterm.h.awk + $(AWK) -f MKterm.h.awk $(srcdir)/Caps > $@ + sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ + +hashsize.h: $(srcdir)/Caps $(srcdir)/MKhashsize.sh + sh $(srcdir)/MKhashsize.sh $(srcdir)/Caps >$@ + +parametrized.h: $(srcdir)/Caps $(srcdir)/MKparametrized.sh + AWK=$(AWK) sh $(srcdir)/MKparametrized.sh $(srcdir)/Caps >$@ + +tags: + ctags *.[ch] + +TAGS: + etags *.[ch] + +mostlyclean :: + -rm -f core tags TAGS *~ *.ln *.atac trace + +clean :: mostlyclean + -rm -f $(AUTO_SRC) + +distclean :: clean + -rm -f Makefile $(CONFIG_SRC) + +realclean :: distclean + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/contrib/ncurses/include/capdefaults.c b/contrib/ncurses/include/capdefaults.c new file mode 100644 index 0000000..af1193c --- /dev/null +++ b/contrib/ncurses/include/capdefaults.c @@ -0,0 +1,87 @@ +/**************************************************************************** + * Copyright (c) 1998 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + +/* $Id: capdefaults.c,v 1.8 1998/07/04 22:31:04 tom Exp $ */ + + /* + * Compute obsolete capabilities. The reason this is an include file + * is that the two places where it's needed want the macros to + * generate offsets to different structures. See the file Caps for + * explanations of these conversions. + * + * Note: This code is the functional inverse of the first part + * of postprocess_entry(). + */ + { + char *sp; + int capval; + +#define EXTRACT_DELAY(str) (sp = strchr(str, '*'), sp ? atoi(sp+1) : 0) + + /* current (4.4BSD) capabilities marked obsolete */ + if (VALID_STRING(carriage_return) + && (capval = EXTRACT_DELAY(carriage_return))) + carriage_return_delay = capval; + if (VALID_STRING(newline) && (capval = EXTRACT_DELAY(newline))) + new_line_delay = capval; + + /* current (4.4BSD) capabilities not obsolete */ + if (!VALID_STRING(termcap_init2) && VALID_STRING(init_3string)) + { + termcap_init2 = init_3string; + init_3string = (char *)0; + } + if (VALID_STRING(reset_1string) + && !VALID_STRING(reset_2string) + && VALID_STRING(reset_3string)) + { + termcap_reset = reset_2string; + reset_2string = (char *)0; + } +#if USE_XMC_SUPPORT + if (magic_cookie_glitch_ul < 0 && magic_cookie_glitch && VALID_STRING(enter_underline_mode)) + magic_cookie_glitch_ul = magic_cookie_glitch; +#else + magic_cookie_glitch_ul = -1; +#endif + + /* totally obsolete capabilities */ + linefeed_is_newline = VALID_STRING(newline) + && (strcmp("\n", newline) == 0); + if (VALID_STRING(cursor_left) + && (capval = EXTRACT_DELAY(cursor_left))) + backspace_delay = capval; + if (VALID_STRING(tab) && (capval = EXTRACT_DELAY(tab))) + horizontal_tab_delay = capval; +#undef EXTRACT_DELAY + } diff --git a/contrib/ncurses/include/curses.h.in b/contrib/ncurses/include/curses.h.in new file mode 100644 index 0000000..1ed87e5 --- /dev/null +++ b/contrib/ncurses/include/curses.h.in @@ -0,0 +1,1346 @@ +/**************************************************************************** + * Copyright (c) 1998 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + +/* $Id: curses.h.in,v 1.84 1999/07/24 20:15:42 tom Exp $ */ + +#ifndef __NCURSES_H +#define __NCURSES_H + +#define CURSES 1 +#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. + * So we do not define it (yet). +#define _XOPEN_CURSES 1 + */ + +/* These are defined only in curses.h, and are used for conditional compiles */ +#define NCURSES_VERSION_MAJOR @NCURSES_MAJOR@ +#define NCURSES_VERSION_MINOR @NCURSES_MINOR@ +#define NCURSES_VERSION_PATCH @NCURSES_PATCH@ + +/* This is defined in more than one ncurses header, for identification */ +#undef NCURSES_VERSION +#define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@" + +#ifdef NCURSES_NOMACROS +#define NCURSES_ATTR_T attr_t +#endif + +#ifndef NCURSES_ATTR_T +#define NCURSES_ATTR_T int +#endif + +#undef NCURSES_CONST +#define NCURSES_CONST @NCURSES_CONST@ + +typedef unsigned @cf_cv_typeof_chtype@ chtype; + +#include <stdio.h> +#include <unctrl.h> +#include <stdarg.h> /* we need va_list */ +#ifdef _XOPEN_SOURCE_EXTENDED +#include <stddef.h> /* we want wchar_t */ +#endif /* _XOPEN_SOURCE_EXTENDED */ + +/* XSI and SVr4 specify that curses implements 'bool'. However, C++ may also + * implement it. If so, we must use the C++ compiler's type to avoid conflict + * with other interfaces. + */ + +#undef TRUE +#define TRUE 1 + +#undef FALSE +#define FALSE 0 + +#if (!defined(__cplusplus) || !@cf_cv_builtin_bool@) && (!@cf_cv_cc_bool_type@) +#undef bool +typedef @cf_cv_type_of_bool@ bool; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * XSI attributes. In the ncurses implementation, they are identical to the + * A_ attributes. + */ +#define WA_ATTRIBUTES A_ATTRIBUTES +#define WA_NORMAL A_NORMAL +#define WA_STANDOUT A_STANDOUT +#define WA_UNDERLINE A_UNDERLINE +#define WA_REVERSE A_REVERSE +#define WA_BLINK A_BLINK +#define WA_DIM A_DIM +#define WA_BOLD A_BOLD +#define WA_ALTCHARSET A_ALTCHARSET +#define WA_INVIS A_INVIS +#define WA_PROTECT A_PROTECT +#define WA_HORIZONTAL A_HORIZONTAL +#define WA_LEFT A_LEFT +#define WA_LOW A_LOW +#define WA_RIGHT A_RIGHT +#define WA_TOP A_TOP +#define WA_VERTICAL A_VERTICAL + +/* colors */ +extern int COLORS; +extern int COLOR_PAIRS; + +#define COLOR_BLACK 0 +#define COLOR_RED 1 +#define COLOR_GREEN 2 +#define COLOR_YELLOW 3 +#define COLOR_BLUE 4 +#define COLOR_MAGENTA 5 +#define COLOR_CYAN 6 +#define COLOR_WHITE 7 + +/* line graphics */ + +extern chtype acs_map[]; + +/* 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 */ +/* 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 */ +/* + * 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 */ + +/* + * Line drawing ACS names are of the form ACS_trbl, where t is the top, r + * is the right, b is the bottom, and l is the left. t, r, b, and l might + * be B (blank), S (single), D (double), or T (thick). The subset defined + * here only uses B and S. + */ +#define ACS_BSSB ACS_ULCORNER +#define ACS_SSBB ACS_LLCORNER +#define ACS_BBSS ACS_URCORNER +#define ACS_SBBS ACS_LRCORNER +#define ACS_SBSS ACS_RTEE +#define ACS_SSSB ACS_LTEE +#define ACS_SSBS ACS_BTEE +#define ACS_BSSS ACS_TTEE +#define ACS_BSBS ACS_HLINE +#define ACS_SBSB ACS_VLINE +#define ACS_SSSS ACS_PLUS + +#if !defined(ERR) || ((ERR) != -1) +#define ERR (-1) +#endif + +#if !defined(OK) || ((OK) != 0) +#define OK (0) +#endif + +/* values for the _flags member */ +#define _SUBWIN 0x01 /* is this a sub-window? */ +#define _ENDLINE 0x02 /* is the window flush right? */ +#define _FULLWIN 0x04 /* is the window full-screen? */ +#define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */ +#define _ISPAD 0x10 /* is this window a pad? */ +#define _HASMOVED 0x20 /* has cursor moved since last refresh? */ +#define _WRAPPED 0x40 /* cursor was just wrappped */ + +/* + * this value is used in the firstchar and lastchar fields to mark + * unchanged lines + */ +#define _NOCHANGE -1 + +/* + * this value is used in the oldindex field to mark lines created by insertions + * and scrolls. + */ +#define _NEWINDEX -1 + +typedef struct screen SCREEN; +typedef struct _win_st WINDOW; + +typedef chtype attr_t; /* ...must be at least as wide as chtype */ + +#ifdef _XOPEN_SOURCE_EXTENDED +#ifndef _WCHAR_T +typedef unsigned long wchar_t; +#endif /* _WCHAR_T */ +#ifndef _WINT_T +typedef long int wint_t; +#endif /* _WINT_T */ + +#define CCHARW_MAX 5 +typedef struct +{ + attr_t attr; + wchar_t chars[CCHARW_MAX]; +} +cchar_t; +#endif /* _XOPEN_SOURCE_EXTENDED */ + +struct ldat +{ + chtype *text; /* text of the line */ + short firstchar; /* first changed character in the line */ + short lastchar; /* last changed character in the line */ + short oldindex; /* index of the line at last update */ +}; + +struct _win_st +{ + short _cury, _curx; /* current cursor position */ + + /* window location and size */ + short _maxy, _maxx; /* maximums of x and y, NOT window size */ + short _begy, _begx; /* screen coords of upper-left-hand corner */ + + short _flags; /* window state flags */ + + /* attribute tracking */ + attr_t _attrs; /* current attribute for non-space character */ + chtype _bkgd; /* current background char/attribute pair */ + + /* option values set by user */ + bool _notimeout; /* no time out on function-key entry? */ + bool _clear; /* consider all data in the window invalid? */ + bool _leaveok; /* OK to not reset cursor on exit? */ + bool _scroll; /* OK to scroll this window? */ + bool _idlok; /* OK to use insert/delete line? */ + bool _idcok; /* OK to use insert/delete char? */ + bool _immed; /* window in immed mode? (not yet used) */ + bool _sync; /* window in sync mode? */ + bool _use_keypad; /* process function keys into KEY_ symbols? */ + int _delay; /* 0 = nodelay, <0 = blocking, >0 = delay */ + + struct ldat *_line; /* the actual line data */ + + /* global screen state */ + short _regtop; /* top line of scrolling region */ + short _regbottom; /* bottom line of scrolling region */ + + /* these are used only if this is a sub-window */ + int _parx; /* x coordinate of this window in parent */ + int _pary; /* y coordinate of this window in parent */ + WINDOW *_parent; /* pointer to parent if a sub-window */ + + /* these are used only if this is a pad */ + struct pdat + { + short _pad_y, _pad_x; + short _pad_top, _pad_left; + short _pad_bottom, _pad_right; + } _pad; + + short _yoffset; /* real begy is _begy + _yoffset */ +}; + +extern WINDOW *stdscr; +extern WINDOW *curscr; +extern WINDOW *newscr; + +extern int LINES; +extern int COLS; +extern int TABSIZE; + +/* + * This global was an undocumented feature under AIX curses. + */ +extern int ESCDELAY; /* ESC expire time in milliseconds */ + +extern char *keybound (int, int); +extern int define_key (char *, int); +extern int keyok (int, bool); +extern int resizeterm (int, int); +extern int use_default_colors (void); +extern int use_extended_names (bool); +extern int wresize (WINDOW *, int, int); + +extern char ttytype[]; /* needed for backward compatibility */ + +/* + * GCC (and some other compilers) define '__attribute__'; we're using this + * macro to alert the compiler to flag inconsistencies in printf/scanf-like + * function calls. Just in case '__attribute__' isn't defined, make a dummy. + * G++ doesn't accept it anyway. + */ +#if !defined(__GNUC__) && !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). + */ +#if GCC_PRINTF +#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) +#else +#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ +#endif + +#if GCC_SCANF +#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) +#else +#define GCC_SCANFLIKE(fmt,var) /*nothing*/ +#endif + +#ifndef GCC_NORETURN +#define GCC_NORETURN /* nothing */ +#endif + +#ifndef GCC_UNUSED +#define GCC_UNUSED /* nothing */ +#endif + +/* + * Function prototypes. This is the complete XSI Curses list of required + * functions. Those marked `generated' will have sources generated from the + * macro definitions later in this file, in order to satisfy XPG4.2 + * requirements. + */ + +extern int addch(const chtype); /* generated */ +extern int addchnstr(const chtype *, int); /* generated */ +extern int addchstr(const chtype *); /* generated */ +extern int addnstr(const char *, int); /* generated */ +extern int addstr(const char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int addnwstr(const wchar_t *, int); /* missing */ +extern int addwstr(const wchar_t *); /* missing */ +extern int add_wch(const cchar_t *); /* missing */ +extern int add_wchnstr(const cchar_t *, int); /* missing */ +extern int add_wchstr(const cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int attroff(NCURSES_ATTR_T); /* generated */ +extern int attron(NCURSES_ATTR_T); /* generated */ +extern int attrset(NCURSES_ATTR_T); /* generated */ +extern int attr_get(attr_t *, short *, void *); /* generated */ +extern int attr_off(attr_t, void *); /* generated */ +extern int attr_on(attr_t, void *); /* generated */ +extern int attr_set(attr_t, short, void *); /* generated */ +extern int baudrate(void); /* implemented */ +extern int beep(void); /* implemented */ +extern int bkgd(chtype); /* generated */ +extern void bkgdset(chtype); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern void bkgrndset(const cchar_t *); /* missing */ +extern int bkgrnd(const cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int border(chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern 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*); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int box(WINDOW *, chtype, chtype); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int box_set(WINDOW *, const cchar_t *, const cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern bool can_change_color(void); /* implemented */ +extern int cbreak(void); /* implemented */ +extern int chgat(int, attr_t, short, const void *); /* generated */ +extern int clear(void); /* generated */ +extern int clearok(WINDOW *,bool); /* implemented */ +extern int clrtobot(void); /* generated */ +extern int clrtoeol(void); /* generated */ +extern int color_content(short,short*,short*,short*); /* implemented */ +extern int color_set(short,void*); /* generated */ +extern int COLOR_PAIR(int); /* generated */ +extern int copywin(const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */ +extern int curs_set(int); /* implemented */ +extern int def_prog_mode(void); /* implemented */ +extern int def_shell_mode(void); /* implemented */ +extern int delay_output(int); /* implemented */ +extern int delch(void); /* generated */ +extern void delscreen(SCREEN *); /* implemented */ +extern int delwin(WINDOW *); /* implemented */ +extern int deleteln(void); /* generated */ +extern WINDOW *derwin(WINDOW *,int,int,int,int); /* implemented */ +extern int doupdate(void); /* implemented */ +extern WINDOW *dupwin(WINDOW *); /* implemented */ +extern int echo(void); /* implemented */ +extern int echochar(const chtype); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int echo_wchar(const cchar_t *); /* missing */ +extern int erasewchar(wchar_t*); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int endwin(void); /* implemented */ +extern char erasechar(void); /* implemented */ +extern void filter(void); /* implemented */ +extern int flash(void); /* implemented */ +extern int flushinp(void); /* implemented */ +extern chtype getbkgd(WINDOW *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int getbkgrnd(cchar_t *); /* missing */ +extern int getcchar(const cchar_t *, wchar_t*, attr_t*, short*, void*); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int getch(void); /* generated */ +extern int getnstr(char *, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int getn_wstr(wint_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int getstr(char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int get_wch(wint_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern WINDOW *getwin(FILE *); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int get_wstr(wint_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int halfdelay(int); /* implemented */ +extern bool has_colors(void); /* implemented */ +extern bool has_ic(void); /* implemented */ +extern bool has_il(void); /* implemented */ +extern int hline(chtype, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int hline_set(const cchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern void idcok(WINDOW *, bool); /* implemented */ +extern int idlok(WINDOW *, bool); /* implemented */ +extern void immedok(WINDOW *, bool); /* implemented */ +extern chtype inch(void); /* generated */ +extern int inchnstr(chtype *, int); /* generated */ +extern int inchstr(chtype *); /* generated */ +extern WINDOW *initscr(void); /* implemented */ +extern int init_color(short,short,short,short); /* implemented */ +extern int init_pair(short,short,short); /* implemented */ +extern int innstr(char *, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int innwstr(wchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int insch(chtype); /* generated */ +extern int insdelln(int); /* generated */ +extern int insertln(void); /* generated */ +extern int insnstr(const char *, int); /* generated */ +extern int insstr(const char *); /* generated */ +extern int instr(char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int ins_nwstr(const wchar_t *, int); /* missing */ +extern int ins_wch(const cchar_t *); /* missing */ +extern int ins_wstr(const wchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int intrflush(WINDOW *,bool); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int inwstr(wchar_t *); /* missing */ +extern int in_wch(NCURSES_CONST cchar_t *); /* missing */ +extern int in_wchstr(NCURSES_CONST cchar_t *); /* missing */ +extern int in_wchnstr(NCURSES_CONST cchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern bool isendwin(void); /* implemented */ +extern bool is_linetouched(WINDOW *,int); /* implemented */ +extern bool is_wintouched(WINDOW *); /* implemented */ +extern NCURSES_CONST char *keyname(int); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern char *key_name(wchar_t); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int keypad(WINDOW *,bool); /* implemented */ +extern char killchar(void); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int killwchar(wchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int leaveok(WINDOW *,bool); /* implemented */ +extern char *longname(void); /* implemented */ +extern int meta(WINDOW *,bool); /* implemented */ +extern int move(int, int); /* generated */ +extern int mvaddch(int, int, const chtype); /* generated */ +extern int mvaddchnstr(int, int, const chtype *, int); /* generated */ +extern int mvaddchstr(int, int, const chtype *); /* generated */ +extern int mvaddnstr(int, int, const char *, int); /* generated */ +extern int mvaddstr(int, int, const char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvaddnwstr(int, int, const wchar_t *, int); /* missing */ +extern int mvaddwstr(int, int, const wchar_t *); /* missing */ +extern int mvadd_wch(int, int, const cchar_t *); /* missing */ +extern int mvadd_wchnstr(int, int, const cchar_t *, int);/* missing */ +extern int mvadd_wchstr(int, int, const cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvchgat(int, int, int, attr_t, short, const void *); /* generated */ +extern int mvcur(int,int,int,int); /* implemented */ +extern int mvdelch(int, int); /* generated */ +extern int mvderwin(WINDOW *, int, int); /* implemented */ +extern int mvgetch(int, int); /* generated */ +extern int mvgetnstr(int, int, char *, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvgetn_wstr(int, int, wint_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvgetstr(int, int, char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvget_wch(int, int, wint_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvget_wstr(int, int, wint_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvhline(int, int, chtype, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvhline_set(int, int, const cchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern chtype mvinch(int, int); /* generated */ +extern int mvinchnstr(int, int, chtype *, int); /* generated */ +extern int mvinchstr(int, int, chtype *); /* generated */ +extern int mvinnstr(int, int, char *, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvinnwstr(int, int, wchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvinsch(int, int, chtype); /* generated */ +extern int mvinsnstr(int, int, const char *, int); /* generated */ +extern int mvinsstr(int, int, const char *); /* generated */ +extern int mvinstr(int, int, char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvins_nwstr(int, int, const wchar_t *, int); /* missing */ +extern int mvins_wch(int, int, const cchar_t *); /* missing */ +extern int mvins_wstr(int, int, const wchar_t *); /* missing */ +extern int mvinwstr(int, int, wchar_t *); /* missing */ +extern int mvin_wch(int, int, NCURSES_CONST cchar_t *); /* missing */ +extern int mvin_wchstr(int, int, NCURSES_CONST cchar_t *); /* missing */ +extern int mvin_wchnstr(int, int, NCURSES_CONST cchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvprintw(int,int, NCURSES_CONST char *,...) /* implemented */ + GCC_PRINTFLIKE(3,4); +extern int mvscanw(int,int, NCURSES_CONST char *,...) /* implemented */ + GCC_SCANFLIKE(3,4); +extern int mvvline(int, int, chtype, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvvline_set(int, int, const cchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvwaddch(WINDOW *, int, int, const chtype); /* generated */ +extern int mvwaddchnstr(WINDOW *, int, int, const chtype *, int);/* generated */ +extern int mvwaddchstr(WINDOW *, int, int, const chtype *); /* generated */ +extern int mvwaddnstr(WINDOW *, int, int, const char *, int); /* generated */ +extern int mvwaddstr(WINDOW *, int, int, const char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int);/* missing */ +extern int mvwaddwstr(WINDOW *, int, int, const wchar_t *); /* missing */ +extern int mvwadd_wch(WINDOW *, int, int, const cchar_t *); /* missing */ +extern int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int); /* missing */ +extern int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *);/* generated */ +extern int mvwdelch(WINDOW *, int, int); /* generated */ +extern int mvwgetch(WINDOW *, int, int); /* generated */ +extern int mvwgetnstr(WINDOW *, int, int, char *, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvwgetn_wstr(WINDOW *, int, int, wint_t *, int);/* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvwgetstr(WINDOW *, int, int, char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvwget_wch(WINDOW *, int, int, wint_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvwget_wstr(WINDOW *, int, int, wint_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvwhline(WINDOW *, int, int, chtype, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvwhline_set(WINDOW *, int, int, const cchar_t *, int);/* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvwin(WINDOW *,int,int); /* implemented */ +extern chtype mvwinch(WINDOW *, int, int); /* generated */ +extern int mvwinchnstr(WINDOW *, int, int, chtype *, int); /* generated */ +extern int mvwinchstr(WINDOW *, int, int, chtype *); /* generated */ +extern int mvwinnstr(WINDOW *, int, int, char *, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvwinnwstr(WINDOW *, int, int, wchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvwinsch(WINDOW *, int, int, chtype); /* generated */ +extern int mvwinsnstr(WINDOW *, int, int, const char *, int); /* generated */ +extern int mvwinsstr(WINDOW *, int, int, const char *); /* generated */ +extern int mvwinstr(WINDOW *, int, int, char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvwins_nwstr(WINDOW *, int,int, const wchar_t *,int); /* missing */ +extern int mvwins_wch(WINDOW *, int, int, const cchar_t *); /* missing */ +extern int mvwins_wstr(WINDOW *, int, int, const wchar_t *); /* missing */ +extern int mvwinwstr(WINDOW *, int, int, wchar_t *); /* missing */ +extern int mvwin_wch(WINDOW *, int, int, NCURSES_CONST cchar_t *); /* missing */ +extern int mvwin_wchnstr(WINDOW *, int,int, NCURSES_CONST cchar_t *,int); /* missing */ +extern int mvwin_wchstr(WINDOW *, int, int, NCURSES_CONST cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int mvwprintw(WINDOW*,int,int, NCURSES_CONST char *,...) /* implemented */ + GCC_PRINTFLIKE(4,5); +extern int mvwscanw(WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */ + GCC_SCANFLIKE(4,5); +extern int mvwvline(WINDOW *,int, int, chtype, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int mvwvline_set(WINDOW *, int,int, const cchar_t *,int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int napms(int); /* implemented */ +extern WINDOW *newpad(int,int); /* implemented */ +extern SCREEN *newterm(NCURSES_CONST char *,FILE *,FILE *); /* implemented */ +extern WINDOW *newwin(int,int,int,int); /* implemented */ +extern int nl(void); /* implemented */ +extern int nocbreak(void); /* implemented */ +extern int nodelay(WINDOW *,bool); /* implemented */ +extern int noecho(void); /* implemented */ +extern int nonl(void); /* implemented */ +extern void noqiflush(void); /* implemented */ +extern int noraw(void); /* implemented */ +extern int notimeout(WINDOW *,bool); /* implemented */ +extern int overlay(const WINDOW*,WINDOW *); /* implemented */ +extern int overwrite(const WINDOW*,WINDOW *); /* implemented */ +extern int pair_content(short,short*,short*); /* implemented */ +extern int PAIR_NUMBER(int); /* generated */ +extern int pechochar(WINDOW *, const chtype); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int pecho_wchar(WINDOW *, const cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int pnoutrefresh(WINDOW*,int,int,int,int,int,int);/* implemented */ +extern int prefresh(WINDOW *,int,int,int,int,int,int); /* implemented */ +extern int printw(NCURSES_CONST char *,...) /* implemented */ + GCC_PRINTFLIKE(1,2); +extern int putp(const char *); /* implemented */ +extern int putwin(WINDOW *, FILE *); /* implemented */ +extern void qiflush(void); /* implemented */ +extern int raw(void); /* implemented */ +extern int redrawwin(WINDOW *); /* generated */ +extern int refresh(void); /* generated */ +extern int resetty(void); /* implemented */ +extern int reset_prog_mode(void); /* implemented */ +extern int reset_shell_mode(void); /* implemented */ +extern int ripoffline(int, int (*init)(WINDOW *, int)); /* implemented */ +extern int savetty(void); /* implemented */ +extern int scanw(NCURSES_CONST char *,...) /* implemented */ + GCC_SCANFLIKE(1,2); +extern int scr_dump(const char *); /* implemented */ +extern int scr_init(const char *); /* implemented */ +extern int scrl(int); /* generated */ +extern int scroll(WINDOW *); /* generated */ +extern int scrollok(WINDOW *,bool); /* implemented */ +extern int scr_restore(const char *); /* implemented */ +extern int scr_set(const char *); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int setcchar(cchar_t *, const wchar_t *, const attr_t, short, const void *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int setscrreg(int,int); /* generated */ +extern SCREEN *set_term(SCREEN *); /* implemented */ +extern int slk_attroff(const chtype); /* implemented */ +extern int slk_attr_off(const attr_t, void *); /* generated:WIDEC */ +extern int slk_attron(const chtype); /* implemented */ +extern int slk_attr_on(attr_t,void*); /* generated:WIDEC */ +extern int slk_attrset(const chtype); /* implemented */ +extern attr_t slk_attr(void); /* implemented */ +extern int slk_attr_set(const attr_t,short,void*); /* implemented */ +extern int slk_clear(void); /* implemented */ +extern int slk_color(short); /* implemented */ +extern int slk_init(int); /* implemented */ +extern char *slk_label(int); /* implemented */ +extern int slk_noutrefresh(void); /* implemented */ +extern int slk_refresh(void); /* implemented */ +extern int slk_restore(void); /* implemented */ +extern int slk_set(int,const char *,int); /* implemented */ +extern int slk_touch(void); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int slk_wset(int, const wchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int standout(void); /* generated */ +extern int standend(void); /* generated */ +extern int start_color(void); /* implemented */ +extern WINDOW *subpad(WINDOW *, int, int, int, int); /* implemented */ +extern WINDOW *subwin(WINDOW *,int,int,int,int); /* implemented */ +extern int syncok(WINDOW *, bool); /* implemented */ +extern chtype termattrs(void); /* implemented */ +extern attr_t term_attrs(void); /* missing */ +extern char *termname(void); /* implemented */ +extern int tigetflag(NCURSES_CONST char *); /* implemented */ +extern int tigetnum(NCURSES_CONST char *); /* implemented */ +extern char *tigetstr(NCURSES_CONST char *); /* implemented */ +extern void timeout(int); /* generated */ +extern char *tparm(NCURSES_CONST char *, ...); /* implemented */ +extern int typeahead(int); /* implemented */ +extern int ungetch(int); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int unget_wch(const wchar_t); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int untouchwin(WINDOW *); /* generated */ +extern void use_env(bool); /* implemented */ +extern int vidattr(chtype); /* implemented */ +extern int vid_attr(attr_t, short, void *); /* generated:WIDEC */ +extern int vidputs(chtype, int (*)(int)); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int vid_puts(attr_t, short, void *, int (*)(int)); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int vline(chtype, int); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int vline_set(const cchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int vwprintw(WINDOW *, NCURSES_CONST char *,va_list); /* implemented */ +extern int vw_printw(WINDOW *, NCURSES_CONST char *,va_list); /* generated */ +extern int vwscanw(WINDOW *, NCURSES_CONST char *,va_list); /* implemented */ +extern int vw_scanw(WINDOW *, NCURSES_CONST char *,va_list); /* generated */ +extern int waddch(WINDOW *, const chtype); /* implemented */ +extern int waddchnstr(WINDOW *,const chtype *const,int); /* implemented */ +extern int waddchstr(WINDOW *,const chtype *); /* generated */ +extern int waddnstr(WINDOW *,const char *const,int); /* implemented */ +extern int waddstr(WINDOW *,const char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int waddwstr(WINDOW *,const wchar_t *); /* missing */ +extern int waddnwstr(WINDOW *,const wchar_t *,int); /* missing */ +extern int wadd_wch(WINDOW *,const cchar_t *); /* missing */ +extern int wadd_wchnstr(WINDOW *,const cchar_t *,int); /* missing */ +extern int wadd_wchstr(WINDOW *,const cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int wattron(WINDOW *, int); /* generated */ +extern int wattroff(WINDOW *, int); /* generated */ +extern int wattrset(WINDOW *, int); /* generated */ +extern int wattr_get(WINDOW *, attr_t *, short *, void *); /* generated */ +extern int wattr_on(WINDOW *, NCURSES_CONST attr_t, void *); /* implemented */ +extern int wattr_off(WINDOW *, NCURSES_CONST attr_t, void *); /* implemented */ +extern int wattr_set(WINDOW *, attr_t, short, void *); /* generated */ +extern int wbkgd(WINDOW *,const chtype); /* implemented */ +extern void wbkgdset(WINDOW *,chtype); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern void wbkgrndset(WINDOW *,const cchar_t *); /* missing */ +extern int wbkgrnd(WINDOW *,const cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int wborder(WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int wborder_set(WINDOW *,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int wchgat(WINDOW *, int, attr_t, short, const void *);/* implemented */ +extern int wclear(WINDOW *); /* implemented */ +extern int wclrtobot(WINDOW *); /* implemented */ +extern int wclrtoeol(WINDOW *); /* implemented */ +extern int wcolor_set(WINDOW*,short,void*); /* implemented */ +extern void wcursyncup(WINDOW *); /* implemented */ +extern int wdelch(WINDOW *); /* implemented */ +extern int wdeleteln(WINDOW *); /* generated */ +extern int wechochar(WINDOW *, const chtype); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int wecho_wchar(WINDOW *, const cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int werase(WINDOW *); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int wgetbkgrnd(WINDOW *, cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int wgetch(WINDOW *); /* implemented */ +extern int wgetnstr(WINDOW *,char *,int); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int wgetn_wstr(WINDOW *,wint_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int wgetstr(WINDOW *, char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int wget_wch(WINDOW *, wint_t *); /* missing */ +extern int wget_wstr(WINDOW *, wint_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int whline(WINDOW *, chtype, int); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int whline_set(WINDOW *, const cchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern chtype winch(WINDOW *); /* implemented */ +extern int winchnstr(WINDOW *, chtype *, int); /* implemented */ +extern int winchstr(WINDOW *, chtype *); /* generated */ +extern int winnstr(WINDOW *, char *, int); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int winnwstr(WINDOW *, wchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int winsch(WINDOW *, chtype); /* implemented */ +extern int winsdelln(WINDOW *,int); /* implemented */ +extern int winsertln(WINDOW *); /* generated */ +extern int winsnstr(WINDOW *, const char *,int); /* implemented */ +extern int winsstr(WINDOW *, const char *); /* generated */ +extern int winstr(WINDOW *, char *); /* generated */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int wins_nwstr(WINDOW *, const wchar_t *, int); /* missing */ +extern int wins_wch(WINDOW *, const cchar_t *); /* missing */ +extern int wins_wstr(WINDOW *, const wchar_t *); /* missing */ +extern int winwstr(WINDOW *, wchar_t *); /* missing */ +extern int win_wch(WINDOW *, NCURSES_CONST cchar_t *); /* missing */ +extern int win_wchnstr(WINDOW *, NCURSES_CONST cchar_t *, int); /* missing */ +extern int win_wchstr(WINDOW *, NCURSES_CONST cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int wmove(WINDOW *,int,int); /* implemented */ +extern int wnoutrefresh(WINDOW *); /* implemented */ +extern int wprintw(WINDOW *, NCURSES_CONST char *,...) /* implemented */ + GCC_PRINTFLIKE(2,3); +extern int wredrawln(WINDOW *,int,int); /* implemented */ +extern int wrefresh(WINDOW *); /* implemented */ +extern int wscanw(WINDOW *, NCURSES_CONST char *,...) /* implemented */ + GCC_SCANFLIKE(2,3); +extern int wscrl(WINDOW *,int); /* implemented */ +extern int wsetscrreg(WINDOW *,int,int); /* implemented */ +extern int wstandout(WINDOW *); /* generated */ +extern int wstandend(WINDOW *); /* generated */ +extern void wsyncdown(WINDOW *); /* implemented */ +extern void wsyncup(WINDOW *); /* implemented */ +extern void wtimeout(WINDOW *,int); /* implemented */ +extern int wtouchln(WINDOW *,int,int,int); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern wchar_t *wunctrl(cchar_t *); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ +extern int wvline(WINDOW *,chtype,int); /* implemented */ +#ifdef _XOPEN_SOURCE_EXTENDED +extern int wvline_set(WINDOW *, const cchar_t *, int); /* missing */ +#endif /* _XOPEN_SOURCE_EXTENDED */ + +extern bool mouse_trafo(int*, int*, bool); /* generated */ + +/* attributes */ + +#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + @cf_cv_widec_shift@)) + +#define A_NORMAL 0L +#define A_ATTRIBUTES NCURSES_BITS(~(@cf_cv_1UL@ - @cf_cv_1UL@),0) +#define A_CHARTEXT (NCURSES_BITS(@cf_cv_1UL@,0) - @cf_cv_1UL@) +#define A_COLOR NCURSES_BITS(((@cf_cv_1UL@) << 8) - @cf_cv_1UL@,0) +#define A_STANDOUT NCURSES_BITS(@cf_cv_1UL@,8) +#define A_UNDERLINE NCURSES_BITS(@cf_cv_1UL@,9) +#define A_REVERSE NCURSES_BITS(@cf_cv_1UL@,10) +#define A_BLINK NCURSES_BITS(@cf_cv_1UL@,11) +#define A_DIM NCURSES_BITS(@cf_cv_1UL@,12) +#define A_BOLD NCURSES_BITS(@cf_cv_1UL@,13) +#define A_ALTCHARSET NCURSES_BITS(@cf_cv_1UL@,14) +#define A_INVIS NCURSES_BITS(@cf_cv_1UL@,15) + +/* Tradeoff on 32-bit machines ('protect' vs widec). The others (e.g., left + * highlight are not implemented in any terminal descriptions, anyway. + */ +#if ((16 + @cf_cv_widec_shift@) < @cf_cv_shift_limit@) +#define A_PROTECT NCURSES_BITS(@cf_cv_1UL@,16) +#define A_HORIZONTAL NCURSES_BITS(@cf_cv_1UL@,17) +#define A_LEFT NCURSES_BITS(@cf_cv_1UL@,18) +#define A_LOW NCURSES_BITS(@cf_cv_1UL@,19) +#define A_RIGHT NCURSES_BITS(@cf_cv_1UL@,20) +#define A_TOP NCURSES_BITS(@cf_cv_1UL@,21) +#define A_VERTICAL NCURSES_BITS(@cf_cv_1UL@,22) +#else +#define A_PROTECT 0L +#define A_HORIZONTAL 0L +#define A_LEFT 0L +#define A_LOW 0L +#define A_RIGHT 0L +#define A_TOP 0L +#define A_VERTICAL 0L +#endif + +#define COLOR_PAIR(n) NCURSES_BITS(n, 0) +#define PAIR_NUMBER(a) (((a) & A_COLOR) >> @cf_cv_widec_shift@) + +/* + * pseudo functions + */ +#define wgetstr(w, s) wgetnstr(w, s, -1) +#define getnstr(s, n) wgetnstr(stdscr, s, n) + +#define setterm(term) setupterm(term, 1, (int *)0) + +#define fixterm() reset_prog_mode() +#define resetterm() reset_shell_mode() +#define saveterm() def_prog_mode() +#define crmode() cbreak() +#define nocrmode() nocbreak() +#define gettmode() + +#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) +#define getcury(win) ((win)?(win)->_cury:ERR) +#define getbegx(win) ((win)?(win)->_begx:ERR) +#define getbegy(win) ((win)?(win)->_begy:ERR) +#define getmaxx(win) ((win)?((win)->_maxx + 1):ERR) +#define getmaxy(win) ((win)?((win)->_maxy + 1):ERR) +#define getparx(win) ((win)?(win)->_parx:ERR) +#define getpary(win) ((win)?(win)->_pary:ERR) + +#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 wattrset(win,at) ((win)->_attrs = (at)) + +#define scroll(win) wscrl(win,1) + +#define touchwin(win) wtouchln((win), 0, getmaxy(win), 1) +#define touchline(win, s, c) wtouchln((win), s, c, 1) +#define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0) + +#define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0) +#define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br) +#define hline(ch, n) whline(stdscr, ch, n) +#define vline(ch, n) wvline(stdscr, ch, n) + +#define winstr(w, s) winnstr(w, s, -1) +#define winchstr(w, s) winchnstr(w, s, -1) +#define winsstr(w, s) winsnstr(w, s, -1) + +#define redrawwin(w) wredrawln(w, 0, w->_maxy+1) +#define waddstr(win,str) waddnstr(win,str,-1) +#define waddchstr(win,str) waddchnstr(win,str,-1) + +/* + * pseudo functions for standard screen + */ + +#define addch(ch) waddch(stdscr,ch) +#define addchnstr(str,n) waddchnstr(stdscr,str,n) +#define addchstr(str) waddchstr(stdscr,str) +#define addnstr(str,n) waddnstr(stdscr,str,n) +#define addstr(str) waddnstr(stdscr,str,-1) +#define attroff(at) wattroff(stdscr,at) +#define attron(at) wattron(stdscr,at) +#define attrset(at) wattrset(stdscr,at) +#define bkgd(ch) wbkgd(stdscr,ch) +#define bkgdset(ch) wbkgdset(stdscr,ch) +#define clear() wclear(stdscr) +#define clrtobot() wclrtobot(stdscr) +#define clrtoeol() wclrtoeol(stdscr) +#define color_set(c,o) wcolor_set(stdscr,c,o) +#define delch() wdelch(stdscr) +#define deleteln() winsdelln(stdscr,-1) +#define echochar(c) wechochar(stdscr,c) +#define erase() werase(stdscr) +#define getch() wgetch(stdscr) +#define getstr(str) wgetstr(stdscr,str) +#define inch() winch(stdscr) +#define inchnstr(s,n) winchnstr(stdscr,s,n) +#define inchstr(s) winchstr(stdscr,s) +#define innstr(s,n) winnstr(stdscr,s,n) +#define insch(c) winsch(stdscr,c) +#define insdelln(n) winsdelln(stdscr,n) +#define insertln() winsdelln(stdscr,1) +#define insnstr(s,n) winsnstr(stdscr,s,n) +#define insstr(s) winsstr(stdscr,s) +#define instr(s) winstr(stdscr,s) +#define move(y,x) wmove(stdscr,y,x) +#define refresh() wrefresh(stdscr) +#define scrl(n) wscrl(stdscr,n) +#define setscrreg(t,b) wsetscrreg(stdscr,t,b) +#define standend() wstandend(stdscr) +#define standout() wstandout(stdscr) +#define timeout(delay) wtimeout(stdscr,delay) +#define wdeleteln(win) winsdelln(win,-1) +#define winsertln(win) winsdelln(win,1) + +/* + * mv functions + */ + +#define mvwaddch(win,y,x,ch) (wmove(win,y,x) == ERR ? ERR : waddch(win,ch)) +#define mvwaddchnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n)) +#define mvwaddchstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1)) +#define mvwaddnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n)) +#define mvwaddstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1)) +#define mvwdelch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wdelch(win)) +#define mvwgetch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wgetch(win)) +#define mvwgetnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n)) +#define mvwgetstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : wgetstr(win,str)) +#define mvwhline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline(win,c,n)) +#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? (chtype)ERR : winch(win)) +#define mvwinchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n)) +#define mvwinchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winchstr(win,s)) +#define mvwinnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n)) +#define mvwinsch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winsch(win,c)) +#define mvwinsnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n)) +#define mvwinsstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winsstr(win,s)) +#define mvwinstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winstr(win,s)) +#define mvwvline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline(win,c,n)) + +#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch) +#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,y,x,str,n) +#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,y,x,str) +#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,y,x,str,n) +#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str) +#define mvdelch(y,x) mvwdelch(stdscr,y,x) +#define mvgetch(y,x) mvwgetch(stdscr,y,x) +#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,y,x,str,n) +#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str) +#define mvhline(y,x,c,n) mvwhline(stdscr,y,x,c,n) +#define mvinch(y,x) mvwinch(stdscr,y,x) +#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,y,x,s,n) +#define mvinchstr(y,x,s) mvwinchstr(stdscr,y,x,s) +#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,y,x,s,n) +#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c) +#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,y,x,s,n) +#define mvinsstr(y,x,s) mvwinsstr(stdscr,y,x,s) +#define mvinstr(y,x,s) mvwinstr(stdscr,y,x,s) +#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n) + +/* + * XSI curses macros for XPG4 conformance. + * The underlying functions needed to make these work are: + * waddnwstr(), waddchnwstr(), wadd_wch(), wborder_set(), wchgat(), + * wecho_wchar(), wgetn_wstr(), wget_wch(), whline_set(), vhline_set(), + * winnwstr(), wins_nwstr(), wins_wch(), win_wch(), win_wchnstr(). + * Except for wchgat(), these are not yet implemented. They will be someday. + */ +#define add_wch(c) wadd_wch(stdscr,c) +#define addnwstr(wstr,n) waddnwstr(stdscr,wstr,n) +#define addwstr(wstr,n) waddnwstr(stdscr,wstr,-1) +#define attr_get(a,pair,opts) wattr_get(stdscr,a,pair,opts) +#define attr_off(a,opts) wattr_off(stdscr,a,opts) +#define attr_on(a,opts) wattr_on(stdscr,a,opts) +#define attr_set(a,pair,opts) wattr_set(stdscr,a,pair,opts) +#define box_set(w,v,h) wborder_set(w,v,v,h,h,0,0,0,0) +#define chgat(n,a,c,o) wchgat(stdscr,n,a,c,o) +#define echo_wchar(c) wecho_wchar(stdscr,c) +#define getbkgd(win) ((win)->_bkgd) +#define get_wch(c) wget_wch(stdscr,c) +#define get_wstr(t) wgetn_wstr(stdscr,t,-1) +#define getn_wstr(t,n) wgetn_wstr(stdscr,t,n) +#define hline_set(c,n) whline_set(stdscr,c,n) +#define in_wch(c) win_wch(stdscr,c) +#define in_wchnstr(c,n) win_wchnstr(stdscr,c,n) +#define in_wchstr(c) win_wchnstr(stdscr,c,-1) +#define innwstr(c,n) winnwstr(stdscr,c,n) +#define ins_nwstr(t,n) wins_nwstr(stdscr,t,n) +#define ins_wch(c) wins_wch(stdscr,c) +#define ins_wstr(t) wins_nwstr(stdscr,t,-1) +#define inwstr(c) winnwstr(stdscr,c,-1) + +#define mvadd_wch(y,x,c) mvwadd_wch(stdscr,y,x,c) +#define mvaddnwstr(y,x,wstr,n) mvwaddnwstr(stdscr,y,x,wstr,n) +#define mvaddwstr(y,x,wstr,n) mvwaddnwstr(stdscr,y,x,wstr,-1) +#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,y,x,n,a,c,o) +#define mvget_wch(y,x,c) mvwget_wch(stdscr,y,x,c) +#define mvget_wstr(y,x,t) mvwgetn_wstr(stdscr,y,x,t,-1) +#define mvgetn_wstr(y,x,t,n) mvwgetn_wstr(stdscr,y,x,t,n) +#define mvhline_set(y,x,c,n) mvwhline_set(stdscr,y,x,c,n) +#define mvin_wch(y,x,c) mvwin_wch(stdscr,y,x,c) +#define mvin_wchnstr(y,x,c,n) mvwin_wchnstr(stdscr,y,x,c,n) +#define mvin_wchstr(y,x,c) mvwin_wchnstr(stdscr,y,x,c,-1) +#define mvinnwstr(y,x,c,n) mvwinnwstr(stdscr,y,x,c,n) +#define mvins_nwstr(y,x,t,n) mvwins_nwstr(stdscr,y,x,t,n) +#define mvins_wch(y,x,c) mvwins_wch(stdscr,y,x,c) +#define mvins_wstr(y,x,t) mvwins_nwstr(stdscr,y,x,t,-1) +#define mvinwstr(y,x,c) mvwinnwstr(stdscr,y,x,c,-1) +#define mvvline_set(y,x,c,n) mvwvline_set(stdscr,y,x,c,n) + +#define mvwadd_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wadd_wch(stdscr,c)) +#define mvwaddnwstr(win,y,x,wstr,n) (wmove(win,y,x) == ERR ? ERR : waddnwstr(stdscr,wstr,n)) +#define mvwaddwstr(win,y,x,wstr,n) (wmove(win,y,x) == ERR ? ERR : waddnwstr(stdscr,wstr,-1)) +#define mvwchgat(win,y,x,n,a,c,o) (wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o)) +#define mvwget_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wget_wch(win,c)) +#define mvwget_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,-1)) +#define mvwgetn_wstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,n)) +#define mvwhline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline_set(win,c,n)) +#define mvwin_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wch(win,c)) +#define mvwin_wchnstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : win_wchnstr(stdscr,c,n)) +#define mvwin_wchstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wchnstr(stdscr,c,-1)) +#define mvwinnwstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : winnwstr(stdscr,c,n)) +#define mvwins_nwstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wins_nwstr(stdscr,t,n)) +#define mvwins_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wins_wch(stdscr,c)) +#define mvwins_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wins_nwstr(stdscr,t,-1)) +#define mvwinwstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winnwstr(stdscr,c,-1)) +#define mvwvline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline_set(win,c,n)) + +#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a)) +#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a)) + +#define vid_attr(a,pair,opts) vidattr(a) +#define vline_set(c,n) wvline_set(stdscr,c,n) +#define waddwstr(win,wstr,n) waddnwstr(win,wstr,-1) +#define wattr_get(win,a,p,opts) ((void)((a) != 0 && (*(a) = (win)->_attrs)), \ + (void)((p) != 0 && (*(p) = PAIR_NUMBER((win)->_attrs))), \ + OK) +#define wget_wstr(w,t) wgetn_wstr(w,t,-1) +#define win_wchstr(w,c) win_wchnstr(w,c,-1) +#define wins_wstr(w,t) wins_nwstr(w,t,-1) +#define winwstr(w,c) winnwstr(w,c,-1) + + +/* + * XSI curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use + * varargs.h. It adds new calls vw_printw/vw_scanw, which are supposed to + * use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already + * use stdarg.h, so... + */ +#define vw_printw vwprintw +#define vw_scanw vwscanw + +/* + * Pseudo-character tokens outside ASCII range. The curses wgetch() function + * will return any given one of these only if the corresponding k- capability + * is defined in your terminal's terminfo entry. + */ +#define KEY_CODE_YES 0400 /* A wchar_t contains a key code */ +#define KEY_MIN 0401 /* Minimum curses key */ +#define KEY_BREAK 0401 /* Break key (unreliable) */ +#define KEY_DOWN 0402 /* Down-arrow */ +#define KEY_UP 0403 /* Up-arrow */ +#define KEY_LEFT 0404 /* Left-arrow */ +#define KEY_RIGHT 0405 /* Right-arrow */ +#define KEY_HOME 0406 /* Home key (upward+left arrow) */ +#define KEY_BACKSPACE 0407 /* Backspace (unreliable) */ +#define KEY_F0 0410 /* Function keys. Space for 64 */ +#define KEY_F(n) (KEY_F0+(n)) /* Value of function key n */ +#define KEY_DL 0510 /* Delete line */ +#define KEY_IL 0511 /* Insert line */ +#define KEY_DC 0512 /* Delete character */ +#define KEY_IC 0513 /* Insert char or enter insert mode */ +#define KEY_EIC 0514 /* Exit insert char mode */ +#define KEY_CLEAR 0515 /* Clear screen */ +#define KEY_EOS 0516 /* Clear to end of screen */ +#define KEY_EOL 0517 /* Clear to end of line */ +#define KEY_SF 0520 /* Scroll 1 line forward */ +#define KEY_SR 0521 /* Scroll 1 line backward (reverse) */ +#define KEY_NPAGE 0522 /* Next page */ +#define KEY_PPAGE 0523 /* Previous page */ +#define KEY_STAB 0524 /* Set tab */ +#define KEY_CTAB 0525 /* Clear tab */ +#define KEY_CATAB 0526 /* Clear all tabs */ +#define KEY_ENTER 0527 /* Enter or send (unreliable) */ +#define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */ +#define KEY_RESET 0531 /* Reset or hard reset (unreliable) */ +#define KEY_PRINT 0532 /* Print */ +#define KEY_LL 0533 /* Home down or bottom (lower left) */ + +/* The keypad is arranged like this: */ +/* a1 up a3 */ +/* left b2 right */ +/* c1 down c3 */ + +#define KEY_A1 0534 /* Upper left of keypad */ +#define KEY_A3 0535 /* Upper right of keypad */ +#define KEY_B2 0536 /* Center of keypad */ +#define KEY_C1 0537 /* Lower left of keypad */ +#define KEY_C3 0540 /* Lower right of keypad */ +#define KEY_BTAB 0541 /* Back tab */ +#define KEY_BEG 0542 /* Beg (beginning) */ +#define KEY_CANCEL 0543 /* Cancel */ +#define KEY_CLOSE 0544 /* Close */ +#define KEY_COMMAND 0545 /* Cmd (command) */ +#define KEY_COPY 0546 /* Copy */ +#define KEY_CREATE 0547 /* Create */ +#define KEY_END 0550 /* End */ +#define KEY_EXIT 0551 /* Exit */ +#define KEY_FIND 0552 /* Find */ +#define KEY_HELP 0553 /* Help */ +#define KEY_MARK 0554 /* Mark */ +#define KEY_MESSAGE 0555 /* Message */ +#define KEY_MOVE 0556 /* Move */ +#define KEY_NEXT 0557 /* Next */ +#define KEY_OPEN 0560 /* Open */ +#define KEY_OPTIONS 0561 /* Options */ +#define KEY_PREVIOUS 0562 /* Prev (previous) */ +#define KEY_REDO 0563 /* Redo */ +#define KEY_REFERENCE 0564 /* Ref (reference) */ +#define KEY_REFRESH 0565 /* Refresh */ +#define KEY_REPLACE 0566 /* Replace */ +#define KEY_RESTART 0567 /* Restart */ +#define KEY_RESUME 0570 /* Resume */ +#define KEY_SAVE 0571 /* Save */ +#define KEY_SBEG 0572 /* Shifted Beg (beginning) */ +#define KEY_SCANCEL 0573 /* Shifted Cancel */ +#define KEY_SCOMMAND 0574 /* Shifted Command */ +#define KEY_SCOPY 0575 /* Shifted Copy */ +#define KEY_SCREATE 0576 /* Shifted Create */ +#define KEY_SDC 0577 /* Shifted Delete char */ +#define KEY_SDL 0600 /* Shifted Delete line */ +#define KEY_SELECT 0601 /* Select */ +#define KEY_SEND 0602 /* Shifted End */ +#define KEY_SEOL 0603 /* Shifted Clear line */ +#define KEY_SEXIT 0604 /* Shifted Dxit */ +#define KEY_SFIND 0605 /* Shifted Find */ +#define KEY_SHELP 0606 /* Shifted Help */ +#define KEY_SHOME 0607 /* Shifted Home */ +#define KEY_SIC 0610 /* Shifted Input */ +#define KEY_SLEFT 0611 /* Shifted Left arrow */ +#define KEY_SMESSAGE 0612 /* Shifted Message */ +#define KEY_SMOVE 0613 /* Shifted Move */ +#define KEY_SNEXT 0614 /* Shifted Next */ +#define KEY_SOPTIONS 0615 /* Shifted Options */ +#define KEY_SPREVIOUS 0616 /* Shifted Prev */ +#define KEY_SPRINT 0617 /* Shifted Print */ +#define KEY_SREDO 0620 /* Shifted Redo */ +#define KEY_SREPLACE 0621 /* Shifted Replace */ +#define KEY_SRIGHT 0622 /* Shifted Right arrow */ +#define KEY_SRSUME 0623 /* Shifted Resume */ +#define KEY_SSAVE 0624 /* Shifted Save */ +#define KEY_SSUSPEND 0625 /* Shifted Suspend */ +#define KEY_SUNDO 0626 /* Shifted Undo */ +#define KEY_SUSPEND 0627 /* Suspend */ +#define KEY_UNDO 0630 /* Undo */ +#define KEY_MOUSE 0631 /* Mouse event has occurred */ +#define KEY_RESIZE 0632 /* Terminal resize event */ +#define KEY_MAX 0777 /* Maximum key value */ + +/* mouse interface */ +#define NCURSES_MOUSE_VERSION 1 + +/* 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 + +/* macros to extract single event-bits from masks */ +#define BUTTON_RELEASE(e, x) ((e) & (001 << (6 * ((x) - 1)))) +#define BUTTON_PRESS(e, x) ((e) & (002 << (6 * ((x) - 1)))) +#define BUTTON_CLICK(e, x) ((e) & (004 << (6 * ((x) - 1)))) +#define BUTTON_DOUBLE_CLICK(e, x) ((e) & (010 << (6 * ((x) - 1)))) +#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 */ + int x, y, z; /* event coordinates (character-cell) */ + mmask_t bstate; /* button state bits */ +} +MEVENT; + +extern int getmouse(MEVENT *); +extern int ungetmouse(MEVENT *); +extern mmask_t mousemask(mmask_t, mmask_t *); +extern bool wenclose(const WINDOW *, int, int); +extern int mouseinterval(int); +extern bool wmouse_trafo(const WINDOW* win,int* y, int* x, bool to_screen); + +#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen) + +/* other non-XSI functions */ + +extern int mcprint(char *, int); /* direct data to printer */ +extern int has_key(int); /* do we have given key? */ + +/* Debugging : use with libncurses_g.a */ + +extern void _tracef(const char *, ...) GCC_PRINTFLIKE(1,2); +extern void _tracedump(const char *, WINDOW *); +extern char *_traceattr(attr_t); +extern char *_traceattr2(int, chtype); +extern char *_nc_tracebits(void); +extern char *_tracechar(const unsigned char); +extern char *_tracechtype(chtype); +extern char *_tracechtype2(int, chtype); +extern char *_tracemouse(const MEVENT *); +extern void trace(const unsigned int); + +/* trace masks */ +#define TRACE_DISABLE 0x0000 /* turn off tracing */ +#define TRACE_TIMES 0x0001 /* trace user and system times of updates */ +#define TRACE_TPUTS 0x0002 /* trace tputs calls */ +#define TRACE_UPDATE 0x0004 /* trace update actions, old & new screens */ +#define TRACE_MOVE 0x0008 /* trace cursor moves and scrolls */ +#define TRACE_CHARPUT 0x0010 /* trace all character outputs */ +#define TRACE_ORDINARY 0x001F /* trace all update actions */ +#define TRACE_CALLS 0x0020 /* trace all curses calls */ +#define TRACE_VIRTPUT 0x0040 /* trace virtual character puts */ +#define TRACE_IEVENT 0x0080 /* trace low-level input processing */ +#define TRACE_BITS 0x0100 /* trace state of TTY control bits */ +#define TRACE_ICALLS 0x0200 /* trace internal/nested calls */ +#define TRACE_CCALLS 0x0400 /* trace per-character calls */ +#define TRACE_MAXIMUM 0xffff /* maximum trace level */ + +#if defined(TRACE) || defined(NCURSES_TEST) +extern int _nc_optimize_enable; /* enable optimizations */ +extern const char *_nc_visbuf(const char *); +#define OPTIMIZE_MVCUR 0x01 /* cursor movement optimization */ +#define OPTIMIZE_HASHMAP 0x02 /* diff hashing to detect scrolls */ +#define OPTIMIZE_SCROLL 0x04 /* scroll optimization */ +#define OPTIMIZE_ALL 0xff /* enable all optimizations (dflt) */ +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __NCURSES_H */ diff --git a/contrib/ncurses/include/edit_cfg.sh b/contrib/ncurses/include/edit_cfg.sh new file mode 100755 index 0000000..baa31f6 --- /dev/null +++ b/contrib/ncurses/include/edit_cfg.sh @@ -0,0 +1,66 @@ +#!/bin/sh +# $Id: edit_cfg.sh,v 1.9 1998/02/11 12:13:46 tom Exp $ +############################################################################## +# Copyright (c) 1998 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 +# +# Edit the default value of the term.h file based on the autoconf-generated +# values: +# +# $1 = ncurses_cfg.h +# $2 = term.h +# +BAK=save$$ +TMP=edit$$ +trap "rm -f $BAK $TMP" 0 1 2 5 15 +for name in \ + HAVE_TCGETATTR \ + HAVE_TERMIOS_H \ + HAVE_TERMIO_H \ + NCURSES_CONST \ + BROKEN_LINKER +do + mv $2 $BAK + if ( grep "[ ]$name[ ]" $1 2>&1 >$TMP ) + then + sed -e 's@#define '$name'.*$@'"`cat $TMP`@" $BAK >$2 + elif test "$name" = "NCURSES_CONST" ; then + sed -e 's/define '$name'.*$/define '$name' \/\*nothing\*\//' $BAK >$2 + else + sed -e 's/define '$name'.*$/define '$name' 0/' $BAK >$2 + fi + if (cmp -s $2 $BAK) + then + echo '** same: '$name + mv $BAK $2 + else + echo '** edit: '$name + rm -f $BAK + fi +done diff --git a/contrib/ncurses/include/headers b/contrib/ncurses/include/headers new file mode 100644 index 0000000..2a185c2 --- /dev/null +++ b/contrib/ncurses/include/headers @@ -0,0 +1,34 @@ +############################################################################## +# Copyright (c) 1998 Free Software Foundation, Inc. # +# # +# Permission is hereby granted, free of charge, to any person obtaining a # +# copy of this software and associated documentation files (the "Software"), # +# to deal in the Software without restriction, including without limitation # +# the rights to use, copy, modify, merge, publish, distribute, distribute # +# with modifications, sublicense, and/or sell copies of the Software, and to # +# permit persons to whom the Software is furnished to do so, subject to the # +# following conditions: # +# # +# The above copyright notice and this permission notice shall be included in # +# all copies or substantial portions of the Software. # +# # +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL # +# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER # +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING # +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER # +# DEALINGS IN THE SOFTWARE. # +# # +# Except as contained in this notice, the name(s) of the above copyright # +# holders shall not be used in advertising or otherwise to promote the sale, # +# use or other dealings in this Software without prior written # +# authorization. # +############################################################################## +# +# Author: Thomas E. Dickey <dickey@clark.net> 1996 +# +term.h +curses.h +unctrl.h +termcap.h diff --git a/contrib/ncurses/include/nc_alloc.h b/contrib/ncurses/include/nc_alloc.h new file mode 100644 index 0000000..1e23a97 --- /dev/null +++ b/contrib/ncurses/include/nc_alloc.h @@ -0,0 +1,72 @@ +/**************************************************************************** + * Copyright (c) 1998 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 * + ****************************************************************************/ +/* $Id: nc_alloc.h,v 1.7 1999/04/03 23:15:13 tom Exp $ */ + +#ifndef NC_ALLOC_included +#define NC_ALLOC_included 1 + +#if HAVE_LIBDMALLOC +#include <dmalloc.h> /* Gray Watson's library */ +#else +#undef HAVE_LIBDMALLOC +#define HAVE_LIBDMALLOC 0 +#endif + +#if HAVE_LIBDBMALLOC +#include <dbmalloc.h> /* Conor Cahill's library */ +#else +#undef HAVE_LIBDBMALLOC +#define HAVE_LIBDBMALLOC 0 +#endif + +#ifndef NO_LEAKS +#define NO_LEAKS 0 +#endif + +#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); +#define ExitProgram(code) _nc_free_and_exit(code) +#endif + +#ifndef HAVE_NC_FREEALL +#define HAVE_NC_FREEALL 0 +#endif + +#ifndef ExitProgram +#define ExitProgram(code) return code +#endif + +#endif /* NC_ALLOC_included */ diff --git a/contrib/ncurses/include/nc_panel.h b/contrib/ncurses/include/nc_panel.h new file mode 100644 index 0000000..dbb20fa --- /dev/null +++ b/contrib/ncurses/include/nc_panel.h @@ -0,0 +1,66 @@ +/**************************************************************************** + * Copyright (c) 1998 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + + +/* + * $Id: nc_panel.h,v 1.2 1998/02/11 12:13:45 tom Exp $ + * + * nc_panel.h + * + * Headerfile to provide an interface for the panel layer into + * the SCREEN structure of the ncurses core. + */ + +#ifndef NC_PANEL_H +#define NC_PANEL_H 1 + +#ifdef __cplusplus +extern "C" { +#endif + +struct panel; /* Forward Declaration */ + +struct panelhook { + struct panel* top_panel; + struct panel* bottom_panel; + struct panel* stdscr_pseudo_panel; +}; + +/* Retrieve the panelhook of the current screen */ +extern struct panelhook* _nc_panelhook(void); + +#ifdef __cplusplus +} +#endif + +#endif /* NC_PANEL_H */ diff --git a/contrib/ncurses/include/ncurses_cfg.hin b/contrib/ncurses/include/ncurses_cfg.hin new file mode 100644 index 0000000..f80fb83 --- /dev/null +++ b/contrib/ncurses/include/ncurses_cfg.hin @@ -0,0 +1,56 @@ +/**************************************************************************** + * Copyright (c) 1998 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Thomas E. Dickey <dickey@clark.net> 1997 * + ****************************************************************************/ +/* + * $Id: ncurses_cfg.hin,v 1.2 1998/02/11 12:13:46 tom Exp $ + * + * This is a template-file used to generate the "ncurses_cfg.h" file. + * + * Rather than list every definition, the configuration script substitutes + * the definitions that it finds using 'sed'. You need a patch (971222) + * to autoconf 2.12 to do this. + */ +#ifndef NC_CONFIG_H +#define NC_CONFIG_H +@DEFS@ + + /* The C compiler may not treat these properly but C++ has to */ +#ifdef __cplusplus +#undef const +#undef inline +#else +#if defined(lint) || defined(TRACE) +#undef inline +#define inline /* nothing */ +#endif +#endif + +#endif /* NC_CONFIG_H */ diff --git a/contrib/ncurses/include/term_entry.h b/contrib/ncurses/include/term_entry.h new file mode 100644 index 0000000..a19b601 --- /dev/null +++ b/contrib/ncurses/include/term_entry.h @@ -0,0 +1,155 @@ +/**************************************************************************** + * Copyright (c) 1998 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + + +/* + * term_entry.h -- interface to entry-manipulation code + */ + +#ifndef _TERM_ENTRY_H +#define _TERM_ENTRY_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <term.h> + +#define MAX_USES 32 + +typedef struct entry { + TERMTYPE tterm; + int nuses; + struct + { + void *parent; /* (char *) or (ENTRY *) */ + long line; + } + uses[MAX_USES]; + long cstart, cend; + long startline; + struct entry *next; + struct entry *last; +} +ENTRY; + +#if NCURSES_XNAMES +#define NUM_BOOLEANS(tp) (tp)->num_Booleans +#define NUM_NUMBERS(tp) (tp)->num_Numbers +#define NUM_STRINGS(tp) (tp)->num_Strings +#define EXT_NAMES(tp,i,limit,index,table) (i >= limit) ? tp->ext_Names[index] : table[i] +#else +#define NUM_BOOLEANS(tp) BOOLCOUNT +#define NUM_NUMBERS(tp) NUMCOUNT +#define NUM_STRINGS(tp) STRCOUNT +#define EXT_NAMES(tp,i,limit,index,table) table[i] +#endif + +#define NUM_EXT_NAMES(tp) ((tp)->ext_Booleans + (tp)->ext_Numbers + (tp)->ext_Strings) + +#define for_each_boolean(n,tp) for(n = 0; n < NUM_BOOLEANS(tp); n++) +#define for_each_number(n,tp) for(n = 0; n < NUM_NUMBERS(tp); n++) +#define for_each_string(n,tp) for(n = 0; n < NUM_STRINGS(tp); n++) + +#define ExtBoolname(tp,i,names) EXT_NAMES(tp, i, BOOLCOUNT, (i - (tp->num_Booleans - tp->ext_Booleans)), names) +#define ExtNumname(tp,i,names) EXT_NAMES(tp, i, NUMCOUNT, (i - (tp->num_Numbers - tp->ext_Numbers)) + tp->ext_Booleans, names) +#define ExtStrname(tp,i,names) EXT_NAMES(tp, i, STRCOUNT, (i - (tp->num_Strings - tp->ext_Strings)) + (tp->ext_Numbers + tp->ext_Booleans), names) + +extern ENTRY *_nc_head, *_nc_tail; +#define for_entry_list(qp) for (qp = _nc_head; qp; qp = qp->next) + +#define MAX_LINE 132 + +#define NULLHOOK (bool(*)(ENTRY *))0 + +/* + * Note that WANTED and PRESENT are not simple inverses! If a capability + * has been explicitly cancelled, it's not considered WANTED. + */ +#define WANTED(s) ((s) == ABSENT_STRING) +#define PRESENT(s) (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING)) + +#define ANDMISSING(p,q) \ + {if (PRESENT(p) && !PRESENT(q)) _nc_warning(#p " but no " #q);} + +#define PAIRED(p,q) \ + { \ + if (PRESENT(q) && !PRESENT(p)) \ + _nc_warning(#q " but no " #p); \ + if (PRESENT(p) && !PRESENT(q)) \ + _nc_warning(#p " but no " #q); \ + } + +/* alloc_entry.c: elementary allocation code */ +extern ENTRY *_nc_copy_entry(ENTRY *oldp); +extern char *_nc_save_str(const char *const); +extern void _nc_init_entry(TERMTYPE *const); +extern void _nc_merge_entry(TERMTYPE *const, TERMTYPE *const); +extern void _nc_wrap_entry(ENTRY *const); + +/* alloc_ttype.c: elementary allocation code */ +extern void _nc_align_termtype(TERMTYPE *, TERMTYPE *); +extern void _nc_copy_termtype(TERMTYPE *, TERMTYPE *); + +/* free_ttype.c: elementary allocation code */ +extern void _nc_free_termtype(TERMTYPE *); + +/* lib_acs.c */ +extern void _nc_init_acs(void); /* corresponds to traditional 'init_acs()' */ + +/* parse_entry.c: entry-parsing code */ +#if NCURSES_XNAMES +extern bool _nc_user_definable; +#endif +extern int _nc_parse_entry(ENTRY *, int, bool); +extern int _nc_capcmp(const char *, const char *); + +/* write_entry.c: writing an entry to the file system */ +extern void _nc_set_writedir(char *); +extern void _nc_write_entry(TERMTYPE *const); + +/* comp_parse.c: entry list handling */ +extern void _nc_read_entry_source(FILE*, char*, int, bool, bool (*)(ENTRY*)); +extern bool _nc_entry_match(char *, char *); +extern int _nc_resolve_uses(void); +extern void _nc_free_entries(ENTRY *); +extern void (*_nc_check_termtype)(TERMTYPE *); + +/* trace_xnames.c */ +extern void _nc_trace_xnames(TERMTYPE *); + +#ifdef __cplusplus +} +#endif + +#endif /* _TERM_ENTRY_H */ diff --git a/contrib/ncurses/include/termcap.h.in b/contrib/ncurses/include/termcap.h.in new file mode 100644 index 0000000..5c6c07a --- /dev/null +++ b/contrib/ncurses/include/termcap.h.in @@ -0,0 +1,71 @@ +/**************************************************************************** + * Copyright (c) 1998 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + +/* $Id: termcap.h.in,v 1.10 1999/01/09 22:38:04 Uchiyama.Yasushi Exp $ */ + +#ifndef _NCU_TERMCAP_H +#define _NCU_TERMCAP_H 1 + +#undef NCURSES_VERSION +#define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@" + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +#include <sys/types.h> +@OSPEED_INCLUDES@ + +#undef NCURSES_CONST +#define NCURSES_CONST @NCURSES_CONST@ + +extern char PC; +extern char *UP; +extern char *BC; +extern @OSPEED_TYPE@ ospeed; + +#if !defined(_NCU_TERM_H) +extern char *tgetstr(NCURSES_CONST char *, char **); +extern char *tgoto(const char *, int, int); +extern int tgetent(char *, const char *); +extern int tgetflag(NCURSES_CONST char *); +extern int tgetnum(NCURSES_CONST char *); +extern int tputs(const char *, int, int (*)(int)); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _NCU_TERMCAP_H */ diff --git a/contrib/ncurses/include/tic.h b/contrib/ncurses/include/tic.h new file mode 100644 index 0000000..58bc27f --- /dev/null +++ b/contrib/ncurses/include/tic.h @@ -0,0 +1,274 @@ +/**************************************************************************** + * Copyright (c) 1998 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + +/* + * tic.h - Global variables and structures for the terminfo + * compiler. + * + */ + +#ifndef __TIC_H +#define __TIC_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <curses.h> /* for the _tracef() prototype, ERR/OK, bool defs */ + +/* +** The format of compiled terminfo files is as follows: +** +** Header (12 bytes), containing information given below +** Names Section, containing the names of the terminal +** Boolean Section, containing the values of all of the +** boolean capabilities +** A null byte may be inserted here to make +** sure that the Number Section begins on an +** even word boundary. +** Number Section, containing the values of all of the numeric +** capabilities, each as a short integer +** String Section, containing short integer offsets into the +** String Table, one per string capability +** String Table, containing the actual characters of the string +** capabilities. +** +** NOTE that all short integers in the file are stored using VAX/PDP-style +** byte-order, i.e., least-significant byte first. +** +** There is no structure definition here because it would only confuse +** matters. Terminfo format is a raw byte layout, not a structure +** dump. If you happen to be on a little-endian machine with 16-bit +** shorts that requires no padding between short members in a struct, +** then there is a natural C structure that captures the header, but +** not very helpfully. +*/ + +#define MAGIC 0432 /* first two bytes of a compiled entry */ + +/* + * The "maximum" here is misleading; XSI guarantees minimum values, which a + * given implementation may exceed. + */ +#define MAX_NAME_SIZE 512 /* maximum legal name field size (XSI:127) */ +#define MAX_ENTRY_SIZE 4096 /* maximum legal entry size */ + +/* The maximum size of individual name or alias is guaranteed in XSI to + * be 14, since that corresponds to the older filename lengths. Newer + * systems allow longer aliases, though not many terminal descriptions + * are written to use them. + */ +#if HAVE_LONG_FILE_NAMES +#define MAX_ALIAS 32 /* POSIX minimum for PATH_MAX */ +#else +#define MAX_ALIAS 14 /* SVr3 filename length */ +#endif + +/* location of user's personal info directory */ +#define PRIVATE_INFO "%s/.terminfo" /* plug getenv("HOME") into %s */ + +#ifdef TRACE +#define DEBUG(n, a) if (_nc_tracing & (1 << (n - 1))) _tracef a +#else +#define DEBUG(n, a) /*nothing*/ +#endif + +extern unsigned _nc_tracing; +extern void _nc_tracef(char *, ...) GCC_PRINTFLIKE(1,2); +extern const char *_nc_visbuf(const char *); + +/* + * These are the types of tokens returned by the scanner. The first + * three are also used in the hash table of capability names. The scanner + * returns one of these values after loading the specifics into the global + * structure curr_token. + */ + +#define BOOLEAN 0 /* Boolean capability */ +#define NUMBER 1 /* Numeric capability */ +#define STRING 2 /* String-valued capability */ +#define CANCEL 3 /* Capability to be cancelled in following tc's */ +#define NAMES 4 /* The names for a terminal type */ +#define UNDEF 5 /* Undefined */ + +#define NO_PUSHBACK -1 /* used in pushtype to indicate no pushback */ + + /* + * The global structure in which the specific parts of a + * scanned token are returned. + * + */ + +struct token +{ + char *tk_name; /* name of capability */ + int tk_valnumber; /* value of capability (if a number) */ + char *tk_valstring; /* value of capability (if a string) */ +}; + +extern struct token _nc_curr_token; + + /* + * List of keynames with their corresponding code. + */ +struct kn { + const char *name; + int code; +}; + +extern const struct kn _nc_key_names[]; + + /* + * Offsets to string capabilities, with the corresponding functionkey + * codes. + */ +struct tinfo_fkeys { + unsigned offset; + chtype code; + }; + +extern struct tinfo_fkeys _nc_tinfo_fkeys[]; + + /* + * The file comp_captab.c contains an array of these structures, one + * per possible capability. These are indexed by a hash table array of + * pointers to the same structures for use by the parser. + */ + +struct name_table_entry +{ + const char *nte_name; /* name to hash on */ + int nte_type; /* BOOLEAN, NUMBER or STRING */ + short nte_index; /* index of associated variable in its array */ + short nte_link; /* index in table of next hash, or -1 */ +}; + +struct alias +{ + const char *from; + const char *to; + const char *source; +}; + +extern const struct name_table_entry * const _nc_info_hash_table[]; +extern const struct name_table_entry * const _nc_cap_hash_table[]; + +extern const struct alias _nc_capalias_table[]; +extern const struct alias _nc_infoalias_table[]; + +extern const struct name_table_entry *_nc_get_table(bool); +extern const struct name_table_entry * const *_nc_get_hash_table(bool); + +#define NOTFOUND ((struct name_table_entry *) 0) + +/* out-of-band values for representing absent capabilities */ +#define ABSENT_BOOLEAN -1 +#define ABSENT_NUMERIC -1 +#define ABSENT_STRING (char *)0 + +/* out-of-band values for representing cancels */ +#define CANCELLED_BOOLEAN (char)(-2) +#define CANCELLED_NUMERIC -2 +#define CANCELLED_STRING (char *)-1 + +#define VALID_BOOLEAN(s) ((s) >= 0) +#define VALID_NUMERIC(s) ((s) >= 0) +#define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING) + +/* termcap entries longer than this may break old binaries */ +#define MAX_TERMCAP_LENGTH 1023 + +/* this is a documented limitation of terminfo */ +#define MAX_TERMINFO_LENGTH 4096 + +#ifndef TERMINFO +#define TERMINFO "/usr/share/terminfo" +#endif + +/* comp_hash.c: name lookup */ +struct name_table_entry const *_nc_find_entry(const char *, + const struct name_table_entry *const *); +struct name_table_entry const *_nc_find_type_entry(const char *, + int, + const struct name_table_entry *); + +/* comp_scan.c: lexical analysis */ +extern int _nc_get_token(void); +extern void _nc_push_token(int); +extern void _nc_reset_input(FILE *, char *); +extern void _nc_panic_mode(char); +extern int _nc_curr_line; +extern int _nc_curr_col; +extern long _nc_curr_file_pos; +extern long _nc_comment_start, _nc_comment_end; +extern int _nc_syntax; +extern long _nc_start_line; +#define SYN_TERMINFO 0 +#define SYN_TERMCAP 1 + +/* comp_error.c: warning & abort messages */ +extern void _nc_set_source(const char *const name); +extern void _nc_get_type(char *name); +extern void _nc_set_type(const char *const name); +extern void _nc_syserr_abort(const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN; +extern void _nc_err_abort(const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN; +extern void _nc_warning(const char *const,...) GCC_PRINTFLIKE(1,2); +extern bool _nc_suppress_warnings; + +/* comp_expand.c: expand string into readable form */ +extern char *_nc_tic_expand(const char *, bool, int); + +/* comp_scan.c: decode string from readable form */ +extern char _nc_trans_string(char *); + +/* captoinfo.c: capability conversion */ +extern char *_nc_captoinfo(const char *, const char *, int const); +extern char *_nc_infotocap(const char *, const char *, int const); + +/* lib_tputs.c */ +extern int _nc_nulls_sent; /* Add one for every null sent */ + +/* comp_main.c: compiler main */ +extern const char *_nc_progname; + +/* read_entry.c */ +extern const char *_nc_tic_dir(const char *); + +/* write_entry.c */ +extern int _nc_tic_written(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __TIC_H */ diff --git a/contrib/ncurses/include/unctrl.h.in b/contrib/ncurses/include/unctrl.h.in new file mode 100644 index 0000000..cc10079 --- /dev/null +++ b/contrib/ncurses/include/unctrl.h.in @@ -0,0 +1,63 @@ +/**************************************************************************** + * Copyright (c) 1998 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + +/* + * unctrl.h + * + * Display a printable version of a control character. + * Control characters are displayed in caret notation (^x), DELETE is displayed + * as ^?. Printable characters are displayed as is. + */ + +/* $Id: unctrl.h.in,v 1.8 1998/02/11 12:13:45 tom Exp $ */ + +#ifndef _UNCTRL_H +#define _UNCTRL_H 1 + +#undef NCURSES_VERSION +#define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@" + +#ifdef __cplusplus +extern "C" { +#endif + +#include <curses.h> + +#undef unctrl +extern NCURSES_CONST char *unctrl(chtype); + +#ifdef __cplusplus +} +#endif + +#endif /* _UNCTRL_H */ |