.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tput.1,v 1.50 2017/01/07 23:03:28 tom Exp $
+.\" $Id: tput.1,v 1.57 2017/11/20 01:07:02 tom Exp $
.TH @TPUT@ 1 ""
.ds d @TERMINFO@
.ds n 1
.ie \n(.g .ds '' \(rq
.el .ds '' ''
.de bP
-.IP \(bu 4
+.ie n .IP \(bu 4
+.el .IP \(bu 2
..
.SH NAME
\fB@TPUT@\fR, \fBreset\fR \- initialize a terminal or query terminfo database
.SH SYNOPSIS
\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fIcapname\fR [\fIparameters\fR]
.br
-\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBclear\fR
+\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] [\fB\-x\fP] \fBclear\fR
.br
\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBinit\fR
.br
and the \fIcapname\fR associated with each, see \fBterminfo\fR(5).
.SS Options
.TP
-\fB\-T\fR\fItype\fR
-indicates the \fItype\fR of terminal.
-Normally this option is
-unnecessary, because the default is taken from the environment
-variable \fBTERM\fR.
-If \fB\-T\fR is specified, then the shell
-variables \fBLINES\fR and \fBCOLUMNS\fR will also be ignored.
-.TP
\fB\-S\fR
allows more than one capability per invocation of \fB@TPUT@\fR. The
capabilities must be passed to \fB@TPUT@\fR from the standard input
meaning of the \fB0\fR and \fB1\fR boolean and string exit codes (see the
EXIT CODES section).
.IP
-Again, \fB@TPUT@\fR uses a table and the presence of parameters in its input
+Because some capabilities may use
+\fIstring\fP parameters rather than \fInumbers\fP,
+\fB@TPUT@\fR uses a table and the presence of parameters in its input
to decide whether to use \fBtparm\fR(3X),
and how to interpret the parameters.
.TP
+\fB\-T\fR\fItype\fR
+indicates the \fItype\fR of terminal.
+Normally this option is
+unnecessary, because the default is taken from the environment
+variable \fBTERM\fR.
+If \fB\-T\fR is specified, then the shell
+variables \fBLINES\fR and \fBCOLUMNS\fR will also be ignored.
+.TP
\fB\-V\fR
reports the version of ncurses which was used in this program, and exits.
+.TP
+.B \-x
+do not attempt to clear the terminal's scrollback buffer
+using the extended \*(``E3\*('' capability.
.SS Commands
+A few commands (\fBinit\fP, \fBreset\fP and \fBlongname\fP) are
+special; they are defined by the \fB@TPUT@\fP program.
+The others are the names of \fIcapabilities\fP from the terminal database
+(see \fBterminfo\fR(5) for a list).
+Although \fBinit\fP and \fBreset\fP resemble capability names,
+\fB@TPUT@\fP uses several capabilities to perform these special functions.
.TP
\fIcapname\fR
-indicates the capability from the \fBterminfo\fR database. When
-\fBtermcap\fR support is compiled in, the \fBtermcap\fR name for
-the capability is also accepted.
+indicates the capability from the terminal database.
.IP
If the capability is a string that takes parameters, the arguments
following the capability will be used as parameters for the string.
.IP
Most parameters are numbers.
-Only a few terminfo capabilities require string parameters;
+Only a few terminal capabilities require string parameters;
\fB@TPUT@\fR uses a table to decide which to pass as strings.
Normally \fB@TPUT@\fR uses \fBtparm\fR(3X) to perform the substitution.
If no parameters are given for the capability,
\fB@TPUT@\fR writes the string without performing the substitution.
.TP
\fBinit\fR
-If the \fBterminfo\fR database is present and an entry for the user's
+If the terminal database is present and an entry for the user's
terminal exists (see \fB\-T\fR\fItype\fR, above), the following will
occur:
.RS
.bP
standard input and
.bP
-ultimately \*(lq/dev/tty\*(rq
+ultimately \*(``/dev/tty\*(''
.RE
.IP
to obtain terminal settings.
Otherwise, \fBreset\fR acts identically to \fBinit\fR.
.TP
\fBlongname\fR
-If the \fBterminfo\fR database is present and an entry for the
+If the terminal database is present and an entry for the
user's terminal exists (see \fB\-T\fR\fItype\fR above), then the long name
of the terminal will be put out. The long name is the last
name in the first line of the terminal's description in the
.TP 5
\fB@TPUT@ cup 0 0\fR
Send the sequence to move the cursor to row \fB0\fR, column \fB0\fR
-(the upper left corner of the screen, usually known as the \*(lqhome\*(rq
+(the upper left corner of the screen, usually known as the \*(``home\*(''
cursor position).
.TP 5
\fB@TPUT@ clear\fR
whose \fBinit\fP and \fBreset\fP subcommands
(more than half the program) were incorporated from
the \fBreset\fP feature of BSD \fBtset\fP written by Eric Allman.
-Later the corresponding source code for \fIreset\fP
-was removed from the BSD \fBtset\fP
-(in June 1993, released in 4.4BSD-Lite a year later).
.PP
Keith Bostic replaced the BSD \fBtput\fP command in 1989 with a new implementation
based on the AT&T System V program \fBtput\fP.
Also, Bostic's BSD \fBtput\fP did not modify the terminal I/O modes
as the earlier BSD \fBtset\fP had done.
.PP
-At the same time, Bostic added a shell script named \*(lqclear\*(rq,
+At the same time, Bostic added a shell script named \*(``clear\*('',
which used \fBtput\fP to clear the screen.
.PP
Both of these appeared in 4.4BSD,
-becoming the \*(lqmodern\*(rq BSD implementation of \fBtput\fP.
+becoming the \*(``modern\*('' BSD implementation of \fBtput\fP.
+.PP
+This implementation of \fBtput\fP began from a different source than
+AT&T or BSD: Ross Ridge's \fImytinfo\fP package, published on
+\fIcomp.sources.unix\fP in December 1992.
+Ridge's program made more sophisticated use of the terminal capabilities
+than the BSD program.
+Eric Raymond used the \fBtput\fP program
+(and other parts of \fImytinfo\fP) 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.
.SH PORTABILITY
.PP
This implementation of \fBtput\fP differs from AT&T \fBtput\fP in
The AT&T implementation's \fBinit\fP and \fBreset\fP commands
use the BSD (4.1c) \fBtset\fP source, which manipulates terminal modes.
It successively tries standard output, standard error, standard input
-before falling back to \*(lq/dev/tty\*(rq and finally just assumes
+before falling back to \*(``/dev/tty\*('' and finally just assumes
a 1200Bd terminal.
When updating terminal modes, it ignores errors.
.IP
the standard \fIcapname\fR operands, and an internal library
function to analyze nonstandard \fIcapname\fR operands.
.PP
+This implementation (unlike others) can accept both \fItermcap\fP
+and \fIterminfo\fP names for the \fIcapname\fP feature,
+if
+\fItermcap\fR support is compiled in.
+However, the predefined \fItermcap\fP and \fIterminfo\fP names have two
+ambiguities in this case (and the \fIterminfo\fP name is assumed):
+.bP
+The \fItermcap\fP name \fBdl\fP corresponds to
+the \fIterminfo\fP name \fBdl1\fP (delete one line).
+.br
+The \fIterminfo\fP name \fBdl\fP corresponds to
+the \fItermcap\fP name \fBDL\fP (delete a given number of lines).
+.bP
+The \fItermcap\fP name \fBed\fP corresponds to
+the \fIterminfo\fP name \fBrmdc\fP (end delete mode).
+.br
+The \fIterminfo\fP name \fBed\fP corresponds to
+the \fItermcap\fP name \fBcd\fP (clear to end of screen).
+.PP
The \fBlongname\fR and \fB\-S\fR options, and the parameter-substitution
features used in the \fBcup\fR example,
were not supported in BSD curses before 4.3reno (1989) or in