X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Ftput.1.html;h=961edcb1a4a24f6ed8f67137abe2c933337295be;hp=98234a9ccbae0ac68d869327aa9b8e558e22f8d0;hb=a816c8dae437106bbf1661304240ff568ae3efef;hpb=45a2b5bc1a4536173178e9907feb268c708797c7 diff --git a/doc/html/man/tput.1.html b/doc/html/man/tput.1.html index 98234a9c..961edcb1 100644 --- a/doc/html/man/tput.1.html +++ b/doc/html/man/tput.1.html @@ -1,4 +1,4 @@ - @@ -374,7 +374,7 @@ --------------------------------------------------------------------- 0 (capname is a numeric variable that is not specified in the terminfo(5) database for this terminal type, e.g. - tput -T450 lines and tput -T2621 xmc) + tput -T450 lines and tput -Thp2621 xmc) 1 no error message is printed, see the EXIT CODES section. 2 usage error 3 unknown terminal type or no terminfo database @@ -387,51 +387,62 @@ The tput command was begun by Bill Joy in 1980. The initial version only cleared the screen. - AT&T System V provided a different tput command, whose init and reset - subcommands (more than half the program) were incorporated from the - reset feature of BSD tset written by Eric Allman. + AT&T System V provided a different tput command: - Keith Bostic replaced the BSD tput command in 1989 with a new - implementation based on the AT&T System V program tput. Like the AT&T - program, Bostic's version accepted some parameters named for terminfo - capabilities (clear, init, longname and reset). However (because he - had only termcap available), it accepted termcap names for other - capabilities. Also, Bostic's BSD tput did not modify the terminal I/O + o SVr2 provided a rudimentary tput which checked the parameter + against each predefined capability and returned the corresponding + value. This version of tput did not use tparm(3x) for the + capabilities which are parameterized. + + o SVr3 replaced that, a year later, by a more extensive program whose + init and reset subcommands (more than half the program) were + incorporated from the reset feature of BSD tset written by Eric + Allman. + + o SVr4 added color initialization using the orig_colors and + orig_pairs capabilities in the init subcommand. + + Keith Bostic replaced the BSD tput command in 1989 with a new + implementation based on the AT&T System V program tput. Like the AT&T + program, Bostic's version accepted some parameters named for terminfo + capabilities (clear, init, longname and reset). However (because he + had only termcap available), it accepted termcap names for other + capabilities. Also, Bostic's BSD tput did not modify the terminal I/O modes as the earlier BSD tset had done. At the same time, Bostic added a shell script named "clear", which used tput to clear the screen. - Both of these appeared in 4.4BSD, becoming the "modern" BSD + Both of these appeared in 4.4BSD, becoming the "modern" BSD implementation of tput. - This implementation of tput began from a different source than AT&T or - BSD: Ross Ridge's mytinfo package, published on comp.sources.unix in - December 1992. Ridge's program made more sophisticated use of the - terminal capabilities than the BSD program. Eric Raymond used that - tput program (and other parts of mytinfo) in ncurses in June 1995. - Using the portions dealing with terminal capabilities almost without - change, Raymond made improvements to the way the command-line + This implementation of tput began from a different source than AT&T or + BSD: Ross Ridge's mytinfo package, published on comp.sources.unix in + December 1992. Ridge's program made more sophisticated use of the + terminal capabilities than the BSD program. Eric Raymond used that + tput program (and other parts of mytinfo) in ncurses in June 1995. + Using the portions dealing with terminal capabilities almost without + change, Raymond made improvements to the way the command-line parameters were handled.
- This implementation of tput differs from AT&T tput in two important + This implementation of tput differs from AT&T tput in two important areas: - o tput capname writes to the standard output. That need not be a - regular terminal. However, the subcommands which manipulate + o tput capname writes to the standard output. That need not be a + regular terminal. However, the subcommands which manipulate terminal modes may not use the standard output. - The AT&T implementation's init and reset commands use the BSD - (4.1c) tset source, which manipulates terminal modes. It - successively tries standard output, standard error, standard input + The AT&T implementation's init and reset commands use the BSD + (4.1c) tset source, which manipulates terminal modes. It + successively tries standard output, standard error, standard input before falling back to "/dev/tty" and finally just assumes a 1200Bd terminal. When updating terminal modes, it ignores errors. - Until changes made after ncurses 6.0, tput did not modify terminal + Until changes made after ncurses 6.0, tput did not modify terminal modes. tput now uses a similar scheme, using functions shared with - tset (and ultimately based on the 4.4BSD tset). If it is not able + tset (and ultimately based on the 4.4BSD tset). If it is not able to open a terminal, e.g., when running in cron, tput will return an error. @@ -439,84 +450,92 @@ of the characters are numeric, or not. Most implementations which provide support for capname operands use - the tparm function to expand parameters in it. That function - expects a mixture of numeric and string parameters, requiring tput + the tparm function to expand parameters in it. That function + expects a mixture of numeric and string parameters, requiring tput to know which type to use. - This implementation uses a table to determine the parameter types + This implementation uses a table to determine the parameter types for the standard capname operands, and an internal library function to analyze nonstandard capname operands. + Besides providing more reliable operation than AT&T's utility, a + portability problem is introduced by this analysis: An OpenBSD + developer adapted the internal library function from ncurses to + port NetBSD's termcap-based tput to terminfo. That had been + modified to interpret multiple commands on a line. Portable + applications should not rely upon this feature; ncurses provides it + to support applications written specifically for OpenBSD. + This implementation (unlike others) can accept both termcap and - terminfo names for the capname feature, if termcap support is compiled - in. However, the predefined termcap and terminfo names have two + terminfo names for the capname feature, if termcap support is compiled + in. However, the predefined termcap and terminfo names have two ambiguities in this case (and the terminfo name is assumed): - o The termcap name dl corresponds to the terminfo name dl1 (delete + o The termcap name dl corresponds to the terminfo name dl1 (delete one line). - The terminfo name dl corresponds to the termcap name DL (delete a + The terminfo name dl corresponds to the termcap name DL (delete a given number of lines). - o The termcap name ed corresponds to the terminfo name rmdc (end + o The termcap name ed corresponds to the terminfo name rmdc (end delete mode). - The terminfo name ed corresponds to the termcap name cd (clear to + The terminfo name ed corresponds to the termcap name cd (clear to end of screen). - The longname and -S options, and the parameter-substitution features - used in the cup example, were not supported in BSD curses before + The longname and -S options, and the parameter-substitution features + used in the cup example, were not supported in BSD curses before 4.3reno (1989) or in AT&T/USL curses before SVr4 (1988). - IEEE Std 1003.1/The Open Group Base Specifications Issue 7 - (POSIX.1-2008) documents only the operands for clear, init and reset. + IEEE Std 1003.1/The Open Group Base Specifications Issue 7 + (POSIX.1-2008) documents only the operands for clear, init and reset. There are a few interesting observations to make regarding that: - o In this implementation, clear is part of the capname support. The - others (init and longname) do not correspond to terminal + o In this implementation, clear is part of the capname support. The + others (init and longname) do not correspond to terminal capabilities. o Other implementations of tput on SVr4-based systems such as - Solaris, IRIX64 and HPUX as well as others such as AIX and Tru64 + Solaris, IRIX64 and HPUX as well as others such as AIX and Tru64 provide support for capname operands. o A few platforms such as FreeBSD recognize termcap names rather than terminfo capability names in their respective tput commands. Since - 2010, NetBSD's tput uses terminfo names. Before that, it (like + 2010, NetBSD's tput uses terminfo names. Before that, it (like FreeBSD) recognized termcap names. - Beginning in 2021, FreeBSD uses the ncurses tput, configured for + Beginning in 2021, FreeBSD uses the ncurses tput, configured for both terminfo (tested first) and termcap (as a fallback). Because (apparently) all of the certified Unix systems support the full - set of capability names, the reasoning for documenting only a few may + set of capability names, the reasoning for documenting only a few may not be apparent. - o X/Open Curses Issue 7 documents tput differently, with capname and + o X/Open Curses Issue 7 documents tput differently, with capname and the other features used in this implementation. - o That is, there are two standards for tput: POSIX (a subset) and - X/Open Curses (the full implementation). POSIX documents a subset - to avoid the complication of including X/Open Curses and the + o That is, there are two standards for tput: POSIX (a subset) and + X/Open Curses (the full implementation). POSIX documents a subset + to avoid the complication of including X/Open Curses and the terminal capabilities database. - o While it is certainly possible to write a tput program without - using curses, none of the systems which have a curses - implementation provide a tput utility which does not provide the + o While it is certainly possible to write a tput program without + using curses, none of the systems which have a curses + implementation provide a tput utility which does not provide the capname feature. X/Open Curses Issue 7 (2009) is the first version to document utilities. However that part of X/Open Curses does not follow existing practice (i.e., Unix features documented in SVID 3): - o It assigns exit code 4 to "invalid operand", which may be the same - as unknown capability. For instance, the source code for Solaris' + o It assigns exit code 4 to "invalid operand", which may be the same + as unknown capability. For instance, the source code for Solaris' xcurses uses the term "invalid" in this case. - o It assigns exit code 255 to a numeric variable that is not + o It assigns exit code 255 to a numeric variable that is not specified in the terminfo database. That likely is a documentation - error, confusing the -1 written to the standard output for an + error, confusing the -1 written to the standard output for an absent or cancelled numeric value versus an (unsigned) exit code. - The various Unix systems (AIX, HPUX, Solaris) use the same exit-codes + The various Unix systems (AIX, HPUX, Solaris) use the same exit-codes as ncurses. NetBSD curses documents different exit codes which do not correspond to @@ -526,7 +545,7 @@
clear(1), stty(1), tabs(1), tset(1), curs_termcap(3x), terminfo(5). - This describes ncurses version 6.2 (patch 20210515). + This describes ncurses version 6.3 (patch 20211021).