ncurses 6.3 - patch 20220101

+ add section on releasing memory to curs_termcap.3x and
  curs_terminfo.3x manpages.
This commit is contained in:
Thomas E. Dickey 2022-01-02 01:07:07 +00:00
parent 74433bcf4f
commit 3b56f70388
38 changed files with 228 additions and 119 deletions

View File

@ -4,7 +4,7 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
-------------------------------------------------------------------------------
Files: *
Copyright: 2017-2020,2021 by Thomas E. Dickey
Copyright: 2017-2021,2022 by Thomas E. Dickey
Copyright: 1998-2016,2017 Free Software Foundation, Inc.
Licence: X11

View File

@ -1,4 +1,4 @@
Copyright 2018-2020,2021 Thomas E. Dickey
Copyright 2018-2021,2022 Thomas E. Dickey
Copyright 1998-2017,2018 Free Software Foundation, Inc.
Permission is hereby granted, free of charge, to any person obtaining a
@ -26,4 +26,4 @@ sale, use or other dealings in this Software without prior written
authorization.
-- vile:txtmode fc=72
-- $Id: COPYING,v 1.10 2021/01/01 09:54:30 tom Exp $
-- $Id: COPYING,v 1.11 2022/01/01 11:47:50 tom Exp $

8
NEWS
View File

@ -1,5 +1,5 @@
-------------------------------------------------------------------------------
-- Copyright 2018-2020,2021 Thomas E. Dickey --
-- Copyright 2018-2021,2022 Thomas E. Dickey --
-- Copyright 1998-2017,2018 Free Software Foundation, Inc. --
-- --
-- Permission is hereby granted, free of charge, to any person obtaining a --
@ -26,7 +26,7 @@
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
-- $Id: NEWS,v 1.3761 2021/12/26 00:29:27 tom Exp $
-- $Id: NEWS,v 1.3764 2022/01/01 23:59:36 tom Exp $
-------------------------------------------------------------------------------
This is a log of changes that ncurses has gone through since Zeyd started
@ -46,6 +46,10 @@ 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.
20220101
+ add section on releasing memory to curs_termcap.3x and
curs_terminfo.3x manpages.
20211225
+ improve markup, e.g., for external manpage links in the manpages
(prompted by report by Helge Kreutzmann).

View File

@ -1 +1 @@
5:0:10 6.3 20211225
5:0:10 6.3 20220101

View File

@ -1,5 +1,5 @@
##############################################################################
# Copyright 2018-2020,2021 Thomas E. Dickey #
# Copyright 2018-2021,2022 Thomas E. Dickey #
# Copyright 1998-2017,2018 Free Software Foundation, Inc. #
# #
# Permission is hereby granted, free of charge, to any person obtaining a #
@ -26,7 +26,7 @@
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
# $Id: dist.mk,v 1.1458 2021/12/25 22:11:07 tom Exp $
# $Id: dist.mk,v 1.1460 2022/01/01 11:48:38 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 = 3
NCURSES_PATCH = 20211225
NCURSES_PATCH = 20220101
# 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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).

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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).
</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>, <STRONG>xterm(1)</STRONG>.
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).

View File

