-- 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
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
-5:0:10 6.2 20210911
+5:0:10 6.2 20210925
# 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
# 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)
</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).
</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>
</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).
<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).
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>
</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>
<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).
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
</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).
</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>
</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).
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>
<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>
<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).
* 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&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&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).
* 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).
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"
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 */"
* 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
*/
#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 */
.\" 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
\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
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,
.\" 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 `` ``
.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
# 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
# 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).
# | 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
# + 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!
#
# 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 #
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);
****************************************************************************/
/*
- * $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
*
/*
* 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 */
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;
/*
* 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
#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)) \
****************************************************************************/
/*
- * $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
*
/*
* 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 */
#if NCURSES_EXT_COLORS
TERMTYPE2 type2; /* extended terminal type description */
#endif
+#undef TERMINAL
} TERMINAL;
/*
-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
-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
-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
-; $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
!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
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
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
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
#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, ".."))
&& !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;
}
#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)
* 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;
#endif
name = check_aliases(argv[0], FALSE);
+ *used = 1;
if (is_reset || is_init) {
TTY oldmode;
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);
}
#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;
}
} 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];
}
#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),
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),
#undef myParam
break;
}
+ if (analyzed < popcount) {
+ analyzed = popcount;
+ }
+ *used += analyzed;
}
/* use putp() in order to perform padding */
char buf[BUFSIZ];
int result = 0;
int fd;
+ int used;
TTY tty_settings;
bool opt_x = FALSE; /* clear scrollback if possible */
bool is_alias;
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);