X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fterminfo.5.html;h=37564f4206fae734409f8644ab5bf6b6f28710ef;hp=40f2770f6d9f4dbf84679478e2a478eec2644e66;hb=a8e3f06ac309504143cd56ac9ec55889bfdf4914;hpb=f344f8539c1543f8cd65a5bb142dbaf23b9421d2 diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html index 40f2770f..37564f42 100644 --- a/doc/html/man/terminfo.5.html +++ b/doc/html/man/terminfo.5.html @@ -5,7 +5,7 @@ * Note: this must be run through tbl before nroff. * The magic cookie on the first line triggers this under some man programs. **************************************************************************** - * Copyright (c) 1998-2013,2016 Free Software Foundation, Inc. * + * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -31,9 +31,9 @@ * sale, use or other dealings in this Software without prior written * * authorization. * **************************************************************************** - * @Id: terminfo.head,v 1.22 2016/10/15 17:02:31 tom Exp @ + * @Id: terminfo.head,v 1.32 2017/04/22 13:52:49 tom Exp @ * Head of terminfo man page ends here - * @Id: terminfo.tail,v 1.76 2017/01/07 18:32:49 tom Exp @ + * @Id: terminfo.tail,v 1.84 2017/04/22 16:00:56 tom Exp @ * Beginning of terminfo.tail file * This file is part of ncurses. * See "terminfo.head" for copyright. @@ -75,30 +75,56 @@ nals by giving a set of capabilities which they have, by specifying how to perform screen operations, and by speci- fying padding requirements and initialization sequences. - This describes ncurses version 6.0 (patch 20170114). - - Entries in terminfo consist of a sequence of `,' separated - fields (embedded commas may be escaped with a backslash or - notated as \054). White space after the `,' separator is - ignored. The first entry for each terminal gives the - names which are known for the terminal, separated by `|' - characters. The first name given is the most common - abbreviation for the terminal, the last name given should - be a long name fully identifying the terminal, and all - others are understood as synonyms for the terminal name. - All names but the last should be in lower case and contain - no blanks; the last name may well contain upper case and - blanks for readability. - - Lines beginning with a `#' in the first column are treated - as comments. While comment lines are legal at any point, - the output of captoinfo and infotocap (aliases for tic) - will move comments so they occur only between entries. - - Newlines and leading tabs may be used for formatting - entries for readability. These are removed from parsed - entries. The infocmp -f option relies on this to format - if-then-else expressions: the result can be read by tic. + This describes ncurses version 6.0 (patch 20170422). + + +
+ Entries in terminfo consist of a sequence of fields: + + o Each field ends with a comma "," (embedded commas may + be escaped with a backslash or written as "\054"). + + o White space between fields is ignored. + + o The first field in a terminfo entry begins in the + first column. + + o Newlines and leading whitespace (spaces or tabs) may + be used for formatting entries for readability. These + are removed from parsed entries. + + The infocmp -f and -W options rely on this to format + if-then-else expressions, or to enforce maximum line- + width. The resulting formatted terminal description + can be read by tic. + + o The first field for each terminal gives the names + which are known for the terminal, separated by "|" + characters. + + The first name given is the most common abbreviation + for the terminal (its primary name), the last name + given should be a long name fully identifying the ter- + minal (see longname(3x)), and all others are treated + as synonyms (aliases) for the primary terminal name. + + X/Open Curses advises that all names but the last + should be in lower case and contain no blanks; the + last name may well contain upper case and blanks for + readability. + + This implementation is not so strict; it allows mixed + case in the primary name and aliases. If the last + name has no embedded blanks, it allows that to be both + an alias and a verbose name (but will warn about this + ambiguity). + + o Lines beginning with a "#" in the first column are + treated as comments. + + While comment lines are legal at any point, the output + of captoinfo and infotocap (aliases for tic) will move + comments so they occur only between entries. Terminal names (except for the last, verbose entry) should be chosen using the following conventions. The particular @@ -123,48 +149,114 @@ -rv Reverse video c100-rv -s Enable status line vt100-s -vb Use visible bell instead of beep wy370-vb - -w Wide mode (> 80 columns, usually 132) vt100-w For more on terminal naming conventions, see the term(7) manual page. +
+ The terminfo entry consists of several capabilities, i.e., + features that the terminal has, or methods for exercising + the terminal's features. + + After the first field (giving the name(s) of the terminal + entry), there should be one or more capability fields. + These are boolean, numeric or string names with corre- + sponding values: + + o Boolean capabilities are true when present, false when + absent. There is no explicit value for boolean capa- + bilities. + + o Numeric capabilities have a "#" following the name, + then an unsigned decimal integer value. + + o String capabilities have a "=" following the name, + then an string of characters making up the capability + value. + + String capabilities can be split into multiple lines, + just as the fields comprising a terminal entry can be + split into multiple lines. While blanks between + fields are ignored, blanks embedded within a string + value are retained, except for leading blanks on a + line. + + Any capability can be canceled, i.e., suppressed from the + terminal entry, by following its name with "@" rather than + a capability value. + + +
+ If there are two very similar terminals, one (the variant) + can be defined as being just like the other (the base) + with certain exceptions. In the definition of the vari- + ant, the string capability use can be given with the name + of the base terminal: + + o The capabilities given before use override those in + the base type named by use. + + o If there are multiple use capabilities, they are + merged in reverse order. That is, the rightmost use + reference is processed first, then the one to its + left, and so forth. + + o Capabilities given explicitly in the entry override + those brought in by use references. + + A capability can be canceled by placing xx@ to the left of + the use reference that imports it, where xx is the capa- + bility. For example, the entry + + 2621-nl, smkx@, rmkx@, use=2621, + + defines a 2621-nl that does not have the smkx or rmkx + capabilities, and hence does not turn on the function key + labels when in visual mode. This is useful for different + modes for a terminal, or for different user preferences. + + An entry included via use can contain canceled capabili- + ties, which have the same effect as if those cancels were + inline in the using terminal entry. + +
- The following is a complete table of the capabilities - included in a terminfo description block and available to + The following is a complete table of the capabilities + included in a terminfo description block and available to terminfo-using code. In each line of the table, - The variable is the name by which the programmer (at the + The variable is the name by which the programmer (at the terminfo level) accesses the capability. - The capname is the short name used in the text of the - database, and is used by a person updating the database. - Whenever possible, capnames are chosen to be the same as + The capname is the short name used in the text of the + database, and is used by a person updating the database. + Whenever possible, capnames are chosen to be the same as or similar to the ANSI X3.64-1979 standard (now superseded - by ECMA-48, which uses identical or very similar names). + by ECMA-48, which uses identical or very similar names). Semantics are also intended to match those of the specifi- cation. - The termcap code is the old termcap capability name (some + The termcap code is the old termcap capability name (some capabilities are new, and have names which termcap did not originate). - Capability names have no hard length limit, but an infor- - mal limit of 5 characters has been adopted to keep them - short and to allow the tabs in the source file Caps to + Capability names have no hard length limit, but an infor- + mal limit of 5 characters has been adopted to keep them + short and to allow the tabs in the source file Caps to line up nicely. - Finally, the description field attempts to convey the - semantics of the capability. You may find some codes in + Finally, the description field attempts to convey the + semantics of the capability. You may find some codes in the description field: (P) indicates that padding may be specified - #[1-9] in the description field indicates that the string + #[1-9] in the description field indicates that the string is passed through tparm with parms as given (#i). - (P*) indicates that padding may vary in proportion to + (P*) indicates that padding may vary in proportion to the number of lines affected (#i) indicates the ith parameter. @@ -188,9 +280,6 @@ by overwriting (hp) col_addr_glitch xhpa YA only positive motion for hpa/mhpa caps - - - cpi_changes_res cpix YF changing character pitch changes reso- lution @@ -237,6 +326,8 @@ required no_esc_ctlc xsb xb beehive (f1=escape, f2=ctrl C) + + no_pad_char npc NP pad character does not exist non_dest_scroll_region ndscr ND scrolling region is @@ -255,8 +346,6 @@ on the status line tilde_glitch hz hz cannot print ~'s (Hazeltine) - - transparent_underline ul ul underline character overstrikes xon_xoff xon xo terminal uses @@ -303,8 +392,8 @@ width_status_line wsl ws number of columns in status line - The following numeric capabilities are present in the - SVr4.0 term structure, but are not yet documented in the + 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. @@ -322,7 +411,6 @@ dot_horz_spacing spinh Yc spacing of dots hor- izontally in dots per inch - dot_vert_spacing spinv Yb spacing of pins ver- tically in pins per inch @@ -370,8 +458,11 @@ to #1 change_line_pitch lpi ZB Change number of lines per inch to #1 + change_res_horz chr ZC Change horizontal resolution to #1 + + change_res_vert cvr ZD Change vertical res- olution to #1 change_scroll_region csr cs change region to @@ -387,8 +478,6 @@ home cursor (P*) clr_bol el1 cb Clear to beginning of line - - clr_eol el ce clear to end of line (P) clr_eos ed cd clear to end of @@ -436,9 +525,12 @@ char set enter_alt_charset_mode smacs as start alternate character set (P) + enter_am_mode smam SA turn on automatic margins enter_blink_mode blink mb turn on blinking + + enter_bold_mode bold md turn on bold (extra bright) mode enter_ca_mode smcup ti string to start pro- @@ -454,7 +546,6 @@ enter_italics_mode sitm ZH Enter italic mode enter_leftward_mode slm ZI Start leftward car- riage motion - enter_micro_mode smicm ZJ Start micro-motion mode enter_near_letter_quality snlq ZK Enter NLQ mode @@ -505,6 +596,8 @@ ter motion exit_xon_mode rmxon RX turn off xon/xoff handshaking + + fixed_pause pause PA pause for 2-3 sec- onds flash_hook hook fh flash switch hook @@ -520,7 +613,6 @@ string init_2string is2 is initialization string - init_3string is3 i3 initialization string init_file if if name of initializa- @@ -572,6 +664,7 @@ key_f1 kf1 k1 F1 function key key_f10 kf10 k; F10 function key key_f11 kf11 F1 F11 function key + key_f12 kf12 F2 F12 function key key_f13 kf13 F3 F13 function key key_f14 kf14 F4 F14 function key @@ -586,7 +679,6 @@ key_f22 kf22 FC F22 function key key_f23 kf23 FD F23 function key key_f24 kf24 FE F24 function key - key_f25 kf25 FF F25 function key key_f26 kf26 FG F26 function key key_f27 kf27 FH F27 function key @@ -639,6 +731,7 @@ key_ic kich1 kI insert-character key key_il kil1 kA insert-line key key_left kcub1 kl left-arrow key + key_ll kll kH lower-left key (home down) key_mark kmrk %2 mark key @@ -652,7 +745,6 @@ key_previous kprv %8 previous key key_print kprt %9 print key key_redo krdo %0 redo key - key_reference kref &1 reference key key_refresh krfr &2 refresh key key_replace krpl &3 replace key @@ -705,6 +797,8 @@ board_transmit' mode keypad_xmit smkx ks enter 'key- board_transmit' mode + + lab_f0 lf0 l0 label on function key f0 if not f0 lab_f1 lf1 l1 label on function @@ -717,8 +811,6 @@ key f3 if not f3 lab_f4 lf4 l4 label on function key f4 if not f4 - - lab_f5 lf5 l5 label on function key f5 if not f5 lab_f6 lf6 l6 label on function @@ -772,6 +864,8 @@ to the left (P) parm_left_micro mcub Zg Like parm_left_cur- sor in micro mode + + parm_right_cursor cuf RI move #1 characters to the right (P*) parm_right_micro mcuf Zh Like parm_right_cur- @@ -783,8 +877,6 @@ in micro mode pkey_key pfkey pk program function key #1 to type string #2 - - pkey_local pfloc pl program function key #1 to execute string #2 @@ -839,6 +931,8 @@ pair to #1 set_foreground setf Sf Set foreground color #1 + + set_left_margin smgl ML set left soft margin at current column. See smgl. (ML is not @@ -850,7 +944,6 @@ umn set_right_margin_parm smgrp Zn Set right margin at column #1 - set_tab hts st set a tab in every row, current columns set_top_margin smgt Zo Set top margin at @@ -902,8 +995,8 @@ zero_motion zerom Zx No motion for subse- quent character - The following string capabilities are present in the - SVr4.0 term structure, but were originally not documented + The following string capabilities are present in the + SVr4.0 term structure, but were originally not documented in the man page. @@ -916,7 +1009,6 @@ of same row bit_image_newline binel Zz Move to next row of the bit image - bit_image_repeat birep Xy Repeat bit image cell #1 #2 times char_set_names csnm Zy Produce #1'th item @@ -974,6 +1066,7 @@ ANSI escape set_color_band setcolor Yz Change to ribbon color #1 + set_lr_margin smglr ML Set both left and right margins to #1, #2. (ML is @@ -981,19 +1074,17 @@ cap). set_page_length slines YZ Set page length to #1 lines - - set_tb_margin smgtb MT Sets both top and bottom margins to #1, #2 - The XSI Curses standard added these hardcopy capabili- + The XSI Curses standard added these hardcopy capabili- ties. They were used in some post-4.1 versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x. Except for YI, the ncurses termcap names for them are invented. Accord- - ing to the XSI Curses standard, they have no termcap + ing 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 + may not be binary-compatible with System V terminfo entries after SVr4.1; beware! @@ -1022,51 +1113,51 @@
- The preceding section listed the predefined capabilities. - They deal with some special features for terminals no - longer (or possibly never) produced. Occasionally there - are special features of newer terminals which are awkward + The preceding section listed the predefined capabilities. + They deal with some special features for terminals no + longer (or possibly never) produced. Occasionally there + are special features of newer terminals which are awkward or impossible to represent by reusing the predefined capa- bilities. ncurses addresses this limitation by allowing user-defined capabilities. The tic and infocmp programs provide the -x - option for this purpose. When -x is set, tic treats - unknown capabilities as user-defined. That is, if tic - encounters a capability name which it does not recognize, - it infers its type (boolean, number or string) from the + option for this purpose. When -x is set, tic treats + unknown capabilities as user-defined. That is, if tic + encounters a capability name which it does not recognize, + it infers its type (boolean, number or string) from the syntax and makes an extended table entry for that capabil- - ity. The use_extended_names function makes this informa- - tion conditionally available to applications. The ncurses - library provides the data leaving most of the behavior to - applications: + ity. The use_extended_names(3x) function makes this + information conditionally available to applications. The + ncurses library provides the data leaving most of the + behavior to applications: o User-defined capability strings whose name begins with "k" are treated as function keys. - o The types (boolean, number, string) determined by tic + o The types (boolean, number, string) determined by tic can be inferred by successful calls on tigetflag, etc. - o If the capability name happens to be two characters, - the capability is also available through the termcap + o If the capability name happens to be two characters, + the capability is also available through the termcap interface. While termcap is said to be extensible because it does not - use a predefined set of capabilities, in practice it has - been limited to the capabilities defined by terminfo - implementations. As a rule, user-defined capabilities + use a predefined set of capabilities, in practice it has + been limited to the capabilities defined by terminfo + implementations. As a rule, user-defined capabilities intended for use by termcap applications should be limited - to booleans and numbers to avoid running past the 1023 - byte limit assumed by termcap implementations and their - applications. In particular, providing extended sets of - function keys (past the 60 numbered keys and the handful + to booleans and numbers to avoid running past the 1023 + byte limit assumed by termcap implementations and their + applications. In particular, providing extended sets of + function keys (past the 60 numbered keys and the handful of special named keys) is best done using the longer names available using terminfo.
The following entry, describing an ANSI-standard terminal, - is representative of what a terminfo entry for a modern + is representative of what a terminfo entry for a modern terminal typically looks like. ansi|ansi/pc-term compatible with color, @@ -1100,45 +1191,64 @@ smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd, - Entries may continue onto multiple lines by placing white - space at the beginning of each line except the first. - Comments may be included on lines beginning with "#". + Entries may continue onto multiple lines by placing white + space at the beginning of each line except the first. + Comments may be included on lines beginning with "#". Capabilities in terminfo are of three types: - o Boolean capabilities which indicate that the terminal + o Boolean capabilities which indicate that the terminal has some particular feature, - o numeric capabilities giving the size of the terminal + o numeric capabilities giving the size of the terminal or the size of particular delays, and - o string capabilities, which give a sequence which can + o string capabilities, which give a sequence which can be used to perform particular terminal operations.
- All capabilities have names. For instance, the fact that - ANSI-standard terminals have automatic margins (i.e., an - automatic return and line-feed when the end of a line is - reached) is indicated by the capability am. Hence the + All capabilities have names. For instance, the fact that + ANSI-standard terminals have automatic margins (i.e., an + automatic return and line-feed when the end of a line is + reached) is indicated by the capability am. Hence the description of ansi includes am. Numeric capabilities are - followed by the character "#" and then a positive value. - Thus cols, which indicates the number of columns the ter- - minal has, gives the value "80" for ansi. Values for + followed by the character "#" and then a positive value. + Thus cols, which indicates the number of columns the ter- + minal has, gives the value "80" for ansi. Values for numeric capabilities may be specified in decimal, octal or - hexadecimal, using the C programming language conventions + hexadecimal, using the C programming language conventions (e.g., 255, 0377 and 0xff or 0xFF). - Finally, string valued capabilities, such as el (clear to + Finally, string valued capabilities, such as el (clear to end of line sequence) are given by the two-character code, - an "=", and then a string ending at the next following + an "=", and then a string ending at the next following ",". - A number of escape sequences are provided in the string - valued capabilities for easy encoding of characters there. - Both \E and \e map to an ESCAPE character, ^x maps to a - control-x for any appropriate x, and the sequences \n \l - \r \t \b \f \s give a newline, line-feed, return, tab, - backspace, form-feed, and space. Other escapes include + A number of escape sequences are provided in the string + valued capabilities for easy encoding of characters there: + + o Both \E and \e map to an ESCAPE character, + + o ^x maps to a control-x for any appropriate x, and + + o the sequences + + \n, \l, \r, \t, \b, \f, and \s + + produce + + newline, line-feed, return, tab, backspace, form- + feed, and space, + + respectively. + + X/Open Curses does not say what "appropriate x" might be. + In practice, that is a printable ASCII graphic character. + The special case "^?" is interpreted as DEL (127). In all + other cases, the character value is AND'd with 0x1f, map- + ping to ASCII control codes in the range 0 through 31. + + Other escapes include o \^ for ^, @@ -2018,45 +2128,61 @@
Many terminals have alternate character sets useful for - forms-drawing. Terminfo and curses build in support for + forms-drawing. Terminfo and curses built-in support for the drawing characters supported by the VT100, with some characters from the AT&T 4410v1 added. This alternate character set may be specified by the acsc capability. - Glyph ACS Ascii VT100 - Name Name Default Name - UK pound sign ACS_STERLING f } - arrow pointing down ACS_DARROW v . - arrow pointing left ACS_LARROW < , - arrow pointing right ACS_RARROW > + - arrow pointing up ACS_UARROW ^ - - board of squares ACS_BOARD # h - bullet ACS_BULLET o ~ - checker board (stipple) ACS_CKBOARD : a - degree symbol ACS_DEGREE \ f - diamond ACS_DIAMOND + ` - greater-than-or-equal-to ACS_GEQUAL > z - greek pi ACS_PI * { - horizontal line ACS_HLINE - q - lantern symbol ACS_LANTERN # i - large plus or crossover ACS_PLUS + n - less-than-or-equal-to ACS_LEQUAL < y - lower left corner ACS_LLCORNER + m - lower right corner ACS_LRCORNER + j - not-equal ACS_NEQUAL ! | - plus/minus ACS_PLMINUS # g - scan line 1 ACS_S1 ~ o - scan line 3 ACS_S3 - p - scan line 7 ACS_S7 - r - scan line 9 ACS_S9 _ s - solid square block ACS_BLOCK # 0 - tee pointing down ACS_TTEE + w - tee pointing left ACS_RTEE + u - tee pointing right ACS_LTEE + t - tee pointing up ACS_BTEE + v - upper left corner ACS_ULCORNER + l - upper right corner ACS_URCORNER + k - vertical line ACS_VLINE | x + Glyph ACS Ascii VT100 VT100 + + Name Name DefaultChar Code + ----------------------------------------------------------- + arrow pointing right ACS_RARROW > + 0x2b + arrow pointing left ACS_LARROW < , 0x2c + arrow pointing up ACS_UARROW ^ - 0x2d + arrow pointing down ACS_DARROW v . 0x2e + solid square block ACS_BLOCK # 0 0x30 + diamond ACS_DIAMOND + ` 0x60 + checker board (stipple) ACS_CKBOARD : a 0x61 + degree symbol ACS_DEGREE \ f 0x66 + plus/minus ACS_PLMINUS # g 0x67 + board of squares ACS_BOARD # h 0x68 + lantern symbol ACS_LANTERN # i 0x69 + lower right corner ACS_LRCORNER + j 0x6a + upper right corner ACS_URCORNER + k 0x6b + upper left corner ACS_ULCORNER + l 0x6c + lower left corner ACS_LLCORNER + m 0x6d + large plus or crossover ACS_PLUS + n 0x6e + scan line 1 ACS_S1 ~ o 0x6f + scan line 3 ACS_S3 - p 0x70 + horizontal line ACS_HLINE - q 0x71 + scan line 7 ACS_S7 - r 0x72 + scan line 9 ACS_S9 _ s 0x73 + tee pointing right ACS_LTEE + t 0x74 + tee pointing left ACS_RTEE + u 0x75 + tee pointing up ACS_BTEE + v 0x76 + tee pointing down ACS_TTEE + w 0x77 + vertical line ACS_VLINE | x 0x78 + less-than-or-equal-to ACS_LEQUAL < y 0x79 + greater-than-or-equal-to ACS_GEQUAL > z 0x7a + greek pi ACS_PI * { 0x7b + not-equal ACS_NEQUAL ! | 0x7c + UK pound sign ACS_STERLING f } 0x7d + bullet ACS_BULLET o ~ 0x7e + + A few notes apply to the table itself: + + o X/Open Curses incorrectly states that the mapping for + lantern is uppercase "I" although Unix implementations + use the lowercase "i" mapping. + + o The DEC VT100 implemented graphics using the alternate + character set feature, temporarily switching modes and + sending characters in the range 0x60 (96) to 0x7e + (126). + + o The AT&T terminal added graphics characters outside + that range. The best way to define a new device's graphics set is to add a column to a copy of this table for your terminal, @@ -2136,7 +2262,6 @@ blue COLOR_BLUE 4 0,0,max magenta COLOR_MAGENTA 5 max,0,max cyan COLOR_CYAN 6 0,max,max - white COLOR_WHITE 7 max,max,max The argument values of setf/setb historically correspond @@ -2319,94 +2444,69 @@ adding more capabilities of the form xx. -
- If there are two very similar terminals, one (the variant) - can be defined as being just like the other (the base) - with certain exceptions. In the definition of the vari- - ant, the string capability use can be given with the name - of the base terminal. The capabilities given before use - override those in the base type named by use. If there - are multiple use capabilities, they are merged in reverse - order. That is, the rightmost use reference is processed - first, then the one to its left, and so forth. Capabili- - ties given explicitly in the entry override those brought - in by use references. - - A capability can be canceled by placing xx@ to the left of - the use reference that imports it, where xx is the capa- - bility. For example, the entry - - 2621-nl, smkx@, rmkx@, use=2621, - - defines a 2621-nl that does not have the smkx or rmkx - capabilities, and hence does not turn on the function key - labels when in visual mode. This is useful for different - modes for a terminal, or for different user preferences. - -
- Long terminfo entries are unlikely to be a problem; to - date, no entry has even approached terminfo's 4096-byte + Long terminfo entries are unlikely to be a problem; to + date, no entry has even approached terminfo's 4096-byte string-table maximum. Unfortunately, the termcap transla- tions are much more strictly limited (to 1023 bytes), thus - termcap translations of long terminfo entries can cause + termcap translations of long terminfo entries can cause problems. - The man pages for 4.3BSD and older versions of tgetent - instruct the user to allocate a 1024-byte buffer for the - termcap entry. The entry gets null-terminated by the + The man pages for 4.3BSD and older versions of tgetent + instruct the user to allocate a 1024-byte buffer for the + termcap entry. The entry gets null-terminated by the termcap library, so that makes the maximum safe length for - a termcap entry 1k-1 (1023) bytes. Depending on what the - application and the termcap library being used does, and - where in the termcap file the terminal type that tgetent + a termcap entry 1k-1 (1023) bytes. Depending on what the + application and the termcap library being used does, and + where in the termcap file the terminal type that tgetent is searching for is, several bad things can happen. - Some termcap libraries print a warning message or exit if - they find an entry that's longer than 1023 bytes; others - do not; others truncate the entries to 1023 bytes. Some + Some termcap libraries print a warning message or exit if + they find an entry that's longer than 1023 bytes; others + do not; others truncate the entries to 1023 bytes. Some application programs allocate more than the recommended 1K for the termcap entry; others do not. Each termcap entry has two important sizes associated with it: before "tc" expansion, and after "tc" expansion. "tc" - is the capability that tacks on another termcap entry to - the end of the current one, to add on its capabilities. - If a termcap entry does not use the "tc" capability, then + is the capability that tacks on another termcap entry to + the end of the current one, to add on its capabilities. + If a termcap entry does not use the "tc" capability, then of course the two lengths are the same. - The "before tc expansion" length is the most important - one, because it affects more than just users of that par- - ticular terminal. This is the length of the entry as it + The "before tc expansion" length is the most important + one, because it affects more than just users of that par- + ticular terminal. This is the length of the entry as it exists in /etc/termcap, minus the backslash-newline pairs, - which tgetent strips out while reading it. Some termcap - libraries strip off the final newline, too (GNU termcap + which tgetent strips out while reading it. Some termcap + libraries strip off the final newline, too (GNU termcap does not). Now suppose: - o a termcap entry before expansion is more than 1023 + o a termcap entry before expansion is more than 1023 bytes long, o and the application has only allocated a 1k buffer, - o and the termcap library (like the one in BSD/OS 1.1 - and GNU) reads the whole entry into the buffer, no - matter what its length, to see if it is the entry it + o and the termcap library (like the one in BSD/OS 1.1 + and GNU) reads the whole entry into the buffer, no + matter what its length, to see if it is the entry it wants, - o and tgetent is searching for a terminal type that - either is the long entry, appears in the termcap file - after the long entry, or does not appear in the file - at all (so that tgetent has to search the whole term- + o and tgetent is searching for a terminal type that + either is the long entry, appears in the termcap file + after the long entry, or does not appear in the file + at all (so that tgetent has to search the whole term- cap file). Then tgetent will overwrite memory, perhaps its stack, and - probably core dump the program. Programs like telnet are - particularly vulnerable; modern telnets pass along values - like the terminal type automatically. The results are - almost as undesirable with a termcap library, like SunOS + probably core dump the program. Programs like telnet are + particularly vulnerable; modern telnets pass along values + like the terminal type automatically. The results are + almost as undesirable with a termcap library, like SunOS 4.1.3 and Ultrix 4.4, that prints warning messages when it - reads an overly long termcap entry. If a termcap library - truncates long entries, like OSF/1 3.0, it is immune to - dying here but will return incorrect data for the termi- + reads an overly long termcap entry. If a termcap library + truncates long entries, like OSF/1 3.0, it is immune to + dying here but will return incorrect data for the termi- nal. The "after tc expansion" length will have a similar effect @@ -2416,27 +2516,27 @@ while searching. In summary, a termcap entry that is longer than 1023 bytes - can cause, on various combinations of termcap libraries - and applications, a core dump, warnings, or incorrect - operation. If it is too long even before "tc" expansion, + can cause, on various combinations of termcap libraries + and applications, a core dump, warnings, or incorrect + operation. If it is too long even before "tc" expansion, it will have this effect even for users of some other ter- - minal types and users whose TERM variable does not have a + minal types and users whose TERM variable does not have a termcap entry. When in -C (translate to termcap) mode, the ncurses imple- mentation of tic(1m) issues warning messages when the pre- - tc length of a termcap translation is too long. The -c - (check) option also checks resolved (after tc expansion) + tc length of a termcap translation is too long. The -c + (check) option also checks resolved (after tc expansion) lengths.
- It is not wise to count on portability of binary terminfo - entries between commercial UNIX versions. The problem is - that there are at least two versions of terminfo (under + It is not wise to count on portability of binary terminfo + entries between commercial UNIX versions. The problem is + that there are at least two versions of terminfo (under HP-UX and AIX) which diverged from System V terminfo after - SVr1, and have added extension capabilities to the string - table that (in the binary format) collide with System V + SVr1, and have added extension capabilities to the string + table that (in the binary format) collide with System V and XSI Curses extensions. @@ -2444,69 +2544,70 @@ Searching for terminal descriptions in $HOME/.terminfo and TERMINFO_DIRS is not supported by older implementations. - Some SVr4 curses implementations, and all previous to - SVr4, do not interpret the %A and %O operators in parame- + Some SVr4 curses implementations, and all previous to + SVr4, do not interpret the %A and %O operators in parame- ter strings. - SVr4/XPG4 do not specify whether msgr licenses movement - while in an alternate-character-set mode (such modes may, - among other things, map CR and NL to characters that do - not trigger local motions). The ncurses implementation - ignores msgr in ALTCHARSET mode. This raises the possi- - bility that an XPG4 implementation making the opposite - interpretation may need terminfo entries made for ncurses + SVr4/XPG4 do not specify whether msgr licenses movement + while in an alternate-character-set mode (such modes may, + among other things, map CR and NL to characters that do + not trigger local motions). The ncurses implementation + ignores msgr in ALTCHARSET mode. This raises the possi- + bility that an XPG4 implementation making the opposite + interpretation may need terminfo entries made for ncurses to have msgr turned off. - The ncurses library handles insert-character and insert- + The ncurses library handles insert-character and insert- character modes in a slightly non-standard way to get bet- - ter update efficiency. See the Insert/Delete Character + ter update efficiency. See the Insert/Delete Character subsection above. - The parameter substitutions for set_clock and dis- - play_clock are not documented in SVr4 or the XSI Curses + The parameter substitutions for set_clock and dis- + play_clock are not documented in SVr4 or the XSI Curses standard. They are deduced from the documentation for the AT&T 505 terminal. - Be careful assigning the kmous capability. The ncurses - wants to interpret it as KEY_MOUSE, for use by terminals - and emulators like xterm that can return mouse-tracking - information in the keyboard-input stream. + Be careful assigning the kmous capability. The ncurses + library wants to interpret it as KEY_MOUSE, for use by + terminals and emulators like xterm that can return mouse- + tracking information in the keyboard-input stream. X/Open Curses does not mention italics. Portable applica- - tions must assume that numeric capabilities are signed - 16-bit values. This includes the no_color_video (ncv) - capability. The 32768 mask value used for italics with - ncv can be confused with an absent or cancelled ncv. If - italics should work with colors, then the ncv value must + tions must assume that numeric capabilities are signed + 16-bit values. This includes the no_color_video (ncv) + capability. The 32768 mask value used for italics with + ncv can be confused with an absent or cancelled ncv. If + italics should work with colors, then the ncv value must be specified, even if it is zero. - Different commercial ports of terminfo and curses support - different subsets of the XSI Curses standard and (in some + Different commercial ports of terminfo and curses support + different subsets of the XSI Curses standard and (in some cases) different extension sets. Here is a summary, accu- rate as of October 1995: - SVR4, Solaris, ncurses -- These support all SVr4 capabili- - ties. + o SVR4, Solaris, ncurses -- These support all SVr4 capa- + bilities. - SGI -- Supports the SVr4 set, adds one undocumented - extended string capability (set_pglen). + o SGI -- Supports the SVr4 set, adds one undocumented + extended string capability (set_pglen). - SVr1, Ultrix -- These support a restricted subset of ter- - minfo capabilities. The booleans end with xon_xoff; the - numerics with width_status_line; and the strings with - prtr_non. + o SVr1, Ultrix -- These support a restricted subset of + terminfo capabilities. The booleans end with + xon_xoff; the numerics with width_status_line; and the + strings with prtr_non. - HP/UX -- Supports the SVr1 subset, plus the SVr[234] - numerics num_labels, label_height, label_width, plus func- - tion keys 11 through 63, plus plab_norm, label_on, and - label_off, plus some incompatible extensions in the string - table. + o HP/UX -- Supports the SVr1 subset, plus the SVr[234] + numerics num_labels, label_height, label_width, plus + function keys 11 through 63, plus plab_norm, label_on, + and label_off, plus some incompatible extensions in + the string table. - AIX -- Supports the SVr1 subset, plus function keys 11 - through 63, plus a number of incompatible string table - extensions. + o AIX -- Supports the SVr1 subset, plus function keys 11 + through 63, plus a number of incompatible string table + extensions. - OSF -- Supports both the SVr4 set and the AIX extensions. + o OSF -- Supports both the SVr4 set and the AIX exten- + sions.
@@ -2533,6 +2634,9 @@