@ -1,6 +1,6 @@
<!--
****************************************************************************
* Copyright 2018-2020,2021 Thomas E. Dickey *
* Copyright 2018-2021,2022 Thomas E. Dickey *
* Copyright 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@ -27,7 +27,7 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
* @Id: curs_termcap.3x,v 1.52 2021/12/25 21:31:00 tom Exp @
* @Id: curs_termcap.3x,v 1.55 2022/01/01 23:49:07 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
@ -76,7 +76,7 @@
been compiled.
</PRE><H3><a name="h3-INITIALIZATION">INITIALIZATION</a></H3><PRE>
</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE>
The <STRONG>tgetent</STRONG> routine loads the entry for <EM>name</EM>. It returns:
1 on success,
@ -100,7 +100,7 @@
ing.
</PRE><H3><a name="h3-CAPABILITY-VALUES">CAPABILITY VALUES</a></H3><PRE>
</PRE><H3><a name="h3-Capability-Values">Capability Values</a></H3><PRE>
The <STRONG>tgetflag</STRONG> routine gets the boolean entry for <EM>id</EM>, or zero if it is
not available.
@ -129,7 +129,7 @@
and <STRONG>tgetstr</STRONG> are compared in lookups.
</PRE><H3><a name="h3-FORMATTING-CAPABILITIES">FORMATTING CAPABILITIES</a></H3><PRE>
</PRE><H3><a name="h3-Formatting-Capabilities">Formatting Capabilities</a></H3><PRE>
The <STRONG>tgoto</STRONG> routine expands the given capability using the parameters.
<STRONG>o</STRONG> Because the capability may have padding characters, the output of
@ -157,7 +157,7 @@
It can retrieve capabilities by either termcap or terminfo name.
</PRE><H3><a name="h3-GLOBAL-VARIABLES">GLOBAL VARIABLES</a></H3><PRE>
</PRE><H3><a name="h3-Global-Variables">Global Variables</a></H3><PRE>
The variables <STRONG>PC</STRONG>, <STRONG>UP</STRONG> and <STRONG>BC</STRONG> are set by <STRONG>tgetent</STRONG> to the terminfo entry's
data for <STRONG>pad_char</STRONG>, <STRONG>cursor_up</STRONG> and <STRONG>backspace_if_not_bs</STRONG>, respectively. <STRONG>UP</STRONG>
is not used by ncurses. <STRONG>PC</STRONG> is used in the <STRONG>tdelay_output</STRONG> function. <STRONG>BC</STRONG>
@ -165,6 +165,29 @@
in a system-specific coding to reflect the terminal speed.
</PRE><H3><a name="h3-Releasing-Memory">Releasing Memory</a></H3><PRE>
The termcap functions provide no means for freeing memory, because
legacy termcap implementations used only the buffer areas provided by
the caller via <STRONG>tgetent</STRONG> and <STRONG>tgetstr</STRONG>. Those buffers are unused in ter-
minfo.
On the other hand, terminfo allocates memory. It uses <STRONG>setupterm</STRONG> to re-
trieve the data used by <STRONG>tgetent</STRONG> and the functions which return capabil-
ity values such as <STRONG>tgetstr</STRONG>. One could use
<STRONG>del_curterm(cur_term);</STRONG>
to free this memory, but there is an additional complication with
ncurses. It uses a fixed-size <EM>pool</EM> of storage locations, one per set-
ting of the <STRONG>TERM</STRONG> variable when <STRONG>tgetent</STRONG> is called. The <STRONG>screen(1)</STRONG> pro-
gram relies upon this arrangement, to improve its performance.
An application which uses only the low-level termcap functions could
free the memory using <STRONG>del_curterm</STRONG>, because the pool is freed using oth-
er functions (see <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>).
</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
Except where explicitly noted, routines that return an integer return
<STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value other
@ -322,10 +345,11 @@
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
<ul>
<li><a href="#h3-INITIALIZATION">INITIALIZATION</a></li>
<li><a href="#h3-CAPABILITY-VALUES">CAPABILITY VALUES</a></li>
<li><a href="#h3-FORMATTING-CAPABILITIES">FORMATTING CAPABILITIES</a></li>
<li><a href="#h3-GLOBAL-VARIABLES">GLOBAL VARIABLES</a></li>
<li><a href="#h3-Initialization">Initialization</a></li>
<li><a href="#h3-Capability-Values">Capability Values</a></li>
<li><a href="#h3-Formatting-Capabilities">Formatting Capabilities</a></li>
<li><a href="#h3-Global-Variables">Global Variables</a></li>
<li><a href="#h3-Releasing-Memory">Releasing Memory</a></li>
</ul>
</li>
<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>

View File

