* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: tput.1,v 1.67 2021/06/17 21:11:08 tom Exp @
+ * @Id: tput.1,v 1.71 2021/09/19 00:34:23 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
---------------------------------------------------------------------
<STRONG>0</STRONG> (<EM>capname</EM> is a numeric variable that is not specified in
the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> database for this terminal type, e.g.
- <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>lines</STRONG> and <STRONG>tput</STRONG> <STRONG>-T2621</STRONG> <STRONG>xmc</STRONG>)
+ <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>lines</STRONG> and <STRONG>tput</STRONG> <STRONG>-Thp2621</STRONG> <STRONG>xmc</STRONG>)
<STRONG>1</STRONG> no error message is printed, see the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> section.
<STRONG>2</STRONG> usage error
<STRONG>3</STRONG> unknown terminal <EM>type</EM> or no <STRONG>terminfo</STRONG> database
The <STRONG>tput</STRONG> command was begun by Bill Joy in 1980. The initial version
only cleared the screen.
- AT&T System V provided a different <STRONG>tput</STRONG> command, whose <STRONG>init</STRONG> and <STRONG>reset</STRONG>
- subcommands (more than half the program) were incorporated from the
- <STRONG>reset</STRONG> feature of BSD <STRONG>tset</STRONG> written by Eric Allman.
+ AT&T System V provided a different <STRONG>tput</STRONG> command:
- Keith Bostic replaced the BSD <STRONG>tput</STRONG> command in 1989 with a new
- implementation based on the AT&T System V program <STRONG>tput</STRONG>. Like the AT&T
- program, Bostic's version accepted some parameters named for <EM>terminfo</EM>
- <EM>capabilities</EM> (<STRONG>clear</STRONG>, <STRONG>init</STRONG>, <STRONG>longname</STRONG> and <STRONG>reset</STRONG>). However (because he
- had only termcap available), it accepted <EM>termcap</EM> <EM>names</EM> for other
- capabilities. Also, Bostic's BSD <STRONG>tput</STRONG> did not modify the terminal I/O
+ <STRONG>o</STRONG> SVr2 provided a rudimentary <STRONG>tput</STRONG> which checked the parameter
+ against each predefined capability and returned the corresponding
+ value. This version of <STRONG>tput</STRONG> did not use <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> for the
+ capabilities which are parameterized.
+
+ <STRONG>o</STRONG> SVr3 replaced that, a year later, by a more extensive program whose
+ <STRONG>init</STRONG> and <STRONG>reset</STRONG> subcommands (more than half the program) were
+ incorporated from the <STRONG>reset</STRONG> feature of BSD <STRONG>tset</STRONG> written by Eric
+ Allman.
+
+ <STRONG>o</STRONG> SVr4 added color initialization using the <EM>orig</EM><STRONG>_</STRONG><EM>colors</EM> and
+ <EM>orig</EM><STRONG>_</STRONG><EM>pairs</EM> capabilities in the <STRONG>init</STRONG> subcommand.
+
+ Keith Bostic replaced the BSD <STRONG>tput</STRONG> command in 1989 with a new
+ implementation based on the AT&T System V program <STRONG>tput</STRONG>. Like the AT&T
+ program, Bostic's version accepted some parameters named for <EM>terminfo</EM>
+ <EM>capabilities</EM> (<STRONG>clear</STRONG>, <STRONG>init</STRONG>, <STRONG>longname</STRONG> and <STRONG>reset</STRONG>). However (because he
+ had only termcap available), it accepted <EM>termcap</EM> <EM>names</EM> for other
+ capabilities. Also, Bostic's BSD <STRONG>tput</STRONG> did not modify the terminal I/O
modes as the earlier BSD <STRONG>tset</STRONG> had done.
At the same time, Bostic added a shell script named "clear", which used
<STRONG>tput</STRONG> 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 <STRONG>tput</STRONG>.
- This implementation of <STRONG>tput</STRONG> began from a different source than AT&T or
- BSD: Ross Ridge's <EM>mytinfo</EM> package, published on <EM>comp.sources.unix</EM> in
- December 1992. Ridge's program made more sophisticated use of the
- terminal capabilities than the BSD program. Eric Raymond used that
- <STRONG>tput</STRONG> program (and other parts of <EM>mytinfo</EM>) 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 <STRONG>tput</STRONG> began from a different source than AT&T or
+ BSD: Ross Ridge's <EM>mytinfo</EM> package, published on <EM>comp.sources.unix</EM> in
+ December 1992. Ridge's program made more sophisticated use of the
+ terminal capabilities than the BSD program. Eric Raymond used that
+ <STRONG>tput</STRONG> program (and other parts of <EM>mytinfo</EM>) 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.
</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
- This implementation of <STRONG>tput</STRONG> differs from AT&T <STRONG>tput</STRONG> in two important
+ This implementation of <STRONG>tput</STRONG> differs from AT&T <STRONG>tput</STRONG> in two important
areas:
- <STRONG>o</STRONG> <STRONG>tput</STRONG> <EM>capname</EM> writes to the standard output. That need not be a
- regular terminal. However, the subcommands which manipulate
+ <STRONG>o</STRONG> <STRONG>tput</STRONG> <EM>capname</EM> 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 <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands use the BSD
- (4.1c) <STRONG>tset</STRONG> source, which manipulates terminal modes. It
- successively tries standard output, standard error, standard input
+ The AT&T implementation's <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands use the BSD
+ (4.1c) <STRONG>tset</STRONG> 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, <STRONG>tput</STRONG> did not modify terminal
+ Until changes made after ncurses 6.0, <STRONG>tput</STRONG> did not modify terminal
modes. <STRONG>tput</STRONG> now uses a similar scheme, using functions shared with
- <STRONG>tset</STRONG> (and ultimately based on the 4.4BSD <STRONG>tset</STRONG>). If it is not able
+ <STRONG>tset</STRONG> (and ultimately based on the 4.4BSD <STRONG>tset</STRONG>). If it is not able
to open a terminal, e.g., when running in <STRONG>cron</STRONG>, <STRONG>tput</STRONG> will return an
error.
of the characters are numeric, or not.
Most implementations which provide support for <EM>capname</EM> operands use
- the <EM>tparm</EM> function to expand parameters in it. That function
- expects a mixture of numeric and string parameters, requiring <STRONG>tput</STRONG>
+ the <EM>tparm</EM> function to expand parameters in it. That function
+ expects a mixture of numeric and string parameters, requiring <STRONG>tput</STRONG>
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 <EM>capname</EM> operands, and an internal library function
to analyze nonstandard <EM>capname</EM> 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
+ allow <STRONG>tput</STRONG> 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 <EM>termcap</EM> and
<EM>terminfo</EM> names for the <EM>capname</EM> feature, if <EM>termcap</EM> support is compiled
in. However, the predefined <EM>termcap</EM> and <EM>terminfo</EM> names have two
</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
<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="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210821).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).