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.

PORTABILITY

-       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 @@
 

SEE ALSO

        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).