@ -1,6 +1,6 @@
<!--
****************************************************************************
* Copyright 2018-2020,2021 Thomas E. Dickey *
* Copyright 2018-2021,2022 Thomas E. Dickey *
* Copyright 1998-2016,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
@ -27,7 +27,9 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
* @Id: curs_terminfo.3x,v 1.79 2021/12/25 21:34:58 tom Exp @
* @Id: curs_terminfo.3x,v 1.80 2022/01/01 21:50:06 tom Exp @
* ***************************************************************************
* ***************************************************************************
* ***************************************************************************
* ***************************************************************************
* ***************************************************************************
@ -348,9 +350,34 @@
<STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*strnames[]</STRONG>, <STRONG>*strcodes[]</STRONG>, <STRONG>*strfnames[]</STRONG>
</PRE><H3><a name="h3-Releasing-Memory">Releasing Memory</a></H3><PRE>
Each successful call to <STRONG>setupterm</STRONG> allocates memory to hold the terminal
description. As a side-effect, it sets <STRONG>cur_term</STRONG> to point to this memo-
ry. If an application calls
<STRONG>del_curterm(cur_term);</STRONG>
the memory will be freed.
The formatting functions <STRONG>tparm</STRONG> and <STRONG>tiparm</STRONG> extend the storage allocated
by <STRONG>setupterm</STRONG>:
<STRONG>o</STRONG> the "static" terminfo variables [a-z]. Before ncurses 6.3, those
were shared by all screens. With ncurses 6.3, those are allocated
per screen. See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.
<STRONG>o</STRONG> to improve performance, ncurses 6.3 caches the result of analyzing
terminfo strings for their parameter types. That is stored as a
binary tree referenced from the <STRONG>TERMINAL</STRONG> structure.
The higher-level <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> functions use <STRONG>setupterm</STRONG>. Normally
they do not free this memory, but it is possible to do that using the
<STRONG><A HREF="curs_initscr.3x.html">delscreen(3x)</A></STRONG> function.
</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
Routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4
only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful com-
Routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4
only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful com-
pletion, unless otherwise noted in the preceding routine descriptions.
Routines that return pointers always return <STRONG>NULL</STRONG> on error.
@ -372,25 +399,25 @@
ditions are documented above.
<STRONG>tputs</STRONG>
returns an error if the string parameter is null. It does not
detect I/O errors: X/Open states that <STRONG>tputs</STRONG> ignores the return
returns an error if the string parameter is null. It does not
detect I/O errors: X/Open states that <STRONG>tputs</STRONG> ignores the return
value of the output function <EM>putc</EM>.
</PRE><H3><a name="h3-Compatibility-macros">Compatibility macros</a></H3><PRE>
This implementation provides a few macros for compatibility with sys-
This implementation provides a few macros for compatibility with sys-
tems before SVr4 (see <EM>HISTORY</EM>). Those include <STRONG>crmode</STRONG>, <STRONG>fixterm</STRONG>,
<STRONG>gettmode</STRONG>, <STRONG>nocrmode</STRONG>, <STRONG>resetterm</STRONG>, <STRONG>saveterm</STRONG>, and <STRONG>setterm</STRONG>.
In SVr4, those are found in <STRONG>&lt;curses.h&gt;</STRONG>, but except for <STRONG>setterm</STRONG>, are
In SVr4, those are found in <STRONG>&lt;curses.h&gt;</STRONG>, but except for <STRONG>setterm</STRONG>, are
likewise macros. The one function, <STRONG>setterm</STRONG>, is mentioned in the manual
page. The manual page notes that the <STRONG>setterm</STRONG> routine was replaced by
page. The manual page notes that the <STRONG>setterm</STRONG> routine was replaced by
<STRONG>setupterm</STRONG>, stating that the call:
<STRONG>setupterm(</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0)</STRONG>
provides the same functionality as <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>, and is not recommend-
ed for new programs. This implementation provides each of those sym-
ed for new programs. This implementation provides each of those sym-
bols as macros for BSD compatibility,
@ -403,7 +430,7 @@
fixterm restore tty to "in curses" state
gettmode establish current tty modes
mvcur low level cursor motion
putp utility function that uses <STRONG>tputs</STRONG> to send char-
putp utility function that uses <STRONG>tputs</STRONG> to send char-
acters via <STRONG>putchar</STRONG>.
resetterm set tty modes to "out of curses" state
resetty reset tty flags to stored value
@ -414,10 +441,10 @@
tparm instantiate a string expression with parameters
tputs apply padding information to a string
vidattr like <STRONG>vidputs</STRONG>, but outputs through <STRONG>putchar</STRONG>
vidputs output a string to put terminal in a specified
vidputs output a string to put terminal in a specified
video attribute mode
The programming manual also mentioned functions provided for termcap
The programming manual also mentioned functions provided for termcap
compatibility (commenting that they "may go away at a later date"):
<STRONG>Function</STRONG> <STRONG>Description</STRONG>
@ -430,19 +457,20 @@
tputs apply padding to capability, calling
a function to put characters
Early terminfo programs obtained capability values from the <STRONG>TERMINAL</STRONG>
Early terminfo programs obtained capability values from the <STRONG>TERMINAL</STRONG>
structure initialized by <STRONG>setupterm</STRONG>.
SVr3 extended terminfo by adding functions to retrieve capability val-
SVr3 extended terminfo by adding functions to retrieve capability val-
ues (like the termcap interface), and reusing tgoto and tputs:
<STRONG>Function</STRONG> <STRONG>Description</STRONG>
-------------------------------------------
tigetflag get boolean entry for given <EM>id</EM>
tigetnum get numeric entry for given <EM>id</EM>
tigetstr get string entry for given <EM>id</EM>
SVr3 also replaced several of the SVr2 terminfo functions which had no
SVr3 also replaced several of the SVr2 terminfo functions which had no
counterpart in the termcap interface, documenting them as obsolete:
<STRONG>Function</STRONG> <STRONG>Replaced</STRONG> <STRONG>by</STRONG>
@ -455,20 +483,20 @@
saveterm def_prog_mode
setterm setupterm
SVr3 kept the <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> functions, along with <STRONG>putp</STRONG>,
<STRONG>tparm</STRONG> and <STRONG>tputs</STRONG>. The latter were needed to support padding, and han-
dling functions such as <STRONG>vidattr</STRONG> (which used more than the two parame-
SVr3 kept the <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> functions, along with <STRONG>putp</STRONG>,
<STRONG>tparm</STRONG> and <STRONG>tputs</STRONG>. The latter were needed to support padding, and han-
dling functions such as <STRONG>vidattr</STRONG> (which used more than the two parame-
ters supported by <STRONG>tgoto</STRONG>).
SVr3 introduced the functions for switching between terminal descrip-
SVr3 introduced the functions for switching between terminal descrip-
tions, e.g., <STRONG>set_curterm</STRONG>. Some of that was incremental improvements to
the SVr2 library:
<STRONG>o</STRONG> The <STRONG>TERMINAL</STRONG> type definition was introduced in SVr3.01, for the
<STRONG>o</STRONG> The <STRONG>TERMINAL</STRONG> type definition was introduced in SVr3.01, for the
<STRONG>term</STRONG> structure provided in SVr2.
<STRONG>o</STRONG> The various global variables such as <STRONG>boolnames</STRONG> were mentioned in
the programming manual at this point, though the variables were
<STRONG>o</STRONG> The various global variables such as <STRONG>boolnames</STRONG> were mentioned in
the programming manual at this point, though the variables were
provided in SVr2.
SVr4 added the <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> functions.
@ -483,15 +511,15 @@
</PRE><H3><a name="h3-Legacy-functions">Legacy functions</a></H3><PRE>
X/Open notes that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
The function <STRONG>setterm</STRONG> is not described by X/Open and must be considered
The function <STRONG>setterm</STRONG> is not described by X/Open and must be considered
non-portable. All other functions are as described by X/Open.
</PRE><H3><a name="h3-Legacy-data">Legacy data</a></H3><PRE>
<STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>. This is not
<STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>. This is not
part of X/Open Curses, but is assumed by some applications.
Other implementions may not declare the capability name arrays. Some
Other implementions may not declare the capability name arrays. Some
provide them without declaring them. X/Open does not specify them.
Extended terminal capability names, e.g., as defined by <STRONG>tic</STRONG> <STRONG>-x</STRONG>, are not
@ -499,14 +527,14 @@
</PRE><H3><a name="h3-Output-buffering">Output buffering</a></H3><PRE>
Older versions of <STRONG>ncurses</STRONG> assumed that the file descriptor passed to
Older versions of <STRONG>ncurses</STRONG> assumed that the file descriptor passed to
<STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses buffered I/O, and would write to
the corresponding stream. In addition to the limitation that the ter-
minal was left in block-buffered mode on exit (like System V curses),
it was problematic because <STRONG>ncurses</STRONG> did not allow a reliable way to
the corresponding stream. In addition to the limitation that the ter-
minal was left in block-buffered mode on exit (like System V curses),
it was problematic because <STRONG>ncurses</STRONG> did not allow a reliable way to
cleanup on receiving SIGTSTP.
The current version (ncurses6) uses output buffers managed directly by
The current version (ncurses6) uses output buffers managed directly by
<STRONG>ncurses</STRONG>. Some of the low-level functions described in this manual page
write to the standard output. They are not signal-safe. The high-lev-
el functions in <STRONG>ncurses</STRONG> use alternate versions of these functions using
@ -515,70 +543,71 @@
</PRE><H3><a name="h3-Function-prototypes">Function prototypes</a></H3><PRE>
The X/Open Curses prototypes are based on the SVr4 curses header decla-
rations, which were defined at the same time the C language was first
rations, which were defined at the same time the C language was first
standardized in the late 1980s.
<STRONG>o</STRONG> X/Open Curses uses <STRONG>const</STRONG> less effectively than a later design
might, in some cases applying it needlessly to values are already
constant, and in most cases overlooking parameters which normally
would use <STRONG>const</STRONG>. Using constant parameters for functions which do
<STRONG>o</STRONG> X/Open Curses uses <STRONG>const</STRONG> less effectively than a later design
might, in some cases applying it needlessly to values are already
constant, and in most cases overlooking parameters which normally
would use <STRONG>const</STRONG>. Using constant parameters for functions which do
not use <STRONG>const</STRONG> may prevent the program from compiling. On the other
hand, <EM>writable</EM> <EM>strings</EM> are an obsolescent feature.
As an extension, this implementation can be configured to change
the function prototypes to use the <STRONG>const</STRONG> keyword. The ncurses ABI
As an extension, this implementation can be configured to change
the function prototypes to use the <STRONG>const</STRONG> keyword. The ncurses ABI
6 enables this feature by default.
<STRONG>o</STRONG> X/Open Curses prototypes <STRONG>tparm</STRONG> with a fixed number of parameters,
<STRONG>o</STRONG> X/Open Curses prototypes <STRONG>tparm</STRONG> with a fixed number of parameters,
rather than a variable argument list.
This implementation uses a variable argument list, but can be con-
figured to use the fixed-parameter list. Portable applications
should provide 9 parameters after the format; zeroes are fine for
This implementation uses a variable argument list, but can be con-
figured to use the fixed-parameter list. Portable applications
should provide 9 parameters after the format; zeroes are fine for
this purpose.
In response to review comments by Thomas E. Dickey, X/Open Curses
In response to review comments by Thomas E. Dickey, X/Open Curses
Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
</PRE><H3><a name="h3-Special-TERM-treatment">Special TERM treatment</a></H3><PRE>
If configured to use the terminal-driver, e.g., for the MinGW port,
<STRONG>o</STRONG> <STRONG>setupterm</STRONG> interprets a missing/empty TERM variable as the special
<STRONG>o</STRONG> <STRONG>setupterm</STRONG> interprets a missing/empty TERM variable as the special
value "unknown".
<STRONG>o</STRONG> <STRONG>setupterm</STRONG> allows explicit use of the the windows console driver by
checking if $TERM is set to "#win32con" or an abbreviation of that
<STRONG>o</STRONG> <STRONG>setupterm</STRONG> allows explicit use of the the windows console driver by
checking if $TERM is set to "#win32con" or an abbreviation of that
string.
</PRE><H3><a name="h3-Other-portability-issues">Other portability issues</a></H3><PRE>
In System V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return type and returns
In System V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return type and returns
<STRONG>OK</STRONG> or <STRONG>ERR</STRONG>. We have chosen to implement the X/Open Curses semantics.
In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the type <STRONG>int</STRONG>
In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the type <STRONG>int</STRONG>
<STRONG>(*putc)(char)</STRONG>.
At least one implementation of X/Open Curses (Solaris) returns a value
other than <STRONG>OK</STRONG>/<STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>. That returns the length of the string,
At least one implementation of X/Open Curses (Solaris) returns a value
other than <STRONG>OK</STRONG>/<STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>. That returns the length of the string,
and does no error-checking.
X/Open notes that after calling <STRONG>mvcur</STRONG>, the curses state may not match
X/Open notes that after calling <STRONG>mvcur</STRONG>, the curses state may not match
the actual terminal state, and that an application should touch and re-
fresh the window before resuming normal curses calls. Both <STRONG>ncurses</STRONG> and
System V Release 4 curses implement <STRONG>mvcur</STRONG> using the SCREEN data allo-
cated in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>. So though it is documented as a
terminfo function, <STRONG>mvcur</STRONG> is really a curses function which is not well
System V Release 4 curses implement <STRONG>mvcur</STRONG> using the SCREEN data allo-
cated in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>. So though it is documented as a
terminfo function, <STRONG>mvcur</STRONG> is really a curses function which is not well
specified.
X/Open states that the old location must be given for <STRONG>mvcur</STRONG>. This im-
plementation allows the caller to use -1's for the old ordinates. In
X/Open states that the old location must be given for <STRONG>mvcur</STRONG>. This im-
plementation allows the caller to use -1's for the old ordinates. In
that case, the old location is unknown.
</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_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>,
<STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
<STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>,
<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>, <STRONG>ter-</STRONG>
<STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG>
@ -596,6 +625,7 @@
<li><a href="#h3-Output-Functions">Output Functions</a></li>
<li><a href="#h3-Terminal-Capability-Functions">Terminal Capability Functions</a></li>
<li><a href="#h3-Terminal-Capability-Names">Terminal Capability Names</a></li>
<li><a href="#h3-Releasing-Memory">Releasing Memory</a></li>
</ul>
</li>
<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a>

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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).

