snapshot of project "ncurses", label v6_2_20210925

This commit is contained in:
Thomas E. Dickey 2021-09-25 20:58:03 +00:00
parent 925bae1f45
commit 92daf2e732
37 changed files with 213 additions and 124 deletions

11
NEWS
View File

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

View File

@ -1 +1 @@
5:0:10 6.2 20210911
5:0:10 6.2 20210925

View File

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

View File

@ -126,7 +126,7 @@
</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).

View File

@ -199,7 +199,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="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>

View File

@ -150,7 +150,7 @@
</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).

View File

@ -248,7 +248,7 @@
<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).

View File

@ -514,7 +514,7 @@
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>

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

View File

@ -223,7 +223,7 @@
<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).

View 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

View File

@ -113,7 +113,7 @@
</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).

View File

@ -281,7 +281,7 @@
</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>

View File

@ -207,7 +207,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="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).

View File

@ -106,7 +106,7 @@
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>

View File

@ -461,7 +461,7 @@
<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>

View File

@ -171,7 +171,7 @@
<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).

View 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>
@ -374,7 +374,7 @@
---------------------------------------------------------------------
<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
@ -458,76 +458,83 @@
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
@ -537,7 +544,7 @@
</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).

View 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>
@ -154,16 +154,20 @@
<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
@ -385,7 +389,7 @@
<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).

View 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 */"

View 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 */

View 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,

View 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

View 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!

View File

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

View 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;

View 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)) \

View 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;
/*

View 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

View 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

View 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

View File

@ -1,4 +1,4 @@
; $Id: mingw-ncurses.nsi,v 1.477 2021/09/11 10:58:38 tom Exp $
; $Id: mingw-ncurses.nsi,v 1.479 2021/09/25 10:32:30 tom Exp $
; TODO add examples
; TODO bump ABI to 6
@ -10,7 +10,7 @@
!define VERSION_MAJOR "6"
!define VERSION_MINOR "2"
!define VERSION_YYYY "2021"
!define VERSION_MMDD "0911"
!define VERSION_MMDD "0925"
!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
!define MY_ABI "5"

View 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

View 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

View 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

View 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;
}

View 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);