/*
Version Control
- $Id: gen.c,v 1.71 2020/02/02 23:34:34 tom Exp $
+ $Id: gen.c,v 1.72 2020/02/22 21:01:00 tom Exp $
--------------------------------------------------------------------------*/
/*
This program prints on its standard output the source for the
if (argc != 2)
my_error("Only one argument expected (DFT_ARG_SUFFIX)");
- printf("-- Generated by the C program %s (source " __FILE__ ").\n",
- my_program_invocation_name);
+ if ((strlen(argv[0]) + strlen(__FILE__)) > 25)
+ {
+ printf("-- Generated by the C program %.40s.\n",
+ my_program_invocation_name);
+ }
+ else
+ {
+ printf("-- Generated by the C program %s (source %s).\n",
+ my_program_invocation_name,
+ __FILE__);
+ }
printf("-- Do not edit this file directly.\n");
printf("-- The values provided here may vary on your system.\n");
printf("\n");
-- sale, use or other dealings in this Software without prior written --
-- authorization. --
-------------------------------------------------------------------------------
--- $Id: NEWS,v 1.3450 2020/02/15 18:56:00 tom Exp $
+-- $Id: NEWS,v 1.3453 2020/02/23 01:08:47 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.
+20200222
+ + expanded note in ncurses.3x regarding automatically-included headers
+ + improve vt50h and vt52 based on DECScope manual -TD
+ + add/use vt52+keypad and vt52-basic -TD
+ + check/workaround for line-too-long in Ada95 generate utility when
+ building out-of-tree.
+ + improve/update HEADER_DEPS in */Makefile.in
+ + add "check" rule to include/Makefile, to demonstrate that the headers
+ include all of the required headers for the types used.
+
20200215
+ improve manual page for panel library, extending the portability
section as well as documenting error-returns.
-5:0:10 6.2 20200215
+5:0:10 6.2 20200222
-# $Id: Makefile.in,v 1.119 2020/02/02 23:34:34 tom Exp $
+# $Id: Makefile.in,v 1.121 2020/02/22 17:29:13 tom Exp $
##############################################################################
# Copyright 2018,2020 Thomas E. Dickey #
# Copyright 1998-2015,2016 Free Software Foundation, Inc. #
###############################################################################
-internal_h = $(srcdir)/internal.h \
- $(INCDIR)/ncurses_cfg.h \
- $(INCDIR)/nc_mingw.h \
- $(INCDIR)/nc_string.h
-
-etip_h = etip.h \
- $(INCDIR)/ncurses_dll.h
+HEADER_DEPS = \
+ etip.h \
+ ../include/curses.h \
+ ../include/eti.h \
+ ../include/form.h \
+ ../include/menu.h \
+ ../include/ncurses_cfg.h \
+ ../include/ncurses_def.h \
+ ../include/ncurses_dll.h \
+ ../include/panel.h \
+ ../include/unctrl.h \
+ $(INCDIR)/nc_mingw.h \
+ $(INCDIR)/nc_string.h \
+ $(srcdir)/cursesp.h \
+ $(srcdir)/cursesw.h \
+ $(srcdir)/cursslk.h \
+ $(srcdir)/internal.h
cursesw_h = $(srcdir)/cursesw.h \
- $(etip_h) \
- $(INCDIR)/curses.h
+ $(HEADER_DEPS)
cursesp_h = $(srcdir)/cursesp.h \
- $(cursesw_h) \
- $(INCDIR)/panel.h
+ $(cursesw_h)
cursesf_h = $(srcdir)/cursesf.h \
- $(cursesp_h) \
- $(INCDIR)/form.h
+ $(cursesp_h)
cursesm_h = $(srcdir)/cursesm.h \
- $(cursesp_h) \
- $(INCDIR)/menu.h
+ $(cursesp_h)
cursslk_h = $(srcdir)/cursslk.h \
$(cursesw_h)
OBJS_DEMO = $(MODEL)/demo$o
$(MODEL)/demo$o : $(srcdir)/demo.cc \
- $(internal_h) \
+ $(HEADER_DEPS) \
$(cursesf_h) \
$(cursesm_h) \
$(cursesapp_h)
# use or other dealings in this Software without prior written #
# authorization. #
##############################################################################
-# $Id: dist.mk,v 1.1335 2020/02/15 09:30:48 tom Exp $
+# $Id: dist.mk,v 1.1336 2020/02/22 13:49:45 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 = 20200215
+NCURSES_PATCH = 20200222
# 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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
</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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
</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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
<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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
https://invisible-island.net/ncurses/tctest.html
- This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
</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="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
</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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************
- * @Id: ncurses.3x,v 1.144 2020/02/02 23:34:34 tom Exp @
+ * @Id: ncurses.3x,v 1.145 2020/02/23 01:05:45 tom Exp @
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<HTML>
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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
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
between the XSI Curses and <STRONG>ncurses</STRONG> calls) are described in <STRONG>PORTABILITY</STRONG>
sections of the library man pages.
+
+</PRE><H3><a name="h3-Error-checking">Error checking</a></H3><PRE>
+ In many cases, X/Open Curses is vague about error conditions, omitting
+ some of the SVr4 documentation.
+
Unlike other implementations, this one checks parameters such as point-
- ers to WINDOW structures to ensure they are not null. The main reason
- for providing this behavior is to guard against programmer error. The
- standard interface does not provide a way for the library to tell an
+ ers to WINDOW structures to ensure they are not null. The main reason
+ for providing this behavior is to guard against programmer error. The
+ standard interface does not provide a way for the library to tell an
application which of several possible errors were detected. Relying on
this (or some other) extension will adversely affect the portability of
curses applications.
- This implementation also contains several extensions:
+
+</PRE><H3><a name="h3-Extensions-versus-portability">Extensions versus portability</a></H3><PRE>
+ Most of the extensions provided by ncurses have not been standardized.
+ Some have been incorporated into other implementations, such as
+ PDCurses or NetBSD curses. Here are a few to consider:
<STRONG>o</STRONG> The routine <STRONG>has_key</STRONG> is not part of XPG4, nor is it present in SVr4.
See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> manual page for details.
- <STRONG>o</STRONG> The routine <STRONG>slk_attr</STRONG> is not part of XPG4, nor is it present in
+ <STRONG>o</STRONG> The routine <STRONG>slk_attr</STRONG> is not part of XPG4, nor is it present in
SVr4. See the <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> manual page for details.
- <STRONG>o</STRONG> The routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mouseinterval</STRONG>, and
- <STRONG>wenclose</STRONG> relating to mouse interfacing are not part of XPG4, nor
- are they present in SVr4. See the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> manual page for
+ <STRONG>o</STRONG> The routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mouseinterval</STRONG>, and
+ <STRONG>wenclose</STRONG> relating to mouse interfacing are not part of XPG4, nor
+ are they present in SVr4. See the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> manual page for
details.
- <STRONG>o</STRONG> The routine <STRONG>mcprint</STRONG> was not present in any previous curses imple-
+ <STRONG>o</STRONG> The routine <STRONG>mcprint</STRONG> was not present in any previous curses imple-
mentation. See the <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual page for details.
<STRONG>o</STRONG> The routine <STRONG>wresize</STRONG> is not part of XPG4, nor is it present in SVr4.
tion programs. See <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> for the discussion of <STRONG>is_scrol-</STRONG>
<STRONG>lok</STRONG>, etc.
- <STRONG>o</STRONG> This implementation can be configured to provide rudimentary sup-
- port for multi-threaded applications. See <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> for
+ <STRONG>o</STRONG> This implementation can be configured to provide rudimentary sup-
+ port for multi-threaded applications. See <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> for
details.
- <STRONG>o</STRONG> This implementation can also be configured to provide a set of
- functions which improve the ability to manage multiple screens.
+ <STRONG>o</STRONG> This implementation can also be configured to provide a set of
+ functions which improve the ability to manage multiple screens.
See <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> for details.
- In historic curses versions, delays embedded in the capabilities <STRONG>cr</STRONG>,
- <STRONG>ind</STRONG>, <STRONG>cub1</STRONG>, <STRONG>ff</STRONG> and <STRONG>tab</STRONG> activated corresponding delay bits in the UNIX
+
+</PRE><H3><a name="h3-Padding-differences">Padding differences</a></H3><PRE>
+ In historic curses versions, delays embedded in the capabilities <STRONG>cr</STRONG>,
+ <STRONG>ind</STRONG>, <STRONG>cub1</STRONG>, <STRONG>ff</STRONG> and <STRONG>tab</STRONG> activated corresponding delay bits in the UNIX
tty driver. In this implementation, all padding is done by sending NUL
- bytes. This method is slightly more expensive, but narrows the inter-
- face to the UNIX kernel significantly and increases the package's
+ bytes. This method is slightly more expensive, but narrows the inter-
+ face to the UNIX kernel significantly and increases the package's
portability correspondingly.
-</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
- The header file <STRONG><curses.h></STRONG> automatically includes the header files
+</PRE><H3><a name="h3-Header-files">Header files</a></H3><PRE>
+ The header file <STRONG><curses.h></STRONG> automatically includes the header files
<STRONG><stdio.h></STRONG> and <STRONG><unctrl.h></STRONG>.
+ X/Open Curses has more to say, but does not finish the story:
+
+ The inclusion of <curses.h> may make visible all symbols from the
+ headers <stdio.h>, <term.h>, <termios.h>, and <wchar.h>.
+
+ Here is a more complete story:
+
+ <STRONG>o</STRONG> Starting with BSD curses, all implementations have included
+ <stdio.h>.
+
+ BSD curses included <curses.h> and <unctrl.h> from an internal
+ header "curses.ext" ("ext" was a short name for <EM>externs</EM>).
+
+ BSD curses used <stdio.h> internally (for <STRONG>printw</STRONG> and <STRONG>scanw</STRONG>), but
+ nothing in <curses.h> itself relied upon <stdio.h>.
+
+ <STRONG>o</STRONG> SVr2 curses added <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>, which relies upon <stdio.h>. That
+ is, the function prototype uses <STRONG>FILE</STRONG>.
+
+ SVr4 curses added <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG>, which also use <stdio.h>.
+
+ X/Open Curses documents all three of these functions.
+
+ SVr4 curses and X/Open Curses do not require the developer to
+ include <stdio.h> before including <curses.h>. Both document
+ curses showing <curses.h> as the only required header.
+
+ As a result, standard <curses.h> will always include <stdio.h>.
+
+ <STRONG>o</STRONG> X/Open Curses is inconsistent with respect to SVr4 regarding <unc-
+ trl.h>.
+
+ As noted in <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, ncurses includes <unctrl.h> from
+ <curses.h> (like SVr4).
+
+ <STRONG>o</STRONG> X/Open's comments about <term.h> and <termios.h> may refer to HP-UX
+ and AIX:
+
+ HP-UX curses includes <term.h> from <curses.h> to declare <STRONG>setupterm</STRONG>
+ in curses.h, but ncurses (and Solaris curses) do not.
+
+ AIX curses includes <term.h> and <termios.h>. Again, ncurses (and
+ Solaris curses) do not.
+
+ <STRONG>o</STRONG> X/Open says that <curses.h> <EM>may</EM> include <term.h>, but there is no
+ requirement that it do that.
+
+ Some programs use functions declared in both <curses.h> and
+ <term.h>, and must include both headers in the same module. Very
+ old versions of AIX curses required including <curses.h> before
+ including <term.h>.
+
+ Because ncurses header files include the headers needed to define
+ datatypes used in the headers, ncurses header files can be included
+ in any order. But for portability, you should include <curses.h>
+ before <term.h>.
+
+ <STRONG>o</STRONG> X/Open Curses says <EM>"may</EM> <EM>make</EM> <EM>visible"</EM> because including a header
+ file does not necessarily make all symbols in it visible (there are
+ ifdef's to consider).
+
+ For instance, in ncurses <wchar.h> <EM>may</EM> be included if the proper
+ symbol is defined, and if ncurses is configured for wide-character
+ support. If the header is included, its symbols may be made visi-
+ ble. That depends on the value used for <STRONG>_XOPEN_SOURCE</STRONG> feature test
+ macro.
+
+
+</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
If standard output from a <STRONG>ncurses</STRONG> program is re-directed to something
which is not a tty, screen updates will be directed to standard error.
This was an undocumented feature of AT&T System V Release 3 curses.
<li><a href="#h2-FILES">FILES</a></li>
<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
-<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-Error-checking">Error checking</a></li>
+<li><a href="#h3-Extensions-versus-portability">Extensions versus portability</a></li>
+<li><a href="#h3-Padding-differences">Padding differences</a></li>
+<li><a href="#h3-Header-files">Header files</a></li>
+</ul>
+</li>
<li><a href="#h2-NOTES">NOTES</a></li>
<li><a href="#h2-AUTHORS">AUTHORS</a></li>
</ul>
</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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
</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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
</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="tset.1.html">tset(1)</A></STRONG>, <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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
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 20200215).
+ This manual describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
<STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>ter-</STRONG>
<STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
</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="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
- This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
<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 20200215).
+ This describes <STRONG>ncurses</STRONG> version 6.2 (patch 20200222).
-# $Id: Makefile.in,v 1.65 2020/02/02 23:34:34 tom Exp $
+# $Id: Makefile.in,v 1.67 2020/02/22 16:32:11 tom Exp $
##############################################################################
# Copyright 2020 Thomas E. Dickey #
# Copyright 1998-2015,2018 Free Software Foundation, Inc. #
CPP = @CPP@
CFLAGS = @CFLAGS@
-CPPFLAGS = -I${top_srcdir}/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
+INCDIR = $(top_srcdir)/include
+BASE_DIR = $(top_srcdir)/ncurses
+CPPFLAGS = -I$(BASE_DIR) -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
cp $(srcdir)/form.h $@
HEADER_DEPS = \
- $(srcdir)/form.priv.h \
- $(srcdir)/form.h \
- ../include/mf_common.h \
../include/curses.h \
- ../include/eti.h
+ ../include/eti.h \
+ ../include/mf_common.h \
+ ../include/ncurses_cfg.h \
+ ../include/ncurses_def.h \
+ ../include/ncurses_dll.h \
+ ../include/term.h \
+ ../include/unctrl.h \
+ $(BASE_DIR)/curses.priv.h \
+ $(BASE_DIR)/new_pair.h \
+ $(INCDIR)/nc_alloc.h \
+ $(INCDIR)/nc_panel.h \
+ $(INCDIR)/nc_string.h \
+ $(INCDIR)/nc_termios.h \
+ $(INCDIR)/nc_tparm.h \
+ $(INCDIR)/term_entry.h \
+ $(srcdir)/form.h \
+ $(srcdir)/form.priv.h
tags:
$(CTAGS) *.[ch]
-# $Id: Makefile.in,v 1.46 2020/02/02 23:34:34 tom Exp $
+# $Id: Makefile.in,v 1.48 2020/02/19 23:54:22 tom Exp $
##############################################################################
# Copyright 2019,2020 Thomas E. Dickey #
# Copyright 1998-2013,2015 Free Software Foundation, Inc. #
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey 1996-2001
+# Author: Thomas E. Dickey 1996-on
#
# Makefile for ncurses source code.
#
AWK = @AWK@
LN_S = @LN_S@
+CC = @CC@
+CFLAGS = @CFLAGS@
+CPPFLAGS = -DHAVE_CONFIG_H -I. @CPPFLAGS@
+
CTAGS = @CTAGS@
ETAGS = @ETAGS@
realclean :: distclean
+# Verify that each header-file can be compiled without including another.
+check:
+ @$(SHELL) -c "for header in *.h;\
+ do \
+ echo \"** testing \$${header}\" ; \
+ echo \"#include <\$${header}>\" >headers.c; \
+ echo \"int main(void) { return 0; }\" >>headers.c; \
+ $(CC) -c $(CFLAGS) $(CPPFLAGS) headers.c; \
+ done"
+ -@rm -f headers.*
+
###############################################################################
# The remainder of this file is automatically generated during configuration
###############################################################################
.\" authorization. *
.\"***************************************************************************
.\"
-.\" $Id: ncurses.3x,v 1.144 2020/02/02 23:34:34 tom Exp $
+.\" $Id: ncurses.3x,v 1.145 2020/02/23 01:05:45 tom Exp $
.hy 0
.TH ncurses 3X ""
.ie \n(.g .ds `` \(lq
A small number of local differences (that is, individual differences between
the XSI Curses and \fBncurses\fR calls) are described in \fBPORTABILITY\fR
sections of the library man pages.
+.SS Error checking
+.PP
+In many cases, X/Open Curses is vague about error conditions,
+omitting some of the SVr4 documentation.
.PP
Unlike other implementations, this one checks parameters such as pointers
to WINDOW structures to ensure they are not null.
to tell an application which of several possible errors were detected.
Relying on this (or some other) extension will adversely affect the
portability of curses applications.
+.SS Extensions versus portability
.PP
-This implementation also contains several extensions:
+Most of the extensions provided by ncurses have not been standardized.
+Some have been incorporated into other implementations, such as
+PDCurses or NetBSD curses.
+Here are a few to consider:
.bP
The routine \fBhas_key\fR is not part of XPG4, nor is it present in SVr4.
See the \fBcurs_getch\fR(3X) manual page for details.
This implementation can also be configured to provide a set of functions which
improve the ability to manage multiple screens.
See \fBcurs_sp_funcs\fR(3X) for details.
+.SS Padding differences
.PP
In historic curses versions, delays embedded in the capabilities \fBcr\fR,
\fBind\fR, \fBcub1\fR, \fBff\fR and \fBtab\fR activated corresponding delay
This method is slightly more expensive, but narrows the interface
to the UNIX kernel significantly and increases the package's portability
correspondingly.
-.SH NOTES
+.SS Header files
The header file \fB<curses.h>\fR automatically includes the header files
\fB<stdio.h>\fR and \fB<unctrl.h>\fR.
.PP
+X/Open Curses has more to say,
+but does not finish the story:
+.RS 4
+.PP
+The inclusion of <curses.h> may make visible all symbols
+from the headers <stdio.h>, <term.h>, <termios.h>, and <wchar.h>.
+.RE
+.PP
+Here is a more complete story:
+.bP
+Starting with BSD curses, all implementations have included <stdio.h>.
+.IP
+BSD curses included <curses.h> and <unctrl.h> from an internal header
+"curses.ext" ("ext" was a short name for \fIexterns\fP).
+.IP
+BSD curses used <stdio.h> internally (for \fBprintw\fP and \fBscanw\fP),
+but nothing in <curses.h> itself relied upon <stdio.h>.
+.bP
+SVr2 curses added \fBnewterm\fP(3X), which relies upon <stdio.h>.
+That is, the function prototype uses \fBFILE\fP.
+.IP
+SVr4 curses added \fBputwin\fP and \fBgetwin\fP, which also use <stdio.h>.
+.IP
+X/Open Curses documents all three of these functions.
+.IP
+SVr4 curses and X/Open Curses do not require the developer to
+include <stdio.h> before including <curses.h>.
+Both document curses showing <curses.h> as the only required header.
+.IP
+As a result, standard <curses.h> will always include <stdio.h>.
+.bP
+X/Open Curses is inconsistent with respect to SVr4 regarding <unctrl.h>.
+.IP
+As noted in \fBcurs_util\fP(3X), ncurses includes <unctrl.h> from
+<curses.h> (like SVr4).
+.bP
+X/Open's comments about <term.h> and <termios.h> may refer to HP-UX and AIX:
+.IP
+HP-UX curses includes <term.h> from <curses.h>
+to declare \fBsetupterm\fP in curses.h,
+but ncurses (and Solaris curses) do not.
+.IP
+AIX curses includes <term.h> and <termios.h>.
+Again, ncurses (and Solaris curses) do not.
+.bP
+X/Open says that <curses.h> \fImay\fP include <term.h>,
+but there is no requirement that it do that.
+.IP
+Some programs use functions declared in both <curses.h> and <term.h>,
+and must include both headers in the same module.
+Very old versions of AIX curses required including <curses.h>
+before including <term.h>.
+.IP
+Because ncurses header files include the headers needed to
+define datatypes used in the headers,
+ncurses header files can be included in any order.
+But for portability, you should include <curses.h> before <term.h>.
+.bP
+X/Open Curses says \fI"may make visible"\fP
+because including a header file does not necessarily make all symbols
+in it visible (there are ifdef's to consider).
+.IP
+For instance, in ncurses <wchar.h> \fImay\fP be included if
+the proper symbol is defined, and if ncurses is configured for
+wide-character support.
+If the header is included, its symbols may be made visible.
+That depends on the value used for \fB_XOPEN_SOURCE\fP
+feature test macro.
+.SH NOTES
+.PP
If standard output from a \fBncurses\fR program is re-directed to something
which is not a tty, screen updates will be directed to standard error.
This was an undocumented feature of AT&T System V Release 3 curses.
-# $Id: Makefile.in,v 1.66 2020/02/02 23:34:34 tom Exp $
+# $Id: Makefile.in,v 1.67 2020/02/22 16:35:47 tom Exp $
##############################################################################
# Copyright 2020 Thomas E. Dickey #
# Copyright 1998-2015,2018 Free Software Foundation, Inc. #
CPP = @CPP@
CFLAGS = @CFLAGS@
-CPPFLAGS = -I${top_srcdir}/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
+INCDIR = $(top_srcdir)/include
+BASE_DIR = $(top_srcdir)/ncurses
+CPPFLAGS = -I$(BASE_DIR) -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
cp $(srcdir)/mf_common.h $@
HEADER_DEPS = \
+ ../include/curses.h \
+ ../include/ncurses_cfg.h \
+ ../include/ncurses_def.h \
+ ../include/ncurses_dll.h \
+ ../include/term.h \
+ ../include/unctrl.h \
+ $(BASE_DIR)/curses.priv.h \
+ $(BASE_DIR)/new_pair.h \
+ $(INCDIR)/nc_alloc.h \
+ $(INCDIR)/nc_panel.h \
+ $(INCDIR)/nc_string.h \
+ $(INCDIR)/nc_termios.h \
+ $(INCDIR)/nc_tparm.h \
+ $(INCDIR)/term_entry.h \
$(srcdir)/menu.priv.h \
- $(AUTO_SRC) \
- ../include/curses.h
+ $(AUTO_SRC)
tags:
$(CTAGS) *.[ch]
# Report bugs and new terminal descriptions to
# bug-ncurses@gnu.org
#
-# $Revision: 1.779 $
-# $Date: 2020/01/19 01:09:38 $
+# $Revision: 1.787 $
+# $Date: 2020/02/22 23:05:24 $
#
# 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
# to a crude plotting feature) -TD
vt52|dec vt52,
OTbs,
+ it#8, lines#24,
+ acsc=+h.k0affggolpnqprrss, home=\EH, kbs=^H, nel=\r\n,
+ ri=\EI, rmacs=\EG, rmkx=\E>, smacs=\EF, smkx=\E=, u8=\E/[KL],
+ use=vt50h,
+
+# This is more likely the "vt52" that you would see in emulation, i.e., no
+# keypad, no graphics.
+vt52-basic|vt52 for emulators,
cols#80, it#8, lines#24,
- acsc=+h.k0affggolpnqprrss, bel=^G, clear=\EH\EJ, cr=\r,
- cub1=\ED, cud1=\EB, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
- kcuf1=\EC, kcuu1=\EA, nel=\r\n, ri=\EI, rmacs=\EG, smacs=\EF,
+ bel=^G, clear=\EH\EJ, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC,
+ cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
+ home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB,
+ kcuf1=\EC, kcuu1=\EA, nel=\r\n, ri=\EI,
#### DEC VT100 and compatibles
#
rep=%p1%c\E[%p2%db$<1*/>, rev=\E[7m, rmso=\E[m,
rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m,
gator-52|HP 9000 model 237 emulating VT52,
- cols#128, lines#47, use=vt52,
+ cols#128, lines#47, use=vt52-basic,
gator-52t|HP 9000 model 237 emulating extra-tall VT52,
lines#94, use=gator-52,
# Be sure the auto lf/cr switch is set to cr.
hz1552|hazeltine 1552,
OTbs,
- cud1=\n, dl1=\EO, il1=\EE, kf1=\EP, kf2=\EQ, kf3=\ER, lf1=blue,
- lf2=red, lf3=green, use=vt52,
+ cud1=\n, dl1=\EO, il1=\EE, lf1=blue, lf2=red, lf3=green,
+ use=vt52,
hz1552-rv|hazeltine 1552 reverse video,
cud1=\n, rmso=\ET, smso=\ES, use=hz1552,
# Note: h2000 won't work well because of a clash between upper case and ~'s.
#### DEC terminals (Obsolete types: DECwriter and vt40/42/50)
#
-# These entries are DEC's official terminfos for its older terminals.
-# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support
-# Engineering for more information. Updated terminfos and termcaps
-# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
+# These entries came from DEC's official terminfos for its older terminals
+# (which happen to be identical to the AT&T/SCO terminal descriptions),
+# Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support Engineering
+# may have had more information. Updated terminfos and termcaps were available
+# at ftp://gatekeeper.dec.com/pub/DEC/termcaps.
+
+# DEC's terminfos did not describe the auxiliary keypad.
+#
+# DECScope of course had no "function keys", but this building block assigns
+# the three blank keys at the top of the auxiliary (numeric) keypad, using
+# the same analogy as vt100 (also lacking function-keys).
#
+# These assignments use the same layout for 0-9 as vt100+keypad; the vt52
+# keypad had its cursor-keys on the right-column as shown -TD
+# _______________________________________
+# | PF1 | PF2 | PF3 | c-up |
+# | \EP | \EQ | \ER | \EA |
+# |_kf1__k1_|_kf2__k2_|_kf3__k3_|kcuu1_k4_|
+# | 7 8 9 c-down |
+# | \E?w | \E?x | \E?y | \EB |
+# |_kf9__k9_|_kf10_k;_|_kf0__k0_|kcud1____|
+# | 4 | 5 | 6 | c-right |
+# | \E?t | \E?u | \E?v | \EC |
+# |_kf5__k5_|_kf6__k6_|_kf7__k7_|kcuf1_k8_|
+# | 1 | 2 | 3 | c-left |
+# | \E?q | \E?r | \E?s | \ED |
+# |_ka1__K1_|_kb2__K2_|_ka3__K3_|kcub1____|
+# | 0 | . | enter |
+# | \E?p | \E?n | \E?M |
+# |___kc1_______K4____|_kc3__K5_|_kent_@8_|
+#
+vt52+keypad|DECScope auxiliary keypad,
+ ka1=\E?q, ka3=\E?s, kb2=\E?r, kc1=\E?p, kc3=\E?n, kf0=\E?y,
+ kf1=\EP, kf2=\EQ, kf3=\ER, kf5=\E?t, kf6=\E?u, kf7=\E?v,
+ kf8=\E?w, kf9=\E?x,
gt40|dec gt40,
OTbs, os,
OTbs, os,
cols#72, lines#40,
bel=^G, cr=\r, cub1=^H, cud1=\n,
+
vt50|dec vt50,
OTbs,
cols#80, lines#12,
bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
- cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=\n,
+ cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=\n, u8=\E/A, u9=\EZ,
vt50h|dec vt50h,
- OTbs,
- cols#80, lines#12,
- bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC,
- cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ,
- el=\EK, ht=^I, ind=\n, ri=\EI,
+ cub1=\ED, cud1=\EB, cup=\EY%p1%{32}%+%c%p2%{32}%+%c,
+ kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, u8=\E/[HJ],
+ use=vt52+keypad, use=vt50,
+
# (vt61: there's a BSD termcap that claims <dl1=\EPd>, <il1=\EPf.> <kbs=^H>)
vt61|vt-61|vt61.5|dec vt61,
cols#80, lines#24,
# + spelling fixes per codespell -TD
# + improve xm example for xterm+x11mouse, xterm+sm+1006 -TD
#
+# 2020-02-22
+# + improve vt50h and vt52 based on DECScope manual -TD
+# + add/use vt52+keypad and vt52-basic -TD
+#
######## SHANTIH! SHANTIH! SHANTIH!
-# $Id: Makefile.in,v 1.168 2020/02/02 23:34:34 tom Exp $
+# $Id: Makefile.in,v 1.169 2020/02/22 15:45:23 tom Exp $
##############################################################################
# Copyright 2018-2019,2020 Thomas E. Dickey #
# Copyright 1998-2017,2018 Free Software Foundation, Inc. #
keys.list
HEADER_DEPS = \
- $(srcdir)/curses.priv.h \
- ../include/ncurses_dll.h \
../include/ncurses_cfg.h \
+ ../include/ncurses_def.h \
+ ../include/ncurses_dll.h \
../include/curses.h \
- $(INCDIR)/nc_panel.h \
../include/term.h \
- $(INCDIR)/term_entry.h \
- $(INCDIR)/nc_tparm.h \
+ ../include/unctrl.h \
$(INCDIR)/nc_alloc.h \
- $(INCDIR)/nc_mingw.h
+ $(INCDIR)/nc_mingw.h \
+ $(INCDIR)/nc_panel.h \
+ $(INCDIR)/nc_string.h \
+ $(INCDIR)/nc_termios.h \
+ $(INCDIR)/nc_tparm.h \
+ $(INCDIR)/term_entry.h \
+ $(srcdir)/curses.priv.h \
+ $(srcdir)/new_pair.h
TEST_DEPS = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@
TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@
-ncurses6 (6.2+20200215) unstable; urgency=low
+ncurses6 (6.2+20200222) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 15 Feb 2020 04:30:48 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 22 Feb 2020 08:49:45 -0500
ncurses6 (5.9-20131005) unstable; urgency=low
-ncurses6 (6.2+20200215) unstable; urgency=low
+ncurses6 (6.2+20200222) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 15 Feb 2020 04:30:48 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 22 Feb 2020 08:49:45 -0500
ncurses6 (5.9-20131005) unstable; urgency=low
-ncurses6 (6.2+20200215) unstable; urgency=low
+ncurses6 (6.2+20200222) unstable; urgency=low
* latest weekly patch
- -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 15 Feb 2020 04:30:48 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 22 Feb 2020 08:49:45 -0500
ncurses6 (5.9-20120608) unstable; urgency=low
-; $Id: mingw-ncurses.nsi,v 1.378 2020/02/15 09:30:48 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.379 2020/02/22 13:49:45 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 "2020"\r
-!define VERSION_MMDD "0215"\r
+!define VERSION_MMDD "0222"\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: 20200215
+Release: 20200222
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
Summary: shared libraries for terminal handling
Name: ncurses6
Version: 6.2
-Release: 20200215
+Release: 20200222
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
Summary: Curses library with POSIX thread support.
Name: ncursest6
Version: 6.2
-Release: 20200215
+Release: 20200222
License: X11
Group: Development/Libraries
Source: ncurses-%{version}-%{release}.tgz
-# $Id: Makefile.in,v 1.71 2020/02/02 23:34:34 tom Exp $
+# $Id: Makefile.in,v 1.72 2020/02/22 16:40:36 tom Exp $
##############################################################################
# Copyright 2020 Thomas E. Dickey #
# Copyright 1998-2015,2018 Free Software Foundation, Inc. #
CPP = @CPP@
CFLAGS = @CFLAGS@
-CPPFLAGS = -I${top_srcdir}/ncurses -DHAVE_CONFIG_H @CPPFLAGS@
+INCDIR = $(top_srcdir)/include
+BASE_DIR = $(top_srcdir)/ncurses
+CPPFLAGS = -I$(BASE_DIR) -DHAVE_CONFIG_H @CPPFLAGS@
CCFLAGS = $(CPPFLAGS) $(CFLAGS)
cp $(srcdir)/panel.h $@
HEADER_DEPS = \
+ ../include/curses.h \
+ ../include/ncurses_cfg.h \
+ ../include/ncurses_def.h \
+ ../include/ncurses_dll.h \
+ ../include/term.h \
+ ../include/unctrl.h \
+ $(BASE_DIR)/curses.priv.h \
+ $(BASE_DIR)/new_pair.h \
+ $(INCDIR)/nc_alloc.h \
+ $(INCDIR)/nc_panel.h \
+ $(INCDIR)/nc_string.h \
+ $(INCDIR)/nc_termios.h \
+ $(INCDIR)/nc_tparm.h \
+ $(INCDIR)/term_entry.h \
$(srcdir)/panel.priv.h \
$(srcdir)/panel.h
-# $Id: Makefile.in,v 1.121 2020/02/02 23:34:34 tom Exp $
+# $Id: Makefile.in,v 1.122 2020/02/22 16:51:31 tom Exp $
##############################################################################
# Copyright 2020 Thomas E. Dickey #
# Copyright 1998-2017,2018 Free Software Foundation, Inc. #
LINT_OPTS = @LINT_OPTS@
LINT_LIBS = -lform -lmenu -lpanel -lncurses @LIBS@
+INCDIR = $(top_srcdir)/include
+
HEADER_DEPS = \
../include/curses.h \
- ../include/term.h
+ ../include/term.h \
+ ../include/ncurses_cfg.h \
+ ../include/ncurses_def.h \
+ ../include/ncurses_dll.h \
+ ../include/term.h \
+ ../include/unctrl.h \
+ $(INCDIR)/nc_alloc.h
# The rest is generated from the "programs" and "modules" files...