View File

@ -514,7 +514,7 @@
https://invisible-island.net/ncurses/tctest.html
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).
</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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).
</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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).

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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).
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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).

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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>

View File

@ -252,7 +252,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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).

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.3 (patch 20211225).
This manual describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).
</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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).
</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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).

View File

@ -545,7 +545,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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).

View File

@ -391,7 +391,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.3 (patch 20211225).
This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20220101).

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright 2018-2020,2021 Thomas E. Dickey *
.\" Copyright 2018-2021,2022 Thomas E. Dickey *
.\" Copyright 1998-2017,2018 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
@ -27,7 +27,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_termcap.3x,v 1.52 2021/12/25 21:31:00 tom Exp $
.\" $Id: curs_termcap.3x,v 1.55 2022/01/01 23:49:07 tom Exp $
.TH curs_termcap 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
@ -86,7 +86,7 @@ routines are emulated using the \fIterminfo\fP database.
Thus, they
can only be used to query the capabilities of entries for which a
terminfo entry has been compiled.
.SS INITIALIZATION
.SS Initialization
.PP
The \fBtgetent\fP routine loads the entry for \fIname\fP.
It returns:
@ -118,7 +118,7 @@ The \fItermcap\fP library does not check if the terminal
description is marked with the \fIgeneric\fP capability,
or if the terminal description has cursor-addressing.
.RE
.SS CAPABILITY VALUES
.SS Capability Values
.PP
The \fBtgetflag\fP routine gets the boolean entry for \fIid\fP,
or zero if it is not available.
@ -152,7 +152,7 @@ Only the first two characters of the \fBid\fP parameter of
\fBtgetflag\fP,
\fBtgetnum\fP and
\fBtgetstr\fP are compared in lookups.
.SS FORMATTING CAPABILITIES
.SS Formatting Capabilities
.PP
The \fBtgoto\fP routine expands the given capability using the parameters.
.bP
@ -181,7 +181,7 @@ and portable \fItermcap\fP applications should not rely upon its availability.
The \fBtputs\fP routine is described on the \fBcurs_terminfo\fP(3X) manual
page.
It can retrieve capabilities by either termcap or terminfo name.
.SS GLOBAL VARIABLES
.SS Global Variables
.PP
The variables
\fBPC\fP,
@ -197,6 +197,30 @@ respectively.
\fBBC\fP is used in the \fBtgoto\fP emulation.
The variable \fBospeed\fP is set by ncurses in a system-specific coding
to reflect the terminal speed.
.SS Releasing Memory
The termcap functions provide no means for freeing memory,
because legacy termcap implementations used only the buffer
areas provided by the caller via \fBtgetent\fP and \fBtgetstr\fP.
Those buffers are unused in terminfo.
.PP
On the other hand, terminfo allocates memory.
It uses \fBsetupterm\fP to retrieve the data used by \fBtgetent\fP
and the functions which return capability values such as \fBtgetstr\fP.
One could use
.sp
\fBdel_curterm(cur_term);\fP
.sp
.PP
to free this memory, but there is an additional complication with ncurses.
It uses a fixed-size \fIpool\fP of storage locations,
one per setting of the \fBTERM\fP variable when \fBtgetent\fP is called.
The \fBscreen\fP(1) program relies upon this arrangement,
to improve its performance.
.PP
An application which uses only the low-level termcap functions could
free the memory using \fBdel_curterm\fP,
because the pool is freed using other functions
(see \fBcurs_memleaks\fP(3X)).
.
.SH RETURN VALUE
Except where explicitly noted,

