+ to obtain terminal settings. Having retrieved these set-
+ tings, <STRONG>tput</STRONG> remembers which file descriptor to use when
+ updating settings.
+
+ (2) if the window size cannot be obtained from the operating
+ system, but the terminal description (or environment, e.g.,
+ <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> variables specify this), update the oper-
+ ating system's notion of the window size.
+
+ (3) the terminal modes will be updated:
+
+ <STRONG>o</STRONG> any delays (e.g., newline) specified in the entry will
+ be set in the tty driver,
+
+ <STRONG>o</STRONG> tabs expansion will be turned on or off according to
+ the specification in the entry, and
+
+ <STRONG>o</STRONG> if tabs are not expanded, standard tabs will be set
+ (every 8 spaces).
+
+ (4) if present, the terminal's initialization strings will be
+ output as detailed in the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> section on <EM>Tabs</EM> <EM>and</EM>
+ <EM>Initialization</EM>,
+
+ (5) output is flushed.
+
+ If an entry does not contain the information needed for any of
+ these activities, that activity will silently be skipped.
+
+ <STRONG>reset</STRONG> This is similar to <STRONG>init</STRONG>, with two differences:
+
+ (1) before any other initialization, the terminal modes will be
+ reset to a "sane" state:
+
+ <STRONG>o</STRONG> set cooked and echo modes,
+
+ <STRONG>o</STRONG> turn off cbreak and raw modes,
+
+ <STRONG>o</STRONG> turn on newline translation and
+
+ <STRONG>o</STRONG> reset any unset special characters to their default
+ values
+
+ (2) Instead of putting out <EM>initialization</EM> strings, the termi-
+ nal's <EM>reset</EM> strings will be output if present (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>,
+ <STRONG>rs3</STRONG>, <STRONG>rf</STRONG>). If the <EM>reset</EM> strings are not present, but <EM>ini-</EM>
+ <EM>tialization</EM> strings are, the <EM>initialization</EM> strings will be
+ output.
+
+ Otherwise, <STRONG>reset</STRONG> acts identically to <STRONG>init</STRONG>.
+
+ <STRONG>longname</STRONG>
+ If the terminal database is present and an entry for the user's
+ terminal exists (see <STRONG>-T</STRONG><EM>type</EM> 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 <STRONG>terminfo</STRONG> data-
+ base [see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>].
+
+
+</PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE>
+ <STRONG>tput</STRONG> handles the <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands specially: it allows
+ for the possibility that it is invoked by a link with those names.
+
+ If <STRONG>tput</STRONG> is invoked by a link named <STRONG>reset</STRONG>, this has the same effect as
+ <STRONG>tput</STRONG> <STRONG>reset</STRONG>. The <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> utility also treats a link named <STRONG>reset</STRONG> spe-
+ cially.
+
+ Before ncurses 6.1, the two utilities were different from each other:
+
+ <STRONG>o</STRONG> <STRONG>tset</STRONG> utility reset the terminal modes and special characters (not
+ done with <STRONG>tput</STRONG>).
+
+ <STRONG>o</STRONG> On the other hand, <STRONG>tset</STRONG>'s repertoire of terminal capabilities for
+ resetting the terminal was more limited, i.e., only <STRONG>reset_1string</STRONG>,
+ <STRONG>reset_2string</STRONG> and <STRONG>reset_file</STRONG> in contrast to the tab-stops and mar-
+ gins which are set by this utility.
+
+ <STRONG>o</STRONG> The <STRONG>reset</STRONG> program is usually an alias for <STRONG>tset</STRONG>, because of this
+ difference with resetting terminal modes and special characters.
+
+ With the changes made for ncurses 6.1, the <EM>reset</EM> feature of the two
+ programs is (mostly) the same. A few differences remain:
+
+ <STRONG>o</STRONG> The <STRONG>tset</STRONG> program waits one second when resetting, in case it hap-
+ pens to be a hardware terminal.
+
+ <STRONG>o</STRONG> The two programs write the terminal initialization strings to dif-
+ ferent streams (i.e., the standard error for <STRONG>tset</STRONG> and the standard
+ output for <STRONG>tput</STRONG>).
+
+ <STRONG>Note:</STRONG> although these programs write to different streams, redirect-
+ ing their output to a file will capture only part of their actions.
+ The changes to the terminal modes are not affected by redirecting
+ the output.
+
+ If <STRONG>tput</STRONG> is invoked by a link named <STRONG>init</STRONG>, this has the same effect as
+ <STRONG>tput</STRONG> <STRONG>init</STRONG>. Again, you are less likely to use that link because another
+ program named <STRONG>init</STRONG> has a more well-established use.
+
+
+</PRE><H3><a name="h3-Terminal-Size">Terminal Size</a></H3><PRE>
+ Besides the special commands (e.g., <STRONG>clear</STRONG>), tput treats certain ter-
+ minfo capabilities specially: <STRONG>lines</STRONG> and <STRONG>columns</STRONG>. tput calls
+ <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to obtain the terminal size:
+
+ <STRONG>o</STRONG> first, it gets the size from the terminal database (which generally
+ is not provided for terminal emulators which do not have a fixed
+ window size)
+
+ <STRONG>o</STRONG> then it asks the operating system for the terminal's size (which
+ generally works, unless connecting via a serial line which does not
+ support <EM>NAWS</EM>: negotiations about window size).
+
+ <STRONG>o</STRONG> finally, it inspects the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG>
+ which may override the terminal size.
+
+ If the <STRONG>-T</STRONG> option is given tput ignores the environment variables by
+ calling <STRONG>use_tioctl(TRUE)</STRONG>, relying upon the operating system (or
+ finally, the terminal database).
+
+
+</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
+ <STRONG>tput</STRONG> <STRONG>init</STRONG>
+ Initialize the terminal according to the type of terminal in the
+ environmental variable <STRONG>TERM</STRONG>. This command should be included in
+ everyone's .profile after the environmental variable <STRONG>TERM</STRONG> has been
+ exported, as illustrated on the <STRONG>profile(5)</STRONG> manual page.
+
+ <STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG>
+ Reset an AT&T 5620 terminal, overriding the type of terminal in
+ the environmental variable <STRONG>TERM</STRONG>.
+
+ <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>0</STRONG> <STRONG>0</STRONG>
+ Send the sequence to move the cursor to row <STRONG>0</STRONG>, column <STRONG>0</STRONG> (the upper
+ left corner of the screen, usually known as the "home" cursor
+ position).
+
+ <STRONG>tput</STRONG> <STRONG>clear</STRONG>
+ Echo the clear-screen sequence for the current terminal.
+
+ <STRONG>tput</STRONG> <STRONG>cols</STRONG>
+ Print the number of columns for the current terminal.
+
+ <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>cols</STRONG>
+ Print the number of columns for the 450 terminal.
+
+ <STRONG>bold=`tput</STRONG> <STRONG>smso`</STRONG> <STRONG>offbold=`tput</STRONG> <STRONG>rmso`</STRONG>
+ Set the shell variables <STRONG>bold</STRONG>, to begin stand-out mode sequence,
+ and <STRONG>offbold</STRONG>, to end standout mode sequence, for the current termi-
+ nal. This might be followed by a prompt: <STRONG>echo</STRONG> <STRONG>"${bold}Please</STRONG> <STRONG>type</STRONG>
+ <STRONG>in</STRONG> <STRONG>your</STRONG> <STRONG>name:</STRONG> <STRONG>${offbold}\c"</STRONG>
+
+ <STRONG>tput</STRONG> <STRONG>hc</STRONG>
+ Set exit code to indicate if the current terminal is a hard copy
+ terminal.
+
+ <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>23</STRONG> <STRONG>4</STRONG>
+ Send the sequence to move the cursor to row 23, column 4.
+
+ <STRONG>tput</STRONG> <STRONG>cup</STRONG>
+ Send the terminfo string for cursor-movement, with no parameters
+ substituted.
+
+ <STRONG>tput</STRONG> <STRONG>longname</STRONG>
+ Print the long name from the <STRONG>terminfo</STRONG> database for the type of
+ terminal specified in the environmental variable <STRONG>TERM</STRONG>.
+
+ <STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG><<!</STRONG>
+ <STRONG>></STRONG> <STRONG>clear</STRONG>
+ <STRONG>></STRONG> <STRONG>cup</STRONG> <STRONG>10</STRONG> <STRONG>10</STRONG>
+ <STRONG>></STRONG> <STRONG>bold</STRONG>
+ <STRONG>></STRONG> <STRONG>!</STRONG>
+
+ This example shows <STRONG>tput</STRONG> processing several capabilities in one
+ invocation. It clears the screen, moves the cursor to position
+ 10, 10 and turns on bold (extra bright) mode. The list is termi-
+ nated by an exclamation mark (<STRONG>!</STRONG>) on a line by itself.
+
+
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+ <STRONG>/usr/share/terminfo</STRONG>
+ compiled terminal description database
+
+ <STRONG>/usr/share/tabset/*</STRONG>
+ tab settings for some terminals, in a format appropriate to be
+ output to the terminal (escape sequences that set margins and
+ tabs); for more information, see the <EM>Tabs</EM> <EM>and</EM> <EM>Initialization</EM>,
+ section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+
+
+</PRE><H2><a name="h2-EXIT-CODES">EXIT CODES</a></H2><PRE>
+ If the <STRONG>-S</STRONG> option is used, <STRONG>tput</STRONG> checks for errors from each line, and if
+ any errors are found, will set the exit code to 4 plus the number of
+ lines with errors. If no errors are found, the exit code is <STRONG>0</STRONG>. No
+ indication of which line failed can be given so exit code <STRONG>1</STRONG> will never
+ appear. Exit codes <STRONG>2</STRONG>, <STRONG>3</STRONG>, and <STRONG>4</STRONG> retain their usual interpretation. If
+ the <STRONG>-S</STRONG> option is not used, the exit code depends on the type of <EM>cap-</EM>
+ <EM>name</EM>:
+
+ <EM>boolean</EM>
+ a value of <STRONG>0</STRONG> is set for TRUE and <STRONG>1</STRONG> for FALSE.
+
+ <EM>string</EM> a value of <STRONG>0</STRONG> is set if the <EM>capname</EM> is defined for this termi-
+ nal <EM>type</EM> (the value of <EM>capname</EM> is returned on standard out-
+ put); a value of <STRONG>1</STRONG> is set if <EM>capname</EM> is not defined for this
+ terminal <EM>type</EM> (nothing is written to standard output).
+
+ <EM>integer</EM>
+ a value of <STRONG>0</STRONG> is always set, whether or not <EM>capname</EM> is defined
+ for this terminal <EM>type</EM>. To determine if <EM>capname</EM> is defined
+ for this terminal <EM>type</EM>, the user must test the value written
+ to standard output. A value of <STRONG>-1</STRONG> means that <EM>capname</EM> is not
+ defined for this terminal <EM>type</EM>.
+
+ <EM>other</EM> <STRONG>reset</STRONG> or <STRONG>init</STRONG> may fail to find their respective files. In
+ that case, the exit code is set to 4 + <STRONG>errno</STRONG>.
+
+ Any other exit code indicates an error; see the DIAGNOSTICS section.
+
+
+</PRE><H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE>
+ <STRONG>tput</STRONG> prints the following error messages and sets the corresponding
+ exit codes.