ncurses 6.2 - patch 20210925
authorThomas E. Dickey <dickey@invisible-island.net>
Sat, 25 Sep 2021 22:18:46 +0000 (22:18 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Sat, 25 Sep 2021 22:18:46 +0000 (22:18 +0000)
+ add kbeg to xterm+keypad to accommodate termcap applications -TD
+ add smglp and smgrp to vt420+lrmm, to provide useful data for the
  "tabs" +m option -TD
+ build-fix for gcc 3.4.3 with Solaris10, which does not allow forward
  reference of anonymous struct typedef.
+ modify tput to allow multiple commands per line.
+ minor fixes for tset manpage.

37 files changed:
NEWS
VERSION
dist.mk
doc/html/man/adacurses6-config.1.html
doc/html/man/captoinfo.1m.html
doc/html/man/clear.1.html
doc/html/man/form.3x.html
doc/html/man/infocmp.1m.html
doc/html/man/infotocap.1m.html
doc/html/man/menu.3x.html
doc/html/man/ncurses.3x.html
doc/html/man/ncurses6-config.1.html
doc/html/man/panel.3x.html
doc/html/man/tabs.1.html
doc/html/man/terminfo.5.html
doc/html/man/tic.1m.html
doc/html/man/toe.1m.html
doc/html/man/tput.1.html
doc/html/man/tset.1.html
include/MKterm.h.awk.in
include/curses.h.in
man/tput.1
man/tset.1
misc/terminfo.src
ncurses/base/MKlib_gen.sh
ncurses/curses.priv.h
ncurses/new_pair.h
ncurses/term.priv.h
package/debian-mingw/changelog
package/debian-mingw64/changelog
package/debian/changelog
package/mingw-ncurses.nsi
package/mingw-ncurses.spec
package/ncurses.spec
package/ncursest.spec
progs/toe.c
progs/tput.c

diff --git a/NEWS b/NEWS
index 6da78c94c8e64b20f456761267596c63a50763c9..989bf2363a2e567feaf8ba6dc77f7b0a1adccbf9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -26,7 +26,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.3708 2021/09/11 23:45:11 tom Exp $
+-- $Id: NEWS,v 1.3712 2021/09/24 19:45:04 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -46,6 +46,15 @@ See the AUTHORS file for the corresponding full names.
 Changes through 1.9.9e did not credit all contributions;
 it is not possible to add this information.
 
+20210925
+       + add kbeg to xterm+keypad to accommodate termcap applications -TD
+       + add smglp and smgrp to vt420+lrmm, to provide useful data for the
+         "tabs" +m option -TD
+       + build-fix for gcc 3.4.3 with Solaris10, which does not allow forward
+         reference of anonymous struct typedef.
+       + modify tput to allow multiple commands per line.
+       + minor fixes for tset manpage.
+
 20210911
        + adjust ifdef in test_opaque.c to fix build with ncurses 5.7
        + add testing note for xterm-{hp|sco|sun} -TD
diff --git a/VERSION b/VERSION
index 5a3f4a41dd738eb77a1081e989896a9d6d80c335..5280c093f7fd1a2b664eca002d45888c2b5ca561 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5:0:10 6.2     20210911
+5:0:10 6.2     20210925
diff --git a/dist.mk b/dist.mk
index 8dd1217fbf339fc45a24baafc22e5cb6efa1be4a..951cf83ee5f91954af8ded73fac55c0970605d89 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -26,7 +26,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: dist.mk,v 1.1435 2021/09/11 10:58:38 tom Exp $
+# $Id: dist.mk,v 1.1437 2021/09/25 10:32:30 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -38,7 +38,7 @@ SHELL = /bin/sh
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 6
 NCURSES_MINOR = 2
-NCURSES_PATCH = 20210911
+NCURSES_PATCH = 20210925
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
index 5c55394f957ec85ef7606e2471768bd3518923e3..896a37dc9c298d257141e27b8a0626acb851aea7 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 
index be6529ae717166b3bef196385b5b84d06c1237fe..6c62295d07afbbe4d0e7eda5a7c328211e54e3f4 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index e33f99d31639797cf73229a697827c6c5cc2f939..bb222f9143bfda669f735180b8cab8880de11e28 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 
index 711873385ea9dbfbd3465088b7d59c775e487153..907b12a52004e3bc0ca4fa8b2e166fe68f47452a 100644 (file)
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names  begin  "form_"  for  detailed
        descriptions of the entry points.
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 
index 3ea177c441b4dfcaf7f9fade72f20a0af1fc2d19..18573a0d72ff6910fe66a7702dc1a9734e7d8c75 100644 (file)
 
        https://invisible-island.net/ncurses/tctest.html
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index fcfc4a68e997224b36ead722c4dabf9c844197d5..66c5384494edb20232ae56a5c719182681a455ae 100644 (file)
@@ -91,7 +91,7 @@
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index 43d05693d4f91909a9ced7a56b429d5f54948c24..590b0cea4f7dafb4de7cedc0daa16486705f161a 100644 (file)
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names  begin  "menu_"  for  detailed
        descriptions of the entry points.
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 
index 208269fd5a80d621058476751ab795547adb3d77..6bfb8675c07e85f509ca503744940566655ccd27 100644 (file)
@@ -60,7 +60,7 @@
        method of updating  character  screens  with  reasonable  optimization.
        This  implementation  is  "new  curses"  (ncurses)  and is the approved
        replacement for 4.4BSD classic curses,  which  has  been  discontinued.
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
        The  <STRONG>ncurses</STRONG>  library emulates the curses library of System V Release 4
        UNIX, and XPG4 (X/Open Portability Guide) curses  (also  known  as  XSI
index 0ccec2639d1cc565800c68b64b53aacb8c499e39..12273291f20a7e135280b5176a9d46347594ba86 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 
index 68c333d20501bf9a5c23dab0ea72a6d9ddd17d00..0f61e014b25659183b008d4d9e1f2eba26994048 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index fe7bea6087d49588b8ff6ba790af59aca575c646..dc5cf413717962cd6049fd2bd71f5f795e284cef 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 
index 27fb326ac271fde38a0e02edb36260a4d14d504c..540e7060f7a684492c2b93e8124af9a0191bf4e6 100644 (file)
        have, by specifying how to perform screen operations, and by specifying
        padding requirements and initialization sequences.
 
-       This manual describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This manual describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 </PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
index 608cf0f014ef3b6de6cddf246e84818a69eab1b2..39f1e664a510447ea1c881d31158787be50e2540 100644 (file)
        <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,   <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,   <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,   <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,   <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
        <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index bb79ece55d6b204cda192b195f155c9773babbde..70f0340b18ab6b2f115c362e69dbc62abf0f9efa 100644 (file)
        <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,   <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,   <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,   <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>,   <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
        <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 
index 504a66e4eb8a37d39dd43634990bddbb9519b747..00b0e006803be814fd0d0a28f0439e42113a96d2 100644 (file)
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tput.1,v 1.70 2021/09/04 19:02:50 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
            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&amp;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
+       <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
        ambiguities in this case (and the <EM>terminfo</EM> name is assumed):
 
-       <STRONG>o</STRONG>   The <EM>termcap</EM> name <STRONG>dl</STRONG> corresponds to the <EM>terminfo</EM>  name  <STRONG>dl1</STRONG>  (delete
+       <STRONG>o</STRONG>   The  <EM>termcap</EM>  name  <STRONG>dl</STRONG> corresponds to the <EM>terminfo</EM> name <STRONG>dl1</STRONG> (delete
            one line).
-           The  <EM>terminfo</EM>  name <STRONG>dl</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>DL</STRONG> (delete a
+           The <EM>terminfo</EM> name <STRONG>dl</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>DL</STRONG>  (delete  a
            given number of lines).
 
-       <STRONG>o</STRONG>   The <EM>termcap</EM> name <STRONG>ed</STRONG> corresponds to  the  <EM>terminfo</EM>  name  <STRONG>rmdc</STRONG>  (end
+       <STRONG>o</STRONG>   The  <EM>termcap</EM>  name  <STRONG>ed</STRONG>  corresponds  to the <EM>terminfo</EM> name <STRONG>rmdc</STRONG> (end
            delete mode).
-           The  <EM>terminfo</EM>  name <STRONG>ed</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>cd</STRONG> (clear to
+           The <EM>terminfo</EM> name <STRONG>ed</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>cd</STRONG>  (clear  to
            end of screen).
 
-       The <STRONG>longname</STRONG> and <STRONG>-S</STRONG> options, and  the  parameter-substitution  features
-       used  in  the  <STRONG>cup</STRONG>  example,  were  not  supported in BSD curses before
+       The  <STRONG>longname</STRONG>  and  <STRONG>-S</STRONG> options, and the parameter-substitution features
+       used in the <STRONG>cup</STRONG> example,  were  not  supported  in  BSD  curses  before
        4.3reno (1989) or in AT&amp;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 <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG>.
+       IEEE   Std   1003.1/The   Open   Group   Base  Specifications  Issue  7
+       (POSIX.1-2008) documents only the operands for <STRONG>clear</STRONG>, <STRONG>init</STRONG>  and  <STRONG>reset</STRONG>.
        There are a few interesting observations to make regarding that:
 
-       <STRONG>o</STRONG>   In this implementation, <STRONG>clear</STRONG> is part of the <EM>capname</EM> support.   The
-           others   (<STRONG>init</STRONG>   and   <STRONG>longname</STRONG>)  do  not  correspond  to  terminal
+       <STRONG>o</STRONG>   In  this implementation, <STRONG>clear</STRONG> is part of the <EM>capname</EM> support.  The
+           others  (<STRONG>init</STRONG>  and  <STRONG>longname</STRONG>)  do  not   correspond   to   terminal
            capabilities.
 
        <STRONG>o</STRONG>   Other  implementations  of  <STRONG>tput</STRONG>  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 <EM>capname</EM> operands.
 
        <STRONG>o</STRONG>   A few platforms such as FreeBSD recognize termcap names rather than
            terminfo capability names in their respective <STRONG>tput</STRONG> commands.  Since
-           2010, NetBSD's <STRONG>tput</STRONG> uses terminfo names.   Before  that,  it  (like
+           2010,  NetBSD's  <STRONG>tput</STRONG>  uses  terminfo names.  Before that, it (like
            FreeBSD) recognized termcap names.
 
-           Beginning  in  2021,  FreeBSD uses the ncurses <STRONG>tput</STRONG>, configured for
+           Beginning in 2021, FreeBSD uses the ncurses  <STRONG>tput</STRONG>,  configured  for
            both terminfo (tested first) and termcap (as a fallback).
 
        Because (apparently) <EM>all</EM> 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.
 
-       <STRONG>o</STRONG>   X/Open Curses Issue 7 documents <STRONG>tput</STRONG> differently, with <EM>capname</EM>  and
+       <STRONG>o</STRONG>   X/Open  Curses Issue 7 documents <STRONG>tput</STRONG> differently, with <EM>capname</EM> and
            the other features used in this implementation.
 
-       <STRONG>o</STRONG>   That  is,  there  are  two standards for <STRONG>tput</STRONG>: 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
+       <STRONG>o</STRONG>   That is, there are two standards for <STRONG>tput</STRONG>:  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.
 
-       <STRONG>o</STRONG>   While it is certainly possible to  write  a  <STRONG>tput</STRONG>  program  without
-           using   curses,   none   of   the   systems  which  have  a  curses
-           implementation provide a <STRONG>tput</STRONG> utility which does  not  provide  the
+       <STRONG>o</STRONG>   While  it  is  certainly  possible  to write a <STRONG>tput</STRONG> program without
+           using  curses,  none  of  the   systems   which   have   a   curses
+           implementation  provide  a  <STRONG>tput</STRONG> utility which does not provide the
            <EM>capname</EM> 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):
 
-       <STRONG>o</STRONG>   It  assigns exit code 4 to "invalid operand", which may be the same
-           as <EM>unknown</EM> <EM>capability</EM>.  For instance, the source code for  Solaris'
+       <STRONG>o</STRONG>   It assigns exit code 4 to "invalid operand", which may be the  same
+           as  <EM>unknown</EM> <EM>capability</EM>.  For instance, the source code for Solaris'
            xcurses uses the term "invalid" in this case.
 
-       <STRONG>o</STRONG>   It  assigns  exit  code  255  to  a  numeric  variable  that is not
+       <STRONG>o</STRONG>   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  <STRONG>-1</STRONG>  written  to  the standard output for an
+           error, confusing the <STRONG>-1</STRONG> 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
 </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 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 
index 4d3d03389691eebceb44fa3ed2cb0782fc6957c5..ed9dc11ca9caa56a4608e405bbb04f79887e8377 100644 (file)
@@ -27,7 +27,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tset.1,v 1.57 2021/07/10 22:50:45 tom Exp @
+  * @Id: tset.1,v 1.58 2021/09/18 21:21:55 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 
        <STRONG>-c</STRONG>   Set control characters and modes.
 
-       <STRONG>-e</STRONG>   Set the erase character to <EM>ch</EM>.
+       <STRONG>-e</STRONG> <EM>ch</EM>
+            Set the erase character to <EM>ch</EM>.
 
        <STRONG>-I</STRONG>   Do  not  send  the  terminal  or tab initialization strings to the
             terminal.
 
-       <STRONG>-i</STRONG>   Set the interrupt character to <EM>ch</EM>.
+       <STRONG>-i</STRONG> <EM>ch</EM>
+            Set the interrupt character to <EM>ch</EM>.
 
-       <STRONG>-k</STRONG>   Set the line kill character to <EM>ch</EM>.
+       <STRONG>-k</STRONG> <EM>ch</EM>
+            Set the line kill character to <EM>ch</EM>.
 
-       <STRONG>-m</STRONG>   Specify a mapping from a port type to a terminal.  See the section
+       <STRONG>-m</STRONG> <EM>mapping</EM>
+            Specify a mapping from a port type to a terminal.  See the section
             <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> for more information.
 
        <STRONG>-Q</STRONG>   Do  not  display any values for the erase, interrupt and line kill
        <STRONG>csh(1)</STRONG>,   <STRONG>sh(1)</STRONG>,   <STRONG>stty(1)</STRONG>,   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,  <STRONG>tty(4)</STRONG>,  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>,
        <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210904).
+       This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20210925).
 
 
 
index b72136d813eac4a511bb3dbe6fd71e022b40682f..e79840d9974afede3e2a4589716a696e1f687566 100644 (file)
@@ -60,7 +60,7 @@ BEGIN {
        print  "/*    and: Thomas E. Dickey                        1995-on                  */"
        print  "/****************************************************************************/"
        print  ""
-       print  "/* $Id: MKterm.h.awk.in,v 1.81 2021/08/18 20:52:42 tom Exp $ */"
+       print  "/* $Id: MKterm.h.awk.in,v 1.82 2021/09/24 17:02:46 tom Exp $ */"
        print  ""
        print  "/*"
        print  "**      term.h -- Definition of struct term"
@@ -250,13 +250,16 @@ END {
        print  " */"
        print  "#ifdef NCURSES_INTERNALS"
        print  ""
+       print  "#undef TERMINAL"
+       print  "#define TERMINAL struct term"
+       print  "TERMINAL;"
+       print  ""
        if (@NCURSES_EXT_COLORS@) {
        declare_termtype("int","2");
        } else {
-       print  "typedef TERMTYPE TERMTYPE2;"
+       print  "#undef TERMTYPE2"
+       print  "#define TERMTYPE2 TERMTYPE"
        }
-       print  ""
-       print  "typedef struct term TERMINAL;"
        print  "#else"
        print  ""
        print  "typedef struct term {           /* describe an actual terminal */"
index 3bf96952fb7506d42929289428ae04a0289bea14..6acf2d03fe0b6f7d98429e17e50e775b66250f5a 100644 (file)
@@ -33,7 +33,7 @@
  *     and: Thomas E. Dickey                        1996-on                 *
  ****************************************************************************/
 
-/* $Id: curses.h.in,v 1.276 2021/08/29 09:30:34 tom Exp $ */
+/* $Id: curses.h.in,v 1.277 2021/09/24 16:07:37 tom Exp $ */
 
 #ifndef __NCURSES_H
 #define __NCURSES_H
@@ -431,7 +431,14 @@ extern NCURSES_EXPORT_VAR(chtype) acs_map[];
  */
 #define _NEWINDEX      -1
 
+#ifdef NCURSES_INTERNALS
+#undef SCREEN
+#define SCREEN struct screen
+SCREEN;
+#else
 typedef struct screen  SCREEN;
+#endif
+
 typedef struct _win_st WINDOW;
 
 typedef        chtype  attr_t;         /* ...must be at least as wide as chtype */
index f02ec5338d2fda25f162c78d7b8d8b67b18e3eee..50a7cd6c8fba956d00b9a1bebb2700603ce03e53 100644 (file)
@@ -28,7 +28,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: tput.1,v 1.70 2021/09/04 19:02:50 tom Exp $
+.\" $Id: tput.1,v 1.71 2021/09/19 00:34:23 tom Exp $
 .TH @TPUT@ 1 ""
 .ds d @TERMINFO@
 .ds n 1
@@ -423,7 +423,7 @@ exit code   error message
 \fB0\fR        T{
 (\fIcapname\fR is a numeric variable that is not specified in the
 \fBterminfo\fR(5) database for this terminal type, e.g.
-\fB@TPUT@ \-T450 lines\fR and \fB@TPUT@ \-T2621 xmc\fR)
+\fB@TPUT@ \-T450 lines\fR and \fB@TPUT@ \-Thp2621 xmc\fR)
 T}
 \fB1\fR        no error message is printed, see the \fBEXIT CODES\fR section.
 \fB2\fR        usage error
@@ -516,6 +516,14 @@ requiring \fB@TPUT@\fP to know which type to use.
 This implementation uses a table to determine the parameter types for
 the standard \fIcapname\fR operands, and an internal library
 function to analyze nonstandard \fIcapname\fR operands.
+.IP
+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 \fBtput\fP 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.
 .PP
 This implementation (unlike others) can accept both \fItermcap\fP
 and \fIterminfo\fP names for the \fIcapname\fP feature,
index faf1c4eb6a76686c482bcaf6db19c045fda77f7f..063f5066eea47ffe27f1a7355991d026392374de 100644 (file)
@@ -27,7 +27,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: tset.1,v 1.57 2021/07/10 22:50:45 tom Exp $
+.\" $Id: tset.1,v 1.58 2021/09/18 21:21:55 tom Exp $
 .TH @TSET@ 1 ""
 .ie \n(.g .ds `` \(lq
 .el       .ds `` ``
@@ -150,19 +150,19 @@ The options are as follows:
 .B \-c
 Set control characters and modes.
 .TP 5
-.B \-e
+.BI \-e\  ch
 Set the erase character to \fIch\fR.
 .TP
 .B \-I
 Do not send the terminal or tab initialization strings to the terminal.
 .TP
-.B \-i
+.BI \-i\  ch
 Set the interrupt character to \fIch\fR.
 .TP
-.B \-k
+.BI \-k\  ch
 Set the line kill character to \fIch\fR.
 .TP
-.B \-m
+.BI \-m\  mapping
 Specify a mapping from a port type to a terminal.
 See the section
 .B TERMINAL TYPE MAPPING
index a0bb89ec270856cc4411bfa0f2f6632641adbb8d..bddbf10786585bfe4ee7dc5fc26e8e6adc99b318 100644 (file)
@@ -6,8 +6,8 @@
 # Report bugs and new terminal descriptions to
 #      bug-ncurses@gnu.org
 #
-#      $Revision: 1.916 $
-#      $Date: 2021/09/11 23:22:59 $
+#      $Revision: 1.918 $
+#      $Date: 2021/09/21 08:18:36 $
 #
 # The original header is preserved below for reference.  It is noted that there
 # is a "newer" version which differs in some cosmetic details (but actually
@@ -2837,7 +2837,9 @@ vt340|dec-vt340|vt330|dec-vt330|dec vt340 graphics terminal with 24 line page,
 
 # Left/right margins are supported in xterm since patch #279 (2012/05/10)
 vt420+lrmm|VT420 left/right margins,
-       mgc=\E[?69l, smglr=\E[?69h\E[%i%p1%d;%p2%ds,
+       mgc=\E[?69l, smglp=\E[?69h\E[%i%p1%ds,
+       smglr=\E[?69h\E[%i%p1%d;%p2%ds,
+       smgrp=\E[?69h\E[%i;%p1%ds,
 
 # DEC doesn't supply a vt400 description, so we add Daniel Glasser's
 # (originally written with vt420 as its primary name, and usable for it).
@@ -5033,22 +5035,34 @@ xterm+alt+title|xterm 90 and 251 features combined,
 #  | NumLock |    /    |    *    |    -    |
 #  |         |   $Oo   |   $Oj   |   $OS   |
 #  |_________|__kpDIV__|__kpMUL__|__kpSUB__|
-#  |    7         8         9    |         |
-#  |   $Ow   |   $Ox   |   $Oy   |    +    |
-#  |_ka1__K1_|_________|_ka3__K3_|   $Ok   |
-#  |    4    |    5    |    6    |  kpADD  |
+#  |    7         8         9    |    +    |
+#  |   $Ow   |   $Ox   |   $Oy   |   $Ok   |
+#  |_ka1__K1_|_________|_ka3__K3_|  kpADD  |
+#  |    4    |    5    |    6    |         |
 #  |   $Ot   |   $Ou   |   $Ov   |         |
 #  |_________|_kb2__K2_|_________|_________|
 #  |    1    |    2    |    3    |         |
 #  |   $Oq   |   $Or   |   $Os   |         |
 #  |_kc1__K4_|_________|_kc3__K5_|  enter  |
-#  |         0         |   .     |   $OM   |
-#  |        $Op        |  $On    |         |
-#  |___________________|_________|_kent_@8_|
+#  |         0         |    .    |   $OM   |
+#  |        $Op        |   $On   |         |
+#  |_______kpZRO_______|__kpDOT__|_kent_@8_|
+#
+# ka2, kb1, kb3 and kc2 are extensions, as are the mixed-case names.
+# There are no termcap equivalents for these extensions.
+#
+# kpCMA (comma) is used here for the VT100 keypad, which xterm emulates with
+# shifted-keypad-plus, though normally that invokes a font-size change.
+#
+# Old versions of xterm, e.g., xterm-xfree86, documented \EOE as kb2, which
+# does not fit into this layout.  The extension kp5 fits, but is not visible
+# to termcap applications.  As an alternative, kbeg (which does have a termcap
+# equivalent) is provided.
 #
 xterm+keypad|xterm emulating VT100/VT220 numeric keypad,
-       kp5=\EOE, kpADD=\EOk, kpCMA=\EOl, kpDIV=\EOo, kpDOT=\EOn,
-       kpMUL=\EOj, kpSUB=\EOm, kpZRO=\EOp, use=vt220+keypad,
+       kbeg=\EOE, kp5=\EOE, kpADD=\EOk, kpCMA=\EOl, kpDIV=\EOo,
+       kpDOT=\EOn, kpMUL=\EOj, kpSUB=\EOm, kpZRO=\EOp,
+       use=vt220+keypad,
 #
 # Those chunks use the new-style (the xterm oldFunctionKeys resource is false).
 # Alternatively, the same scheme with old-style function keys as in xterm-r6
@@ -27232,4 +27246,9 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #      + use hp+arrows in a few places -TD
 #      + use hp+pfk-cr in a few places -TD
 #
+# 2021-09-21
+#      + add kbeg to xterm+keypad to accommodate termcap applications -TD
+#      + add smglp and smgrp to vt420+lrmm, to provide useful data for the
+#        "tabs" +m option -TD
+#
 ######## SHANTIH!  SHANTIH!  SHANTIH!
index b264eada02578f9455bb33cf94d20ec45ce6d118..26e473b4bf8fa50646661d52c480571a9fa0c8a1 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # MKlib_gen.sh -- generate sources from curses.h macro definitions
 #
-# ($Id: MKlib_gen.sh,v 1.69 2021/08/07 21:17:46 tom Exp $)
+# ($Id: MKlib_gen.sh,v 1.70 2021/09/24 19:23:20 tom Exp $)
 #
 ##############################################################################
 # Copyright 2018-2020,2021 Thomas E. Dickey                                  #
@@ -471,6 +471,7 @@ END         {
                                        gsub(/[ \t]+/," ",value);
                                        sub(/^[0-9a-zA-Z_]+ /,"",value);
                                        sub(/^\* /,"",value);
+                                       gsub("struct [0-9a-zA-Z_]+ \*","",value);
                                        gsub(/[0-9a-zA-Z_]+ \* /,"",value);
                                        gsub(/ (const) /," ",value);
                                        gsub(/ (int|short|attr_t|chtype|wchar_t|NCURSES_BOOL|NCURSES_OUTC|NCURSES_OUTC_sp|va_list) /," ",value);
index c0d579fc356375de642e5db9415099b8c3f5acc4..872d25af95425afde4a2936ce07682557a9b3e42 100644 (file)
@@ -35,7 +35,7 @@
  ****************************************************************************/
 
 /*
- * $Id: curses.priv.h,v 1.645 2021/09/04 10:29:15 tom Exp $
+ * $Id: curses.priv.h,v 1.646 2021/09/24 16:09:35 tom Exp $
  *
  *     curses.priv.h
  *
@@ -899,8 +899,7 @@ typedef enum {
 /*
  * The SCREEN structure.
  */
-
-struct screen {
+typedef struct screen {
        int             _ifd;           /* input file descriptor for screen */
        int             _ofd;           /* output file descriptor for screen */
        FILE            *_ofp;          /* output file ptr for screen       */
@@ -1184,7 +1183,8 @@ struct screen {
        const char      *_tputs_trace;
 #endif
 #endif
-};
+#undef SCREEN
+} SCREEN;
 
 extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain;
 extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
index bc031a70ca5c0d9763ee97bbb0018d4ff91ad2c9..49d7e8b8dbdd2b1cf2385d02c531795fcc4c6b63 100644 (file)
@@ -34,7 +34,7 @@
 /*
  * Common type definitions and macros for new_pair.c, lib_color.c
  *
- * $Id: new_pair.h,v 1.12 2021/08/18 19:18:12 tom Exp $
+ * $Id: new_pair.h,v 1.13 2021/09/24 17:52:01 tom Exp $
  */
 
 #ifndef NEW_PAIR_H
@@ -46,7 +46,9 @@
 
 #include <sys/types.h>
 
-typedef struct screen  SCREEN;
+#undef SCREEN
+#define SCREEN struct screen
+SCREEN;
 
 #define LIMIT_TYPED(n,t) \
        (t)(((n) > MAX_OF_TYPE(t)) \
index f31e9f587bc106ba6672eb3ad5d8ec3bd958584b..85380ac33e212ed210dcb7080e2d6b570cb08c04 100644 (file)
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /*
- * $Id: term.priv.h,v 1.4 2021/08/19 20:02:09 tom Exp $
+ * $Id: term.priv.h,v 1.5 2021/09/24 16:42:04 tom Exp $
  *
  *     term.priv.h
  *
@@ -102,11 +102,6 @@ typedef struct {
 /*
  * Internals for term.h
  */
-
-#if NCURSES_EXT_COLORS
-typedef struct termtype2  TERMTYPE2;
-#endif
-
 typedef struct term {                  /* describe an actual terminal */
        TERMTYPE        type;           /* terminal type description */
        short           Filedes;        /* file description being written to */
@@ -118,6 +113,7 @@ typedef struct term {                       /* describe an actual terminal */
 #if NCURSES_EXT_COLORS
        TERMTYPE2       type2;          /* extended terminal type description */
 #endif
+#undef TERMINAL
 } TERMINAL;
 
 /*
index 0e7cae888a339c91b6a772b33992ca9807cc1482..42f5224a5998b9d2a6e7087265554dba0ab02315 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20210911) unstable; urgency=low
+ncurses6 (6.2+20210925) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 10 Sep 2021 20:03:50 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 24 Sep 2021 15:17:49 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index 0e7cae888a339c91b6a772b33992ca9807cc1482..42f5224a5998b9d2a6e7087265554dba0ab02315 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20210911) unstable; urgency=low
+ncurses6 (6.2+20210925) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 10 Sep 2021 20:03:50 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 24 Sep 2021 15:17:49 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index 03f622998bfcf59c329443466b305d1cf29ccc21..b6df649bbe7e83df58ecf18608832afcd29d5b53 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20210911) unstable; urgency=low
+ncurses6 (6.2+20210925) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 10 Sep 2021 20:03:50 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Fri, 24 Sep 2021 15:17:49 -0400
 
 ncurses6 (5.9-20120608) unstable; urgency=low
 
index a5eb84a46edb1bd7548da064709fe423420bff25..043cd554a59c61ae1303fa8b78b1c3dd234d9146 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.477 2021/09/11 10:58:38 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.479 2021/09/25 10:32:30 tom Exp $\r
 \r
 ; TODO add examples\r
 ; TODO bump ABI to 6\r
@@ -10,7 +10,7 @@
 !define VERSION_MAJOR "6"\r
 !define VERSION_MINOR "2"\r
 !define VERSION_YYYY  "2021"\r
-!define VERSION_MMDD  "0911"\r
+!define VERSION_MMDD  "0925"\r
 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
 \r
 !define MY_ABI   "5"\r
index 3dbf413a5129dda1198561caea925bb264bdf4c0..d771d4b33f2e6216b1ca00a025ac23a693922d88 100644 (file)
@@ -3,7 +3,7 @@
 Summary: shared libraries for terminal handling
 Name: mingw32-ncurses6
 Version: 6.2
-Release: 20210911
+Release: 20210925
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index 98d052ede5170cbbf0ccdc5f1a6d370976b88846..b6755bfd56d6f57f027677c787bc6bcf163e497e 100644 (file)
@@ -1,7 +1,7 @@
 Summary: shared libraries for terminal handling
 Name: ncurses6
 Version: 6.2
-Release: 20210911
+Release: 20210925
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index e0216f1db60ee5e68569e0b07068bd15882acb5a..dd527d26796fbd2a7980cc1bf843b63901133cc6 100644 (file)
@@ -1,7 +1,7 @@
 Summary: Curses library with POSIX thread support.
 Name: ncursest6
 Version: 6.2
-Release: 20210911
+Release: 20210925
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index 643038f646680efb47558f05e711c2e6a14050a4..60a76a2223a8f03a0ffb95372556051d92692b20 100644 (file)
@@ -45,7 +45,7 @@
 #include <hashed_db.h>
 #endif
 
-MODULE_ID("$Id: toe.c,v 1.82 2021/06/26 19:44:08 tom Exp $")
+MODULE_ID("$Id: toe.c,v 1.83 2021/09/21 20:07:51 tom Exp $")
 
 #define isDotname(name) (!strcmp(name, ".") || !strcmp(name, ".."))
 
@@ -245,7 +245,9 @@ make_db_name(char *dst, const char *src, unsigned limit)
            && !strcmp(src + size - lens, suffix)) {
            _nc_STRCPY(dst, src, PATH_MAX);
        } else {
-           _nc_SPRINTF(dst, _nc_SLIMIT(PATH_MAX) "%s%s", src, suffix);
+           _nc_SPRINTF(dst, _nc_SLIMIT(PATH_MAX) "%.*s%s",
+                       (int) (PATH_MAX - sizeof(suffix)),
+                       src, suffix);
        }
        result = TRUE;
     }
index fe82d47235f5b3c0d103d4648f8f480ac487d772..ccc2f56d28c460473767b9e72f7dc0f18cbb5e49 100644 (file)
@@ -47,7 +47,7 @@
 #include <transform.h>
 #include <tty_settings.h>
 
-MODULE_ID("$Id: tput.c,v 1.91 2021/08/21 00:24:45 tom Exp $")
+MODULE_ID("$Id: tput.c,v 1.94 2021/09/19 00:06:44 tom Exp $")
 
 #define PUTS(s)                fputs(s, stdout)
 
@@ -136,7 +136,7 @@ exit_code(int token, int value)
  * Returns nonzero on error.
  */
 static int
-tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
+tput_cmd(int fd, TTY * settings, bool opt_x, int argc, char **argv, int *used)
 {
     NCURSES_CONST char *name;
     char *s;
@@ -146,6 +146,7 @@ tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
 #endif
 
     name = check_aliases(argv[0], FALSE);
+    *used = 1;
     if (is_reset || is_init) {
        TTY oldmode;
 
@@ -155,7 +156,7 @@ tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
 
        if (is_reset) {
            reset_start(stdout, TRUE, FALSE);
-           reset_tty_settings(fd, saved_settings);
+           reset_tty_settings(fd, settings);
        } else {
            reset_start(stdout, FALSE, TRUE);
        }
@@ -165,13 +166,13 @@ tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
 #else
        (void) fd;
 #endif
-       set_control_chars(saved_settings, terasechar, intrchar, tkillchar);
-       set_conversions(saved_settings);
+       set_control_chars(settings, terasechar, intrchar, tkillchar);
+       set_conversions(settings);
        if (send_init_strings(fd, &oldmode)) {
            reset_flush();
        }
 
-       update_tty_settings(&oldmode, saved_settings);
+       update_tty_settings(&oldmode, settings);
        return 0;
     }
 
@@ -217,7 +218,8 @@ tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
     } else if (VALID_STRING(s)) {
        if (argc > 1) {
            int k;
-           int ignored;
+           int analyzed;
+           int popcount;
            long numbers[1 + NUM_PARM];
            char *strings[1 + NUM_PARM];
            char *p_is_s[NUM_PARM];
@@ -254,14 +256,19 @@ tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
            }
 #endif
 
+           popcount = 0;
+           _nc_reset_tparm(NULL);
            switch (paramType) {
            case Num_Str:
                s = TPARM_2(s, numbers[1], strings[2]);
+               analyzed = 2;
                break;
            case Num_Str_Str:
                s = TPARM_3(s, numbers[1], strings[2], strings[3]);
+               analyzed = 3;
                break;
            case Numbers:
+               analyzed = _nc_tparm_analyze(NULL, s, p_is_s, &popcount);
 #define myParam(n) numbers[n]
                s = TIPARM_9(s,
                             myParam(1),
@@ -278,7 +285,7 @@ tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
            case Other:
                /* FALLTHRU */
            default:
-               (void) _nc_tparm_analyze(NULL, s, p_is_s, &ignored);
+               analyzed = _nc_tparm_analyze(NULL, s, p_is_s, &popcount);
 #define myParam(n) (p_is_s[n - 1] != 0 ? ((TPARM_ARG) strings[n]) : numbers[n])
                s = TPARM_9(s,
                            myParam(1),
@@ -293,6 +300,10 @@ tput_cmd(int fd, TTY * saved_settings, bool opt_x, int argc, char *argv[])
 #undef myParam
                break;
            }
+           if (analyzed < popcount) {
+               analyzed = popcount;
+           }
+           *used += analyzed;
        }
 
        /* use putp() in order to perform padding */
@@ -312,6 +323,7 @@ main(int argc, char **argv)
     char buf[BUFSIZ];
     int result = 0;
     int fd;
+    int used;
     TTY tty_settings;
     bool opt_x = FALSE;                /* clear scrollback if possible */
     bool is_alias;
@@ -372,34 +384,53 @@ main(int argc, char **argv)
        quit(ErrTermType, "unknown terminal \"%s\"", term);
 
     if (cmdline) {
+       int code = 0;
        if ((argc <= 0) && !is_alias)
            usage();
-       ExitProgram(tput_cmd(fd, &tty_settings, opt_x, argc, argv));
+       while (argc > 0) {
+           code = tput_cmd(fd, &tty_settings, opt_x, argc, argv, &used);
+           if (code != 0)
+               break;
+           argc -= used;
+           argv += used;
+       }
+       ExitProgram(code);
     }
 
     while (fgets(buf, sizeof(buf), stdin) != 0) {
-       char *argvec[16];       /* command, 9 parms, null, & slop */
+       size_t need = strlen(buf);
+       char **argvec = typeCalloc(char *, need + 1);
+       char **argnow;
        int argnum = 0;
        char *cp;
 
-       /* crack the argument list into a dope vector */
+       if (argvec == NULL) {
+           quit(ErrSystem(1), strerror(errno));
+       }
+
+       /* split the buffer into tokens */
        for (cp = buf; *cp; cp++) {
            if (isspace(UChar(*cp))) {
                *cp = '\0';
-           } else if (cp == buf || cp[-1] == 0) {
+           } else if (cp == buf || cp[-1] == '\0') {
                argvec[argnum++] = cp;
-               if (argnum >= (int) SIZEOF(argvec) - 1)
+               if (argnum >= (int) need)
                    break;
            }
        }
-       argvec[argnum] = 0;
 
-       if (argnum != 0
-           && tput_cmd(fd, &tty_settings, opt_x, argnum, argvec) != 0) {
-           if (result == 0)
-               result = ErrSystem(0);  /* will return value >4 */
-           ++result;
+       argnow = argvec;
+       while (argnum > 0) {
+           int code = tput_cmd(fd, &tty_settings, opt_x, argnum, argnow, &used);
+           if (code != 0) {
+               if (result == 0)
+                   result = ErrSystem(0);      /* will return value >4 */
+               ++result;
+           }
+           argnum -= used;
+           argnow += used;
        }
+       free(argvec);
     }
 
     ExitProgram(result);