1# ncurses 6.1 - patch 20190727 - Thomas E. Dickey 2# 3# ------------------------------------------------------------------------------ 4# 5# Ncurses 6.1 is at 6# ftp.gnu.org:/pub/gnu 7# 8# Patches for ncurses 6.1 can be found at 9# ftp://ftp.invisible-island.net/ncurses/6.1 10# http://invisible-mirror.net/archives/ncurses/6.1 11# 12# ------------------------------------------------------------------------------ 13# ftp://ftp.invisible-island.net/ncurses/6.1/ncurses-6.1-20190727.patch.gz 14# patch by Thomas E. Dickey <dickey@invisible-island.net> 15# created Sun Jul 28 00:01:44 UTC 2019 16# ------------------------------------------------------------------------------ 17# NEWS | 6 18# VERSION | 2 19# dist.mk | 4 20# doc/html/ada/funcs/T.htm | 2 21# doc/html/man/adacurses6-config.1.html | 2 22# doc/html/man/captoinfo.1m.html | 2 23# doc/html/man/clear.1.html | 2 24# doc/html/man/form.3x.html | 2 25# doc/html/man/infocmp.1m.html | 2 26# doc/html/man/infotocap.1m.html | 2 27# doc/html/man/menu.3x.html | 2 28# doc/html/man/ncurses.3x.html | 2 29# doc/html/man/ncurses6-config.1.html | 2 30# doc/html/man/panel.3x.html | 2 31# doc/html/man/tabs.1.html | 2 32# doc/html/man/terminfo.5.html | 1192 ++++++++++++++++---------------- 33# doc/html/man/tic.1m.html | 2 34# doc/html/man/toe.1m.html | 2 35# doc/html/man/tput.1.html | 2 36# doc/html/man/tset.1.html | 2 37# doc/html/ncurses-intro.html | 379 ++++++---- 38# doc/ncurses-intro.doc | 36 39# include/Caps | 10 40# include/Caps.aix4 | 10 41# include/Caps.hpux11 | 10 42# include/Caps.keys | 10 43# include/Caps.osf1r5 | 10 44# include/Caps.uwin | 10 45# man/manhtml.externs | 5 46# man/terminfo.head | 19 47# ncurses-6.1-20190727/progs/ktrace.out |binary 48# ncurses/tinfo/add_tries.c | 5 49# ncurses/tinfo/make_hash.c | 10 50# package/debian-mingw/changelog | 4 51# package/debian-mingw64/changelog | 4 52# package/debian/changelog | 4 53# package/mingw-ncurses.nsi | 4 54# package/mingw-ncurses.spec | 2 55# package/ncurses.spec | 2 56# package/ncursest.spec | 2 57# progs/tic.c | 14 58# 41 files changed, 968 insertions(+), 818 deletions(-) 59# ------------------------------------------------------------------------------ 60Index: NEWS 61Prereq: 1.3351 62--- ncurses-6.1-20190720+/NEWS 2019-07-21 00:33:00.000000000 +0000 63+++ ncurses-6.1-20190727/NEWS 2019-07-27 22:45:29.000000000 +0000 64@@ -25,7 +25,7 @@ 65 -- sale, use or other dealings in this Software without prior written -- 66 -- authorization. -- 67 ------------------------------------------------------------------------------- 68--- $Id: NEWS,v 1.3351 2019/07/21 00:33:00 tom Exp $ 69+-- $Id: NEWS,v 1.3354 2019/07/27 22:45:29 tom Exp $ 70 ------------------------------------------------------------------------------- 71 72 This is a log of changes that ncurses has gone through since Zeyd started 73@@ -45,6 +45,10 @@ 74 Changes through 1.9.9e did not credit all contributions; 75 it is not possible to add this information. 76 77+20190727 78+ + fix a few coverity warnings. 79+ + documentation updates based on tctest. 80+ 81 20190720 82 + fix a few warnings for gcc 4.x 83 + add some portability/historical details to the tic, toe and infocmp 84Index: VERSION 85--- ncurses-6.1-20190720+/VERSION 2019-07-20 10:26:30.000000000 +0000 86+++ ncurses-6.1-20190727/VERSION 2019-07-26 23:10:14.000000000 +0000 87@@ -1 +1 @@ 88-5:0:10 6.1 20190720 89+5:0:10 6.1 20190727 90Index: dist.mk 91Prereq: 1.1296 92--- ncurses-6.1-20190720+/dist.mk 2019-07-20 10:26:30.000000000 +0000 93+++ ncurses-6.1-20190727/dist.mk 2019-07-26 23:10:14.000000000 +0000 94@@ -25,7 +25,7 @@ 95 # use or other dealings in this Software without prior written # 96 # authorization. # 97 ############################################################################## 98-# $Id: dist.mk,v 1.1296 2019/07/20 10:26:30 tom Exp $ 99+# $Id: dist.mk,v 1.1297 2019/07/26 23:10:14 tom Exp $ 100 # Makefile for creating ncurses distributions. 101 # 102 # This only needs to be used directly as a makefile by developers, but 103@@ -37,7 +37,7 @@ 104 # These define the major/minor/patch versions of ncurses. 105 NCURSES_MAJOR = 6 106 NCURSES_MINOR = 1 107-NCURSES_PATCH = 20190720 108+NCURSES_PATCH = 20190727 109 110 # We don't append the patch to the version, since this only applies to releases 111 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) 112Index: doc/html/ada/funcs/T.htm 113--- ncurses-6.1-20190720+/doc/html/ada/funcs/T.htm 2019-07-13 23:50:38.000000000 +0000 114+++ ncurses-6.1-20190727/doc/html/ada/funcs/T.htm 2019-07-26 23:48:31.000000000 +0000 115@@ -20,8 +20,8 @@ 116 <LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_89_16" TARGET="main">tgetnum</A> 117 <LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_108_16" TARGET="main">tgetstr - terminal_interface-curses-termcap.adb:108</A> 118 <LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_129_16" TARGET="main">tgetstr - terminal_interface-curses-termcap.adb:129</A> 119-<LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_151_16" TARGET="main">tgoto</A> 120 <LI><A HREF="../terminal_interface-curses-termcap__ads.htm#ref_53_13" TARGET="main">TGoto</A> 121+<LI><A HREF="../terminal_interface-curses-termcap__adb.htm#ref_151_16" TARGET="main">tgoto</A> 122 <LI><A HREF="../terminal_interface-curses-terminfo__adb.htm#ref_69_16" TARGET="main">tigetflag</A> 123 <LI><A HREF="../terminal_interface-curses-terminfo__adb.htm#ref_87_16" TARGET="main">tigetstr - terminal_interface-curses-terminfo.adb:87</A> 124 <LI><A HREF="../terminal_interface-curses-terminfo__adb.htm#ref_108_16" TARGET="main">tigetstr - terminal_interface-curses-terminfo.adb:108</A> 125Index: doc/html/man/adacurses6-config.1.html 126--- ncurses-6.1-20190720+/doc/html/man/adacurses6-config.1.html 2019-07-20 18:53:10.000000000 +0000 127+++ ncurses-6.1-20190727/doc/html/man/adacurses6-config.1.html 2019-07-26 23:48:24.000000000 +0000 128@@ -125,7 +125,7 @@ 129 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 130 <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> 131 132- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 133+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 134 135 136 137Index: doc/html/man/captoinfo.1m.html 138--- ncurses-6.1-20190720+/doc/html/man/captoinfo.1m.html 2019-07-20 18:53:10.000000000 +0000 139+++ ncurses-6.1-20190727/doc/html/man/captoinfo.1m.html 2019-07-26 23:48:24.000000000 +0000 140@@ -190,7 +190,7 @@ 141 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 142 <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 143 144- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 145+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 146 147 148 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> 149Index: doc/html/man/clear.1.html 150--- ncurses-6.1-20190720+/doc/html/man/clear.1.html 2019-07-20 18:53:10.000000000 +0000 151+++ ncurses-6.1-20190727/doc/html/man/clear.1.html 2019-07-26 23:48:24.000000000 +0000 152@@ -148,7 +148,7 @@ 153 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 154 <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 155 156- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 157+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 158 159 160 161Index: doc/html/man/form.3x.html 162--- ncurses-6.1-20190720+/doc/html/man/form.3x.html 2019-07-20 18:53:12.000000000 +0000 163+++ ncurses-6.1-20190727/doc/html/man/form.3x.html 2019-07-26 23:48:27.000000000 +0000 164@@ -246,7 +246,7 @@ 165 <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed 166 descriptions of the entry points. 167 168- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 169+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 170 171 172 173Index: doc/html/man/infocmp.1m.html 174--- ncurses-6.1-20190720+/doc/html/man/infocmp.1m.html 2019-07-20 18:53:13.000000000 +0000 175+++ ncurses-6.1-20190727/doc/html/man/infocmp.1m.html 2019-07-26 23:48:28.000000000 +0000 176@@ -512,7 +512,7 @@ 177 178 https://invisible-island.net/ncurses/tctest.html 179 180- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 181+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 182 183 184 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> 185Index: doc/html/man/infotocap.1m.html 186--- ncurses-6.1-20190720+/doc/html/man/infotocap.1m.html 2019-07-20 18:53:13.000000000 +0000 187+++ ncurses-6.1-20190727/doc/html/man/infotocap.1m.html 2019-07-26 23:48:28.000000000 +0000 188@@ -85,7 +85,7 @@ 189 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 190 <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> 191 192- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 193+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 194 195 196 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> 197Index: doc/html/man/menu.3x.html 198--- ncurses-6.1-20190720+/doc/html/man/menu.3x.html 2019-07-20 18:53:13.000000000 +0000 199+++ ncurses-6.1-20190727/doc/html/man/menu.3x.html 2019-07-26 23:48:28.000000000 +0000 200@@ -221,7 +221,7 @@ 201 <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for detailed 202 descriptions of the entry points. 203 204- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 205+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 206 207 208 209Index: doc/html/man/ncurses.3x.html 210--- ncurses-6.1-20190720+/doc/html/man/ncurses.3x.html 2019-07-20 18:53:14.000000000 +0000 211+++ ncurses-6.1-20190727/doc/html/man/ncurses.3x.html 2019-07-26 23:48:29.000000000 +0000 212@@ -59,7 +59,7 @@ 213 method of updating character screens with reasonable optimization. 214 This implementation is "new curses" (ncurses) and is the approved 215 replacement for 4.4BSD classic curses, which has been discontinued. 216- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 217+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 218 219 The <STRONG>ncurses</STRONG> library emulates the curses library of System V Release 4 220 UNIX, and XPG4 (X/Open Portability Guide) curses (also known as XSI 221Index: doc/html/man/ncurses6-config.1.html 222--- ncurses-6.1-20190720+/doc/html/man/ncurses6-config.1.html 2019-07-20 18:53:14.000000000 +0000 223+++ ncurses-6.1-20190727/doc/html/man/ncurses6-config.1.html 2019-07-26 23:48:29.000000000 +0000 224@@ -112,7 +112,7 @@ 225 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 226 <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> 227 228- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 229+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 230 231 232 233Index: doc/html/man/panel.3x.html 234--- ncurses-6.1-20190720+/doc/html/man/panel.3x.html 2019-07-20 18:53:14.000000000 +0000 235+++ ncurses-6.1-20190727/doc/html/man/panel.3x.html 2019-07-26 23:48:29.000000000 +0000 236@@ -204,7 +204,7 @@ 237 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 238 <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, 239 240- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 241+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 242 243 244 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> 245Index: doc/html/man/tabs.1.html 246--- ncurses-6.1-20190720+/doc/html/man/tabs.1.html 2019-07-20 18:53:15.000000000 +0000 247+++ ncurses-6.1-20190727/doc/html/man/tabs.1.html 2019-07-26 23:48:29.000000000 +0000 248@@ -205,7 +205,7 @@ 249 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 250 <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. 251 252- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 253+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 254 255 256 257Index: doc/html/man/terminfo.5.html 258--- ncurses-6.1-20190720+/doc/html/man/terminfo.5.html 2019-07-20 18:53:15.000000000 +0000 259+++ ncurses-6.1-20190727/doc/html/man/terminfo.5.html 2019-07-27 20:27:54.000000000 +0000 260@@ -31,7 +31,7 @@ 261 * sale, use or other dealings in this Software without prior written * 262 * authorization. * 263 **************************************************************************** 264- * @Id: terminfo.head,v 1.36 2019/07/13 23:17:33 tom Exp @ 265+ * @Id: terminfo.head,v 1.38 2019/07/27 11:51:04 tom Exp @ 266 * Head of terminfo man page ends here 267 **************************************************************************** 268 * Copyright (c) 1998-2018,2019 Free Software Foundation, Inc. * 269@@ -94,60 +94,65 @@ 270 271 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> 272 <EM>Terminfo</EM> is a data base describing terminals, used by screen-oriented 273- programs such as <STRONG>nvi(1)</STRONG>, <STRONG>rogue(1)</STRONG> and libraries such as <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. 274+ programs such as <STRONG>nvi(1)</STRONG>, <STRONG>lynx(1)</STRONG>, <STRONG>mutt(1)</STRONG>, and other curses applica- 275+ tions, using high-level calls to libraries such as <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. It is 276+ also used via low-level calls by non-curses applications which may be 277+ screen-oriented (such as <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>) or non-screen (such as <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>). 278+ 279 <EM>Terminfo</EM> describes terminals by giving a set of capabilities which they 280 have, by specifying how to perform screen operations, and by specifying 281- padding requirements and initialization sequences. This describes 282- <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 283+ padding requirements and initialization sequences. 284+ 285+ This manual describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 286 287 288 </PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE> 289 Entries in <EM>terminfo</EM> consist of a sequence of fields: 290 291- <STRONG>o</STRONG> Each field ends with a comma "," (embedded commas may be escaped 292+ <STRONG>o</STRONG> Each field ends with a comma "," (embedded commas may be escaped 293 with a backslash or written as "\054"). 294 295 <STRONG>o</STRONG> White space between fields is ignored. 296 297 <STRONG>o</STRONG> The first field in a <EM>terminfo</EM> entry begins in the first column. 298 299- <STRONG>o</STRONG> Newlines and leading whitespace (spaces or tabs) may be used for 300- formatting entries for readability. These are removed from parsed 301+ <STRONG>o</STRONG> Newlines and leading whitespace (spaces or tabs) may be used for 302+ formatting entries for readability. These are removed from parsed 303 entries. 304 305- The <STRONG>infocmp</STRONG> <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options rely on this to format if-then-else 306- expressions, or to enforce maximum line-width. The resulting for- 307+ The <STRONG>infocmp</STRONG> <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options rely on this to format if-then-else 308+ expressions, or to enforce maximum line-width. The resulting for- 309 matted terminal description can be read by <STRONG>tic</STRONG>. 310 311- <STRONG>o</STRONG> The first field for each terminal gives the names which are known 312+ <STRONG>o</STRONG> The first field for each terminal gives the names which are known 313 for the terminal, separated by "|" characters. 314 315 The first name given is the most common abbreviation for the termi- 316- nal (its primary name), the last name given should be a long name 317- fully identifying the terminal (see <STRONG><A HREF="curs_termattrs.3x.html">longname(3x)</A></STRONG>), and all others 318+ nal (its primary name), the last name given should be a long name 319+ fully identifying the terminal (see <STRONG><A HREF="curs_termattrs.3x.html">longname(3x)</A></STRONG>), and all others 320 are treated as synonyms (aliases) for the primary terminal name. 321 322- X/Open Curses advises that all names but the last should be in 323- lower case and contain no blanks; the last name may well contain 324+ X/Open Curses advises that all names but the last should be in 325+ lower case and contain no blanks; the last name may well contain 326 upper case and blanks for readability. 327 328- This implementation is not so strict; it allows mixed case in the 329+ This implementation is not so strict; it allows mixed case in the 330 primary name and aliases. If the last name has no embedded blanks, 331- it allows that to be both an alias and a verbose name (but will 332+ it allows that to be both an alias and a verbose name (but will 333 warn about this ambiguity). 334 335- <STRONG>o</STRONG> Lines beginning with a "#" in the first column are treated as com- 336+ <STRONG>o</STRONG> Lines beginning with a "#" in the first column are treated as com- 337 ments. 338 339 While comment lines are legal at any point, the output of <STRONG>captoinfo</STRONG> 340- and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>) will move comments so they occur 341+ and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>) will move comments so they occur 342 only between entries. 343 344- Terminal names (except for the last, verbose entry) should be chosen 345+ Terminal names (except for the last, verbose entry) should be chosen 346 using the following conventions. The particular piece of hardware mak- 347- ing up the terminal should have a root name, thus "hp2621". This name 348+ ing up the terminal should have a root name, thus "hp2621". This name 349 should not contain hyphens. Modes that the hardware can be in, or user 350- preferences, should be indicated by appending a hyphen and a mode suf- 351+ preferences, should be indicated by appending a hyphen and a mode suf- 352 fix. Thus, a vt100 in 132-column mode would be vt100-w. The following 353 suffixes should be used where possible: 354 355@@ -170,96 +175,96 @@ 356 357 358 </PRE><H3><a name="h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></H3><PRE> 359- The terminfo entry consists of several <EM>capabilities</EM>, i.e., features 360- that the terminal has, or methods for exercising the terminal's fea- 361+ The terminfo entry consists of several <EM>capabilities</EM>, i.e., features 362+ that the terminal has, or methods for exercising the terminal's fea- 363 tures. 364 365 After the first field (giving the name(s) of the terminal entry), there 366 should be one or more <EM>capability</EM> fields. These are boolean, numeric or 367 string names with corresponding values: 368 369- <STRONG>o</STRONG> Boolean capabilities are true when present, false when absent. 370+ <STRONG>o</STRONG> Boolean capabilities are true when present, false when absent. 371 There is no explicit value for boolean capabilities. 372 373- <STRONG>o</STRONG> Numeric capabilities have a "#" following the name, then an 374+ <STRONG>o</STRONG> Numeric capabilities have a "#" following the name, then an 375 unsigned decimal integer value. 376 377- <STRONG>o</STRONG> String capabilities have a "=" following the name, then an string 378+ <STRONG>o</STRONG> String capabilities have a "=" following the name, then an string 379 of characters making up the capability value. 380 381- String capabilities can be split into multiple lines, just as the 382- fields comprising a terminal entry can be split into multiple 383- lines. While blanks between fields are ignored, blanks embedded 384- within a string value are retained, except for leading blanks on a 385+ String capabilities can be split into multiple lines, just as the 386+ fields comprising a terminal entry can be split into multiple 387+ lines. While blanks between fields are ignored, blanks embedded 388+ within a string value are retained, except for leading blanks on a 389 line. 390 391- Any capability can be <EM>canceled</EM>, i.e., suppressed from the terminal 392+ Any capability can be <EM>canceled</EM>, i.e., suppressed from the terminal 393 entry, by following its name with "@" rather than a capability value. 394 395 396 </PRE><H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE> 397- If there are two very similar terminals, one (the variant) can be 398- defined as being just like the other (the base) with certain excep- 399+ If there are two very similar terminals, one (the variant) can be 400+ defined as being just like the other (the base) with certain excep- 401 tions. In the definition of the variant, the string capability <STRONG>use</STRONG> can 402 be given with the name of the base terminal: 403 404- <STRONG>o</STRONG> The capabilities given before <STRONG>use</STRONG> override those in the base type 405+ <STRONG>o</STRONG> The capabilities given before <STRONG>use</STRONG> override those in the base type 406 named by <STRONG>use</STRONG>. 407 408- <STRONG>o</STRONG> If there are multiple <STRONG>use</STRONG> capabilities, they are merged in reverse 409- order. That is, the rightmost <STRONG>use</STRONG> reference is processed first, 410+ <STRONG>o</STRONG> If there are multiple <STRONG>use</STRONG> capabilities, they are merged in reverse 411+ order. That is, the rightmost <STRONG>use</STRONG> reference is processed first, 412 then the one to its left, and so forth. 413 414- <STRONG>o</STRONG> Capabilities given explicitly in the entry override those brought 415+ <STRONG>o</STRONG> Capabilities given explicitly in the entry override those brought 416 in by <STRONG>use</STRONG> references. 417 418 A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of the use ref- 419- erence that imports it, where <EM>xx</EM> is the capability. For example, the 420+ erence that imports it, where <EM>xx</EM> is the capability. For example, the 421 entry 422 423 2621-nl, smkx@, rmkx@, use=2621, 424 425 defines a 2621-nl that does not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG> capabilities, and 426- hence does not turn on the function key labels when in visual mode. 427- This is useful for different modes for a terminal, or for different 428+ hence does not turn on the function key labels when in visual mode. 429+ This is useful for different modes for a terminal, or for different 430 user preferences. 431 432 An entry included via <STRONG>use</STRONG> can contain canceled capabilities, which have 433- the same effect as if those cancels were inline in the using terminal 434+ the same effect as if those cancels were inline in the using terminal 435 entry. 436 437 438 </PRE><H3><a name="h3-Predefined-Capabilities">Predefined Capabilities</a></H3><PRE> 439- The following is a complete table of the capabilities included in a 440- terminfo description block and available to terminfo-using code. In 441+ The following is a complete table of the capabilities included in a 442+ terminfo description block and available to terminfo-using code. In 443 each line of the table, 444 445- The <STRONG>variable</STRONG> is the name by which the programmer (at the terminfo 446+ The <STRONG>variable</STRONG> is the name by which the programmer (at the terminfo 447 level) accesses the capability. 448 449- The <STRONG>capname</STRONG> is the short name used in the text of the database, and is 450- used by a person updating the database. Whenever possible, capnames 451+ The <STRONG>capname</STRONG> is the short name used in the text of the database, and is 452+ used by a person updating the database. Whenever possible, capnames 453 are chosen to be the same as or similar to the ANSI X3.64-1979 standard 454- (now superseded by ECMA-48, which uses identical or very similar 455- names). Semantics are also intended to match those of the specifica- 456+ (now superseded by ECMA-48, which uses identical or very similar 457+ names). Semantics are also intended to match those of the specifica- 458 tion. 459 460- The termcap code is the old <STRONG>termcap</STRONG> capability name (some capabilities 461+ The termcap code is the old <STRONG>termcap</STRONG> capability name (some capabilities 462 are new, and have names which termcap did not originate). 463 464- Capability names have no hard length limit, but an informal limit of 5 465+ Capability names have no hard length limit, but an informal limit of 5 466 characters has been adopted to keep them short and to allow the tabs in 467 the source file <STRONG>Caps</STRONG> to line up nicely. 468 469- Finally, the description field attempts to convey the semantics of the 470+ Finally, the description field attempts to convey the semantics of the 471 capability. You may find some codes in the description field: 472 473 (P) indicates that padding may be specified 474 475- #[1-9] in the description field indicates that the string is passed 476+ #[1-9] in the description field indicates that the string is passed 477 through tparm with parms as given (#<EM>i</EM>). 478 479- (P*) indicates that padding may vary in proportion to the number of 480+ (P*) indicates that padding may vary in proportion to the number of 481 lines affected 482 483 (#<EM>i</EM>) indicates the <EM>i</EM>th parameter. 484@@ -276,6 +281,9 @@ 485 matic margins 486 back_color_erase bce ut screen erased with 487 background color 488+ 489+ 490+ 491 can_change ccc cc terminal can re- 492 define existing col- 493 ors 494@@ -283,7 +291,6 @@ 495 by overwriting (hp) 496 col_addr_glitch xhpa YA only positive motion 497 for hpa/mhpa caps 498- 499 cpi_changes_res cpix YF changing character 500 pitch changes reso- 501 lution 502@@ -342,14 +349,13 @@ 503 echo on screen 504 row_addr_glitch xvpa YD only positive motion 505 for vpa/mvpa caps 506+ 507 semi_auto_right_margin sam YE printing in last 508 column causes cr 509 status_line_esc_ok eslok es escape can be used 510 on the status line 511 tilde_glitch hz hz cannot print ~'s 512 (Hazeltine) 513- 514- 515 transparent_underline ul ul underline character 516 overstrikes 517 xon_xoff xon xo terminal uses 518@@ -396,8 +402,8 @@ 519 width_status_line wsl ws number of columns in 520 status line 521 522- The following numeric capabilities are present in the SVr4.0 term 523- structure, but are not yet documented in the man page. They came in 524+ The following numeric capabilities are present in the SVr4.0 term 525+ structure, but are not yet documented in the man page. They came in 526 with SVr4's printer support. 527 528 529@@ -407,6 +413,9 @@ 530 each bit-image row 531 bit_image_type bitype Yp type of bit-image 532 device 533+ 534+ 535+ 536 buffer_capacity bufsz Ya numbers of bytes 537 buffered before 538 printing 539@@ -415,7 +424,6 @@ 540 dot_horz_spacing spinh Yc spacing of dots hor- 541 izontally in dots 542 per inch 543- 544 dot_vert_spacing spinv Yb spacing of pins ver- 545 tically in pins per 546 inch 547@@ -472,6 +480,8 @@ 548 (P) 549 char_padding rmp rP like ip but when in 550 insert mode 551+ 552+ 553 clear_all_tabs tbc ct clear all tab stops 554 (P) 555 clear_margins mgc MC clear right and left 556@@ -480,8 +490,6 @@ 557 home cursor (P*) 558 clr_bol el1 cb Clear to beginning 559 of line 560- 561- 562 clr_eol el ce clear to end of line 563 (P) 564 clr_eos ed cd clear to end of 565@@ -539,6 +547,7 @@ 566 enter_delete_mode smdc dm enter delete mode 567 enter_dim_mode dim mh turn on half-bright 568 mode 569+ 570 enter_doublewide_mode swidm ZF Enter double-wide 571 mode 572 enter_draft_quality sdrfq ZG Enter draft-quality 573@@ -547,7 +556,6 @@ 574 enter_italics_mode sitm ZH Enter italic mode 575 enter_leftward_mode slm ZI Start leftward car- 576 riage motion 577- 578 enter_micro_mode smicm ZJ Start micro-motion 579 mode 580 enter_near_letter_quality snlq ZK Enter NLQ mode 581@@ -605,6 +613,7 @@ 582 not move cursor) 583 form_feed ff ff hardcopy terminal 584 page eject (P*) 585+ 586 from_status_line fsl fs return from status 587 line 588 goto_window wingo WG go to window #1 589@@ -613,7 +622,6 @@ 590 string 591 init_2string is2 is initialization 592 string 593- 594 init_3string is3 i3 initialization 595 string 596 init_file if if name of initializa- 597@@ -671,6 +679,7 @@ 598 key_f15 kf15 F5 F15 function key 599 key_f16 kf16 F6 F16 function key 600 key_f17 kf17 F7 F17 function key 601+ 602 key_f18 kf18 F8 F18 function key 603 key_f19 kf19 F9 F19 function key 604 key_f2 kf2 k2 F2 function key 605@@ -679,7 +688,6 @@ 606 key_f22 kf22 FC F22 function key 607 key_f23 kf23 FD F23 function key 608 key_f24 kf24 FE F24 function key 609- 610 key_f25 kf25 FF F25 function key 611 key_f26 kf26 FG F26 function key 612 key_f27 kf27 FH F27 function key 613@@ -737,6 +745,7 @@ 614 key_mark kmrk %2 mark key 615 key_message kmsg %3 message key 616 key_move kmov %4 move key 617+ 618 key_next knxt %5 next key 619 key_npage knp kN next-page key 620 key_open kopn %6 open key 621@@ -745,7 +754,6 @@ 622 key_previous kprv %8 previous key 623 key_print kprt %9 print key 624 key_redo krdo %0 redo key 625- 626 key_reference kref &1 reference key 627 key_refresh krfr &2 refresh key 628 key_replace krpl &3 replace key 629@@ -802,6 +810,8 @@ 630 key f0 if not f0 631 lab_f1 lf1 l1 label on function 632 key f1 if not f1 633+ 634+ 635 lab_f10 lf10 la label on function 636 key f10 if not f10 637 lab_f2 lf2 l2 label on function 638@@ -810,8 +820,6 @@ 639 key f3 if not f3 640 lab_f4 lf4 l4 label on function 641 key f4 if not f4 642- 643- 644 lab_f5 lf5 l5 label on function 645 key f5 if not f5 646 lab_f6 lf6 l6 label on function 647@@ -869,6 +877,7 @@ 648 to the right (P*) 649 parm_right_micro mcuf Zh Like parm_right_cur- 650 sor in micro mode 651+ 652 parm_rindex rin SR scroll back #1 lines 653 (P) 654 parm_up_cursor cuu UP up #1 lines (P*) 655@@ -876,8 +885,6 @@ 656 in micro mode 657 pkey_key pfkey pk program function key 658 #1 to type string #2 659- 660- 661 pkey_local pfloc pl program function key 662 #1 to execute string 663 #2 664@@ -932,6 +939,11 @@ 665 pair to #1 666 set_foreground setf Sf Set foreground color 667 #1 668+ 669+ 670+ 671+ 672+ 673 set_left_margin smgl ML set left soft margin 674 at current col- 675 umn. See smgl. 676@@ -942,8 +954,6 @@ 677 set_right_margin smgr MR set right soft mar- 678 gin at current col- 679 umn 680- 681- 682 set_right_margin_parm smgrp Zn Set right margin at 683 column #1 684 set_tab hts st set a tab in every 685@@ -1008,8 +1018,6 @@ 686 lation 687 bit_image_carriage_return bicr Yv Move to beginning 688 of same row 689- 690- 691 bit_image_newline binel Zz Move to next row 692 of the bit image 693 bit_image_repeat birep Xy Repeat bit image 694@@ -1067,6 +1075,7 @@ 695 set_a_foreground setaf AF Set foreground 696 color to #1, using 697 ANSI escape 698+ 699 set_color_band setcolor Yz Change to ribbon 700 color #1 701 set_lr_margin smglr ML Set both left and 702@@ -1074,19 +1083,17 @@ 703 #1, #2. (ML is 704 not in BSD term- 705 cap). 706- 707- 708 set_page_length slines YZ Set page length to 709 #1 lines 710 set_tb_margin smgtb MT Sets both top and 711 bottom margins to 712 #1, #2 713 714- The XSI Curses standard added these hardcopy capabilities. They were 715- used in some post-4.1 versions of System V curses, e.g., Solaris 2.5 716- and IRIX 6.x. Except for <STRONG>YI</STRONG>, the <STRONG>ncurses</STRONG> termcap names for them are 717- invented. According to the XSI Curses standard, they have no termcap 718- names. If your compiled terminfo entries use these, they may not be 719+ The XSI Curses standard added these hardcopy capabilities. They were 720+ used in some post-4.1 versions of System V curses, e.g., Solaris 2.5 721+ and IRIX 6.x. Except for <STRONG>YI</STRONG>, the <STRONG>ncurses</STRONG> termcap names for them are 722+ invented. According to the XSI Curses standard, they have no termcap 723+ names. If your compiled terminfo entries use these, they may not be 724 binary-compatible with System V terminfo entries after SVr4.1; beware! 725 726 727@@ -1115,26 +1122,26 @@ 728 729 730 </PRE><H3><a name="h3-User-Defined-Capabilities">User-Defined Capabilities</a></H3><PRE> 731- The preceding section listed the <EM>predefined</EM> capabilities. They deal 732- with some special features for terminals no longer (or possibly never) 733- produced. Occasionally there are special features of newer terminals 734- which are awkward or impossible to represent by reusing the predefined 735+ The preceding section listed the <EM>predefined</EM> capabilities. They deal 736+ with some special features for terminals no longer (or possibly never) 737+ produced. Occasionally there are special features of newer terminals 738+ which are awkward or impossible to represent by reusing the predefined 739 capabilities. 740 741- <STRONG>ncurses</STRONG> addresses this limitation by allowing user-defined capabili- 742+ <STRONG>ncurses</STRONG> addresses this limitation by allowing user-defined capabili- 743 ties. The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG> option for this pur- 744 pose. When <STRONG>-x</STRONG> is set, <STRONG>tic</STRONG> treats unknown capabilities as user-defined. 745- That is, if <STRONG>tic</STRONG> encounters a capability name which it does not recog- 746- nize, it infers its type (boolean, number or string) from the syntax 747- and makes an extended table entry for that capability. The 748- <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG> function makes this information conditionally 749+ That is, if <STRONG>tic</STRONG> encounters a capability name which it does not recog- 750+ nize, it infers its type (boolean, number or string) from the syntax 751+ and makes an extended table entry for that capability. The 752+ <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG> function makes this information conditionally 753 available to applications. The ncurses library provides the data leav- 754 ing most of the behavior to applications: 755 756- <STRONG>o</STRONG> User-defined capability strings whose name begins with "k" are 757+ <STRONG>o</STRONG> User-defined capability strings whose name begins with "k" are 758 treated as function keys. 759 760- <STRONG>o</STRONG> The types (boolean, number, string) determined by <STRONG>tic</STRONG> can be 761+ <STRONG>o</STRONG> The types (boolean, number, string) determined by <STRONG>tic</STRONG> can be 762 inferred by successful calls on <STRONG>tigetflag</STRONG>, etc. 763 764 <STRONG>o</STRONG> If the capability name happens to be two characters, the capability 765@@ -1142,18 +1149,18 @@ 766 767 While termcap is said to be extensible because it does not use a prede- 768 fined set of capabilities, in practice it has been limited to the capa- 769- bilities defined by terminfo implementations. As a rule, user-defined 770+ bilities defined by terminfo implementations. As a rule, user-defined 771 capabilities intended for use by termcap applications should be limited 772- to booleans and numbers to avoid running past the 1023 byte limit 773+ to booleans and numbers to avoid running past the 1023 byte limit 774 assumed by termcap implementations and their applications. In particu- 775- lar, providing extended sets of function keys (past the 60 numbered 776- keys and the handful of special named keys) is best done using the 777+ lar, providing extended sets of function keys (past the 60 numbered 778+ keys and the handful of special named keys) is best done using the 779 longer names available using terminfo. 780 781 782 </PRE><H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE> 783 The following entry, describing an ANSI-standard terminal, is represen- 784- tative of what a <STRONG>terminfo</STRONG> entry for a modern terminal typically looks 785+ tative of what a <STRONG>terminfo</STRONG> entry for a modern terminal typically looks 786 like. 787 788 ansi|ansi/pc-term compatible with color, 789@@ -1187,8 +1194,8 @@ 790 smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, 791 u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd, 792 793- Entries may continue onto multiple lines by placing white space at the 794- beginning of each line except the first. Comments may be included on 795+ Entries may continue onto multiple lines by placing white space at the 796+ beginning of each line except the first. Comments may be included on 797 lines beginning with "#". Capabilities in <EM>terminfo</EM> are of three types: 798 799 <STRONG>o</STRONG> Boolean capabilities which indicate that the terminal has some par- 800@@ -1197,23 +1204,23 @@ 801 <STRONG>o</STRONG> numeric capabilities giving the size of the terminal or the size of 802 particular delays, and 803 804- <STRONG>o</STRONG> string capabilities, which give a sequence which can be used to 805+ <STRONG>o</STRONG> string capabilities, which give a sequence which can be used to 806 perform particular terminal operations. 807 808 809 </PRE><H3><a name="h3-Types-of-Capabilities">Types of Capabilities</a></H3><PRE> 810 All capabilities have names. For instance, the fact that ANSI-standard 811- terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an automatic return and line- 812- feed when the end of a line is reached) is indicated by the capability 813- <STRONG>am</STRONG>. Hence the description of ansi includes <STRONG>am</STRONG>. Numeric capabilities 814- are followed by the character "#" and then a positive value. Thus 815+ terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an automatic return and line- 816+ feed when the end of a line is reached) is indicated by the capability 817+ <STRONG>am</STRONG>. Hence the description of ansi includes <STRONG>am</STRONG>. Numeric capabilities 818+ are followed by the character "#" and then a positive value. Thus 819 <STRONG>cols</STRONG>, which indicates the number of columns the terminal has, gives the 820- value "80" for ansi. Values for numeric capabilities may be specified 821+ value "80" for ansi. Values for numeric capabilities may be specified 822 in decimal, octal or hexadecimal, using the C programming language con- 823 ventions (e.g., 255, 0377 and 0xff or 0xFF). 824 825- Finally, string valued capabilities, such as <STRONG>el</STRONG> (clear to end of line 826- sequence) are given by the two-character code, an "=", and then a 827+ Finally, string valued capabilities, such as <STRONG>el</STRONG> (clear to end of line 828+ sequence) are given by the two-character code, an "=", and then a 829 string ending at the next following ",". 830 831 A number of escape sequences are provided in the string valued capabil- 832@@ -1234,9 +1241,9 @@ 833 respectively. 834 835 X/Open Curses does not say what "appropriate <EM>x</EM>" might be. In practice, 836- that is a printable ASCII graphic character. The special case "^?" is 837- interpreted as DEL (127). In all other cases, the character value is 838- AND'd with 0x1f, mapping to ASCII control codes in the range 0 through 839+ that is a printable ASCII graphic character. The special case "^?" is 840+ interpreted as DEL (127). In all other cases, the character value is 841+ AND'd with 0x1f, mapping to ASCII control codes in the range 0 through 842 31. 843 844 Other escapes include 845@@ -1252,142 +1259,142 @@ 846 <STRONG>o</STRONG> and <STRONG>\0</STRONG> for null. 847 848 <STRONG>\0</STRONG> will produce \200, which does not terminate a string but behaves 849- as a null character on most terminals, providing CS7 is specified. 850+ as a null character on most terminals, providing CS7 is specified. 851 See <STRONG>stty(1)</STRONG>. 852 853- The reason for this quirk is to maintain binary compatibility of 854- the compiled terminfo files with other implementations, e.g., the 855- SVr4 systems, which document this. Compiled terminfo files use 856- null-terminated strings, with no lengths. Modifying this would 857+ The reason for this quirk is to maintain binary compatibility of 858+ the compiled terminfo files with other implementations, e.g., the 859+ SVr4 systems, which document this. Compiled terminfo files use 860+ null-terminated strings, with no lengths. Modifying this would 861 require a new binary format, which would not work with other imple- 862 mentations. 863 864 Finally, characters may be given as three octal digits after a <STRONG>\</STRONG>. 865 866- A delay in milliseconds may appear anywhere in a string capability, 867- enclosed in $<..> brackets, as in <STRONG>el</STRONG>=\EK$<5>, and padding characters 868+ A delay in milliseconds may appear anywhere in a string capability, 869+ enclosed in $<..> brackets, as in <STRONG>el</STRONG>=\EK$<5>, and padding characters 870 are supplied by <STRONG><A HREF="curs_terminfo.3x.html">tputs(3x)</A></STRONG> to provide this delay. 871 872 <STRONG>o</STRONG> The delay must be a number with at most one decimal place of preci- 873 sion; it may be followed by suffixes "*" or "/" or both. 874 875- <STRONG>o</STRONG> A "*" indicates that the padding required is proportional to the 876- number of lines affected by the operation, and the amount given is 877- the per-affected-unit padding required. (In the case of insert 878+ <STRONG>o</STRONG> A "*" indicates that the padding required is proportional to the 879+ number of lines affected by the operation, and the amount given is 880+ the per-affected-unit padding required. (In the case of insert 881 character, the factor is still the number of <EM>lines</EM> affected.) 882 883 Normally, padding is advisory if the device has the <STRONG>xon</STRONG> capability; 884 it is used for cost computation but does not trigger delays. 885 886- <STRONG>o</STRONG> A "/" suffix indicates that the padding is mandatory and forces a 887+ <STRONG>o</STRONG> A "/" suffix indicates that the padding is mandatory and forces a 888 delay of the given number of milliseconds even on devices for which 889 <STRONG>xon</STRONG> is present to indicate flow control. 890 891- Sometimes individual capabilities must be commented out. To do this, 892- put a period before the capability name. For example, see the second 893+ Sometimes individual capabilities must be commented out. To do this, 894+ put a period before the capability name. For example, see the second 895 <STRONG>ind</STRONG> in the example above. 896 897 898 </PRE><H3><a name="h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></H3><PRE> 899- The <STRONG>ncurses</STRONG> library searches for terminal descriptions in several 900- places. It uses only the first description found. The library has a 901- compiled-in list of places to search which can be overridden by envi- 902- ronment variables. Before starting to search, <STRONG>ncurses</STRONG> eliminates 903+ The <STRONG>ncurses</STRONG> library searches for terminal descriptions in several 904+ places. It uses only the first description found. The library has a 905+ compiled-in list of places to search which can be overridden by envi- 906+ ronment variables. Before starting to search, <STRONG>ncurses</STRONG> eliminates 907 duplicates in its search list. 908 909- <STRONG>o</STRONG> If the environment variable TERMINFO is set, it is interpreted as 910+ <STRONG>o</STRONG> If the environment variable TERMINFO is set, it is interpreted as 911 the pathname of a directory containing the compiled description you 912 are working on. Only that directory is searched. 913 914- <STRONG>o</STRONG> If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead look in the directory 915+ <STRONG>o</STRONG> If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead look in the directory 916 <STRONG>$HOME/.terminfo</STRONG> for a compiled description. 917 918- <STRONG>o</STRONG> Next, if the environment variable TERMINFO_DIRS is set, <STRONG>ncurses</STRONG> 919- will interpret the contents of that variable as a list of colon- 920+ <STRONG>o</STRONG> Next, if the environment variable TERMINFO_DIRS is set, <STRONG>ncurses</STRONG> 921+ will interpret the contents of that variable as a list of colon- 922 separated directories (or database files) to be searched. 923 924- An empty directory name (i.e., if the variable begins or ends with 925- a colon, or contains adjacent colons) is interpreted as the system 926+ An empty directory name (i.e., if the variable begins or ends with 927+ a colon, or contains adjacent colons) is interpreted as the system 928 location <EM>/usr/share/terminfo</EM>. 929 930 <STRONG>o</STRONG> Finally, <STRONG>ncurses</STRONG> searches these compiled-in locations: 931 932- <STRONG>o</STRONG> a list of directories (/usr/local/ncurses/share/ter- 933+ <STRONG>o</STRONG> a list of directories (/usr/local/ncurses/share/ter- 934 minfo:/usr/share/terminfo), and 935 936- <STRONG>o</STRONG> the system terminfo directory, <EM>/usr/share/terminfo</EM> (the com- 937+ <STRONG>o</STRONG> the system terminfo directory, <EM>/usr/share/terminfo</EM> (the com- 938 piled-in default). 939 940 941 </PRE><H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE> 942- We now outline how to prepare descriptions of terminals. The most 943- effective way to prepare a terminal description is by imitating the 944- description of a similar terminal in <EM>terminfo</EM> and to build up a 945+ We now outline how to prepare descriptions of terminals. The most 946+ effective way to prepare a terminal description is by imitating the 947+ description of a similar terminal in <EM>terminfo</EM> and to build up a 948 description gradually, using partial descriptions with <EM>vi</EM> or some other 949- screen-oriented program to check that they are correct. Be aware that 950- a very unusual terminal may expose deficiencies in the ability of the 951+ screen-oriented program to check that they are correct. Be aware that 952+ a very unusual terminal may expose deficiencies in the ability of the 953 <EM>terminfo</EM> file to describe it or bugs in the screen-handling code of the 954 test program. 955 956- To get the padding for insert line right (if the terminal manufacturer 957- did not document it) a severe test is to edit a large file at 9600 958+ To get the padding for insert line right (if the terminal manufacturer 959+ did not document it) a severe test is to edit a large file at 9600 960 baud, delete 16 or so lines from the middle of the screen, then hit the 961 "u" key several times quickly. If the terminal messes up, more padding 962 is usually needed. A similar test can be used for insert character. 963 964 965 </PRE><H3><a name="h3-Basic-Capabilities">Basic Capabilities</a></H3><PRE> 966- The number of columns on each line for the terminal is given by the 967- <STRONG>cols</STRONG> numeric capability. If the terminal is a CRT, then the number of 968- lines on the screen is given by the <STRONG>lines</STRONG> capability. If the terminal 969- wraps around to the beginning of the next line when it reaches the 970- right margin, then it should have the <STRONG>am</STRONG> capability. If the terminal 971- can clear its screen, leaving the cursor in the home position, then 972- this is given by the <STRONG>clear</STRONG> string capability. If the terminal over- 973- strikes (rather than clearing a position when a character is struck 974- over) then it should have the <STRONG>os</STRONG> capability. If the terminal is a 975+ The number of columns on each line for the terminal is given by the 976+ <STRONG>cols</STRONG> numeric capability. If the terminal is a CRT, then the number of 977+ lines on the screen is given by the <STRONG>lines</STRONG> capability. If the terminal 978+ wraps around to the beginning of the next line when it reaches the 979+ right margin, then it should have the <STRONG>am</STRONG> capability. If the terminal 980+ can clear its screen, leaving the cursor in the home position, then 981+ this is given by the <STRONG>clear</STRONG> string capability. If the terminal over- 982+ strikes (rather than clearing a position when a character is struck 983+ over) then it should have the <STRONG>os</STRONG> capability. If the terminal is a 984 printing terminal, with no soft copy unit, give it both <STRONG>hc</STRONG> and <STRONG>os</STRONG>. (<STRONG>os</STRONG> 985- applies to storage scope terminals, such as TEKTRONIX 4010 series, as 986- well as hard copy and APL terminals.) If there is a code to move the 987+ applies to storage scope terminals, such as TEKTRONIX 4010 series, as 988+ well as hard copy and APL terminals.) If there is a code to move the 989 cursor to the left edge of the current row, give this as <STRONG>cr</STRONG>. (Normally 990- this will be carriage return, control/M.) If there is a code to pro- 991+ this will be carriage return, control/M.) If there is a code to pro- 992 duce an audible signal (bell, beep, etc) give this as <STRONG>bel</STRONG>. 993 994 If there is a code to move the cursor one position to the left (such as 995- backspace) that capability should be given as <STRONG>cub1</STRONG>. Similarly, codes 996- to move to the right, up, and down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and 997- <STRONG>cud1</STRONG>. These local cursor motions should not alter the text they pass 998- over, for example, you would not normally use "<STRONG>cuf1</STRONG>= " because the 999+ backspace) that capability should be given as <STRONG>cub1</STRONG>. Similarly, codes 1000+ to move to the right, up, and down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and 1001+ <STRONG>cud1</STRONG>. These local cursor motions should not alter the text they pass 1002+ over, for example, you would not normally use "<STRONG>cuf1</STRONG>= " because the 1003 space would erase the character moved over. 1004 1005 A very important point here is that the local cursor motions encoded in 1006- <EM>terminfo</EM> are undefined at the left and top edges of a CRT terminal. 1007+ <EM>terminfo</EM> are undefined at the left and top edges of a CRT terminal. 1008 Programs should never attempt to backspace around the left edge, unless 1009- <STRONG>bw</STRONG> is given, and never attempt to go up locally off the top. In order 1010- to scroll text up, a program will go to the bottom left corner of the 1011+ <STRONG>bw</STRONG> is given, and never attempt to go up locally off the top. In order 1012+ to scroll text up, a program will go to the bottom left corner of the 1013 screen and send the <STRONG>ind</STRONG> (index) string. 1014 1015- To scroll text down, a program goes to the top left corner of the 1016+ To scroll text down, a program goes to the top left corner of the 1017 screen and sends the <STRONG>ri</STRONG> (reverse index) string. The strings <STRONG>ind</STRONG> and <STRONG>ri</STRONG> 1018 are undefined when not on their respective corners of the screen. 1019 1020- Parameterized versions of the scrolling sequences are <STRONG>indn</STRONG> and <STRONG>rin</STRONG> 1021- which have the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except that they take one 1022- parameter, and scroll that many lines. They are also undefined except 1023+ Parameterized versions of the scrolling sequences are <STRONG>indn</STRONG> and <STRONG>rin</STRONG> 1024+ which have the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except that they take one 1025+ parameter, and scroll that many lines. They are also undefined except 1026 at the appropriate edge of the screen. 1027 1028- The <STRONG>am</STRONG> capability tells whether the cursor sticks at the right edge of 1029- the screen when text is output, but this does not necessarily apply to 1030- a <STRONG>cuf1</STRONG> from the last column. The only local motion which is defined 1031- from the left edge is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from the left edge 1032- will move to the right edge of the previous row. If <STRONG>bw</STRONG> is not given, 1033- the effect is undefined. This is useful for drawing a box around the 1034+ The <STRONG>am</STRONG> capability tells whether the cursor sticks at the right edge of 1035+ the screen when text is output, but this does not necessarily apply to 1036+ a <STRONG>cuf1</STRONG> from the last column. The only local motion which is defined 1037+ from the left edge is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from the left edge 1038+ will move to the right edge of the previous row. If <STRONG>bw</STRONG> is not given, 1039+ the effect is undefined. This is useful for drawing a box around the 1040 edge of the screen, for example. If the terminal has switch selectable 1041- automatic margins, the <EM>terminfo</EM> file usually assumes that this is on; 1042- i.e., <STRONG>am</STRONG>. If the terminal has a command which moves to the first col- 1043- umn of the next line, that command can be given as <STRONG>nel</STRONG> (newline). It 1044- does not matter if the command clears the remainder of the current 1045- line, so if the terminal has no <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be possible to 1046+ automatic margins, the <EM>terminfo</EM> file usually assumes that this is on; 1047+ i.e., <STRONG>am</STRONG>. If the terminal has a command which moves to the first col- 1048+ umn of the next line, that command can be given as <STRONG>nel</STRONG> (newline). It 1049+ does not matter if the command clears the remainder of the current 1050+ line, so if the terminal has no <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be possible to 1051 craft a working <STRONG>nel</STRONG> out of one or both of them. 1052 1053 These capabilities suffice to describe hard-copy and "glass-tty" termi- 1054@@ -1404,20 +1411,20 @@ 1055 1056 1057 </PRE><H3><a name="h3-Parameterized-Strings">Parameterized Strings</a></H3><PRE> 1058- Cursor addressing and other strings requiring parameters in the termi- 1059- nal are described by a parameterized string capability, with <EM>printf</EM>- 1060+ Cursor addressing and other strings requiring parameters in the termi- 1061+ nal are described by a parameterized string capability, with <EM>printf</EM>- 1062 like escapes such as <EM>%x</EM> in it. For example, to address the cursor, the 1063- <STRONG>cup</STRONG> capability is given, using two parameters: the row and column to 1064- address to. (Rows and columns are numbered from zero and refer to the 1065+ <STRONG>cup</STRONG> capability is given, using two parameters: the row and column to 1066+ address to. (Rows and columns are numbered from zero and refer to the 1067 physical screen visible to the user, not to any unseen memory.) If the 1068- terminal has memory relative cursor addressing, that can be indicated 1069+ terminal has memory relative cursor addressing, that can be indicated 1070 by <STRONG>mrcup</STRONG>. 1071 1072- The parameter mechanism uses a stack and special <STRONG>%</STRONG> codes to manipulate 1073- it. Typically a sequence will push one of the parameters onto the 1074- stack and then print it in some format. Print (e.g., "%d") is a spe- 1075+ The parameter mechanism uses a stack and special <STRONG>%</STRONG> codes to manipulate 1076+ it. Typically a sequence will push one of the parameters onto the 1077+ stack and then print it in some format. Print (e.g., "%d") is a spe- 1078 cial case. Other operations, including "%t" pop their operand from the 1079- stack. It is noted that more complex operations are often necessary, 1080+ stack. It is noted that more complex operations are often necessary, 1081 e.g., in the <STRONG>sgr</STRONG> string. 1082 1083 The <STRONG>%</STRONG> encodings have the following meanings: 1084@@ -1425,7 +1432,7 @@ 1085 <STRONG>%%</STRONG> outputs "%" 1086 1087 <STRONG>%</STRONG><EM>[[</EM>:<EM>]flags][width[.precision]][</EM><STRONG>doxXs</STRONG><EM>]</EM> 1088- as in <STRONG>printf(3)</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>. Use a ":" to allow 1089+ as in <STRONG>printf(3)</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>. Use a ":" to allow 1090 the next character to be a "-" flag, avoiding interpreting "%-" as 1091 an operator. 1092 1093@@ -1448,9 +1455,9 @@ 1094 <STRONG>%g</STRONG><EM>[A-Z]</EM> 1095 get static variable <EM>[a-z]</EM> and push it 1096 1097- The terms "static" and "dynamic" are misleading. Historically, 1098+ The terms "static" and "dynamic" are misleading. Historically, 1099 these are simply two different sets of variables, whose values are 1100- not reset between calls to <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>. However, that fact is not 1101+ not reset between calls to <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>. However, that fact is not 1102 documented in other implementations. Relying on it will adversely 1103 impact portability to other implementations. 1104 1105@@ -1480,8 +1487,8 @@ 1106 1107 <STRONG>%?</STRONG> <EM>expr</EM> <STRONG>%t</STRONG> <EM>thenpart</EM> <STRONG>%e</STRONG> <EM>elsepart</EM> <STRONG>%;</STRONG> 1108 This forms an if-then-else. The <STRONG>%e</STRONG> <EM>elsepart</EM> is optional. Usually 1109- the <STRONG>%?</STRONG> <EM>expr</EM> part pushes a value onto the stack, and <STRONG>%t</STRONG> pops it 1110- from the stack, testing if it is nonzero (true). If it is zero 1111+ the <STRONG>%?</STRONG> <EM>expr</EM> part pushes a value onto the stack, and <STRONG>%t</STRONG> pops it 1112+ from the stack, testing if it is nonzero (true). If it is zero 1113 (false), control passes to the <STRONG>%e</STRONG> (else) part. 1114 1115 It is possible to form else-if's a la Algol 68: 1116@@ -1489,245 +1496,245 @@ 1117 1118 where ci are conditions, bi are bodies. 1119 1120- Use the <STRONG>-f</STRONG> option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG> to see the structure of if- 1121+ Use the <STRONG>-f</STRONG> option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG> to see the structure of if- 1122 then-else's. Some strings, e.g., <STRONG>sgr</STRONG> can be very complicated when 1123- written on one line. The <STRONG>-f</STRONG> option splits the string into lines 1124+ written on one line. The <STRONG>-f</STRONG> option splits the string into lines 1125 with the parts indented. 1126 1127- Binary operations are in postfix form with the operands in the usual 1128+ Binary operations are in postfix form with the operands in the usual 1129 order. That is, to get x-5 one would use "%gx%{5}%-". <STRONG>%P</STRONG> and <STRONG>%g</STRONG> vari- 1130 ables are persistent across escape-string evaluations. 1131 1132- Consider the HP2645, which, to get to row 3 and column 12, needs to be 1133- sent \E&a12c03Y padded for 6 milliseconds. Note that the order of the 1134- rows and columns is inverted here, and that the row and column are 1135- printed as two digits. Thus its <STRONG>cup</STRONG> capability is 1136+ Consider the HP2645, which, to get to row 3 and column 12, needs to be 1137+ sent \E&a12c03Y padded for 6 milliseconds. Note that the order of the 1138+ rows and columns is inverted here, and that the row and column are 1139+ printed as two digits. Thus its <STRONG>cup</STRONG> capability is 1140 "cup=6\E&%p2%2dc%p1%2dY". 1141 1142- The Microterm ACT-IV needs the current row and column sent preceded by 1143- a <STRONG>^T</STRONG>, with the row and column simply encoded in binary, 1144- "cup=^T%p1%c%p2%c". Terminals which use "%c" need to be able to 1145- backspace the cursor (<STRONG>cub1</STRONG>), and to move the cursor up one line on the 1146- screen (<STRONG>cuu1</STRONG>). This is necessary because it is not always safe to 1147- transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG> and <STRONG>\r</STRONG>, as the system may change or discard them. (The 1148- library routines dealing with terminfo set tty modes so that tabs are 1149- never expanded, so \t is safe to send. This turns out to be essential 1150+ The Microterm ACT-IV needs the current row and column sent preceded by 1151+ a <STRONG>^T</STRONG>, with the row and column simply encoded in binary, 1152+ "cup=^T%p1%c%p2%c". Terminals which use "%c" need to be able to 1153+ backspace the cursor (<STRONG>cub1</STRONG>), and to move the cursor up one line on the 1154+ screen (<STRONG>cuu1</STRONG>). This is necessary because it is not always safe to 1155+ transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG> and <STRONG>\r</STRONG>, as the system may change or discard them. (The 1156+ library routines dealing with terminfo set tty modes so that tabs are 1157+ never expanded, so \t is safe to send. This turns out to be essential 1158 for the Ann Arbor 4080.) 1159 1160- A final example is the LSI ADM-3a, which uses row and column offset by 1161+ A final example is the LSI ADM-3a, which uses row and column offset by 1162 a blank character, thus "cup=\E=%p1%' '%+%c%p2%' '%+%c". After sending 1163- "\E=", this pushes the first parameter, pushes the ASCII value for a 1164+ "\E=", this pushes the first parameter, pushes the ASCII value for a 1165 space (32), adds them (pushing the sum on the stack in place of the two 1166- previous values) and outputs that value as a character. Then the same 1167- is done for the second parameter. More complex arithmetic is possible 1168+ previous values) and outputs that value as a character. Then the same 1169+ is done for the second parameter. More complex arithmetic is possible 1170 using the stack. 1171 1172 1173 </PRE><H3><a name="h3-Cursor-Motions">Cursor Motions</a></H3><PRE> 1174- If the terminal has a fast way to home the cursor (to very upper left 1175- corner of screen) then this can be given as <STRONG>home</STRONG>; similarly a fast way 1176- of getting to the lower left-hand corner can be given as <STRONG>ll</STRONG>; this may 1177+ If the terminal has a fast way to home the cursor (to very upper left 1178+ corner of screen) then this can be given as <STRONG>home</STRONG>; similarly a fast way 1179+ of getting to the lower left-hand corner can be given as <STRONG>ll</STRONG>; this may 1180 involve going up with <STRONG>cuu1</STRONG> from the home position, but a program should 1181 never do this itself (unless <STRONG>ll</STRONG> does) because it can make no assumption 1182- about the effect of moving up from the home position. Note that the 1183- home position is the same as addressing to (0,0): to the top left cor- 1184+ about the effect of moving up from the home position. Note that the 1185+ home position is the same as addressing to (0,0): to the top left cor- 1186 ner of the screen, not of memory. (Thus, the \EH sequence on HP termi- 1187 nals cannot be used for <STRONG>home</STRONG>.) 1188 1189 If the terminal has row or column absolute cursor addressing, these can 1190- be given as single parameter capabilities <STRONG>hpa</STRONG> (horizontal position 1191- absolute) and <STRONG>vpa</STRONG> (vertical position absolute). Sometimes these are 1192- shorter than the more general two parameter sequence (as with the 1193- hp2645) and can be used in preference to <STRONG>cup</STRONG>. If there are parameter- 1194- ized local motions (e.g., move <EM>n</EM> spaces to the right) these can be 1195- given as <STRONG>cud</STRONG>, <STRONG>cub</STRONG>, <STRONG>cuf</STRONG>, and <STRONG>cuu</STRONG> with a single parameter indicating how 1196- many spaces to move. These are primarily useful if the terminal does 1197+ be given as single parameter capabilities <STRONG>hpa</STRONG> (horizontal position 1198+ absolute) and <STRONG>vpa</STRONG> (vertical position absolute). Sometimes these are 1199+ shorter than the more general two parameter sequence (as with the 1200+ hp2645) and can be used in preference to <STRONG>cup</STRONG>. If there are parameter- 1201+ ized local motions (e.g., move <EM>n</EM> spaces to the right) these can be 1202+ given as <STRONG>cud</STRONG>, <STRONG>cub</STRONG>, <STRONG>cuf</STRONG>, and <STRONG>cuu</STRONG> with a single parameter indicating how 1203+ many spaces to move. These are primarily useful if the terminal does 1204 not have <STRONG>cup</STRONG>, such as the TEKTRONIX 4025. 1205 1206- If the terminal needs to be in a special mode when running a program 1207+ If the terminal needs to be in a special mode when running a program 1208 that uses these capabilities, the codes to enter and exit this mode can 1209- be given as <STRONG>smcup</STRONG> and <STRONG>rmcup</STRONG>. This arises, for example, from terminals 1210- like the Concept with more than one page of memory. If the terminal 1211+ be given as <STRONG>smcup</STRONG> and <STRONG>rmcup</STRONG>. This arises, for example, from terminals 1212+ like the Concept with more than one page of memory. If the terminal 1213 has only memory relative cursor addressing and not screen relative cur- 1214 sor addressing, a one screen-sized window must be fixed into the termi- 1215- nal for cursor addressing to work properly. This is also used for the 1216- TEKTRONIX 4025, where <STRONG>smcup</STRONG> sets the command character to be the one 1217- used by terminfo. If the <STRONG>smcup</STRONG> sequence will not restore the screen 1218- after an <STRONG>rmcup</STRONG> sequence is output (to the state prior to outputting 1219+ nal for cursor addressing to work properly. This is also used for the 1220+ TEKTRONIX 4025, where <STRONG>smcup</STRONG> sets the command character to be the one 1221+ used by terminfo. If the <STRONG>smcup</STRONG> sequence will not restore the screen 1222+ after an <STRONG>rmcup</STRONG> sequence is output (to the state prior to outputting 1223 <STRONG>rmcup</STRONG>), specify <STRONG>nrrmc</STRONG>. 1224 1225 1226 </PRE><H3><a name="h3-Area-Clears">Area Clears</a></H3><PRE> 1227- If the terminal can clear from the current position to the end of the 1228- line, leaving the cursor where it is, this should be given as <STRONG>el</STRONG>. If 1229- the terminal can clear from the beginning of the line to the current 1230- position inclusive, leaving the cursor where it is, this should be 1231- given as <STRONG>el1</STRONG>. If the terminal can clear from the current position to 1232- the end of the display, then this should be given as <STRONG>ed</STRONG>. <STRONG>Ed</STRONG> is only 1233+ If the terminal can clear from the current position to the end of the 1234+ line, leaving the cursor where it is, this should be given as <STRONG>el</STRONG>. If 1235+ the terminal can clear from the beginning of the line to the current 1236+ position inclusive, leaving the cursor where it is, this should be 1237+ given as <STRONG>el1</STRONG>. If the terminal can clear from the current position to 1238+ the end of the display, then this should be given as <STRONG>ed</STRONG>. <STRONG>Ed</STRONG> is only 1239 defined from the first column of a line. (Thus, it can be simulated by 1240 a request to delete a large number of lines, if a true <STRONG>ed</STRONG> is not avail- 1241 able.) 1242 1243 1244 </PRE><H3><a name="h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></H3><PRE> 1245- If the terminal can open a new blank line before the line where the 1246- cursor is, this should be given as <STRONG>il1</STRONG>; this is done only from the 1247- first position of a line. The cursor must then appear on the newly 1248- blank line. If the terminal can delete the line which the cursor is 1249- on, then this should be given as <STRONG>dl1</STRONG>; this is done only from the first 1250+ If the terminal can open a new blank line before the line where the 1251+ cursor is, this should be given as <STRONG>il1</STRONG>; this is done only from the 1252+ first position of a line. The cursor must then appear on the newly 1253+ blank line. If the terminal can delete the line which the cursor is 1254+ on, then this should be given as <STRONG>dl1</STRONG>; this is done only from the first 1255 position on the line to be deleted. Versions of <STRONG>il1</STRONG> and <STRONG>dl1</STRONG> which take 1256 a single parameter and insert or delete that many lines can be given as 1257 <STRONG>il</STRONG> and <STRONG>dl</STRONG>. 1258 1259- If the terminal has a settable scrolling region (like the vt100) the 1260- command to set this can be described with the <STRONG>csr</STRONG> capability, which 1261+ If the terminal has a settable scrolling region (like the vt100) the 1262+ command to set this can be described with the <STRONG>csr</STRONG> capability, which 1263 takes two parameters: the top and bottom lines of the scrolling region. 1264 The cursor position is, alas, undefined after using this command. 1265 1266- It is possible to get the effect of insert or delete line using <STRONG>csr</STRONG> on 1267- a properly chosen region; the <STRONG>sc</STRONG> and <STRONG>rc</STRONG> (save and restore cursor) com- 1268- mands may be useful for ensuring that your synthesized insert/delete 1269- string does not move the cursor. (Note that the <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> library 1270- does this synthesis automatically, so you need not compose 1271+ It is possible to get the effect of insert or delete line using <STRONG>csr</STRONG> on 1272+ a properly chosen region; the <STRONG>sc</STRONG> and <STRONG>rc</STRONG> (save and restore cursor) com- 1273+ mands may be useful for ensuring that your synthesized insert/delete 1274+ string does not move the cursor. (Note that the <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> library 1275+ does this synthesis automatically, so you need not compose 1276 insert/delete strings for an entry with <STRONG>csr</STRONG>). 1277 1278 Yet another way to construct insert and delete might be to use a combi- 1279- nation of index with the memory-lock feature found on some terminals 1280+ nation of index with the memory-lock feature found on some terminals 1281 (like the HP-700/90 series, which however also has insert/delete). 1282 1283- Inserting lines at the top or bottom of the screen can also be done 1284- using <STRONG>ri</STRONG> or <STRONG>ind</STRONG> on many terminals without a true insert/delete line, 1285+ Inserting lines at the top or bottom of the screen can also be done 1286+ using <STRONG>ri</STRONG> or <STRONG>ind</STRONG> on many terminals without a true insert/delete line, 1287 and is often faster even on terminals with those features. 1288 1289 The boolean <STRONG>non_dest_scroll_region</STRONG> should be set if each scrolling win- 1290- dow is effectively a view port on a screen-sized canvas. To test for 1291+ dow is effectively a view port on a screen-sized canvas. To test for 1292 this capability, create a scrolling region in the middle of the screen, 1293- write something to the bottom line, move the cursor to the top of the 1294+ write something to the bottom line, move the cursor to the top of the 1295 region, and do <STRONG>ri</STRONG> followed by <STRONG>dl1</STRONG> or <STRONG>ind</STRONG>. If the data scrolled off the 1296- bottom of the region by the <STRONG>ri</STRONG> re-appears, then scrolling is non- 1297- destructive. System V and XSI Curses expect that <STRONG>ind</STRONG>, <STRONG>ri</STRONG>, <STRONG>indn</STRONG>, and 1298- <STRONG>rin</STRONG> will simulate destructive scrolling; their documentation cautions 1299- you not to define <STRONG>csr</STRONG> unless this is true. This <STRONG>curses</STRONG> implementation 1300+ bottom of the region by the <STRONG>ri</STRONG> re-appears, then scrolling is non- 1301+ destructive. System V and XSI Curses expect that <STRONG>ind</STRONG>, <STRONG>ri</STRONG>, <STRONG>indn</STRONG>, and 1302+ <STRONG>rin</STRONG> will simulate destructive scrolling; their documentation cautions 1303+ you not to define <STRONG>csr</STRONG> unless this is true. This <STRONG>curses</STRONG> implementation 1304 is more liberal and will do explicit erases after scrolling if <STRONG>ndsrc</STRONG> is 1305 defined. 1306 1307- If the terminal has the ability to define a window as part of memory, 1308- which all commands affect, it should be given as the parameterized 1309- string <STRONG>wind</STRONG>. The four parameters are the starting and ending lines in 1310+ If the terminal has the ability to define a window as part of memory, 1311+ which all commands affect, it should be given as the parameterized 1312+ string <STRONG>wind</STRONG>. The four parameters are the starting and ending lines in 1313 memory and the starting and ending columns in memory, in that order. 1314 1315 If the terminal can retain display memory above, then the <STRONG>da</STRONG> capability 1316- should be given; if display memory can be retained below, then <STRONG>db</STRONG> 1317- should be given. These indicate that deleting a line or scrolling may 1318- bring non-blank lines up from below or that scrolling back with <STRONG>ri</STRONG> may 1319+ should be given; if display memory can be retained below, then <STRONG>db</STRONG> 1320+ should be given. These indicate that deleting a line or scrolling may 1321+ bring non-blank lines up from below or that scrolling back with <STRONG>ri</STRONG> may 1322 bring down non-blank lines. 1323 1324 1325 </PRE><H3><a name="h3-Insert_Delete-Character">Insert/Delete Character</a></H3><PRE> 1326- There are two basic kinds of intelligent terminals with respect to 1327- insert/delete character which can be described using <EM>terminfo.</EM> The 1328- most common insert/delete character operations affect only the charac- 1329- ters on the current line and shift characters off the end of the line 1330+ There are two basic kinds of intelligent terminals with respect to 1331+ insert/delete character which can be described using <EM>terminfo.</EM> The 1332+ most common insert/delete character operations affect only the charac- 1333+ ters on the current line and shift characters off the end of the line 1334 rigidly. Other terminals, such as the Concept 100 and the Perkin Elmer 1335 Owl, make a distinction between typed and untyped blanks on the screen, 1336- shifting upon an insert or delete only to an untyped blank on the 1337+ shifting upon an insert or delete only to an untyped blank on the 1338 screen which is either eliminated, or expanded to two untyped blanks. 1339 1340- You can determine the kind of terminal you have by clearing the screen 1341- and then typing text separated by cursor motions. Type "abc def" 1342- using local cursor motions (not spaces) between the "abc" and the 1343- "def". Then position the cursor before the "abc" and put the terminal 1344- in insert mode. If typing characters causes the rest of the line to 1345- shift rigidly and characters to fall off the end, then your terminal 1346- does not distinguish between blanks and untyped positions. If the 1347- "abc" shifts over to the "def" which then move together around the end 1348- of the current line and onto the next as you insert, you have the sec- 1349- ond type of terminal, and should give the capability <STRONG>in</STRONG>, which stands 1350+ You can determine the kind of terminal you have by clearing the screen 1351+ and then typing text separated by cursor motions. Type "abc def" 1352+ using local cursor motions (not spaces) between the "abc" and the 1353+ "def". Then position the cursor before the "abc" and put the terminal 1354+ in insert mode. If typing characters causes the rest of the line to 1355+ shift rigidly and characters to fall off the end, then your terminal 1356+ does not distinguish between blanks and untyped positions. If the 1357+ "abc" shifts over to the "def" which then move together around the end 1358+ of the current line and onto the next as you insert, you have the sec- 1359+ ond type of terminal, and should give the capability <STRONG>in</STRONG>, which stands 1360 for "insert null". 1361 1362- While these are two logically separate attributes (one line versus 1363- multi-line insert mode, and special treatment of untyped spaces) we 1364- have seen no terminals whose insert mode cannot be described with the 1365+ While these are two logically separate attributes (one line versus 1366+ multi-line insert mode, and special treatment of untyped spaces) we 1367+ have seen no terminals whose insert mode cannot be described with the 1368 single attribute. 1369 1370- Terminfo can describe both terminals which have an insert mode, and 1371- terminals which send a simple sequence to open a blank position on the 1372+ Terminfo can describe both terminals which have an insert mode, and 1373+ terminals which send a simple sequence to open a blank position on the 1374 current line. Give as <STRONG>smir</STRONG> the sequence to get into insert mode. Give 1375- as <STRONG>rmir</STRONG> the sequence to leave insert mode. Now give as <STRONG>ich1</STRONG> any 1376- sequence needed to be sent just before sending the character to be 1377- inserted. Most terminals with a true insert mode will not give <STRONG>ich1</STRONG>; 1378- terminals which send a sequence to open a screen position should give 1379+ as <STRONG>rmir</STRONG> the sequence to leave insert mode. Now give as <STRONG>ich1</STRONG> any 1380+ sequence needed to be sent just before sending the character to be 1381+ inserted. Most terminals with a true insert mode will not give <STRONG>ich1</STRONG>; 1382+ terminals which send a sequence to open a screen position should give 1383 it here. 1384 1385- If your terminal has both, insert mode is usually preferable to <STRONG>ich1</STRONG>. 1386- Technically, you should not give both unless the terminal actually 1387- requires both to be used in combination. Accordingly, some non-curses 1388- applications get confused if both are present; the symptom is doubled 1389- characters in an update using insert. This requirement is now rare; 1390- most <STRONG>ich</STRONG> sequences do not require previous smir, and most smir insert 1391- modes do not require <STRONG>ich1</STRONG> before each character. Therefore, the new 1392- <STRONG>curses</STRONG> actually assumes this is the case and uses either <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> or 1393- <STRONG>ich</STRONG>/<STRONG>ich1</STRONG> as appropriate (but not both). If you have to write an entry 1394- to be used under new curses for a terminal old enough to need both, 1395+ If your terminal has both, insert mode is usually preferable to <STRONG>ich1</STRONG>. 1396+ Technically, you should not give both unless the terminal actually 1397+ requires both to be used in combination. Accordingly, some non-curses 1398+ applications get confused if both are present; the symptom is doubled 1399+ characters in an update using insert. This requirement is now rare; 1400+ most <STRONG>ich</STRONG> sequences do not require previous smir, and most smir insert 1401+ modes do not require <STRONG>ich1</STRONG> before each character. Therefore, the new 1402+ <STRONG>curses</STRONG> actually assumes this is the case and uses either <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> or 1403+ <STRONG>ich</STRONG>/<STRONG>ich1</STRONG> as appropriate (but not both). If you have to write an entry 1404+ to be used under new curses for a terminal old enough to need both, 1405 include the <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> sequences in <STRONG>ich1</STRONG>. 1406 1407 If post insert padding is needed, give this as a number of milliseconds 1408- in <STRONG>ip</STRONG> (a string option). Any other sequence which may need to be sent 1409+ in <STRONG>ip</STRONG> (a string option). Any other sequence which may need to be sent 1410 after an insert of a single character may also be given in <STRONG>ip</STRONG>. If your 1411- terminal needs both to be placed into an "insert mode" and a special 1412- code to precede each inserted character, then both <STRONG>smir</STRONG>/<STRONG>rmir</STRONG> and <STRONG>ich1</STRONG> 1413- can be given, and both will be used. The <STRONG>ich</STRONG> capability, with one 1414+ terminal needs both to be placed into an "insert mode" and a special 1415+ code to precede each inserted character, then both <STRONG>smir</STRONG>/<STRONG>rmir</STRONG> and <STRONG>ich1</STRONG> 1416+ can be given, and both will be used. The <STRONG>ich</STRONG> capability, with one 1417 parameter, <EM>n</EM>, will repeat the effects of <STRONG>ich1</STRONG> <EM>n</EM> times. 1418 1419- If padding is necessary between characters typed while not in insert 1420+ If padding is necessary between characters typed while not in insert 1421 mode, give this as a number of milliseconds padding in <STRONG>rmp</STRONG>. 1422 1423- It is occasionally necessary to move around while in insert mode to 1424- delete characters on the same line (e.g., if there is a tab after the 1425- insertion position). If your terminal allows motion while in insert 1426- mode you can give the capability <STRONG>mir</STRONG> to speed up inserting in this 1427- case. Omitting <STRONG>mir</STRONG> will affect only speed. Some terminals (notably 1428- Datamedia's) must not have <STRONG>mir</STRONG> because of the way their insert mode 1429+ It is occasionally necessary to move around while in insert mode to 1430+ delete characters on the same line (e.g., if there is a tab after the 1431+ insertion position). If your terminal allows motion while in insert 1432+ mode you can give the capability <STRONG>mir</STRONG> to speed up inserting in this 1433+ case. Omitting <STRONG>mir</STRONG> will affect only speed. Some terminals (notably 1434+ Datamedia's) must not have <STRONG>mir</STRONG> because of the way their insert mode 1435 works. 1436 1437- Finally, you can specify <STRONG>dch1</STRONG> to delete a single character, <STRONG>dch</STRONG> with 1438- one parameter, <EM>n</EM>, to delete <EM>n</EM> <EM>characters,</EM> and delete mode by giving 1439- <STRONG>smdc</STRONG> and <STRONG>rmdc</STRONG> to enter and exit delete mode (any mode the terminal 1440+ Finally, you can specify <STRONG>dch1</STRONG> to delete a single character, <STRONG>dch</STRONG> with 1441+ one parameter, <EM>n</EM>, to delete <EM>n</EM> <EM>characters,</EM> and delete mode by giving 1442+ <STRONG>smdc</STRONG> and <STRONG>rmdc</STRONG> to enter and exit delete mode (any mode the terminal 1443 needs to be placed in for <STRONG>dch1</STRONG> to work). 1444 1445- A command to erase <EM>n</EM> characters (equivalent to outputting <EM>n</EM> blanks 1446+ A command to erase <EM>n</EM> characters (equivalent to outputting <EM>n</EM> blanks 1447 without moving the cursor) can be given as <STRONG>ech</STRONG> with one parameter. 1448 1449 1450 </PRE><H3><a name="h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE> 1451 If your terminal has one or more kinds of display attributes, these can 1452- be represented in a number of different ways. You should choose one 1453- display form as <EM>standout</EM> <EM>mode</EM>, representing a good, high contrast, 1454- easy-on-the-eyes, format for highlighting error messages and other 1455- attention getters. (If you have a choice, reverse video plus half- 1456- bright is good, or reverse video alone.) The sequences to enter and 1457- exit standout mode are given as <STRONG>smso</STRONG> and <STRONG>rmso</STRONG>, respectively. If the 1458- code to change into or out of standout mode leaves one or even two 1459- blank spaces on the screen, as the TVI 912 and Teleray 1061 do, then 1460+ be represented in a number of different ways. You should choose one 1461+ display form as <EM>standout</EM> <EM>mode</EM>, representing a good, high contrast, 1462+ easy-on-the-eyes, format for highlighting error messages and other 1463+ attention getters. (If you have a choice, reverse video plus half- 1464+ bright is good, or reverse video alone.) The sequences to enter and 1465+ exit standout mode are given as <STRONG>smso</STRONG> and <STRONG>rmso</STRONG>, respectively. If the 1466+ code to change into or out of standout mode leaves one or even two 1467+ blank spaces on the screen, as the TVI 912 and Teleray 1061 do, then 1468 <STRONG>xmc</STRONG> should be given to tell how many spaces are left. 1469 1470 Codes to begin underlining and end underlining can be given as <STRONG>smul</STRONG> and 1471 <STRONG>rmul</STRONG> respectively. If the terminal has a code to underline the current 1472- character and move the cursor one space to the right, such as the 1473+ character and move the cursor one space to the right, such as the 1474 Microterm Mime, this can be given as <STRONG>uc</STRONG>. 1475 1476- Other capabilities to enter various highlighting modes include <STRONG>blink</STRONG> 1477- (blinking) <STRONG>bold</STRONG> (bold or extra bright) <STRONG>dim</STRONG> (dim or half-bright) <STRONG>invis</STRONG> 1478- (blanking or invisible text) <STRONG>prot</STRONG> (protected) <STRONG>rev</STRONG> (reverse video) <STRONG>sgr0</STRONG> 1479- (turn off <EM>all</EM> attribute modes) <STRONG>smacs</STRONG> (enter alternate character set 1480+ Other capabilities to enter various highlighting modes include <STRONG>blink</STRONG> 1481+ (blinking) <STRONG>bold</STRONG> (bold or extra bright) <STRONG>dim</STRONG> (dim or half-bright) <STRONG>invis</STRONG> 1482+ (blanking or invisible text) <STRONG>prot</STRONG> (protected) <STRONG>rev</STRONG> (reverse video) <STRONG>sgr0</STRONG> 1483+ (turn off <EM>all</EM> attribute modes) <STRONG>smacs</STRONG> (enter alternate character set 1484 mode) and <STRONG>rmacs</STRONG> (exit alternate character set mode). Turning on any of 1485 these modes singly may or may not turn off other modes. 1486 1487- If there is a sequence to set arbitrary combinations of modes, this 1488- should be given as <STRONG>sgr</STRONG> (set attributes), taking 9 parameters. Each 1489- parameter is either 0 or nonzero, as the corresponding attribute is on 1490- or off. The 9 parameters are, in order: standout, underline, reverse, 1491- blink, dim, bold, blank, protect, alternate character set. Not all 1492+ If there is a sequence to set arbitrary combinations of modes, this 1493+ should be given as <STRONG>sgr</STRONG> (set attributes), taking 9 parameters. Each 1494+ parameter is either 0 or nonzero, as the corresponding attribute is on 1495+ or off. The 9 parameters are, in order: standout, underline, reverse, 1496+ blink, dim, bold, blank, protect, alternate character set. Not all 1497 modes need be supported by <STRONG>sgr</STRONG>, only those for which corresponding sep- 1498 arate attribute commands exist. 1499 1500@@ -1746,17 +1753,17 @@ 1501 p8 protect not used 1502 p9 altcharset ^O (off) ^N (on) 1503 1504- We begin each escape sequence by turning off any existing modes, since 1505- there is no quick way to determine whether they are active. Standout 1506- is set up to be the combination of reverse and bold. The vt220 termi- 1507- nal has a protect mode, though it is not commonly used in sgr because 1508- it protects characters on the screen from the host's erasures. The 1509- altcharset mode also is different in that it is either ^O or ^N, 1510- depending on whether it is off or on. If all modes are turned on, the 1511+ We begin each escape sequence by turning off any existing modes, since 1512+ there is no quick way to determine whether they are active. Standout 1513+ is set up to be the combination of reverse and bold. The vt220 termi- 1514+ nal has a protect mode, though it is not commonly used in sgr because 1515+ it protects characters on the screen from the host's erasures. The 1516+ altcharset mode also is different in that it is either ^O or ^N, 1517+ depending on whether it is off or on. If all modes are turned on, the 1518 resulting sequence is \E[0;1;4;5;7;8m^N. 1519 1520- Some sequences are common to different modes. For example, ;7 is out- 1521- put when either p1 or p3 is true, that is, if either standout or 1522+ Some sequences are common to different modes. For example, ;7 is out- 1523+ put when either p1 or p3 is true, that is, if either standout or 1524 reverse modes are turned on. 1525 1526 Writing out the above sequences, along with their dependencies yields 1527@@ -1777,54 +1784,54 @@ 1528 sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%; 1529 %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, 1530 1531- Remember that if you specify sgr, you must also specify sgr0. Also, 1532- some implementations rely on sgr being given if sgr0 is, Not all ter- 1533- minfo entries necessarily have an sgr string, however. Many terminfo 1534+ Remember that if you specify sgr, you must also specify sgr0. Also, 1535+ some implementations rely on sgr being given if sgr0 is, Not all ter- 1536+ minfo entries necessarily have an sgr string, however. Many terminfo 1537 entries are derived from termcap entries which have no sgr string. The 1538 only drawback to adding an sgr string is that termcap also assumes that 1539 sgr0 does not exit alternate character set mode. 1540 1541- Terminals with the "magic cookie" glitch (<STRONG>xmc</STRONG>) deposit special "cook- 1542+ Terminals with the "magic cookie" glitch (<STRONG>xmc</STRONG>) deposit special "cook- 1543 ies" when they receive mode-setting sequences, which affect the display 1544- algorithm rather than having extra bits for each character. Some ter- 1545- minals, such as the HP 2621, automatically leave standout mode when 1546- they move to a new line or the cursor is addressed. Programs using 1547- standout mode should exit standout mode before moving the cursor or 1548- sending a newline, unless the <STRONG>msgr</STRONG> capability, asserting that it is 1549+ algorithm rather than having extra bits for each character. Some ter- 1550+ minals, such as the HP 2621, automatically leave standout mode when 1551+ they move to a new line or the cursor is addressed. Programs using 1552+ standout mode should exit standout mode before moving the cursor or 1553+ sending a newline, unless the <STRONG>msgr</STRONG> capability, asserting that it is 1554 safe to move in standout mode, is present. 1555 1556- If the terminal has a way of flashing the screen to indicate an error 1557- quietly (a bell replacement) then this can be given as <STRONG>flash</STRONG>; it must 1558+ If the terminal has a way of flashing the screen to indicate an error 1559+ quietly (a bell replacement) then this can be given as <STRONG>flash</STRONG>; it must 1560 not move the cursor. 1561 1562- If the cursor needs to be made more visible than normal when it is not 1563+ If the cursor needs to be made more visible than normal when it is not 1564 on the bottom line (to make, for example, a non-blinking underline into 1565- an easier to find block or blinking underline) give this sequence as 1566+ an easier to find block or blinking underline) give this sequence as 1567 <STRONG>cvvis</STRONG>. If there is a way to make the cursor completely invisible, give 1568- that as <STRONG>civis</STRONG>. The capability <STRONG>cnorm</STRONG> should be given which undoes the 1569+ that as <STRONG>civis</STRONG>. The capability <STRONG>cnorm</STRONG> should be given which undoes the 1570 effects of both of these modes. 1571 1572- If your terminal correctly generates underlined characters (with no 1573- special codes needed) even though it does not overstrike, then you 1574- should give the capability <STRONG>ul</STRONG>. If a character overstriking another 1575- leaves both characters on the screen, specify the capability <STRONG>os</STRONG>. If 1576+ If your terminal correctly generates underlined characters (with no 1577+ special codes needed) even though it does not overstrike, then you 1578+ should give the capability <STRONG>ul</STRONG>. If a character overstriking another 1579+ leaves both characters on the screen, specify the capability <STRONG>os</STRONG>. If 1580 overstrikes are erasable with a blank, then this should be indicated by 1581 giving <STRONG>eo</STRONG>. 1582 1583 1584 </PRE><H3><a name="h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></H3><PRE> 1585- If the terminal has a keypad that transmits codes when the keys are 1586- pressed, this information can be given. Note that it is not possible 1587+ If the terminal has a keypad that transmits codes when the keys are 1588+ pressed, this information can be given. Note that it is not possible 1589 to handle terminals where the keypad only works in local (this applies, 1590- for example, to the unshifted HP 2621 keys). If the keypad can be set 1591+ for example, to the unshifted HP 2621 keys). If the keypad can be set 1592 to transmit or not transmit, give these codes as <STRONG>smkx</STRONG> and <STRONG>rmkx</STRONG>. Other- 1593 wise the keypad is assumed to always transmit. 1594 1595- The codes sent by the left arrow, right arrow, up arrow, down arrow, 1596- and home keys can be given as <STRONG>kcub1,</STRONG> <STRONG>kcuf1,</STRONG> <STRONG>kcuu1,</STRONG> <STRONG>kcud1,</STRONG> and <STRONG>khome</STRONG> 1597+ The codes sent by the left arrow, right arrow, up arrow, down arrow, 1598+ and home keys can be given as <STRONG>kcub1,</STRONG> <STRONG>kcuf1,</STRONG> <STRONG>kcuu1,</STRONG> <STRONG>kcud1,</STRONG> and <STRONG>khome</STRONG> 1599 respectively. If there are function keys such as f0, f1, ..., f10, the 1600- codes they send can be given as <STRONG>kf0,</STRONG> <STRONG>kf1,</STRONG> <STRONG>...,</STRONG> <STRONG>kf10</STRONG>. If these keys 1601- have labels other than the default f0 through f10, the labels can be 1602+ codes they send can be given as <STRONG>kf0,</STRONG> <STRONG>kf1,</STRONG> <STRONG>...,</STRONG> <STRONG>kf10</STRONG>. If these keys 1603+ have labels other than the default f0 through f10, the labels can be 1604 given as <STRONG>lf0,</STRONG> <STRONG>lf1,</STRONG> <STRONG>...,</STRONG> <STRONG>lf10</STRONG>. 1605 1606 The codes transmitted by certain other special keys can be given: 1607@@ -1863,64 +1870,64 @@ 1608 1609 <STRONG>o</STRONG> <STRONG>khts</STRONG> (set a tab stop in this column). 1610 1611- In addition, if the keypad has a 3 by 3 array of keys including the 1612- four arrow keys, the other five keys can be given as <STRONG>ka1</STRONG>, <STRONG>ka3</STRONG>, <STRONG>kb2</STRONG>, 1613- <STRONG>kc1</STRONG>, and <STRONG>kc3</STRONG>. These keys are useful when the effects of a 3 by 3 1614+ In addition, if the keypad has a 3 by 3 array of keys including the 1615+ four arrow keys, the other five keys can be given as <STRONG>ka1</STRONG>, <STRONG>ka3</STRONG>, <STRONG>kb2</STRONG>, 1616+ <STRONG>kc1</STRONG>, and <STRONG>kc3</STRONG>. These keys are useful when the effects of a 3 by 3 1617 directional pad are needed. 1618 1619 Strings to program function keys can be given as <STRONG>pfkey</STRONG>, <STRONG>pfloc</STRONG>, and <STRONG>pfx</STRONG>. 1620- A string to program screen labels should be specified as <STRONG>pln</STRONG>. Each of 1621- these strings takes two parameters: the function key number to program 1622+ A string to program screen labels should be specified as <STRONG>pln</STRONG>. Each of 1623+ these strings takes two parameters: the function key number to program 1624 (from 0 to 10) and the string to program it with. Function key numbers 1625- out of this range may program undefined keys in a terminal dependent 1626- manner. The difference between the capabilities is that <STRONG>pfkey</STRONG> causes 1627- pressing the given key to be the same as the user typing the given 1628- string; <STRONG>pfloc</STRONG> causes the string to be executed by the terminal in 1629+ out of this range may program undefined keys in a terminal dependent 1630+ manner. The difference between the capabilities is that <STRONG>pfkey</STRONG> causes 1631+ pressing the given key to be the same as the user typing the given 1632+ string; <STRONG>pfloc</STRONG> causes the string to be executed by the terminal in 1633 local; and <STRONG>pfx</STRONG> causes the string to be transmitted to the computer. 1634 1635- The capabilities <STRONG>nlab</STRONG>, <STRONG>lw</STRONG> and <STRONG>lh</STRONG> define the number of programmable 1636- screen labels and their width and height. If there are commands to 1637- turn the labels on and off, give them in <STRONG>smln</STRONG> and <STRONG>rmln</STRONG>. <STRONG>smln</STRONG> is nor- 1638- mally output after one or more pln sequences to make sure that the 1639+ The capabilities <STRONG>nlab</STRONG>, <STRONG>lw</STRONG> and <STRONG>lh</STRONG> define the number of programmable 1640+ screen labels and their width and height. If there are commands to 1641+ turn the labels on and off, give them in <STRONG>smln</STRONG> and <STRONG>rmln</STRONG>. <STRONG>smln</STRONG> is nor- 1642+ mally output after one or more pln sequences to make sure that the 1643 change becomes visible. 1644 1645 1646 </PRE><H3><a name="h3-Tabs-and-Initialization">Tabs and Initialization</a></H3><PRE> 1647 A few capabilities are used only for tabs: 1648 1649- <STRONG>o</STRONG> If the terminal has hardware tabs, the command to advance to the 1650+ <STRONG>o</STRONG> If the terminal has hardware tabs, the command to advance to the 1651 next tab stop can be given as <STRONG>ht</STRONG> (usually control/I). 1652 1653 <STRONG>o</STRONG> A "back-tab" command which moves leftward to the preceding tab stop 1654 can be given as <STRONG>cbt</STRONG>. 1655 1656- By convention, if the teletype modes indicate that tabs are being 1657- expanded by the computer rather than being sent to the terminal, 1658- programs should not use <STRONG>ht</STRONG> or <STRONG>cbt</STRONG> even if they are present, since 1659+ By convention, if the teletype modes indicate that tabs are being 1660+ expanded by the computer rather than being sent to the terminal, 1661+ programs should not use <STRONG>ht</STRONG> or <STRONG>cbt</STRONG> even if they are present, since 1662 the user may not have the tab stops properly set. 1663 1664- <STRONG>o</STRONG> If the terminal has hardware tabs which are initially set every <EM>n</EM> 1665+ <STRONG>o</STRONG> If the terminal has hardware tabs which are initially set every <EM>n</EM> 1666 spaces when the terminal is powered up, the numeric parameter <STRONG>it</STRONG> is 1667 given, showing the number of spaces the tabs are set to. 1668 1669 The <STRONG>it</STRONG> capability is normally used by the <STRONG>tset</STRONG> command to determine 1670- whether to set the mode for hardware tab expansion, and whether to 1671+ whether to set the mode for hardware tab expansion, and whether to 1672 set the tab stops. If the terminal has tab stops that can be saved 1673- in non-volatile memory, the terminfo description can assume that 1674+ in non-volatile memory, the terminfo description can assume that 1675 they are properly set. 1676 1677 Other capabilities include 1678 1679 <STRONG>o</STRONG> <STRONG>is1</STRONG>, <STRONG>is2</STRONG>, and <STRONG>is3</STRONG>, initialization strings for the terminal, 1680 1681- <STRONG>o</STRONG> <STRONG>iprog</STRONG>, the path name of a program to be run to initialize the ter- 1682+ <STRONG>o</STRONG> <STRONG>iprog</STRONG>, the path name of a program to be run to initialize the ter- 1683 minal, 1684 1685 <STRONG>o</STRONG> and <STRONG>if</STRONG>, the name of a file containing long initialization strings. 1686 1687- These strings are expected to set the terminal into modes consistent 1688- with the rest of the terminfo description. They are normally sent to 1689- the terminal, by the <EM>init</EM> option of the <STRONG>tput</STRONG> program, each time the 1690+ These strings are expected to set the terminal into modes consistent 1691+ with the rest of the terminfo description. They are normally sent to 1692+ the terminal, by the <EM>init</EM> option of the <STRONG>tput</STRONG> program, each time the 1693 user logs in. They will be printed in the following order: 1694 1695 run the program 1696@@ -1944,34 +1951,34 @@ 1697 and finally output 1698 <STRONG>is3</STRONG>. 1699 1700- Most initialization is done with <STRONG>is2</STRONG>. Special terminal modes can be 1701- set up without duplicating strings by putting the common sequences in 1702+ Most initialization is done with <STRONG>is2</STRONG>. Special terminal modes can be 1703+ set up without duplicating strings by putting the common sequences in 1704 <STRONG>is2</STRONG> and special cases in <STRONG>is1</STRONG> and <STRONG>is3</STRONG>. 1705 1706- A set of sequences that does a harder reset from a totally unknown 1707+ A set of sequences that does a harder reset from a totally unknown 1708 state can be given as <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rf</STRONG> and <STRONG>rs3</STRONG>, analogous to <STRONG>is1</STRONG> <STRONG>,</STRONG> <STRONG>is2</STRONG> <STRONG>,</STRONG> <STRONG>if</STRONG> 1709- and <STRONG>is3</STRONG> respectively. These strings are output by <EM>reset</EM> option of 1710- <STRONG>tput</STRONG>, or by the <STRONG>reset</STRONG> program (an alias of <STRONG>tset</STRONG>), which is used when 1711+ and <STRONG>is3</STRONG> respectively. These strings are output by <EM>reset</EM> option of 1712+ <STRONG>tput</STRONG>, or by the <STRONG>reset</STRONG> program (an alias of <STRONG>tset</STRONG>), which is used when 1713 the terminal gets into a wedged state. Commands are normally placed in 1714 <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG> <STRONG>rs3</STRONG> and <STRONG>rf</STRONG> only if they produce annoying effects on the screen 1715 and are not necessary when logging in. For example, the command to set 1716- the vt100 into 80-column mode would normally be part of <STRONG>is2</STRONG>, but it 1717- causes an annoying glitch of the screen and is not normally needed 1718+ the vt100 into 80-column mode would normally be part of <STRONG>is2</STRONG>, but it 1719+ causes an annoying glitch of the screen and is not normally needed 1720 since the terminal is usually already in 80-column mode. 1721 1722- The <STRONG>reset</STRONG> program writes strings including <STRONG>iprog</STRONG>, etc., in the same 1723- order as the <EM>init</EM> program, using <STRONG>rs1</STRONG>, etc., instead of <STRONG>is1</STRONG>, etc. If 1724- any of <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, or <STRONG>rf</STRONG> reset capability strings are missing, the 1725+ The <STRONG>reset</STRONG> program writes strings including <STRONG>iprog</STRONG>, etc., in the same 1726+ order as the <EM>init</EM> program, using <STRONG>rs1</STRONG>, etc., instead of <STRONG>is1</STRONG>, etc. If 1727+ any of <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, or <STRONG>rf</STRONG> reset capability strings are missing, the 1728 <STRONG>reset</STRONG> program falls back upon the corresponding initialization capabil- 1729 ity string. 1730 1731- If there are commands to set and clear tab stops, they can be given as 1732+ If there are commands to set and clear tab stops, they can be given as 1733 <STRONG>tbc</STRONG> (clear all tab stops) and <STRONG>hts</STRONG> (set a tab stop in the current column 1734- of every row). If a more complex sequence is needed to set the tabs 1735+ of every row). If a more complex sequence is needed to set the tabs 1736 than can be described by this, the sequence can be placed in <STRONG>is2</STRONG> or <STRONG>if</STRONG>. 1737 1738- The <STRONG>tput</STRONG> <STRONG>reset</STRONG> command uses the same capability strings as the <STRONG>reset</STRONG> 1739- command, although the two programs (<STRONG>tput</STRONG> and <STRONG>reset</STRONG>) provide different 1740+ The <STRONG>tput</STRONG> <STRONG>reset</STRONG> command uses the same capability strings as the <STRONG>reset</STRONG> 1741+ command, although the two programs (<STRONG>tput</STRONG> and <STRONG>reset</STRONG>) provide different 1742 command-line options. 1743 1744 In practice, these terminfo capabilities are not often used in initial- 1745@@ -1980,78 +1987,78 @@ 1746 <STRONG>o</STRONG> Almost all hardware terminals (at least those which supported tabs) 1747 initialized those to every <EM>eight</EM> columns: 1748 1749- The only exception was the AT&T 2300 series, which set tabs to 1750+ The only exception was the AT&T 2300 series, which set tabs to 1751 every <EM>five</EM> columns. 1752 1753- <STRONG>o</STRONG> In particular, developers of the hardware terminals which are com- 1754- monly used as models for modern terminal emulators provided docu- 1755+ <STRONG>o</STRONG> In particular, developers of the hardware terminals which are com- 1756+ monly used as models for modern terminal emulators provided docu- 1757 mentation demonstrating that <EM>eight</EM> columns were the standard. 1758 1759 <STRONG>o</STRONG> Because of this, the terminal initialization programs <STRONG>tput</STRONG> and <STRONG>tset</STRONG> 1760- use the <STRONG>tbc</STRONG> (<STRONG>clear_all_tabs</STRONG>) and <STRONG>hts</STRONG> (<STRONG>set_tab</STRONG>) capabilities 1761- directly only when the <STRONG>it</STRONG> (<STRONG>init_tabs</STRONG>) capability is set to a value 1762+ use the <STRONG>tbc</STRONG> (<STRONG>clear_all_tabs</STRONG>) and <STRONG>hts</STRONG> (<STRONG>set_tab</STRONG>) capabilities 1763+ directly only when the <STRONG>it</STRONG> (<STRONG>init_tabs</STRONG>) capability is set to a value 1764 other than <EM>eight</EM>. 1765 1766 1767 </PRE><H3><a name="h3-Delays-and-Padding">Delays and Padding</a></H3><PRE> 1768- Many older and slower terminals do not support either XON/XOFF or DTR 1769- handshaking, including hard copy terminals and some very archaic CRTs 1770- (including, for example, DEC VT100s). These may require padding char- 1771+ Many older and slower terminals do not support either XON/XOFF or DTR 1772+ handshaking, including hard copy terminals and some very archaic CRTs 1773+ (including, for example, DEC VT100s). These may require padding char- 1774 acters after certain cursor motions and screen changes. 1775 1776 If the terminal uses xon/xoff handshaking for flow control (that is, it 1777- automatically emits ^S back to the host when its input buffers are 1778- close to full), set <STRONG>xon</STRONG>. This capability suppresses the emission of 1779- padding. You can also set it for memory-mapped console devices effec- 1780- tively that do not have a speed limit. Padding information should 1781+ automatically emits ^S back to the host when its input buffers are 1782+ close to full), set <STRONG>xon</STRONG>. This capability suppresses the emission of 1783+ padding. You can also set it for memory-mapped console devices effec- 1784+ tively that do not have a speed limit. Padding information should 1785 still be included so that routines can make better decisions about rel- 1786 ative costs, but actual pad characters will not be transmitted. 1787 1788 If <STRONG>pb</STRONG> (padding baud rate) is given, padding is suppressed at baud rates 1789- below the value of <STRONG>pb</STRONG>. If the entry has no padding baud rate, then 1790+ below the value of <STRONG>pb</STRONG>. If the entry has no padding baud rate, then 1791 whether padding is emitted or not is completely controlled by <STRONG>xon</STRONG>. 1792 1793- If the terminal requires other than a null (zero) character as a pad, 1794- then this can be given as <STRONG>pad</STRONG>. Only the first character of the <STRONG>pad</STRONG> 1795+ If the terminal requires other than a null (zero) character as a pad, 1796+ then this can be given as <STRONG>pad</STRONG>. Only the first character of the <STRONG>pad</STRONG> 1797 string is used. 1798 1799 1800 </PRE><H3><a name="h3-Status-Lines">Status Lines</a></H3><PRE> 1801- Some terminals have an extra "status line" which is not normally used 1802+ Some terminals have an extra "status line" which is not normally used 1803 by software (and thus not counted in the terminal's <STRONG>lines</STRONG> capability). 1804 1805- The simplest case is a status line which is cursor-addressable but not 1806+ The simplest case is a status line which is cursor-addressable but not 1807 part of the main scrolling region on the screen; the Heathkit H19 has a 1808- status line of this kind, as would a 24-line VT100 with a 23-line 1809+ status line of this kind, as would a 24-line VT100 with a 23-line 1810 scrolling region set up on initialization. This situation is indicated 1811 by the <STRONG>hs</STRONG> capability. 1812 1813- Some terminals with status lines need special sequences to access the 1814- status line. These may be expressed as a string with single parameter 1815- <STRONG>tsl</STRONG> which takes the cursor to a given zero-origin column on the status 1816- line. The capability <STRONG>fsl</STRONG> must return to the main-screen cursor posi- 1817- tions before the last <STRONG>tsl</STRONG>. You may need to embed the string values of 1818- <STRONG>sc</STRONG> (save cursor) and <STRONG>rc</STRONG> (restore cursor) in <STRONG>tsl</STRONG> and <STRONG>fsl</STRONG> to accomplish 1819+ Some terminals with status lines need special sequences to access the 1820+ status line. These may be expressed as a string with single parameter 1821+ <STRONG>tsl</STRONG> which takes the cursor to a given zero-origin column on the status 1822+ line. The capability <STRONG>fsl</STRONG> must return to the main-screen cursor posi- 1823+ tions before the last <STRONG>tsl</STRONG>. You may need to embed the string values of 1824+ <STRONG>sc</STRONG> (save cursor) and <STRONG>rc</STRONG> (restore cursor) in <STRONG>tsl</STRONG> and <STRONG>fsl</STRONG> to accomplish 1825 this. 1826 1827- The status line is normally assumed to be the same width as the width 1828- of the terminal. If this is untrue, you can specify it with the 1829+ The status line is normally assumed to be the same width as the width 1830+ of the terminal. If this is untrue, you can specify it with the 1831 numeric capability <STRONG>wsl</STRONG>. 1832 1833 A command to erase or blank the status line may be specified as <STRONG>dsl</STRONG>. 1834 1835- The boolean capability <STRONG>eslok</STRONG> specifies that escape sequences, tabs, 1836+ The boolean capability <STRONG>eslok</STRONG> specifies that escape sequences, tabs, 1837 etc., work ordinarily in the status line. 1838 1839- The <STRONG>ncurses</STRONG> implementation does not yet use any of these capabilities. 1840+ The <STRONG>ncurses</STRONG> implementation does not yet use any of these capabilities. 1841 They are documented here in case they ever become important. 1842 1843 1844 </PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE> 1845- Many terminals have alternate character sets useful for forms-drawing. 1846+ Many terminals have alternate character sets useful for forms-drawing. 1847 Terminfo and <STRONG>curses</STRONG> have built-in support for most of the drawing char- 1848- acters supported by the VT100, with some characters from the AT&T 1849- 4410v1 added. This alternate character set may be specified by the 1850+ acters supported by the VT100, with some characters from the AT&T 1851+ 4410v1 added. This alternate character set may be specified by the 1852 <STRONG>acsc</STRONG> capability. 1853 1854 <STRONG>Glyph</STRONG> <STRONG>ACS</STRONG> <STRONG>Ascii</STRONG> <STRONG>acsc</STRONG> <STRONG>acsc</STRONG> 1855@@ -2092,34 +2099,34 @@ 1856 1857 A few notes apply to the table itself: 1858 1859- <STRONG>o</STRONG> X/Open Curses incorrectly states that the mapping for <EM>lantern</EM> is 1860- uppercase "I" although Unix implementations use the lowercase "i" 1861+ <STRONG>o</STRONG> X/Open Curses incorrectly states that the mapping for <EM>lantern</EM> is 1862+ uppercase "I" although Unix implementations use the lowercase "i" 1863 mapping. 1864 1865- <STRONG>o</STRONG> The DEC VT100 implemented graphics using the alternate character 1866- set feature, temporarily switching <EM>modes</EM> and sending characters in 1867+ <STRONG>o</STRONG> The DEC VT100 implemented graphics using the alternate character 1868+ set feature, temporarily switching <EM>modes</EM> and sending characters in 1869 the range 0x60 (96) to 0x7e (126) (the <STRONG>acsc</STRONG> <STRONG>Value</STRONG> column in the ta- 1870 ble). 1871 1872 <STRONG>o</STRONG> The AT&T terminal added graphics characters outside that range. 1873 1874- Some of the characters within the range do not match the VT100; 1875- presumably they were used in the AT&T terminal: <EM>board</EM> <EM>of</EM> <EM>squares</EM> 1876- replaces the VT100 <EM>newline</EM> symbol, while <EM>lantern</EM> <EM>symbol</EM> replaces 1877+ Some of the characters within the range do not match the VT100; 1878+ presumably they were used in the AT&T terminal: <EM>board</EM> <EM>of</EM> <EM>squares</EM> 1879+ replaces the VT100 <EM>newline</EM> symbol, while <EM>lantern</EM> <EM>symbol</EM> replaces 1880 the VT100 <EM>vertical</EM> <EM>tab</EM> symbol. The other VT100 symbols for control 1881- characters (<EM>horizontal</EM> <EM>tab</EM>, <EM>carriage</EM> <EM>return</EM> and <EM>line-feed</EM>) are not 1882+ characters (<EM>horizontal</EM> <EM>tab</EM>, <EM>carriage</EM> <EM>return</EM> and <EM>line-feed</EM>) are not 1883 (re)used in curses. 1884 1885- The best way to define a new device's graphics set is to add a column 1886- to a copy of this table for your terminal, giving the character which 1887- (when emitted between <STRONG>smacs</STRONG>/<STRONG>rmacs</STRONG> switches) will be rendered as the 1888+ The best way to define a new device's graphics set is to add a column 1889+ to a copy of this table for your terminal, giving the character which 1890+ (when emitted between <STRONG>smacs</STRONG>/<STRONG>rmacs</STRONG> switches) will be rendered as the 1891 corresponding graphic. Then read off the VT100/your terminal character 1892 pairs right to left in sequence; these become the ACSC string. 1893 1894 1895 </PRE><H3><a name="h3-Color-Handling">Color Handling</a></H3><PRE> 1896- The curses library functions <STRONG>init_pair</STRONG> and <STRONG>init_color</STRONG> manipulate the 1897- <EM>color</EM> <EM>pairs</EM> and <EM>color</EM> <EM>values</EM> discussed in this section (see 1898+ The curses library functions <STRONG>init_pair</STRONG> and <STRONG>init_color</STRONG> manipulate the 1899+ <EM>color</EM> <EM>pairs</EM> and <EM>color</EM> <EM>values</EM> discussed in this section (see 1900 <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> for details on these and related functions). 1901 1902 Most color terminals are either "Tektronix-like" or "HP-like": 1903@@ -2128,43 +2135,43 @@ 1904 is usually 8), and can set character-cell foreground and background 1905 characters independently, mixing them into <EM>N</EM> * <EM>N</EM> color-pairs. 1906 1907- <STRONG>o</STRONG> On HP-like terminals, the user must set each color pair up sepa- 1908- rately (foreground and background are not independently settable). 1909+ <STRONG>o</STRONG> On HP-like terminals, the user must set each color pair up sepa- 1910+ rately (foreground and background are not independently settable). 1911 Up to <EM>M</EM> color-pairs may be set up from 2*<EM>M</EM> different colors. ANSI- 1912 compatible terminals are Tektronix-like. 1913 1914 Some basic color capabilities are independent of the color method. The 1915- numeric capabilities <STRONG>colors</STRONG> and <STRONG>pairs</STRONG> specify the maximum numbers of 1916- colors and color-pairs that can be displayed simultaneously. The <STRONG>op</STRONG> 1917+ numeric capabilities <STRONG>colors</STRONG> and <STRONG>pairs</STRONG> specify the maximum numbers of 1918+ colors and color-pairs that can be displayed simultaneously. The <STRONG>op</STRONG> 1919 (original pair) string resets foreground and background colors to their 1920- default values for the terminal. The <STRONG>oc</STRONG> string resets all colors or 1921- color-pairs to their default values for the terminal. Some terminals 1922+ default values for the terminal. The <STRONG>oc</STRONG> string resets all colors or 1923+ color-pairs to their default values for the terminal. Some terminals 1924 (including many PC terminal emulators) erase screen areas with the cur- 1925- rent background color rather than the power-up default background; 1926+ rent background color rather than the power-up default background; 1927 these should have the boolean capability <STRONG>bce</STRONG>. 1928 1929 While the curses library works with <EM>color</EM> <EM>pairs</EM> (reflecting the inabil- 1930- ity of some devices to set foreground and background colors indepen- 1931+ ity of some devices to set foreground and background colors indepen- 1932 dently), there are separate capabilities for setting these features: 1933 1934- <STRONG>o</STRONG> To change the current foreground or background color on a Tek- 1935- tronix-type terminal, use <STRONG>setaf</STRONG> (set ANSI foreground) and <STRONG>setab</STRONG> 1936- (set ANSI background) or <STRONG>setf</STRONG> (set foreground) and <STRONG>setb</STRONG> (set back- 1937- ground). These take one parameter, the color number. The SVr4 1938- documentation describes only <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>; the XPG4 draft says that 1939- "If the terminal supports ANSI escape sequences to set background 1940- and foreground, they should be coded as <STRONG>setaf</STRONG> and <STRONG>setab</STRONG>, respec- 1941+ <STRONG>o</STRONG> To change the current foreground or background color on a Tek- 1942+ tronix-type terminal, use <STRONG>setaf</STRONG> (set ANSI foreground) and <STRONG>setab</STRONG> 1943+ (set ANSI background) or <STRONG>setf</STRONG> (set foreground) and <STRONG>setb</STRONG> (set back- 1944+ ground). These take one parameter, the color number. The SVr4 1945+ documentation describes only <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>; the XPG4 draft says that 1946+ "If the terminal supports ANSI escape sequences to set background 1947+ and foreground, they should be coded as <STRONG>setaf</STRONG> and <STRONG>setab</STRONG>, respec- 1948 tively. 1949 1950- <STRONG>o</STRONG> If the terminal supports other escape sequences to set background 1951- and foreground, they should be coded as <STRONG>setf</STRONG> and <STRONG>setb</STRONG>, respec- 1952- tively. The <STRONG>vidputs</STRONG> and the <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> functions use the <STRONG>setaf</STRONG> 1953+ <STRONG>o</STRONG> If the terminal supports other escape sequences to set background 1954+ and foreground, they should be coded as <STRONG>setf</STRONG> and <STRONG>setb</STRONG>, respec- 1955+ tively. The <STRONG>vidputs</STRONG> and the <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> functions use the <STRONG>setaf</STRONG> 1956 and <STRONG>setab</STRONG> capabilities if they are defined. 1957 1958- The <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> and <STRONG>setf</STRONG>/<STRONG>setb</STRONG> capabilities take a single numeric argu- 1959- ment each. Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> are portably defined as 1960- follows (the middle column is the symbolic #define available in the 1961- header for the <STRONG>curses</STRONG> or <STRONG>ncurses</STRONG> libraries). The terminal hardware is 1962+ The <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> and <STRONG>setf</STRONG>/<STRONG>setb</STRONG> capabilities take a single numeric argu- 1963+ ment each. Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> are portably defined as 1964+ follows (the middle column is the symbolic #define available in the 1965+ header for the <STRONG>curses</STRONG> or <STRONG>ncurses</STRONG> libraries). The terminal hardware is 1966 free to map these as it likes, but the RGB values indicate normal loca- 1967 tions in color space. 1968 1969@@ -2194,28 +2201,28 @@ 1970 It is important to not confuse the two sets of color capabilities; oth- 1971 erwise red/blue will be interchanged on the display. 1972 1973- On an HP-like terminal, use <STRONG>scp</STRONG> with a color-pair number parameter to 1974+ On an HP-like terminal, use <STRONG>scp</STRONG> with a color-pair number parameter to 1975 set which color pair is current. 1976 1977 Some terminals allow the <EM>color</EM> <EM>values</EM> to be modified: 1978 1979- <STRONG>o</STRONG> On a Tektronix-like terminal, the capability <STRONG>ccc</STRONG> may be present to 1980- indicate that colors can be modified. If so, the <STRONG>initc</STRONG> capability 1981+ <STRONG>o</STRONG> On a Tektronix-like terminal, the capability <STRONG>ccc</STRONG> may be present to 1982+ indicate that colors can be modified. If so, the <STRONG>initc</STRONG> capability 1983 will take a color number (0 to <STRONG>colors</STRONG> - 1)and three more parameters 1984- which describe the color. These three parameters default to being 1985+ which describe the color. These three parameters default to being 1986 interpreted as RGB (Red, Green, Blue) values. If the boolean capa- 1987- bility <STRONG>hls</STRONG> is present, they are instead as HLS (Hue, Lightness, 1988+ bility <STRONG>hls</STRONG> is present, they are instead as HLS (Hue, Lightness, 1989 Saturation) indices. The ranges are terminal-dependent. 1990 1991- <STRONG>o</STRONG> On an HP-like terminal, <STRONG>initp</STRONG> may give a capability for changing a 1992+ <STRONG>o</STRONG> On an HP-like terminal, <STRONG>initp</STRONG> may give a capability for changing a 1993 color-pair value. It will take seven parameters; a color-pair num- 1994- ber (0 to <STRONG>max_pairs</STRONG> - 1), and two triples describing first back- 1995- ground and then foreground colors. These parameters must be (Red, 1996+ ber (0 to <STRONG>max_pairs</STRONG> - 1), and two triples describing first back- 1997+ ground and then foreground colors. These parameters must be (Red, 1998 Green, Blue) or (Hue, Lightness, Saturation) depending on <STRONG>hls</STRONG>. 1999 2000- On some color terminals, colors collide with highlights. You can reg- 2001- ister these collisions with the <STRONG>ncv</STRONG> capability. This is a bit-mask of 2002- attributes not to be used when colors are enabled. The correspondence 2003+ On some color terminals, colors collide with highlights. You can reg- 2004+ ister these collisions with the <STRONG>ncv</STRONG> capability. This is a bit-mask of 2005+ attributes not to be used when colors are enabled. The correspondence 2006 with the attributes understood by <STRONG>curses</STRONG> is as follows: 2007 2008 <STRONG>Attribute</STRONG> <STRONG>Bit</STRONG> <STRONG>Decimal</STRONG> <STRONG>Set</STRONG> <STRONG>by</STRONG> 2009@@ -2227,6 +2234,7 @@ 2010 A_BOLD 5 32 sgr 2011 A_INVIS 6 64 sgr 2012 A_PROTECT 7 128 sgr 2013+ 2014 A_ALTCHARSET 8 256 sgr 2015 A_HORIZONTAL 9 512 sgr1 2016 A_LEFT 10 1024 sgr1 2017@@ -2236,134 +2244,134 @@ 2018 A_VERTICAL 14 16384 sgr1 2019 A_ITALIC 15 32768 sitm 2020 2021- For example, on many IBM PC consoles, the underline attribute collides 2022- with the foreground color blue and is not available in color mode. 2023+ For example, on many IBM PC consoles, the underline attribute collides 2024+ with the foreground color blue and is not available in color mode. 2025 These should have an <STRONG>ncv</STRONG> capability of 2. 2026 2027- SVr4 curses does nothing with <STRONG>ncv</STRONG>, ncurses recognizes it and optimizes 2028+ SVr4 curses does nothing with <STRONG>ncv</STRONG>, ncurses recognizes it and optimizes 2029 the output in favor of colors. 2030 2031 2032 </PRE><H3><a name="h3-Miscellaneous">Miscellaneous</a></H3><PRE> 2033- If the terminal requires other than a null (zero) character as a pad, 2034- then this can be given as pad. Only the first character of the pad 2035+ If the terminal requires other than a null (zero) character as a pad, 2036+ then this can be given as pad. Only the first character of the pad 2037 string is used. If the terminal does not have a pad character, specify 2038- npc. Note that ncurses implements the termcap-compatible <STRONG>PC</STRONG> variable; 2039- though the application may set this value to something other than a 2040- null, ncurses will test <STRONG>npc</STRONG> first and use napms if the terminal has no 2041+ npc. Note that ncurses implements the termcap-compatible <STRONG>PC</STRONG> variable; 2042+ though the application may set this value to something other than a 2043+ null, ncurses will test <STRONG>npc</STRONG> first and use napms if the terminal has no 2044 pad character. 2045 2046- If the terminal can move up or down half a line, this can be indicated 2047+ If the terminal can move up or down half a line, this can be indicated 2048 with <STRONG>hu</STRONG> (half-line up) and <STRONG>hd</STRONG> (half-line down). This is primarily use- 2049 ful for superscripts and subscripts on hard-copy terminals. If a hard- 2050- copy terminal can eject to the next page (form feed), give this as <STRONG>ff</STRONG> 2051+ copy terminal can eject to the next page (form feed), give this as <STRONG>ff</STRONG> 2052 (usually control/L). 2053 2054- If there is a command to repeat a given character a given number of 2055- times (to save time transmitting a large number of identical charac- 2056- ters) this can be indicated with the parameterized string <STRONG>rep</STRONG>. The 2057- first parameter is the character to be repeated and the second is the 2058+ If there is a command to repeat a given character a given number of 2059+ times (to save time transmitting a large number of identical charac- 2060+ ters) this can be indicated with the parameterized string <STRONG>rep</STRONG>. The 2061+ first parameter is the character to be repeated and the second is the 2062 number of times to repeat it. Thus, tparm(repeat_char, 'x', 10) is the 2063 same as "xxxxxxxxxx". 2064 2065 If the terminal has a settable command character, such as the TEKTRONIX 2066- 4025, this can be indicated with <STRONG>cmdch</STRONG>. A prototype command character 2067- is chosen which is used in all capabilities. This character is given 2068- in the <STRONG>cmdch</STRONG> capability to identify it. The following convention is 2069+ 4025, this can be indicated with <STRONG>cmdch</STRONG>. A prototype command character 2070+ is chosen which is used in all capabilities. This character is given 2071+ in the <STRONG>cmdch</STRONG> capability to identify it. The following convention is 2072 supported on some UNIX systems: The environment is to be searched for a 2073- <STRONG>CC</STRONG> variable, and if found, all occurrences of the prototype character 2074+ <STRONG>CC</STRONG> variable, and if found, all occurrences of the prototype character 2075 are replaced with the character in the environment variable. 2076 2077- Terminal descriptions that do not represent a specific kind of known 2078- terminal, such as <EM>switch</EM>, <EM>dialup</EM>, <EM>patch</EM>, and <EM>network</EM>, should include 2079- the <STRONG>gn</STRONG> (generic) capability so that programs can complain that they do 2080- not know how to talk to the terminal. (This capability does not apply 2081- to <EM>virtual</EM> terminal descriptions for which the escape sequences are 2082+ Terminal descriptions that do not represent a specific kind of known 2083+ terminal, such as <EM>switch</EM>, <EM>dialup</EM>, <EM>patch</EM>, and <EM>network</EM>, should include 2084+ the <STRONG>gn</STRONG> (generic) capability so that programs can complain that they do 2085+ not know how to talk to the terminal. (This capability does not apply 2086+ to <EM>virtual</EM> terminal descriptions for which the escape sequences are 2087 known.) 2088 2089 If the terminal has a "meta key" which acts as a shift key, setting the 2090- 8th bit of any character transmitted, this fact can be indicated with 2091- <STRONG>km</STRONG>. Otherwise, software will assume that the 8th bit is parity and it 2092- will usually be cleared. If strings exist to turn this "meta mode" on 2093+ 8th bit of any character transmitted, this fact can be indicated with 2094+ <STRONG>km</STRONG>. Otherwise, software will assume that the 8th bit is parity and it 2095+ will usually be cleared. If strings exist to turn this "meta mode" on 2096 and off, they can be given as <STRONG>smm</STRONG> and <STRONG>rmm</STRONG>. 2097 2098 If the terminal has more lines of memory than will fit on the screen at 2099- once, the number of lines of memory can be indicated with <STRONG>lm</STRONG>. A value 2100+ once, the number of lines of memory can be indicated with <STRONG>lm</STRONG>. A value 2101 of <STRONG>lm</STRONG>#0 indicates that the number of lines is not fixed, but that there 2102 is still more memory than fits on the screen. 2103 2104- If the terminal is one of those supported by the UNIX virtual terminal 2105+ If the terminal is one of those supported by the UNIX virtual terminal 2106 protocol, the terminal number can be given as <STRONG>vt</STRONG>. 2107 2108- Media copy strings which control an auxiliary printer connected to the 2109- terminal can be given as <STRONG>mc0</STRONG>: print the contents of the screen, <STRONG>mc4</STRONG>: 2110- turn off the printer, and <STRONG>mc5</STRONG>: turn on the printer. When the printer 2111- is on, all text sent to the terminal will be sent to the printer. It 2112- is undefined whether the text is also displayed on the terminal screen 2113- when the printer is on. A variation <STRONG>mc5p</STRONG> takes one parameter, and 2114+ Media copy strings which control an auxiliary printer connected to the 2115+ terminal can be given as <STRONG>mc0</STRONG>: print the contents of the screen, <STRONG>mc4</STRONG>: 2116+ turn off the printer, and <STRONG>mc5</STRONG>: turn on the printer. When the printer 2117+ is on, all text sent to the terminal will be sent to the printer. It 2118+ is undefined whether the text is also displayed on the terminal screen 2119+ when the printer is on. A variation <STRONG>mc5p</STRONG> takes one parameter, and 2120 leaves the printer on for as many characters as the value of the param- 2121 eter, then turns the printer off. The parameter should not exceed 255. 2122- All text, including <STRONG>mc4</STRONG>, is transparently passed to the printer while 2123+ All text, including <STRONG>mc4</STRONG>, is transparently passed to the printer while 2124 an <STRONG>mc5p</STRONG> is in effect. 2125 2126 2127 </PRE><H3><a name="h3-Glitches-and-Braindamage">Glitches and Braindamage</a></H3><PRE> 2128- Hazeltine terminals, which do not allow "~" characters to be displayed 2129+ Hazeltine terminals, which do not allow "~" characters to be displayed 2130 should indicate <STRONG>hz</STRONG>. 2131 2132- Terminals which ignore a line-feed immediately after an <STRONG>am</STRONG> wrap, such 2133+ Terminals which ignore a line-feed immediately after an <STRONG>am</STRONG> wrap, such 2134 as the Concept and vt100, should indicate <STRONG>xenl</STRONG>. 2135 2136- If <STRONG>el</STRONG> is required to get rid of standout (instead of merely writing 2137+ If <STRONG>el</STRONG> is required to get rid of standout (instead of merely writing 2138 normal text on top of it), <STRONG>xhp</STRONG> should be given. 2139 2140 Teleray terminals, where tabs turn all characters moved over to blanks, 2141- should indicate <STRONG>xt</STRONG> (destructive tabs). Note: the variable indicating 2142- this is now "dest_tabs_magic_smso"; in older versions, it was tel- 2143+ should indicate <STRONG>xt</STRONG> (destructive tabs). Note: the variable indicating 2144+ this is now "dest_tabs_magic_smso"; in older versions, it was tel- 2145 eray_glitch. This glitch is also taken to mean that it is not possible 2146 to position the cursor on top of a "magic cookie", that to erase stand- 2147- out mode it is instead necessary to use delete and insert line. The 2148+ out mode it is instead necessary to use delete and insert line. The 2149 ncurses implementation ignores this glitch. 2150 2151- The Beehive Superbee, which is unable to correctly transmit the escape 2152- or control/C characters, has <STRONG>xsb</STRONG>, indicating that the f1 key is used 2153- for escape and f2 for control/C. (Only certain Superbees have this 2154- problem, depending on the ROM.) Note that in older terminfo versions, 2155+ The Beehive Superbee, which is unable to correctly transmit the escape 2156+ or control/C characters, has <STRONG>xsb</STRONG>, indicating that the f1 key is used 2157+ for escape and f2 for control/C. (Only certain Superbees have this 2158+ problem, depending on the ROM.) Note that in older terminfo versions, 2159 this capability was called "beehive_glitch"; it is now "no_esc_ctl_c". 2160 2161- Other specific terminal problems may be corrected by adding more capa- 2162+ Other specific terminal problems may be corrected by adding more capa- 2163 bilities of the form <STRONG>x</STRONG><EM>x</EM>. 2164 2165 2166 </PRE><H3><a name="h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></H3><PRE> 2167- Long terminfo entries are unlikely to be a problem; to date, no entry 2168- has even approached terminfo's 4096-byte string-table maximum. Unfor- 2169- tunately, the termcap translations are much more strictly limited (to 2170- 1023 bytes), thus termcap translations of long terminfo entries can 2171+ Long terminfo entries are unlikely to be a problem; to date, no entry 2172+ has even approached terminfo's 4096-byte string-table maximum. Unfor- 2173+ tunately, the termcap translations are much more strictly limited (to 2174+ 1023 bytes), thus termcap translations of long terminfo entries can 2175 cause problems. 2176 2177- The man pages for 4.3BSD and older versions of <STRONG>tgetent</STRONG> instruct the 2178- user to allocate a 1024-byte buffer for the termcap entry. The entry 2179- gets null-terminated by the termcap library, so that makes the maximum 2180- safe length for a termcap entry 1k-1 (1023) bytes. Depending on what 2181- the application and the termcap library being used does, and where in 2182- the termcap file the terminal type that <STRONG>tgetent</STRONG> is searching for is, 2183+ The man pages for 4.3BSD and older versions of <STRONG>tgetent</STRONG> instruct the 2184+ user to allocate a 1024-byte buffer for the termcap entry. The entry 2185+ gets null-terminated by the termcap library, so that makes the maximum 2186+ safe length for a termcap entry 1k-1 (1023) bytes. Depending on what 2187+ the application and the termcap library being used does, and where in 2188+ the termcap file the terminal type that <STRONG>tgetent</STRONG> is searching for is, 2189 several bad things can happen. 2190 2191- Some termcap libraries print a warning message or exit if they find an 2192+ Some termcap libraries print a warning message or exit if they find an 2193 entry that's longer than 1023 bytes; others do not; others truncate the 2194- entries to 1023 bytes. Some application programs allocate more than 2195+ entries to 1023 bytes. Some application programs allocate more than 2196 the recommended 1K for the termcap entry; others do not. 2197 2198- Each termcap entry has two important sizes associated with it: before 2199- "tc" expansion, and after "tc" expansion. "tc" is the capability that 2200+ Each termcap entry has two important sizes associated with it: before 2201+ "tc" expansion, and after "tc" expansion. "tc" is the capability that 2202 tacks on another termcap entry to the end of the current one, to add on 2203 its capabilities. If a termcap entry does not use the "tc" capability, 2204 then of course the two lengths are the same. 2205 2206- The "before tc expansion" length is the most important one, because it 2207- affects more than just users of that particular terminal. This is the 2208- length of the entry as it exists in /etc/termcap, minus the backslash- 2209+ The "before tc expansion" length is the most important one, because it 2210+ affects more than just users of that particular terminal. This is the 2211+ length of the entry as it exists in /etc/termcap, minus the backslash- 2212 newline pairs, which <STRONG>tgetent</STRONG> strips out while reading it. Some termcap 2213 libraries strip off the final newline, too (GNU termcap does not). Now 2214 suppose: 2215@@ -2372,87 +2380,87 @@ 2216 2217 <STRONG>o</STRONG> and the application has only allocated a 1k buffer, 2218 2219- <STRONG>o</STRONG> and the termcap library (like the one in BSD/OS 1.1 and GNU) reads 2220- the whole entry into the buffer, no matter what its length, to see 2221+ <STRONG>o</STRONG> and the termcap library (like the one in BSD/OS 1.1 and GNU) reads 2222+ the whole entry into the buffer, no matter what its length, to see 2223 if it is the entry it wants, 2224 2225- <STRONG>o</STRONG> and <STRONG>tgetent</STRONG> is searching for a terminal type that either is the 2226- long entry, appears in the termcap file after the long entry, or 2227- does not appear in the file at all (so that <STRONG>tgetent</STRONG> has to search 2228+ <STRONG>o</STRONG> and <STRONG>tgetent</STRONG> is searching for a terminal type that either is the 2229+ long entry, appears in the termcap file after the long entry, or 2230+ does not appear in the file at all (so that <STRONG>tgetent</STRONG> has to search 2231 the whole termcap file). 2232 2233- Then <STRONG>tgetent</STRONG> will overwrite memory, perhaps its stack, and probably 2234- core dump the program. Programs like telnet are particularly vulnera- 2235- ble; modern telnets pass along values like the terminal type automati- 2236- cally. The results are almost as undesirable with a termcap library, 2237- like SunOS 4.1.3 and Ultrix 4.4, that prints warning messages when it 2238- reads an overly long termcap entry. If a termcap library truncates 2239- long entries, like OSF/1 3.0, it is immune to dying here but will 2240+ Then <STRONG>tgetent</STRONG> will overwrite memory, perhaps its stack, and probably 2241+ core dump the program. Programs like telnet are particularly vulnera- 2242+ ble; modern telnets pass along values like the terminal type automati- 2243+ cally. The results are almost as undesirable with a termcap library, 2244+ like SunOS 4.1.3 and Ultrix 4.4, that prints warning messages when it 2245+ reads an overly long termcap entry. If a termcap library truncates 2246+ long entries, like OSF/1 3.0, it is immune to dying here but will 2247 return incorrect data for the terminal. 2248 2249- The "after tc expansion" length will have a similar effect to the 2250+ The "after tc expansion" length will have a similar effect to the 2251 above, but only for people who actually set TERM to that terminal type, 2252- since <STRONG>tgetent</STRONG> only does "tc" expansion once it is found the terminal 2253+ since <STRONG>tgetent</STRONG> only does "tc" expansion once it is found the terminal 2254 type it was looking for, not while searching. 2255 2256- In summary, a termcap entry that is longer than 1023 bytes can cause, 2257- on various combinations of termcap libraries and applications, a core 2258- dump, warnings, or incorrect operation. If it is too long even before 2259- "tc" expansion, it will have this effect even for users of some other 2260- terminal types and users whose TERM variable does not have a termcap 2261+ In summary, a termcap entry that is longer than 1023 bytes can cause, 2262+ on various combinations of termcap libraries and applications, a core 2263+ dump, warnings, or incorrect operation. If it is too long even before 2264+ "tc" expansion, it will have this effect even for users of some other 2265+ terminal types and users whose TERM variable does not have a termcap 2266 entry. 2267 2268- When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> implementation of 2269- <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> issues warning messages when the pre-tc length of a termcap 2270- translation is too long. The -c (check) option also checks resolved 2271+ When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> implementation of 2272+ <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> issues warning messages when the pre-tc length of a termcap 2273+ translation is too long. The -c (check) option also checks resolved 2274 (after tc expansion) lengths. 2275 2276 2277 </PRE><H3><a name="h3-Binary-Compatibility">Binary Compatibility</a></H3><PRE> 2278- It is not wise to count on portability of binary terminfo entries 2279- between commercial UNIX versions. The problem is that there are at 2280- least two versions of terminfo (under HP-UX and AIX) which diverged 2281- from System V terminfo after SVr1, and have added extension capabili- 2282- ties to the string table that (in the binary format) collide with Sys- 2283+ It is not wise to count on portability of binary terminfo entries 2284+ between commercial UNIX versions. The problem is that there are at 2285+ least two versions of terminfo (under HP-UX and AIX) which diverged 2286+ from System V terminfo after SVr1, and have added extension capabili- 2287+ ties to the string table that (in the binary format) collide with Sys- 2288 tem V and XSI Curses extensions. 2289 2290 2291 </PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> 2292- Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and TER- 2293+ Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and TER- 2294 MINFO_DIRS is not supported by older implementations. 2295 2296- Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to SVr4, do not 2297+ Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to SVr4, do not 2298 interpret the %A and %O operators in parameter strings. 2299 2300- SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> licenses movement while in an 2301- alternate-character-set mode (such modes may, among other things, map 2302- CR and NL to characters that do not trigger local motions). The 2303- <STRONG>ncurses</STRONG> implementation ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode. This raises 2304- the possibility that an XPG4 implementation making the opposite inter- 2305- pretation may need terminfo entries made for <STRONG>ncurses</STRONG> to have <STRONG>msgr</STRONG> 2306+ SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> licenses movement while in an 2307+ alternate-character-set mode (such modes may, among other things, map 2308+ CR and NL to characters that do not trigger local motions). The 2309+ <STRONG>ncurses</STRONG> implementation ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode. This raises 2310+ the possibility that an XPG4 implementation making the opposite inter- 2311+ pretation may need terminfo entries made for <STRONG>ncurses</STRONG> to have <STRONG>msgr</STRONG> 2312 turned off. 2313 2314 The <STRONG>ncurses</STRONG> library handles insert-character and insert-character modes 2315- in a slightly non-standard way to get better update efficiency. See 2316+ in a slightly non-standard way to get better update efficiency. See 2317 the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG> subsection above. 2318 2319- The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>display_clock</STRONG> are not 2320- documented in SVr4 or the XSI Curses standard. They are deduced from 2321+ The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>display_clock</STRONG> are not 2322+ documented in SVr4 or the XSI Curses standard. They are deduced from 2323 the documentation for the AT&T 505 terminal. 2324 2325- Be careful assigning the <STRONG>kmous</STRONG> capability. The <STRONG>ncurses</STRONG> library wants 2326- to interpret it as <STRONG>KEY_MOUSE</STRONG>, for use by terminals and emulators like 2327- xterm that can return mouse-tracking information in the keyboard-input 2328+ Be careful assigning the <STRONG>kmous</STRONG> capability. The <STRONG>ncurses</STRONG> library wants 2329+ to interpret it as <STRONG>KEY_MOUSE</STRONG>, for use by terminals and emulators like 2330+ xterm that can return mouse-tracking information in the keyboard-input 2331 stream. 2332 2333- X/Open Curses does not mention italics. Portable applications must 2334- assume that numeric capabilities are signed 16-bit values. This 2335- includes the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv) capability. The 32768 mask value 2336- used for italics with ncv can be confused with an absent or cancelled 2337- ncv. If italics should work with colors, then the ncv value must be 2338+ X/Open Curses does not mention italics. Portable applications must 2339+ assume that numeric capabilities are signed 16-bit values. This 2340+ includes the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv) capability. The 32768 mask value 2341+ used for italics with ncv can be confused with an absent or cancelled 2342+ ncv. If italics should work with colors, then the ncv value must be 2343 specified, even if it is zero. 2344 2345- Different commercial ports of terminfo and curses support different 2346+ Different commercial ports of terminfo and curses support different 2347 subsets of the XSI Curses standard and (in some cases) different exten- 2348 sion sets. Here is a summary, accurate as of October 1995: 2349 2350@@ -2462,15 +2470,15 @@ 2351 capability (<STRONG>set_pglen</STRONG>). 2352 2353 <STRONG>o</STRONG> <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These support a restricted subset of terminfo capa- 2354- bilities. The booleans end with <STRONG>xon_xoff</STRONG>; the numerics with 2355+ bilities. The booleans end with <STRONG>xon_xoff</STRONG>; the numerics with 2356 <STRONG>width_status_line</STRONG>; and the strings with <STRONG>prtr_non</STRONG>. 2357 2358- <STRONG>o</STRONG> <STRONG>HP/UX</STRONG> -- Supports the SVr1 subset, plus the SVr[234] numerics 2359- <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>, <STRONG>label_width</STRONG>, plus function keys 11 2360- through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>, and <STRONG>label_off</STRONG>, plus some 2361+ <STRONG>o</STRONG> <STRONG>HP/UX</STRONG> -- Supports the SVr1 subset, plus the SVr[234] numerics 2362+ <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>, <STRONG>label_width</STRONG>, plus function keys 11 2363+ through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>, and <STRONG>label_off</STRONG>, plus some 2364 incompatible extensions in the string table. 2365 2366- <STRONG>o</STRONG> <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11 through 63, 2367+ <STRONG>o</STRONG> <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11 through 63, 2368 plus a number of incompatible string table extensions. 2369 2370 <STRONG>o</STRONG> <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions. 2371@@ -2481,7 +2489,7 @@ 2372 2373 2374 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 2375- <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG> 2376+ <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG> 2377 <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>. <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>. <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>. 2378 2379 2380Index: doc/html/man/tic.1m.html 2381--- ncurses-6.1-20190720+/doc/html/man/tic.1m.html 2019-07-20 18:53:15.000000000 +0000 2382+++ ncurses-6.1-20190727/doc/html/man/tic.1m.html 2019-07-26 23:48:29.000000000 +0000 2383@@ -438,7 +438,7 @@ 2384 <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, 2385 <STRONG><A HREF="term.5.html">term(5)</A></STRONG>. <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>. 2386 2387- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 2388+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 2389 2390 2391 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> 2392Index: doc/html/man/toe.1m.html 2393--- ncurses-6.1-20190720+/doc/html/man/toe.1m.html 2019-07-20 19:10:50.000000000 +0000 2394+++ ncurses-6.1-20190727/doc/html/man/toe.1m.html 2019-07-26 23:48:30.000000000 +0000 2395@@ -170,7 +170,7 @@ 2396 <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>ter-</STRONG> 2397 <STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG>. 2398 2399- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 2400+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 2401 2402 2403 2404Index: doc/html/man/tput.1.html 2405--- ncurses-6.1-20190720+/doc/html/man/tput.1.html 2019-07-20 18:53:15.000000000 +0000 2406+++ ncurses-6.1-20190727/doc/html/man/tput.1.html 2019-07-26 23:48:30.000000000 +0000 2407@@ -522,7 +522,7 @@ 2408 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> 2409 <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>. 2410 2411- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 2412+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 2413 2414 2415 2416Index: doc/html/man/tset.1.html 2417--- ncurses-6.1-20190720+/doc/html/man/tset.1.html 2019-07-20 18:53:15.000000000 +0000 2418+++ ncurses-6.1-20190727/doc/html/man/tset.1.html 2019-07-26 23:48:30.000000000 +0000 2419@@ -389,7 +389,7 @@ 2420 <STRONG>csh(1)</STRONG>, <STRONG>sh(1)</STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>tty(4)</STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, 2421 <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG> 2422 2423- This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190720). 2424+ This describes <STRONG>ncurses</STRONG> version 6.1 (patch 20190727). 2425 2426 2427 2428Index: doc/html/ncurses-intro.html 2429Prereq: 1.48 2430--- ncurses-6.1-20190720+/doc/html/ncurses-intro.html 2019-03-16 19:39:05.000000000 +0000 2431+++ ncurses-6.1-20190727/doc/html/ncurses-intro.html 2019-07-27 11:47:10.000000000 +0000 2432@@ -1,5 +1,5 @@ 2433 <!-- 2434- $Id: ncurses-intro.html,v 1.48 2019/03/16 19:39:05 tom Exp $ 2435+ $Id: ncurses-intro.html,v 1.51 2019/07/27 11:47:10 tom Exp $ 2436 **************************************************************************** 2437 * Copyright (c) 1998-2017,2019 Free Software Foundation, Inc. * 2438 * * 2439@@ -33,7 +33,7 @@ 2440 <html> 2441 <head> 2442 <meta name="generator" content= 2443- "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org"> 2444+ "HTML Tidy for HTML5 for Linux version 5.2.0"> 2445 2446 <title>Writing Programs with NCURSES</title> 2447 <link rel="author" href="mailto:bugs-ncurses@gnu.org"> 2448@@ -94,8 +94,7 @@ 2449 2450 <li><a href="#input">Input</a></li> 2451 2452- <li><a href="#formschars">Using Forms 2453- Characters</a></li> 2454+ <li><a href="#formschars">Using Forms Characters</a></li> 2455 2456 <li><a href="#attributes">Character Attributes and 2457 Color</a></li> 2458@@ -112,11 +111,9 @@ 2459 <ul> 2460 <li><a href="#init">Initialization and Wrapup</a></li> 2461 2462- <li><a href="#flush">Causing Output to the 2463- Terminal</a></li> 2464+ <li><a href="#flush">Causing Output to the Terminal</a></li> 2465 2466- <li><a href="#lowlevel">Low-Level Capability 2467- Access</a></li> 2468+ <li><a href="#lowlevel">Low-Level Capability Access</a></li> 2469 2470 <li><a href="#debugging">Debugging</a></li> 2471 </ul> 2472@@ -176,8 +173,7 @@ 2473 2474 <li><a href="#hiding">Hiding Panels</a></li> 2475 2476- <li><a href="#pmisc">Miscellaneous Other 2477- Facilities</a></li> 2478+ <li><a href="#pmisc">Miscellaneous Other Facilities</a></li> 2479 </ul> 2480 </li> 2481 2482@@ -185,8 +181,7 @@ 2483 <a href="#menu">The Menu Library</a> 2484 2485 <ul> 2486- <li><a href="#mcompile">Compiling with the menu 2487- Library</a></li> 2488+ <li><a href="#mcompile">Compiling with the menu Library</a></li> 2489 2490 <li><a href="#moverview">Overview of Menus</a></li> 2491 2492@@ -225,11 +220,9 @@ 2493 <li><a href="#flocation">Changing the Field 2494 Location</a></li> 2495 2496- <li><a href="#fjust">The Justification 2497- Attribute</a></li> 2498+ <li><a href="#fjust">The Justification Attribute</a></li> 2499 2500- <li><a href="#fdispatts">Field Display 2501- Attributes</a></li> 2502+ <li><a href="#fdispatts">Field Display Attributes</a></li> 2503 2504 <li><a href="#foptions">Field Option Bits</a></li> 2505 2506@@ -259,8 +252,7 @@ 2507 </ul> 2508 </li> 2509 2510- <li><a href="#fbuffer">Direct Field Buffer 2511- Manipulation</a></li> 2512+ <li><a href="#fbuffer">Direct Field Buffer Manipulation</a></li> 2513 2514 <li><a href="#formattrs">Attributes of Forms</a></li> 2515 2516@@ -315,10 +307,10 @@ 2517 </ul> 2518 </li> 2519 </ul> 2520+ 2521 <hr> 2522 2523- <h1><a name="introduction" id= 2524- "introduction">Introduction</a></h1> 2525+ <h1><a name="introduction" id="introduction">Introduction</a></h1> 2526 2527 <p>This document is an introduction to programming with 2528 <code>curses</code>. It is not an exhaustive reference for the 2529@@ -356,20 +348,35 @@ 2530 <code>curses</code> will typically be a great deal simpler and 2531 less expensive than one using an X toolkit.</p> 2532 2533- <h2><a name="history" id="history">A Brief History of 2534- Curses</a></h2> 2535+ <h2><a name="history" id="history">A Brief History of Curses</a></h2> 2536 2537 <p>Historically, the first ancestor of <code>curses</code> was 2538- the routines written to provide screen-handling for the game 2539- <code>rogue</code>; these used the already-existing 2540+ the routines written to provide screen-handling for the 2541+ <code>vi</code> editor; these used the already-existing 2542 <code>termcap</code> database facility for describing terminal 2543 capabilities. These routines were abstracted into a documented 2544- library and first released with the early BSD UNIX versions.</p> 2545+ library and first released with the early BSD UNIX versions. All 2546+ of this work was done by students at the University of 2547+ California.</p> 2548+ 2549+ <p>After graduation, one of those students went to work at 2550+ AT&T Bell Labs, and made an improved <code>termcap</code> 2551+ library called <code>terminfo</code> (i.e., 2552+ “libterm”). That was subsequently released in System 2553+ V Release 2. Thereafter, other developers added to the terminfo 2554+ library. For instance, a student at Cornell University wrote an 2555+ improved terminfo library as well as a tool (<code>tic</code>) to 2556+ compile the terminal descriptions. As a general rule, AT&T 2557+ did not identify the developers in the source-code or 2558+ documentation; the <code>tic</code> and <code>infocmp</code> 2559+ programs are the exceptions.</p> 2560+ 2561+ <p>System V Release 3 (System III UNIX) from Bell Labs featured a 2562+ rewritten and much-improved <code>curses</code> library,l along 2563+ with the <code>tic</code> program.</p> 2564 2565- <p>System III UNIX from Bell Labs featured a rewritten and 2566- much-improved <code>curses</code> library. It introduced the 2567- terminfo format. Terminfo is based on Berkeley's termcap 2568- database, but contains a number of improvements and extensions. 2569+ <p>To recap, terminfo is based on Berkeley's termcap database, 2570+ but contains a number of improvements and extensions. 2571 Parameterized capabilities strings were introduced, making it 2572 possible to describe multiple video attributes, and colors and to 2573 handle far more unusual terminals than possible with termcap. In 2574@@ -468,8 +475,7 @@ 2575 2576 <h1><a name="curses" id="curses">The Curses Library</a></h1> 2577 2578- <h2><a name="overview" id="overview">An Overview of 2579- Curses</a></h2> 2580+ <h2><a name="overview" id="overview">An Overview of Curses</a></h2> 2581 2582 <h3><a name="compiling" id="compiling">Compiling Programs using 2583 Curses</a></h3> 2584@@ -477,6 +483,7 @@ 2585 <p>In order to use the library, it is necessary to have certain 2586 types and variables defined. Therefore, the programmer must have 2587 a line:</p> 2588+ 2589 <pre> 2590 #include <curses.h> 2591 </pre> 2592@@ -552,23 +559,27 @@ 2593 avoid clumsiness, most I/O routines can be preceded by the prefix 2594 “mv” and the desired (y, x) coordinates prepended to 2595 the arguments to the function. For example, the calls</p> 2596+ 2597 <pre> 2598 move(y, x); 2599 addch(ch); 2600 </pre> 2601 2602 <p>can be replaced by</p> 2603+ 2604 <pre> 2605 mvaddch(y, x, ch); 2606 </pre> 2607 2608 <p>and</p> 2609+ 2610 <pre> 2611 wmove(win, y, x); 2612 waddch(win, ch); 2613 </pre> 2614 2615 <p>can be replaced by</p> 2616+ 2617 <pre> 2618 mvwaddch(win, y, x, ch); 2619 </pre> 2620@@ -581,6 +592,7 @@ 2621 2622 <p>The <code>curses</code> library sets some variables describing 2623 the terminal capabilities.</p> 2624+ 2625 <pre> 2626 type name description 2627 ------------------------------------------------------------------ 2628@@ -593,24 +605,29 @@ 2629 usefulness:</p> 2630 2631 <dl> 2632- <dt><code>bool</code></dt> 2633+ <dt><code>bool</code> 2634+ </dt> 2635 2636 <dd>boolean type, actually a “char” (e.g., 2637 <code>bool doneit;</code>)</dd> 2638 2639- <dt><code>TRUE</code></dt> 2640+ <dt><code>TRUE</code> 2641+ </dt> 2642 2643 <dd>boolean “true” flag (1).</dd> 2644 2645- <dt><code>FALSE</code></dt> 2646+ <dt><code>FALSE</code> 2647+ </dt> 2648 2649 <dd>boolean “false” flag (0).</dd> 2650 2651- <dt><code>ERR</code></dt> 2652+ <dt><code>ERR</code> 2653+ </dt> 2654 2655 <dd>error flag returned by routines on a failure (-1).</dd> 2656 2657- <dt><code>OK</code></dt> 2658+ <dt><code>OK</code> 2659+ </dt> 2660 2661 <dd>error flag returned by routines when things go right.</dd> 2662 </dl> 2663@@ -624,6 +641,7 @@ 2664 mentioned above.</p> 2665 2666 <p>Here is a sample program to motivate the discussion:</p> 2667+ 2668 <pre> 2669 #include <stdlib.h> 2670 #include <curses.h> 2671@@ -935,8 +953,7 @@ 2672 anytime after the call to initscr, <code>endwin()</code> should 2673 be called before exiting.</p> 2674 2675- <h2><a name="functions" id="functions">Function 2676- Descriptions</a></h2> 2677+ <h2><a name="functions" id="functions">Function Descriptions</a></h2> 2678 2679 <p>We describe the detailed behavior of some important curses 2680 functions here, as a supplement to the manual page 2681@@ -945,7 +962,8 @@ 2682 <h3><a name="init" id="init">Initialization and Wrapup</a></h3> 2683 2684 <dl> 2685- <dt><code>initscr()</code></dt> 2686+ <dt><code>initscr()</code> 2687+ </dt> 2688 2689 <dd>The first function called should almost always be 2690 <code>initscr()</code>. This will determine the terminal type 2691@@ -958,7 +976,8 @@ 2692 <code>ripoffline()</code>, <code>use_env()</code>, and, if you 2693 are using multiple terminals, <code>newterm()</code>.)</dd> 2694 2695- <dt><code>endwin()</code></dt> 2696+ <dt><code>endwin()</code> 2697+ </dt> 2698 2699 <dd>Your program should always call <code>endwin()</code> 2700 before exiting or shelling out of the program. This function 2701@@ -969,7 +988,8 @@ 2702 program will restore the ncurses screen from before the 2703 escape.</dd> 2704 2705- <dt><code>newterm(type, ofp, ifp)</code></dt> 2706+ <dt><code>newterm(type, ofp, ifp)</code> 2707+ </dt> 2708 2709 <dd>A program which outputs to more than one terminal should 2710 use <code>newterm()</code> instead of <code>initscr()</code>. 2711@@ -985,7 +1005,8 @@ 2712 <code>endwin()</code> should called once at wrapup time for 2713 each terminal opened using this function.</dd> 2714 2715- <dt><code>set_term(new)</code></dt> 2716+ <dt><code>set_term(new)</code> 2717+ </dt> 2718 2719 <dd>This function is used to switch to a different terminal 2720 previously opened by <code>newterm()</code>. The screen 2721@@ -993,15 +1014,15 @@ 2722 previous terminal is returned by the function. All other calls 2723 affect only the current terminal.</dd> 2724 2725- <dt><code>delscreen(sp)</code></dt> 2726+ <dt><code>delscreen(sp)</code> 2727+ </dt> 2728 2729 <dd>The inverse of <code>newterm()</code>; deallocates the data 2730 structures associated with a given <code>SCREEN</code> 2731 reference.</dd> 2732 </dl> 2733 2734- <h3><a name="flush" id="flush">Causing Output to the 2735- Terminal</a></h3> 2736+ <h3><a name="flush" id="flush">Causing Output to the Terminal</a></h3> 2737 2738 <dl> 2739 <dt><code>refresh()</code> and <code>wrefresh(win)</code></dt> 2740@@ -1044,7 +1065,8 @@ 2741 Access</a></h3> 2742 2743 <dl> 2744- <dt><code>setupterm(term, filenum, errret)</code></dt> 2745+ <dt><code>setupterm(term, filenum, errret)</code> 2746+ </dt> 2747 2748 <dd> 2749 This routine is called to initialize a terminal's 2750@@ -1090,7 +1112,8 @@ 2751 </blockquote> 2752 2753 <dl> 2754- <dt><code>trace()</code></dt> 2755+ <dt><code>trace()</code> 2756+ </dt> 2757 2758 <dd>This function can be used to explicitly set a trace level. 2759 If the trace level is nonzero, execution of your program will 2760@@ -1103,7 +1126,8 @@ 2761 value to the environment variable 2762 <code>NCURSES_TRACE</code>).</dd> 2763 2764- <dt><code>_tracef()</code></dt> 2765+ <dt><code>_tracef()</code> 2766+ </dt> 2767 2768 <dd>This function can be used to output your own debugging 2769 information. It is only available only if you link with 2770@@ -1192,6 +1216,7 @@ 2771 <code>refresh()</code>, <code>FALSE</code> otherwise.</p> 2772 2773 <p>Here is some sample code for shellout:</p> 2774+ 2775 <pre> 2776 addstr("Shelling out..."); 2777 def_prog_mode(); /* save current tty modes */ 2778@@ -1381,8 +1406,7 @@ 2779 <p>This change in behavior conforms <code>ncurses</code> to 2780 System V Release 4 and the XSI Curses standard.</p> 2781 2782- <h2><a name="xsifuncs" id="xsifuncs">XSI Curses 2783- Conformance</a></h2> 2784+ <h2><a name="xsifuncs" id="xsifuncs">XSI Curses Conformance</a></h2> 2785 2786 <p>The <code>ncurses</code> library is intended to be base-level 2787 conformant with the XSI Curses standard from X/Open. Many 2788@@ -1424,6 +1448,7 @@ 2789 2790 <p>Your panels-using modules must import the panels library 2791 declarations with</p> 2792+ 2793 <pre> 2794 #include <panel.h> 2795 </pre> 2796@@ -1435,8 +1460,7 @@ 2797 still good practice to put <code>-lpanel</code> first and 2798 <code>-lncurses</code> second.</p> 2799 2800- <h2><a name="poverview" id="poverview">Overview of 2801- Panels</a></h2> 2802+ <h2><a name="poverview" id="poverview">Overview of Panels</a></h2> 2803 2804 <p>A panel object is a window that is implicitly treated as part 2805 of a <dfn>deck</dfn> including all other panel objects. The deck 2806@@ -1521,8 +1545,7 @@ 2807 cannot do <code>top_panel()</code> or <code>bottom_panel</code> 2808 on a hidden panel(). Other panels operations are applicable.</p> 2809 2810- <h2><a name="pmisc" id="pmisc">Miscellaneous Other 2811- Facilities</a></h2> 2812+ <h2><a name="pmisc" id="pmisc">Miscellaneous Other Facilities</a></h2> 2813 2814 <p>It is possible to navigate the deck using the functions 2815 <code>panel_above()</code> and <code>panel_below</code>. Handed a 2816@@ -1551,6 +1574,7 @@ 2817 2818 <p>Your menu-using modules must import the menu library 2819 declarations with</p> 2820+ 2821 <pre> 2822 #include <menu.h> 2823 </pre> 2824@@ -1757,8 +1781,7 @@ 2825 commands. The <code>menu_driver()</code> code ignores them and 2826 returns <code>E_UNKNOWN_COMMAND</code>.</p> 2827 2828- <h2><a name="mmisc" id="mmisc">Miscellaneous Other 2829- Features</a></h2> 2830+ <h2><a name="mmisc" id="mmisc">Miscellaneous Other Features</a></h2> 2831 2832 <p>Various menu options can affect the processing and visual 2833 appearance and input processing of menus. See <code>menu_opts(3x) 2834@@ -1796,6 +1819,7 @@ 2835 2836 <p>Your form-using modules must import the form library 2837 declarations with</p> 2838+ 2839 <pre> 2840 #include <form.h> 2841 </pre> 2842@@ -1881,6 +1905,7 @@ 2843 2844 <p>The basic function for creating fields is 2845 <code>new_field()</code>:</p> 2846+ 2847 <pre> 2848 FIELD *new_field(int height, int width, /* new field size */ 2849 int top, int left, /* upper left corner */ 2850@@ -1914,6 +1939,7 @@ 2851 terminator. The sixth argument is the number of additional data 2852 buffers to allocate for the field; your application can use them 2853 for its own purposes.</p> 2854+ 2855 <pre> 2856 FIELD *dup_field(FIELD *field, /* field to copy */ 2857 int top, int left); /* location of new copy */ 2858@@ -1923,6 +1949,7 @@ 2859 field at a new location. Size and buffering information are 2860 copied; some attribute flags and status bits are not (see the 2861 <code>form_field_new(3X)</code> for details).</p> 2862+ 2863 <pre> 2864 FIELD *link_field(FIELD *field, /* field to copy */ 2865 int top, int left); /* location of new copy */ 2866@@ -1947,6 +1974,7 @@ 2867 an out-of-memory error or out-of-bounds arguments.</p> 2868 2869 <p>To connect fields to a form, use</p> 2870+ 2871 <pre> 2872 FORM *new_form(FIELD **fields); 2873 </pre> 2874@@ -1989,6 +2017,7 @@ 2875 Data</a></h3> 2876 2877 <p>You can retrieve field sizes and locations through:</p> 2878+ 2879 <pre> 2880 int field_info(FIELD *field, /* field from which to fetch */ 2881 int *height, *int width, /* field size */ 2882@@ -2006,6 +2035,7 @@ 2883 Location</a></h3> 2884 2885 <p>It is possible to move a field's location on the screen:</p> 2886+ 2887 <pre> 2888 int move_field(FIELD *field, /* field to alter */ 2889 int top, int left); /* new upper-left corner */ 2890@@ -2014,11 +2044,11 @@ 2891 <p>You can, of course. query the current location through 2892 <code>field_info()</code>.</p> 2893 2894- <h3><a name="fjust" id="fjust">The Justification 2895- Attribute</a></h3> 2896+ <h3><a name="fjust" id="fjust">The Justification Attribute</a></h3> 2897 2898 <p>One-line fields may be unjustified, justified right, justified 2899 left, or centered. Here is how you manipulate this attribute:</p> 2900+ 2901 <pre> 2902 int set_field_just(FIELD *field, /* field to alter */ 2903 int justmode); /* mode to set */ 2904@@ -2042,6 +2072,7 @@ 2905 <p>This group of four field attributes controls the visual 2906 appearance of the field on the screen, without affecting in any 2907 way the data in the field buffer.</p> 2908+ 2909 <pre> 2910 int set_field_fore(FIELD *field, /* field to alter */ 2911 chtype attr); /* attribute to set */ 2912@@ -2075,6 +2106,7 @@ 2913 <p>There is also a large collection of field option bits you can 2914 set to control various aspects of forms processing. You can 2915 manipulate them with these functions:</p> 2916+ 2917 <pre> 2918 int set_field_opts(FIELD *field, /* field to alter */ 2919 int attr); /* attribute to set */ 2920@@ -2179,6 +2211,7 @@ 2921 <p>Every field has a status flag, which is set to FALSE when the 2922 field is created and TRUE when the value in field buffer 0 2923 changes. This flag can be queried and set directly:</p> 2924+ 2925 <pre> 2926 int set_field_status(FIELD *field, /* field to alter */ 2927 int status); /* mode to set */ 2928@@ -2208,6 +2241,7 @@ 2929 is not used by the forms library. It is intended to be used by 2930 applications to store private per-field data. You can manipulate 2931 it with:</p> 2932+ 2933 <pre> 2934 int set_field_userptr(FIELD *field, /* field to alter */ 2935 char *userptr); /* mode to set */ 2936@@ -2222,8 +2256,7 @@ 2937 pointer.) When a new field is created, the default-field user 2938 pointer is copied to initialize the new field's user pointer.</p> 2939 2940- <h2><a name="fdynamic" id="fdynamic">Variable-Sized 2941- Fields</a></h2> 2942+ <h2><a name="fdynamic" id="fdynamic">Variable-Sized Fields</a></h2> 2943 2944 <p>Normally, a field is fixed at the size specified for it at 2945 creation time. If, however, you turn off its O_STATIC bit, it 2946@@ -2242,6 +2275,7 @@ 2947 <p>Normally, a dynamic field is allowed to grow without limit. 2948 But it is possible to set an upper limit on the size of a dynamic 2949 field. You do it with this function:</p> 2950+ 2951 <pre> 2952 int set_max_field(FIELD *field, /* field to alter (may not be NULL) */ 2953 int max_size); /* upper limit on field size */ 2954@@ -2277,8 +2311,7 @@ 2955 size.</li> 2956 </ul> 2957 2958- <h2><a name="fvalidation" id="fvalidation">Field 2959- Validation</a></h2> 2960+ <h2><a name="fvalidation" id="fvalidation">Field Validation</a></h2> 2961 2962 <p>By default, a field will accept any data that will fit in its 2963 input buffer. However, it is possible to attach a validation type 2964@@ -2295,6 +2328,7 @@ 2965 pre-defined validation types, and gives you the capability to 2966 define custom ones of your own. You can examine and change field 2967 validation attributes with the following functions:</p> 2968+ 2969 <pre> 2970 int set_field_type(FIELD *field, /* field to alter */ 2971 FIELDTYPE *ftype, /* type to associate */ 2972@@ -2316,6 +2350,7 @@ 2973 <p>This field type accepts alphabetic data; no blanks, no digits, 2974 no special characters (this is checked at character-entry time). 2975 It is set up with:</p> 2976+ 2977 <pre> 2978 int set_field_type(FIELD *field, /* field to alter */ 2979 TYPE_ALPHA, /* type to associate */ 2980@@ -2333,6 +2368,7 @@ 2981 <p>This field type accepts alphabetic data and digits; no blanks, 2982 no special characters (this is checked at character-entry time). 2983 It is set up with:</p> 2984+ 2985 <pre> 2986 int set_field_type(FIELD *field, /* field to alter */ 2987 TYPE_ALNUM, /* type to associate */ 2988@@ -2350,6 +2386,7 @@ 2989 <p>This type allows you to restrict a field's values to be among 2990 a specified set of string values (for example, the two-letter 2991 postal codes for U.S. states). It is set up with:</p> 2992+ 2993 <pre> 2994 int set_field_type(FIELD *field, /* field to alter */ 2995 TYPE_ENUM, /* type to associate */ 2996@@ -2379,11 +2416,11 @@ 2997 <code>REQ_PREV_CHOICE</code> input requests can be particularly 2998 useful with these fields.</p> 2999 3000- <h3><a name="ftype_integer" id= 3001- "ftype_integer">TYPE_INTEGER</a></h3> 3002+ <h3><a name="ftype_integer" id="ftype_integer">TYPE_INTEGER</a></h3> 3003 3004 <p>This field type accepts an integer. It is set up as 3005 follows:</p> 3006+ 3007 <pre> 3008 int set_field_type(FIELD *field, /* field to alter */ 3009 TYPE_INTEGER, /* type to associate */ 3010@@ -2403,11 +2440,11 @@ 3011 <p>A <code>TYPE_INTEGER</code> value buffer can conveniently be 3012 interpreted with the C library function <code>atoi(3)</code>.</p> 3013 3014- <h3><a name="ftype_numeric" id= 3015- "ftype_numeric">TYPE_NUMERIC</a></h3> 3016+ <h3><a name="ftype_numeric" id="ftype_numeric">TYPE_NUMERIC</a></h3> 3017 3018 <p>This field type accepts a decimal number. It is set up as 3019 follows:</p> 3020+ 3021 <pre> 3022 int set_field_type(FIELD *field, /* field to alter */ 3023 TYPE_NUMERIC, /* type to associate */ 3024@@ -2433,6 +2470,7 @@ 3025 3026 <p>This field type accepts data matching a regular expression. It 3027 is set up as follows:</p> 3028+ 3029 <pre> 3030 int set_field_type(FIELD *field, /* field to alter */ 3031 TYPE_REGEXP, /* type to associate */ 3032@@ -2449,6 +2487,7 @@ 3033 <p>The chief attribute of a field is its buffer contents. When a 3034 form has been completed, your application usually needs to know 3035 the state of each field buffer. You can find this out with:</p> 3036+ 3037 <pre> 3038 char *field_buffer(FIELD *field, /* field to query */ 3039 int bufindex); /* number of buffer to query */ 3040@@ -2458,6 +2497,7 @@ 3041 is set by the user's editing actions on that field. It is 3042 sometimes useful to be able to set the value of the zero-numbered 3043 (or some other) buffer from your application:</p> 3044+ 3045 <pre> 3046 int set_field_buffer(FIELD *field, /* field to alter */ 3047 int bufindex, /* number of buffer to alter */ 3048@@ -2482,8 +2522,7 @@ 3049 <code>REQ_VALIDATION</code> request has been processed by the 3050 forms driver.</p> 3051 3052- <h2><a name="formattrs" id="formattrs">Attributes of 3053- Forms</a></h2> 3054+ <h2><a name="formattrs" id="formattrs">Attributes of Forms</a></h2> 3055 3056 <p>As with field attributes, form attributes inherit a default 3057 from a system default form structure. These defaults can be 3058@@ -2492,6 +2531,7 @@ 3059 3060 <p>The principal attribute of a form is its field list. You can 3061 query and change this list with:</p> 3062+ 3063 <pre> 3064 int set_form_fields(FORM *form, /* form to alter */ 3065 FIELD **fields); /* fields to connect */ 3066@@ -2514,8 +2554,7 @@ 3067 number of fields connected to a given from. It returns -1 if the 3068 form-pointer argument is NULL.</p> 3069 3070- <h2><a name="fdisplay" id="fdisplay">Control of Form 3071- Display</a></h2> 3072+ <h2><a name="fdisplay" id="fdisplay">Control of Form Display</a></h2> 3073 3074 <p>In the overview section, you saw that to display a form you 3075 normally start by defining its size (and fields), posting it, and 3076@@ -2546,6 +2585,7 @@ 3077 <p>In order to declare your own frame window for a form, you will 3078 need to know the size of the form's bounding rectangle. You can 3079 get this information with:</p> 3080+ 3081 <pre> 3082 int scale_form(FORM *form, /* form to query */ 3083 int *rows, /* form rows */ 3084@@ -2555,6 +2595,7 @@ 3085 <p>The form dimensions are passed back in the locations pointed 3086 to by the arguments. Once you have this information, you can use 3087 it to declare of windows, then use one of these functions:</p> 3088+ 3089 <pre> 3090 int set_form_win(FORM *form, /* form to alter */ 3091 WINDOW *win); /* frame window to connect */ 3092@@ -2574,6 +2615,7 @@ 3093 <p>It is possible to check from your application whether all of a 3094 scrollable field is actually displayed within the menu subwindow. 3095 Use these functions:</p> 3096+ 3097 <pre> 3098 int data_ahead(FORM *form); /* form to be queried */ 3099 3100@@ -2591,6 +2633,7 @@ 3101 3102 <p>Finally, there is a function to restore the form window's 3103 cursor to the value expected by the forms driver:</p> 3104+ 3105 <pre> 3106 int pos_form_cursor(FORM *) /* form to be queried */ 3107 </pre> 3108@@ -2606,6 +2649,7 @@ 3109 input requests for form navigation, editing, and validation 3110 requests, just as <code>menu_driver</code> does for menus (see 3111 the section on <a href="#minput">menu input handling</a>).</p> 3112+ 3113 <pre> 3114 int form_driver(FORM *form, /* form to pass input to */ 3115 int request); /* form request code */ 3116@@ -2627,19 +2671,23 @@ 3117 triggering display of a new form screen.</p> 3118 3119 <dl> 3120- <dt><code>REQ_NEXT_PAGE</code></dt> 3121+ <dt><code>REQ_NEXT_PAGE</code> 3122+ </dt> 3123 3124 <dd>Move to the next form page.</dd> 3125 3126- <dt><code>REQ_PREV_PAGE</code></dt> 3127+ <dt><code>REQ_PREV_PAGE</code> 3128+ </dt> 3129 3130 <dd>Move to the previous form page.</dd> 3131 3132- <dt><code>REQ_FIRST_PAGE</code></dt> 3133+ <dt><code>REQ_FIRST_PAGE</code> 3134+ </dt> 3135 3136 <dd>Move to the first form page.</dd> 3137 3138- <dt><code>REQ_LAST_PAGE</code></dt> 3139+ <dt><code>REQ_LAST_PAGE</code> 3140+ </dt> 3141 3142 <dd>Move to the last form page.</dd> 3143 </dl> 3144@@ -2656,51 +2704,63 @@ 3145 page.</p> 3146 3147 <dl> 3148- <dt><code>REQ_NEXT_FIELD</code></dt> 3149+ <dt><code>REQ_NEXT_FIELD</code> 3150+ </dt> 3151 3152 <dd>Move to next field.</dd> 3153 3154- <dt><code>REQ_PREV_FIELD</code></dt> 3155+ <dt><code>REQ_PREV_FIELD</code> 3156+ </dt> 3157 3158 <dd>Move to previous field.</dd> 3159 3160- <dt><code>REQ_FIRST_FIELD</code></dt> 3161+ <dt><code>REQ_FIRST_FIELD</code> 3162+ </dt> 3163 3164 <dd>Move to the first field.</dd> 3165 3166- <dt><code>REQ_LAST_FIELD</code></dt> 3167+ <dt><code>REQ_LAST_FIELD</code> 3168+ </dt> 3169 3170 <dd>Move to the last field.</dd> 3171 3172- <dt><code>REQ_SNEXT_FIELD</code></dt> 3173+ <dt><code>REQ_SNEXT_FIELD</code> 3174+ </dt> 3175 3176 <dd>Move to sorted next field.</dd> 3177 3178- <dt><code>REQ_SPREV_FIELD</code></dt> 3179+ <dt><code>REQ_SPREV_FIELD</code> 3180+ </dt> 3181 3182 <dd>Move to sorted previous field.</dd> 3183 3184- <dt><code>REQ_SFIRST_FIELD</code></dt> 3185+ <dt><code>REQ_SFIRST_FIELD</code> 3186+ </dt> 3187 3188 <dd>Move to the sorted first field.</dd> 3189 3190- <dt><code>REQ_SLAST_FIELD</code></dt> 3191+ <dt><code>REQ_SLAST_FIELD</code> 3192+ </dt> 3193 3194 <dd>Move to the sorted last field.</dd> 3195 3196- <dt><code>REQ_LEFT_FIELD</code></dt> 3197+ <dt><code>REQ_LEFT_FIELD</code> 3198+ </dt> 3199 3200 <dd>Move left to field.</dd> 3201 3202- <dt><code>REQ_RIGHT_FIELD</code></dt> 3203+ <dt><code>REQ_RIGHT_FIELD</code> 3204+ </dt> 3205 3206 <dd>Move right to field.</dd> 3207 3208- <dt><code>REQ_UP_FIELD</code></dt> 3209+ <dt><code>REQ_UP_FIELD</code> 3210+ </dt> 3211 3212 <dd>Move up to field.</dd> 3213 3214- <dt><code>REQ_DOWN_FIELD</code></dt> 3215+ <dt><code>REQ_DOWN_FIELD</code> 3216+ </dt> 3217 3218 <dd>Move down to field.</dd> 3219 </dl> 3220@@ -2738,59 +2798,73 @@ 3221 currently selected field.</p> 3222 3223 <dl> 3224- <dt><code>REQ_NEXT_CHAR</code></dt> 3225+ <dt><code>REQ_NEXT_CHAR</code> 3226+ </dt> 3227 3228 <dd>Move to next character.</dd> 3229 3230- <dt><code>REQ_PREV_CHAR</code></dt> 3231+ <dt><code>REQ_PREV_CHAR</code> 3232+ </dt> 3233 3234 <dd>Move to previous character.</dd> 3235 3236- <dt><code>REQ_NEXT_LINE</code></dt> 3237+ <dt><code>REQ_NEXT_LINE</code> 3238+ </dt> 3239 3240 <dd>Move to next line.</dd> 3241 3242- <dt><code>REQ_PREV_LINE</code></dt> 3243+ <dt><code>REQ_PREV_LINE</code> 3244+ </dt> 3245 3246 <dd>Move to previous line.</dd> 3247 3248- <dt><code>REQ_NEXT_WORD</code></dt> 3249+ <dt><code>REQ_NEXT_WORD</code> 3250+ </dt> 3251 3252 <dd>Move to next word.</dd> 3253 3254- <dt><code>REQ_PREV_WORD</code></dt> 3255+ <dt><code>REQ_PREV_WORD</code> 3256+ </dt> 3257 3258 <dd>Move to previous word.</dd> 3259 3260- <dt><code>REQ_BEG_FIELD</code></dt> 3261+ <dt><code>REQ_BEG_FIELD</code> 3262+ </dt> 3263 3264 <dd>Move to beginning of field.</dd> 3265 3266- <dt><code>REQ_END_FIELD</code></dt> 3267+ <dt><code>REQ_END_FIELD</code> 3268+ </dt> 3269 3270 <dd>Move to end of field.</dd> 3271 3272- <dt><code>REQ_BEG_LINE</code></dt> 3273+ <dt><code>REQ_BEG_LINE</code> 3274+ </dt> 3275 3276 <dd>Move to beginning of line.</dd> 3277 3278- <dt><code>REQ_END_LINE</code></dt> 3279+ <dt><code>REQ_END_LINE</code> 3280+ </dt> 3281 3282 <dd>Move to end of line.</dd> 3283 3284- <dt><code>REQ_LEFT_CHAR</code></dt> 3285+ <dt><code>REQ_LEFT_CHAR</code> 3286+ </dt> 3287 3288 <dd>Move left in field.</dd> 3289 3290- <dt><code>REQ_RIGHT_CHAR</code></dt> 3291+ <dt><code>REQ_RIGHT_CHAR</code> 3292+ </dt> 3293 3294 <dd>Move right in field.</dd> 3295 3296- <dt><code>REQ_UP_CHAR</code></dt> 3297+ <dt><code>REQ_UP_CHAR</code> 3298+ </dt> 3299 3300 <dd>Move up in field.</dd> 3301 3302- <dt><code>REQ_DOWN_CHAR</code></dt> 3303+ <dt><code>REQ_DOWN_CHAR</code> 3304+ </dt> 3305 3306 <dd>Move down in field.</dd> 3307 </dl> 3308@@ -2811,51 +2885,63 @@ 3309 requests:</p> 3310 3311 <dl> 3312- <dt><code>REQ_SCR_FLINE</code></dt> 3313+ <dt><code>REQ_SCR_FLINE</code> 3314+ </dt> 3315 3316 <dd>Scroll vertically forward a line.</dd> 3317 3318- <dt><code>REQ_SCR_BLINE</code></dt> 3319+ <dt><code>REQ_SCR_BLINE</code> 3320+ </dt> 3321 3322 <dd>Scroll vertically backward a line.</dd> 3323 3324- <dt><code>REQ_SCR_FPAGE</code></dt> 3325+ <dt><code>REQ_SCR_FPAGE</code> 3326+ </dt> 3327 3328 <dd>Scroll vertically forward a page.</dd> 3329 3330- <dt><code>REQ_SCR_BPAGE</code></dt> 3331+ <dt><code>REQ_SCR_BPAGE</code> 3332+ </dt> 3333 3334 <dd>Scroll vertically backward a page.</dd> 3335 3336- <dt><code>REQ_SCR_FHPAGE</code></dt> 3337+ <dt><code>REQ_SCR_FHPAGE</code> 3338+ </dt> 3339 3340 <dd>Scroll vertically forward half a page.</dd> 3341 3342- <dt><code>REQ_SCR_BHPAGE</code></dt> 3343+ <dt><code>REQ_SCR_BHPAGE</code> 3344+ </dt> 3345 3346 <dd>Scroll vertically backward half a page.</dd> 3347 3348- <dt><code>REQ_SCR_FCHAR</code></dt> 3349+ <dt><code>REQ_SCR_FCHAR</code> 3350+ </dt> 3351 3352 <dd>Scroll horizontally forward a character.</dd> 3353 3354- <dt><code>REQ_SCR_BCHAR</code></dt> 3355+ <dt><code>REQ_SCR_BCHAR</code> 3356+ </dt> 3357 3358 <dd>Scroll horizontally backward a character.</dd> 3359 3360- <dt><code>REQ_SCR_HFLINE</code></dt> 3361+ <dt><code>REQ_SCR_HFLINE</code> 3362+ </dt> 3363 3364 <dd>Scroll horizontally one field width forward.</dd> 3365 3366- <dt><code>REQ_SCR_HBLINE</code></dt> 3367+ <dt><code>REQ_SCR_HBLINE</code> 3368+ </dt> 3369 3370 <dd>Scroll horizontally one field width backward.</dd> 3371 3372- <dt><code>REQ_SCR_HFHALF</code></dt> 3373+ <dt><code>REQ_SCR_HFHALF</code> 3374+ </dt> 3375 3376 <dd>Scroll horizontally one half field width forward.</dd> 3377 3378- <dt><code>REQ_SCR_HBHALF</code></dt> 3379+ <dt><code>REQ_SCR_HBHALF</code> 3380+ </dt> 3381 3382 <dd>Scroll horizontally one half field width backward.</dd> 3383 </dl> 3384@@ -2874,51 +2960,63 @@ 3385 the edit mode:</p> 3386 3387 <dl> 3388- <dt><code>REQ_INS_MODE</code></dt> 3389+ <dt><code>REQ_INS_MODE</code> 3390+ </dt> 3391 3392 <dd>Set insertion mode.</dd> 3393 3394- <dt><code>REQ_OVL_MODE</code></dt> 3395+ <dt><code>REQ_OVL_MODE</code> 3396+ </dt> 3397 3398 <dd>Set overlay mode.</dd> 3399 3400- <dt><code>REQ_NEW_LINE</code></dt> 3401+ <dt><code>REQ_NEW_LINE</code> 3402+ </dt> 3403 3404 <dd>New line request (see below for explanation).</dd> 3405 3406- <dt><code>REQ_INS_CHAR</code></dt> 3407+ <dt><code>REQ_INS_CHAR</code> 3408+ </dt> 3409 3410 <dd>Insert space at character location.</dd> 3411 3412- <dt><code>REQ_INS_LINE</code></dt> 3413+ <dt><code>REQ_INS_LINE</code> 3414+ </dt> 3415 3416 <dd>Insert blank line at character location.</dd> 3417 3418- <dt><code>REQ_DEL_CHAR</code></dt> 3419+ <dt><code>REQ_DEL_CHAR</code> 3420+ </dt> 3421 3422 <dd>Delete character at cursor.</dd> 3423 3424- <dt><code>REQ_DEL_PREV</code></dt> 3425+ <dt><code>REQ_DEL_PREV</code> 3426+ </dt> 3427 3428 <dd>Delete previous word at cursor.</dd> 3429 3430- <dt><code>REQ_DEL_LINE</code></dt> 3431+ <dt><code>REQ_DEL_LINE</code> 3432+ </dt> 3433 3434 <dd>Delete line at cursor.</dd> 3435 3436- <dt><code>REQ_DEL_WORD</code></dt> 3437+ <dt><code>REQ_DEL_WORD</code> 3438+ </dt> 3439 3440 <dd>Delete word at cursor.</dd> 3441 3442- <dt><code>REQ_CLR_EOL</code></dt> 3443+ <dt><code>REQ_CLR_EOL</code> 3444+ </dt> 3445 3446 <dd>Clear to end of line.</dd> 3447 3448- <dt><code>REQ_CLR_EOF</code></dt> 3449+ <dt><code>REQ_CLR_EOF</code> 3450+ </dt> 3451 3452 <dd>Clear to end of field.</dd> 3453 3454- <dt><code>REQ_CLEAR_FIELD</code></dt> 3455+ <dt><code>REQ_CLEAR_FIELD</code> 3456+ </dt> 3457 3458 <dd>Clear entire field.</dd> 3459 </dl> 3460@@ -2975,12 +3073,14 @@ 3461 into the field buffer:</p> 3462 3463 <dl> 3464- <dt><code>REQ_NEXT_CHOICE</code></dt> 3465+ <dt><code>REQ_NEXT_CHOICE</code> 3466+ </dt> 3467 3468 <dd>Place the successor value of the current value in the 3469 buffer.</dd> 3470 3471- <dt><code>REQ_PREV_CHOICE</code></dt> 3472+ <dt><code>REQ_PREV_CHOICE</code> 3473+ </dt> 3474 3475 <dd>Place the predecessor value of the current value in the 3476 buffer.</dd> 3477@@ -2991,8 +3091,7 @@ 3478 field type of your own (see <a href="#fcustom">Custom Validation 3479 Types</a>), you can associate our own ordering functions.</p> 3480 3481- <h3><a name="fappcmds" id="fappcmds">Application 3482- Commands</a></h3> 3483+ <h3><a name="fappcmds" id="fappcmds">Application Commands</a></h3> 3484 3485 <p>Form requests are represented as integers above the 3486 <code>curses</code> value greater than <code>KEY_MAX</code> and 3487@@ -3005,6 +3104,7 @@ 3488 <p>It is possible to set function hooks to be executed whenever 3489 the current field or form changes. Here are the functions that 3490 support this:</p> 3491+ 3492 <pre> 3493 typedef void (*HOOK)(); /* pointer to function returning void */ 3494 3495@@ -3086,6 +3186,7 @@ 3496 move the focus for editing and viewing under control of your 3497 application, or ask which field it currently is in. The following 3498 functions help you accomplish this:</p> 3499+ 3500 <pre> 3501 int set_current_field(FORM *form, /* form to alter */ 3502 FIELD *field); /* field to shift to */ 3503@@ -3106,6 +3207,7 @@ 3504 resets this.</p> 3505 3506 <p>It is also possible to move around by pages.</p> 3507+ 3508 <pre> 3509 int set_form_page(FORM *form, /* form to alter */ 3510 int page); /* page to go to (0-origin) */ 3511@@ -3120,6 +3222,7 @@ 3512 3513 <p>Like fields, forms may have control option bits. They can be 3514 changed or queried with these functions:</p> 3515+ 3516 <pre> 3517 int set_form_opts(FORM *form, /* form to alter */ 3518 int attr); /* attribute to set */ 3519@@ -3155,8 +3258,7 @@ 3520 <p>The option values are bit-masks and can be composed with 3521 logical-or in the obvious way.</p> 3522 3523- <h2><a name="fcustom" id="fcustom">Custom Validation 3524- Types</a></h2> 3525+ <h2><a name="fcustom" id="fcustom">Custom Validation Types</a></h2> 3526 3527 <p>The <code>form</code> library gives you the capability to 3528 define custom validation types of your own. Further, the optional 3529@@ -3170,6 +3272,7 @@ 3530 3531 <p>The simplest way to create a custom data type is to compose it 3532 from two preexisting ones:</p> 3533+ 3534 <pre> 3535 FIELD *link_fieldtype(FIELDTYPE *type1, 3536 FIELDTYPE *type2); 3537@@ -3200,13 +3303,13 @@ 3538 </ul> 3539 3540 <p>Here is how you do that:</p> 3541+ 3542 <pre> 3543 typedef int (*HOOK)(); /* pointer to function returning int */ 3544 3545 FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */ 3546 HOOK c_validate) /* character validator */ 3547 3548- 3549 int free_fieldtype(FIELDTYPE *ftype); /* type to free */ 3550 </pre> 3551 3552@@ -3246,6 +3349,7 @@ 3553 pile will be passed to the validation functions.</p> 3554 3555 <p>Here is how you make the association:</p> 3556+ 3557 <pre> 3558 typedef char *(*PTRHOOK)(); /* pointer to function returning (char *) */ 3559 typedef void (*VOIDHOOK)(); /* pointer to function returning void */ 3560@@ -3259,7 +3363,8 @@ 3561 <p>Here is how the storage-management hooks are used:</p> 3562 3563 <dl> 3564- <dt><code>make_str</code></dt> 3565+ <dt><code>make_str</code> 3566+ </dt> 3567 3568 <dd>This function is called by <code>set_field_type()</code>. 3569 It gets one argument, a <code>va_list</code> of the 3570@@ -3268,14 +3373,16 @@ 3571 pointer to a data structure that encapsulates those 3572 arguments.</dd> 3573 3574- <dt><code>copy_str</code></dt> 3575+ <dt><code>copy_str</code> 3576+ </dt> 3577 3578 <dd>This function is called by form library functions that 3579 allocate new field instances. It is expected to take a pile 3580 pointer, copy the pile to allocated storage, and return the 3581 address of the pile copy.</dd> 3582 3583- <dt><code>free_str</code></dt> 3584+ <dt><code>free_str</code> 3585+ </dt> 3586 3587 <dd>This function is called by field- and type-deallocation 3588 routines in the library. It takes a pile pointer argument, and 3589@@ -3296,6 +3403,7 @@ 3590 it is possible to define successor and predecessor functions to 3591 support the <code>REQ_NEXT_CHOICE</code> and 3592 <code>REQ_PREV_CHOICE</code> requests. Here is how:</p> 3593+ 3594 <pre> 3595 typedef int (*INTHOOK)(); /* pointer to function returning int */ 3596 3597@@ -3313,8 +3421,7 @@ 3598 (a legal next or previous value was set) or FALSE to indicate 3599 failure.</p> 3600 3601- <h3><a name="fcustprobs" id="fcustprobs">Avoiding 3602- Problems</a></h3> 3603+ <h3><a name="fcustprobs" id="fcustprobs">Avoiding Problems</a></h3> 3604 3605 <p>The interface for defining custom types is complicated and 3606 tricky. Rather than attempting to create a custom type entirely 3607Index: doc/ncurses-intro.doc 3608--- ncurses-6.1-20190720+/doc/ncurses-intro.doc 2017-05-06 18:12:39.000000000 +0000 3609+++ ncurses-6.1-20190727/doc/ncurses-intro.doc 2019-07-27 11:47:44.000000000 +0000 3610@@ -132,20 +132,33 @@ 3611 A Brief History of Curses 3612 3613 Historically, the first ancestor of curses was the routines written to 3614- provide screen-handling for the game rogue; these used the 3615+ provide screen-handling for the vi editor; these used the 3616 already-existing termcap database facility for describing terminal 3617 capabilities. These routines were abstracted into a documented library 3618- and first released with the early BSD UNIX versions. 3619+ and first released with the early BSD UNIX versions. All of this work 3620+ was done by students at the University of California. 3621 3622- System III UNIX from Bell Labs featured a rewritten and much-improved 3623- curses library. It introduced the terminfo format. Terminfo is based 3624- on Berkeley's termcap database, but contains a number of improvements 3625- and extensions. Parameterized capabilities strings were introduced, 3626- making it possible to describe multiple video attributes, and colors 3627- and to handle far more unusual terminals than possible with termcap. 3628- In the later AT&T System V releases, curses evolved to use more 3629- facilities and offer more capabilities, going far beyond BSD curses in 3630- power and flexibility. 3631+ After graduation, one of those students went to work at AT&T Bell 3632+ Labs, and made an improved termcap library called terminfo (i.e., 3633+ "libterm"). That was subsequently released in System V Release 2. 3634+ Thereafter, other developers added to the terminfo library. For 3635+ instance, a student at Cornell University wrote an improved terminfo 3636+ library as well as a tool (tic) to compile the terminal descriptions. 3637+ As a general rule, AT&T did not identify the developers in the 3638+ source-code or documentation; the tic and infocmp programs are the 3639+ exceptions. 3640+ 3641+ System V Release 3 (System III UNIX) from Bell Labs featured a 3642+ rewritten and much-improved curses library,l along with the tic 3643+ program. 3644+ 3645+ To recap, terminfo is based on Berkeley's termcap database, but 3646+ contains a number of improvements and extensions. Parameterized 3647+ capabilities strings were introduced, making it possible to describe 3648+ multiple video attributes, and colors and to handle far more unusual 3649+ terminals than possible with termcap. In the later AT&T System V 3650+ releases, curses evolved to use more facilities and offer more 3651+ capabilities, going far beyond BSD curses in power and flexibility. 3652 3653 Scope of This Document 3654 3655@@ -2395,7 +2408,6 @@ 3656 FIELDTYPE *new_fieldtype(HOOK f_validate, /* field validator */ 3657 HOOK c_validate) /* character validator */ 3658 3659- 3660 int free_fieldtype(FIELDTYPE *ftype); /* type to free */ 3661 3662 At least one of the arguments of new_fieldtype() must be non-NULL. The 3663Index: include/Caps 3664Prereq: 1.42 3665--- ncurses-6.1-20190720+/include/Caps 2019-04-13 19:54:05.000000000 +0000 3666+++ ncurses-6.1-20190727/include/Caps 2019-07-27 00:36:44.000000000 +0000 3667@@ -29,7 +29,7 @@ 3668 # Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 3669 # and: Eric S. Raymond <esr@snark.thyrsus.com> 3670 # 3671-# $Id: Caps,v 1.42 2019/04/13 19:54:05 tom Exp $ 3672+# $Id: Caps,v 1.44 2019/07/27 00:36:44 tom Exp $ 3673 # 3674 # This is the master termcap/terminfo capability table. 3675 # 3676@@ -843,9 +843,9 @@ 3677 # comma-separated list of capabilities for which there are corresponding keys. 3678 # The `kn' code is accepted but ignored. 3679 # 3680-# The `ma' capability seems to have been designed to map between the rogue(2) 3681-# motion keys (including jkhl) and characters emitted by arrow keys on some 3682-# primitive pre-ANSI terminals. It's so obsolete it's fossilized... 3683+# The `ma' capability was a 4.0BSD feature used by vi version 2. 3684+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. 3685+# Besides being obsolete, that interpretation conflicts with max_attributes. 3686 # 3687 # Here is a description of memory_lock_above and memory_unlock: 3688 # "You can 'freeze' data on the screen by turning on Memory Lock in a line of 3689@@ -871,7 +871,7 @@ 3690 # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V 3691 number_of_function_keys OTkn num kn - - -B-G- count of function keys 3692 other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps 3693-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys 3694+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 3695 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line 3696 # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line 3697 has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I 3698Index: include/Caps.aix4 3699Prereq: 1.14 3700--- ncurses-6.1-20190720+/include/Caps.aix4 2019-04-13 22:14:57.000000000 +0000 3701+++ ncurses-6.1-20190727/include/Caps.aix4 2019-07-27 00:36:44.000000000 +0000 3702@@ -28,7 +28,7 @@ 3703 # 3704 # Author: Thomas Dickey 3705 # 3706-# $Id: Caps.aix4,v 1.14 2019/04/13 22:14:57 tom Exp $ 3707+# $Id: Caps.aix4,v 1.16 2019/07/27 00:36:44 tom Exp $ 3708 # 3709 # This is an adaptation of ncurses' termcap/terminfo capability table, which 3710 # is designed to align with AIX 4.x's terminfo. 3711@@ -945,9 +945,9 @@ 3712 # comma-separated list of capabilities for which there are corresponding keys. 3713 # The `kn' code is accepted but ignored. 3714 # 3715-# The `ma' capability seems to have been designed to map between the rogue(2) 3716-# motion keys (including jkhl) and characters emitted by arrow keys on some 3717-# primitive pre-ANSI terminals. It's so obsolete it's fossilized... 3718+# The `ma' capability was a 4.0BSD feature used by vi version 2. 3719+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. 3720+# Besides being obsolete, that interpretation conflicts with max_attributes. 3721 # 3722 # Here is a description of memory_lock_above and memory_unlock: 3723 # "You can 'freeze' data on the screen by turning on Memory Lock in a line of 3724@@ -973,7 +973,7 @@ 3725 # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V 3726 number_of_function_keys OTkn num kn - - -B-G- count of function keys 3727 other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps 3728-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys 3729+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 3730 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line 3731 # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line 3732 has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I 3733Index: include/Caps.hpux11 3734Prereq: 1.12 3735--- ncurses-6.1-20190720+/include/Caps.hpux11 2019-04-13 22:30:16.000000000 +0000 3736+++ ncurses-6.1-20190727/include/Caps.hpux11 2019-07-27 00:36:44.000000000 +0000 3737@@ -28,7 +28,7 @@ 3738 # 3739 # Author: Thomas Dickey 3740 # 3741-# $Id: Caps.hpux11,v 1.12 2019/04/13 22:30:16 tom Exp $ 3742+# $Id: Caps.hpux11,v 1.14 2019/07/27 00:36:44 tom Exp $ 3743 # 3744 # This is an adaptation of ncurses' termcap/terminfo capability table, which 3745 # is designed to align with HPUX 11.x's terminfo. 3746@@ -859,9 +859,9 @@ 3747 # comma-separated list of capabilities for which there are corresponding keys. 3748 # The `kn' code is accepted but ignored. 3749 # 3750-# The `ma' capability seems to have been designed to map between the rogue(2) 3751-# motion keys (including jkhl) and characters emitted by arrow keys on some 3752-# primitive pre-ANSI terminals. It's so obsolete it's fossilized... 3753+# The `ma' capability was a 4.0BSD feature used by vi version 2. 3754+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. 3755+# Besides being obsolete, that interpretation conflicts with max_attributes. 3756 # 3757 # Here is a description of memory_lock_above and memory_unlock: 3758 # "You can 'freeze' data on the screen by turning on Memory Lock in a line of 3759@@ -887,7 +887,7 @@ 3760 # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V 3761 number_of_function_keys OTkn num kn - - -B-G- count of function keys 3762 other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps 3763-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys 3764+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 3765 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line 3766 # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line 3767 has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I 3768Index: include/Caps.keys 3769Prereq: 1.11 3770--- ncurses-6.1-20190720+/include/Caps.keys 2019-04-13 19:57:03.000000000 +0000 3771+++ ncurses-6.1-20190727/include/Caps.keys 2019-07-27 00:36:44.000000000 +0000 3772@@ -29,7 +29,7 @@ 3773 # Author: Thomas Dickey 3774 # and: Ilya Zakharevich 3775 # 3776-# $Id: Caps.keys,v 1.11 2019/04/13 19:57:03 tom Exp $ 3777+# $Id: Caps.keys,v 1.13 2019/07/27 00:36:44 tom Exp $ 3778 # 3779 # This is an adaptation of ncurses' termcap/terminfo capability table, which 3780 # is illustrates an experimental extension to describe alt-, shift- and 3781@@ -933,9 +933,9 @@ 3782 # comma-separated list of capabilities for which there are corresponding keys. 3783 # The `kn' code is accepted but ignored. 3784 # 3785-# The `ma' capability seems to have been designed to map between the rogue(2) 3786-# motion keys (including jkhl) and characters emitted by arrow keys on some 3787-# primitive pre-ANSI terminals. It's so obsolete it's fossilized... 3788+# The `ma' capability was a 4.0BSD feature used by vi version 2. 3789+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. 3790+# Besides being obsolete, that interpretation conflicts with max_attributes. 3791 # 3792 # Here is a description of memory_lock_above and memory_unlock: 3793 # "You can 'freeze' data on the screen by turning on Memory Lock in a line of 3794@@ -961,7 +961,7 @@ 3795 # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V 3796 number_of_function_keys OTkn num kn - - -B-G- count of function keys 3797 other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps 3798-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys 3799+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 3800 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line 3801 # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line 3802 has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I 3803Index: include/Caps.osf1r5 3804Prereq: 1.10 3805--- ncurses-6.1-20190720+/include/Caps.osf1r5 2019-04-13 19:56:20.000000000 +0000 3806+++ ncurses-6.1-20190727/include/Caps.osf1r5 2019-07-27 00:36:44.000000000 +0000 3807@@ -28,7 +28,7 @@ 3808 # 3809 # Author: Thomas Dickey 3810 # 3811-# $Id: Caps.osf1r5,v 1.10 2019/04/13 19:56:20 tom Exp $ 3812+# $Id: Caps.osf1r5,v 1.12 2019/07/27 00:36:44 tom Exp $ 3813 # 3814 # This is an adaptation of ncurses' termcap/terminfo capability table, which 3815 # is designed to align with OSF/1 version 5 (Tru64) terminfo. 3816@@ -851,9 +851,9 @@ 3817 # comma-separated list of capabilities for which there are corresponding keys. 3818 # The `kn' code is accepted but ignored. 3819 # 3820-# The `ma' capability seems to have been designed to map between the rogue(2) 3821-# motion keys (including jkhl) and characters emitted by arrow keys on some 3822-# primitive pre-ANSI terminals. It's so obsolete it's fossilized... 3823+# The `ma' capability was a 4.0BSD feature used by vi version 2. 3824+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. 3825+# Besides being obsolete, that interpretation conflicts with max_attributes. 3826 # 3827 # Here is a description of memory_lock_above and memory_unlock: 3828 # "You can 'freeze' data on the screen by turning on Memory Lock in a line of 3829@@ -879,7 +879,7 @@ 3830 # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V 3831 number_of_function_keys OTkn num kn - - -B-G- count of function keys 3832 other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps 3833-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys 3834+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 3835 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line 3836 # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line 3837 has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I 3838Index: include/Caps.uwin 3839Prereq: 1.9 3840--- ncurses-6.1-20190720+/include/Caps.uwin 2019-04-13 19:55:29.000000000 +0000 3841+++ ncurses-6.1-20190727/include/Caps.uwin 2019-07-27 00:36:44.000000000 +0000 3842@@ -28,7 +28,7 @@ 3843 # 3844 # Author: Thomas Dickey 3845 # 3846-# $Id: Caps.uwin,v 1.9 2019/04/13 19:55:29 tom Exp $ 3847+# $Id: Caps.uwin,v 1.11 2019/07/27 00:36:44 tom Exp $ 3848 # 3849 # This is an adaptation of ncurses' termcap/terminfo capability table, which 3850 # is designed to align with U/Win's terminfo. 3851@@ -667,9 +667,9 @@ 3852 # comma-separated list of capabilities for which there are corresponding keys. 3853 # The `kn' code is accepted but ignored. 3854 # 3855-# The `ma' capability seems to have been designed to map between the rogue(2) 3856-# motion keys (including jkhl) and characters emitted by arrow keys on some 3857-# primitive pre-ANSI terminals. It's so obsolete it's fossilized... 3858+# The `ma' capability was a 4.0BSD feature used by vi version 2. 3859+# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. 3860+# Besides being obsolete, that interpretation conflicts with max_attributes. 3861 # 3862 # Here is a description of memory_lock_above and memory_unlock: 3863 # "You can 'freeze' data on the screen by turning on Memory Lock in a line of 3864@@ -695,7 +695,7 @@ 3865 # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V 3866 number_of_function_keys OTkn num kn - - -B-G- count of function keys 3867 other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps 3868-arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys 3869+arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 3870 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line 3871 # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line 3872 has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I 3873Index: man/manhtml.externs 3874Prereq: 1.10 3875--- ncurses-6.1-20190720+/man/manhtml.externs 2019-01-20 20:34:57.000000000 +0000 3876+++ ncurses-6.1-20190727/man/manhtml.externs 2019-07-27 11:30:24.000000000 +0000 3877@@ -1,4 +1,4 @@ 3878-# $Id: manhtml.externs,v 1.10 2019/01/20 20:34:57 tom Exp $ 3879+# $Id: manhtml.externs,v 1.12 2019/07/27 11:30:24 tom Exp $ 3880 # Items in this list will not be linked by man2html 3881 #*************************************************************************** 3882 # Copyright (c) 2013-2017,2019 Free Software Foundation, Inc. * 3883@@ -39,7 +39,9 @@ 3884 errno(3) 3885 file(1) 3886 getty(1) 3887+lynx(1) 3888 nvi(1) 3889+mutt(1) 3890 od(1) 3891 printf(3) 3892 profile(5) 3893@@ -47,7 +49,6 @@ 3894 putchar(3) 3895 putwc(3) 3896 read(2) 3897-rogue(1) 3898 scanf(3) 3899 sh(1) 3900 sscanf(3) 3901Index: man/terminfo.head 3902Prereq: 1.36 3903--- ncurses-6.1-20190720+/man/terminfo.head 2019-07-13 23:17:33.000000000 +0000 3904+++ ncurses-6.1-20190727/man/terminfo.head 2019-07-27 11:51:04.000000000 +0000 3905@@ -26,7 +26,7 @@ 3906 .\" authorization. * 3907 .\"*************************************************************************** 3908 .\" 3909-.\" $Id: terminfo.head,v 1.36 2019/07/13 23:17:33 tom Exp $ 3910+.\" $Id: terminfo.head,v 1.38 2019/07/27 11:51:04 tom Exp $ 3911 .TH terminfo 5 "" "" "File Formats" 3912 .ds n 5 3913 .ds d @TERMINFO@ 3914@@ -58,16 +58,23 @@ 3915 \*d/*/* 3916 .SH DESCRIPTION 3917 .I Terminfo 3918-is a data base describing terminals, used by screen-oriented programs such as 3919+is a data base describing terminals, 3920+used by screen-oriented programs such as 3921 \fBnvi\fR(1), 3922-\fBrogue\fR(1) 3923-and libraries such as 3924-\fBcurses\fR(3X). 3925+\fBlynx\fR(1), 3926+\fBmutt\fR(1), 3927+and other curses applications, 3928+using high-level calls to libraries such as \fBcurses\fR(3X). 3929+It is also used via low-level calls by non-curses applications 3930+which may be screen-oriented (such as \fB@CLEAR@\fP(1)) 3931+or non-screen (such as \fB@TABS@\fP(1)). 3932+.PP 3933 .I Terminfo 3934 describes terminals by giving a set of capabilities which they 3935 have, by specifying how to perform screen operations, and by 3936 specifying padding requirements and initialization sequences. 3937-This describes \fBncurses\fR 3938+.PP 3939+This manual describes \fBncurses\fR 3940 version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). 3941 .SS Terminfo Entry Syntax 3942 .PP 3943Index: ncurses/tinfo/add_tries.c 3944Prereq: 1.10 3945--- ncurses-6.1-20190720+/ncurses/tinfo/add_tries.c 2010-12-19 01:31:14.000000000 +0000 3946+++ ncurses-6.1-20190727/ncurses/tinfo/add_tries.c 2019-07-27 22:59:11.000000000 +0000 3947@@ -1,5 +1,5 @@ 3948 /**************************************************************************** 3949- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * 3950+ * Copyright (c) 1998-2010,2019 Free Software Foundation, Inc. * 3951 * * 3952 * Permission is hereby granted, free of charge, to any person obtaining a * 3953 * copy of this software and associated documentation files (the * 3954@@ -39,7 +39,7 @@ 3955 3956 #include <curses.priv.h> 3957 3958-MODULE_ID("$Id: add_tries.c,v 1.10 2010/12/19 01:31:14 tom Exp $") 3959+MODULE_ID("$Id: add_tries.c,v 1.11 2019/07/27 22:59:11 tom Exp $") 3960 3961 #define SET_TRY(dst,src) if ((dst->ch = *src++) == 128) dst->ch = '\0' 3962 #define CMP_TRY(a,b) ((a)? (a == b) : (b == 128)) 3963@@ -109,6 +109,7 @@ 3964 savedptr = ptr->child; 3965 free(ptr); 3966 } 3967+ *tree = NULL; 3968 returnCode(ERR); 3969 } 3970 3971Index: ncurses/tinfo/make_hash.c 3972Prereq: 1.27 3973--- ncurses-6.1-20190720+/ncurses/tinfo/make_hash.c 2019-07-20 20:14:46.000000000 +0000 3974+++ ncurses-6.1-20190727/ncurses/tinfo/make_hash.c 2019-07-27 23:06:54.000000000 +0000 3975@@ -43,7 +43,7 @@ 3976 3977 #include <ctype.h> 3978 3979-MODULE_ID("$Id: make_hash.c,v 1.27 2019/07/20 20:14:46 tom Exp $") 3980+MODULE_ID("$Id: make_hash.c,v 1.28 2019/07/27 23:06:54 tom Exp $") 3981 3982 /* 3983 * _nc_make_hash_table() 3984@@ -220,11 +220,17 @@ 3985 static char * 3986 get_type(int type_mask) 3987 { 3988- static char result[40]; 3989+ static char result[80]; 3990 unsigned n; 3991 _nc_STRCPY(result, L_PAREN, sizeof(result)); 3992 for (n = 0; n < 3; ++n) { 3993 if ((1 << n) & type_mask) { 3994+ size_t want = 5 + strlen(typenames[n]); 3995+ if (want > sizeof(result)) { 3996+ fprintf(stderr, "Buffer is not large enough for %s + %s\n", 3997+ result, typenames[n]); 3998+ exit(EXIT_FAILURE); 3999+ } 4000 if (result[1]) 4001 _nc_STRCAT(result, "|", sizeof(result)); 4002 _nc_STRCAT(result, "1<<", sizeof(result)); 4003Index: package/debian-mingw/changelog 4004--- ncurses-6.1-20190720+/package/debian-mingw/changelog 2019-07-20 10:26:30.000000000 +0000 4005+++ ncurses-6.1-20190727/package/debian-mingw/changelog 2019-07-26 23:10:14.000000000 +0000 4006@@ -1,8 +1,8 @@ 4007-ncurses6 (6.1+20190720) unstable; urgency=low 4008+ncurses6 (6.1+20190727) unstable; urgency=low 4009 4010 * latest weekly patch 4011 4012- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 20 Jul 2019 06:26:30 -0400 4013+ -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 26 Jul 2019 19:10:14 -0400 4014 4015 ncurses6 (5.9-20131005) unstable; urgency=low 4016 4017Index: package/debian-mingw64/changelog 4018--- ncurses-6.1-20190720+/package/debian-mingw64/changelog 2019-07-20 10:26:30.000000000 +0000 4019+++ ncurses-6.1-20190727/package/debian-mingw64/changelog 2019-07-26 23:10:14.000000000 +0000 4020@@ -1,8 +1,8 @@ 4021-ncurses6 (6.1+20190720) unstable; urgency=low 4022+ncurses6 (6.1+20190727) unstable; urgency=low 4023 4024 * latest weekly patch 4025 4026- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 20 Jul 2019 06:26:30 -0400 4027+ -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 26 Jul 2019 19:10:14 -0400 4028 4029 ncurses6 (5.9-20131005) unstable; urgency=low 4030 4031Index: package/debian/changelog 4032--- ncurses-6.1-20190720+/package/debian/changelog 2019-07-20 10:26:30.000000000 +0000 4033+++ ncurses-6.1-20190727/package/debian/changelog 2019-07-26 23:10:14.000000000 +0000 4034@@ -1,8 +1,8 @@ 4035-ncurses6 (6.1+20190720) unstable; urgency=low 4036+ncurses6 (6.1+20190727) unstable; urgency=low 4037 4038 * latest weekly patch 4039 4040- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 20 Jul 2019 06:26:30 -0400 4041+ -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 26 Jul 2019 19:10:14 -0400 4042 4043 ncurses6 (5.9-20120608) unstable; urgency=low 4044 4045Index: package/mingw-ncurses.nsi 4046Prereq: 1.342 4047--- ncurses-6.1-20190720+/package/mingw-ncurses.nsi 2019-07-20 10:26:30.000000000 +0000 4048+++ ncurses-6.1-20190727/package/mingw-ncurses.nsi 2019-07-26 23:10:14.000000000 +0000 4049@@ -1,4 +1,4 @@ 4050-; $Id: mingw-ncurses.nsi,v 1.342 2019/07/20 10:26:30 tom Exp $ 4051+; $Id: mingw-ncurses.nsi,v 1.343 2019/07/26 23:10:14 tom Exp $ 4052 4053 ; TODO add examples 4054 ; TODO bump ABI to 6 4055@@ -10,7 +10,7 @@ 4056 !define VERSION_MAJOR "6" 4057 !define VERSION_MINOR "1" 4058 !define VERSION_YYYY "2019" 4059-!define VERSION_MMDD "0720" 4060+!define VERSION_MMDD "0727" 4061 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD} 4062 4063 !define MY_ABI "5" 4064Index: package/mingw-ncurses.spec 4065--- ncurses-6.1-20190720+/package/mingw-ncurses.spec 2019-07-20 10:26:30.000000000 +0000 4066+++ ncurses-6.1-20190727/package/mingw-ncurses.spec 2019-07-26 23:10:14.000000000 +0000 4067@@ -3,7 +3,7 @@ 4068 Summary: shared libraries for terminal handling 4069 Name: mingw32-ncurses6 4070 Version: 6.1 4071-Release: 20190720 4072+Release: 20190727 4073 License: X11 4074 Group: Development/Libraries 4075 Source: ncurses-%{version}-%{release}.tgz 4076Index: package/ncurses.spec 4077--- ncurses-6.1-20190720+/package/ncurses.spec 2019-07-20 10:26:30.000000000 +0000 4078+++ ncurses-6.1-20190727/package/ncurses.spec 2019-07-26 23:10:14.000000000 +0000 4079@@ -1,7 +1,7 @@ 4080 Summary: shared libraries for terminal handling 4081 Name: ncurses6 4082 Version: 6.1 4083-Release: 20190720 4084+Release: 20190727 4085 License: X11 4086 Group: Development/Libraries 4087 Source: ncurses-%{version}-%{release}.tgz 4088Index: package/ncursest.spec 4089--- ncurses-6.1-20190720+/package/ncursest.spec 2019-07-20 10:26:30.000000000 +0000 4090+++ ncurses-6.1-20190727/package/ncursest.spec 2019-07-26 23:10:14.000000000 +0000 4091@@ -1,7 +1,7 @@ 4092 Summary: Curses library with POSIX thread support. 4093 Name: ncursest6 4094 Version: 6.1 4095-Release: 20190720 4096+Release: 20190727 4097 License: X11 4098 Group: Development/Libraries 4099 Source: ncurses-%{version}-%{release}.tgz 4100Index: progs/ktrace.out 4101Binary files /dev/null and ncurses-6.1-20190727/progs/ktrace.out differ 4102Index: progs/tic.c 4103Prereq: 1.277 4104--- ncurses-6.1-20190720+/progs/tic.c 2019-06-29 23:23:22.000000000 +0000 4105+++ ncurses-6.1-20190727/progs/tic.c 2019-07-27 22:44:21.000000000 +0000 4106@@ -48,7 +48,7 @@ 4107 #include <parametrized.h> 4108 #include <transform.h> 4109 4110-MODULE_ID("$Id: tic.c,v 1.277 2019/06/29 23:23:22 tom Exp $") 4111+MODULE_ID("$Id: tic.c,v 1.278 2019/07/27 22:44:21 tom Exp $") 4112 4113 #define STDIN_NAME "<stdin>" 4114 4115@@ -1024,10 +1024,14 @@ 4116 if (!quiet) { 4117 (void) fseek(tmp_fp, qp->cstart, SEEK_SET); 4118 while (j-- > 0) { 4119- if (infodump) 4120- (void) putchar(fgetc(tmp_fp)); 4121- else 4122- put_translate(fgetc(tmp_fp)); 4123+ int ch = fgetc(tmp_fp); 4124+ if (ch == EOF || ferror(tmp_fp)) { 4125+ break; 4126+ } else if (infodump) { 4127+ (void) putchar(ch); 4128+ } else { 4129+ put_translate(ch); 4130+ } 4131 } 4132 } 4133 4134