View File

@ -1,5 +1,5 @@
.\"***************************************************************************
.\" Copyright 2018-2020,2021 Thomas E. Dickey *
.\" Copyright 2018-2021,2022 Thomas E. Dickey *
.\" Copyright 1998-2016,2017 Free Software Foundation, Inc. *
.\" *
.\" Permission is hereby granted, free of charge, to any person obtaining a *
@ -27,7 +27,7 @@
.\" authorization. *
.\"***************************************************************************
.\"
.\" $Id: curs_terminfo.3x,v 1.79 2021/12/25 21:34:58 tom Exp $
.\" $Id: curs_terminfo.3x,v 1.80 2022/01/01 21:50:06 tom Exp $
.TH curs_terminfo 3X ""
.ie \n(.g .ds `` \(lq
.el .ds `` ``
@ -407,6 +407,32 @@ for each of the predefined \fBterminfo\fP variables:
.br
\fBconst char *strnames[]\fP, \fB*strcodes[]\fP, \fB*strfnames[]\fP
.RE
.\" ***************************************************************************
.SS Releasing Memory
Each successful call to \fBsetupterm\fP allocates memory to hold the terminal
description. As a side-effect, it sets \fBcur_term\fP to point to this memory.
If an application calls
.sp
\fBdel_curterm(cur_term);\fP
.sp
the memory will be freed.
.PP
The formatting functions \fBtparm\fP and \fBtiparm\fP extend the storage
allocated by \fBsetupterm\fP:
.bP
the \*(``static\*('' terminfo variables [a-z].
Before ncurses 6.3, those were shared by all screens.
With ncurses 6.3, those are allocated per screen.
See \fBterminfo\fP(\*n) for details.
.bP
to improve performance, ncurses 6.3 caches the result of analyzing terminfo
strings for their parameter types.
That is stored as a binary tree referenced from the \fBTERMINAL\fP structure.
.PP
The higher-level \fBinitscr\fP and \fBnewterm\fP functions use \fBsetupterm\fP.
Normally they do not free this memory, but it is possible to do that using
the \fBdelscreen\fP(3X) function.
.\" ***************************************************************************
.SH RETURN VALUE
Routines that return an integer return \fBERR\fP upon failure and \fBOK\fP
(SVr4 only specifies \*(``an integer value other than \fBERR\fP\*('')
@ -675,6 +701,7 @@ In that case, the old location is unknown.
\fBcurses\fP(3X),
\fBcurs_initscr\fP(3X),
\fBcurs_kernel\fP(3X),
\fBcurs_memleaks\fP(3X),
\fBcurs_termcap\fP(3X),
\fBcurs_variables\fP(3X),
\fBterm_variables\fP(3X),

View File

@ -1,8 +1,8 @@
ncurses6 (6.3+20211225) unstable; urgency=low
ncurses6 (6.3+20220101) unstable; urgency=low
* latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 24 Dec 2021 15:26:19 -0500
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 01 Jan 2022 06:46:49 -0500
ncurses6 (5.9-20131005) unstable; urgency=low

View File

@ -5,7 +5,7 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
-------------------------------------------------------------------------------
Files: *
Copyright: 2017-2020,2021 by Thomas E. Dickey
Copyright: 2017-2021,2022 by Thomas E. Dickey
Copyright: 1998-2016,2017 Free Software Foundation, Inc.
Licence: X11

View File

@ -1,8 +1,8 @@
ncurses6 (6.3+20211225) unstable; urgency=low
ncurses6 (6.3+20220101) unstable; urgency=low
* latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 24 Dec 2021 15:26:19 -0500
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 01 Jan 2022 06:46:49 -0500
ncurses6 (5.9-20131005) unstable; urgency=low

View File

@ -5,7 +5,7 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
-------------------------------------------------------------------------------
Files: *
Copyright: 2017-2020,2021 by Thomas E. Dickey
Copyright: 2017-2021,2022 by Thomas E. Dickey
Copyright: 1998-2016,2017 Free Software Foundation, Inc.
Licence: X11

View File

@ -1,8 +1,8 @@
ncurses6 (6.3+20211225) unstable; urgency=low
ncurses6 (6.3+20220101) unstable; urgency=low
* latest weekly patch
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 24 Dec 2021 15:26:19 -0500
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 01 Jan 2022 06:46:49 -0500
ncurses6 (5.9-20120608) unstable; urgency=low

View File

@ -5,7 +5,7 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
-------------------------------------------------------------------------------
Files: *
Copyright: 2017-2020,2021 by Thomas E. Dickey
Copyright: 2017-2021,2022 by Thomas E. Dickey
Copyright: 1998-2016,2017 Free Software Foundation, Inc.
Licence: X11

View File

@ -1,4 +1,4 @@
; $Id: mingw-ncurses.nsi,v 1.499 2021/12/24 20:26:19 tom Exp $
; $Id: mingw-ncurses.nsi,v 1.500 2022/01/01 11:46:49 tom Exp $
; TODO add examples
; TODO bump ABI to 6
@ -9,8 +9,8 @@
!define VERSION_MAJOR "6"
!define VERSION_MINOR "3"
!define VERSION_YYYY "2021"
!define VERSION_MMDD "1225"
!define VERSION_YYYY "2022"
!define VERSION_MMDD "0101"
!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.3
Release: 20211225
Release: 20220101
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.3
Release: 20211225
Release: 20220101
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.3
Release: 20211225
Release: 20220101
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz

View File

@ -4,7 +4,7 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
-------------------------------------------------------------------------------
Files: *
Copyright: 2017-2020,2021 Thomas E. Dickey
Copyright: 2017-2021,2022 Thomas E. Dickey
Copyright: 1998-2016,2017 Free Software Foundation, Inc.
Licence: X11

View File

@ -4,7 +4,7 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
-------------------------------------------------------------------------------
Files: *
Copyright: 2017-2020,2021 Thomas E. Dickey
Copyright: 2017-2021,2022 Thomas E. Dickey
Copyright: 1998-2016,2017 Free Software Foundation, Inc.
Licence: X11

View File

@ -4,7 +4,7 @@ Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net>
-------------------------------------------------------------------------------
Files: *
Copyright: 2017-2020,2021 Thomas E. Dickey
Copyright: 2017-2021,2022 Thomas E. Dickey
Copyright: 1998-2016,2017 Free Software Foundation, Inc.
Licence: X11