.\"***************************************************************************
-.\" Copyright (c) 1998-2013,2016 Free Software Foundation, Inc. *
+.\" Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
.\" copy of this software and associated documentation files (the *
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: tset.1,v 1.42 2016/07/30 21:59:39 tom Exp $
+.\" $Id: tset.1,v 1.48 2017/01/14 20:55:07 tom Exp $
.TH @TSET@ 1 ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
Then, if the terminal type begins with a question mark (\*(``?\*(''), the
user is prompted for confirmation of the terminal type. An empty
response confirms the type, or, another type can be entered to specify
-a new type. Once the terminal type has been determined, the terminfo
-entry for the terminal is retrieved. If no terminfo entry is found
+a new type.
+Once the terminal type has been determined,
+the terminal description for the terminal is retrieved.
+If no terminal description is found
for the type, the user is prompted for another terminal type.
.PP
-Once the terminfo entry is retrieved, the window size, backspace, interrupt
-and line kill characters (among many other things) are set and the terminal
-and tab initialization strings are sent to the standard error output.
+Once the terminal description is retrieved,
+.bP
+if the \*(``\fB\-w\fP\*('' option is enabled, \fB@TSET@\fP may update
+the terminal's window size.
+.IP
+If the window size cannot be obtained from the operating system,
+but the terminal description (or environment, e.g., \fBLINES\fP
+and \fBCOLUMNS\fP variables specify this),
+use this to set the operating system's notion of the window size.
+.bP
+if the \*(``\fB\-c\fP\*('' option is enabled,
+the backspace, interrupt and line kill characters (among many other things) are set
+.bP
+unless the \*(``\fB\-I\fP\*('' option is enabled,
+the terminal
+and tab \fIinitialization\fP strings are sent to the standard error output,
+and \fB@TSET@\fP waits one second (in case a hardware reset was issued).
+.bP
Finally, if the erase, interrupt and line kill characters have changed,
or are not set to their default values, their values are displayed to the
standard error output.
.SS reset - reinitialization
.PP
-When invoked as \fB@RESET@\fR, \fB@TSET@\fR sets cooked and echo modes,
-turns off cbreak and raw modes, turns on newline translation and
-resets any unset special characters to their default values before
-doing the terminal initialization described above. This is useful
-after a program dies leaving a terminal in an abnormal state. Note,
+When invoked as \fB@RESET@\fR, \fB@TSET@\fR sets the terminal
+modes to \*(``sane\*('' values:
+.bP
+sets cooked and echo modes,
+.bP
+turns off cbreak and raw modes,
+.bP
+turns on newline translation and
+.bP
+resets any unset special characters to their default values
+.PP
+before
+doing the terminal initialization described above.
+Also, rather than using the terminal \fIinitialization\fP strings,
+it uses the terminal \fIreset\fP strings.
+.PP
+The \fB@RESET@\fP command is useful
+after a program dies leaving a terminal in an abnormal state:
+.bP
you may have to type
.sp
\fI<LF>\fP\fB@RESET@\fP\fI<LF>\fP
.sp
(the line-feed character is normally control-J) to get the terminal
to work, as carriage-return may no longer work in the abnormal state.
+.bP
Also, the terminal will often not echo the command.
.SH OPTIONS
.PP
reports the version of ncurses which was used in this program, and exits.
.TP
.B \-w
-Resize the window to match the size deduced via \fBsetupterm\fP.
+Resize the window to match the size deduced via \fBsetupterm\fP(3X).
Normally this has no effect,
unless \fBsetupterm\fP is not able to detect the window size.
.PP
any exclamation marks (\*(``!\*('').
.SH HISTORY
.PP
-A \fBreset\fP command appeared in 2BSD (1979), written by Kurt Shoens.
+A \fBreset\fP command appeared in 2BSD (April 1979), written by Kurt Shoens.
+This program set the \fIerase\fP and \fIkill\fP characters
+to \fB^H\fP (backspace) and \fB@\fP respectively.
+Mark Horton improved that in 3BSD (October 1979), adding
+\fIintr\fP, \fIquit\fP, \fIstart\fP/\fIstop\fP and \fIeof\fP characters
+as well as changing the program to avoid modifying any user settings.
+.PP
+Later in 4.1BSD (December 1980),
+Mark Horton added a call to the \fBtset\fP program
+using the \fB\-I\fP and \fB\-Q\fP options, i.e.,
+using that to improve the terminal modes.
+With those options,
+that version of \fBreset\fP did not use the termcap database.
.PP
A separate \fBtset\fP command was provided in 2BSD by Eric Allman.
-While the oldest published source (from 1979) provides both programs,
+While the oldest published source (from 1979)
+provides both \fBtset\fP and \fBreset\fP,
Allman's comments in the 2BSD source code indicate
that he began work in October 1977,
continuing development over the next few years.
.PP
-In 1980, Eric Allman modified \fBtset\fP to provide a \*(lqreset\*(rq
-feature when the program was invoked as \fBreset\fP.
+In September 1980, Eric Allman modified \fBtset\fP,
+adding the code from the existing \*(lqreset\*(rq
+feature when \fBtset\fP was invoked as \fBreset\fP.
+Rather than simply copying the existing program,
+in this merged version, \fBtset\fP used the termcap database
+to do additional (re)initialization of the terminal.
+This version appeared in 4.1cBSD, late in 1982.
+.PP
+Other developers (e.g., Keith Bostic and Jim Bloom)
+continued to modify \fBtset\fP until 4.4BSD was released in 1993.
.PP
The \fBncurses\fR implementation
was lightly adapted from the 4.4BSD sources for a terminfo environment by Eric
X/Open Curses Issue 7 documents \fB@TSET@\fP or \fB@RESET@\fP.
.PP
The AT&T \fBtput\fP utility (AIX, HPUX, Solaris)
-incorporated the terminal-mode manipulation from \fBtset\fP,
+incorporated the terminal-mode manipulation as well as termcap-based features
+such as resetting tabstops from \fBtset\fP in BSD (4.1c),
presumably with the intention of making \fBtset\fP obsolete.
However, each of those systems still provides \fBtset\fP.
In fact, the commonly-used \fBreset\fP utility