From 84cf9f63bf604413fa5714ef91f83076ac8f236b Mon Sep 17 00:00:00 2001 From: "Thomas E. Dickey" Date: Sun, 16 Feb 2020 02:14:29 +0000 Subject: [PATCH] ncurses 6.2 - patch 20200215 + improve manual page for panel library, extending the portability section as well as documenting error-returns. + show tic's version when installing terminal database in run_tic.sh + correct check for gcc vs other compilers used in ncurses 6.0, from FreeBSD patch by Kyle Evans (cf: 20150725). + add notes for 6.2 to INSTALL. --- INSTALL | 39 +++- NEWS | 10 +- VERSION | 2 +- dist.mk | 4 +- doc/html/man/adacurses6-config.1.html | 2 +- doc/html/man/captoinfo.1m.html | 2 +- doc/html/man/clear.1.html | 2 +- doc/html/man/form.3x.html | 2 +- doc/html/man/infocmp.1m.html | 2 +- doc/html/man/infotocap.1m.html | 2 +- doc/html/man/menu.3x.html | 2 +- doc/html/man/ncurses.3x.html | 2 +- doc/html/man/ncurses6-config.1.html | 2 +- doc/html/man/panel.3x.html | 278 +++++++++++++++++--------- doc/html/man/tabs.1.html | 2 +- doc/html/man/terminfo.5.html | 2 +- doc/html/man/tic.1m.html | 2 +- doc/html/man/toe.1m.html | 2 +- doc/html/man/tput.1.html | 2 +- doc/html/man/tset.1.html | 2 +- man/manhtml.aliases | 5 +- man/panel.3x | 237 +++++++++++++--------- misc/run_tic.in | 4 +- ncurses/base/MKlib_gen.sh | 4 +- package/debian-mingw/changelog | 4 +- package/debian-mingw64/changelog | 4 +- package/debian/changelog | 4 +- package/mingw-ncurses.nsi | 4 +- package/mingw-ncurses.spec | 2 +- package/ncurses.spec | 2 +- package/ncursest.spec | 2 +- 31 files changed, 422 insertions(+), 213 deletions(-) diff --git a/INSTALL b/INSTALL index 69cf439a..f3e710d8 100644 --- a/INSTALL +++ b/INSTALL @@ -26,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: INSTALL,v 1.216 2020/02/02 23:34:34 tom Exp $ +-- $Id: INSTALL,v 1.217 2020/02/15 13:39:30 tom Exp $ --------------------------------------------------------------------- How to install Ncurses/Terminfo on your system --------------------------------------------------------------------- @@ -1343,6 +1343,43 @@ COMPATIBILITY WITH OLDER VERSIONS OF NCURSES: you may encounter when building a system with different versions of ncurses: + 6.2 (Feb 12, 2020) + Interface changes: + + + the terminal database must be compiled with ncurses 6.2 tic; + older versions of tic/infocmp will not work. Aside from that, + the compiled database will work with older applications. + + + "*.pc" and "ncurses*-config" files give the same information. + + + vwprintw and vwscanw are deprecated. + + Added extensions: + + + These make it simpler to substitute a debug-configuration of the + library for non-debug: + curses_trace + exit_curses + exit_terminfo + + Added internal functions (other than "_sp" variants): + + + These provide fast-lookup of common user-defined capabilities: + _nc_find_user_entry + _nc_get_userdefs_table + _nc_get_hash_user + + + This is added to work around compiler-warnings: + _nc_fmt_funcptr + + Removed internal functions: + + + _nc_import_termtype + + Modified internal functions: + + + _nc_reserve_pairs no longer returns a value + 6.1 (Jan 27, 2018) Interface changes: diff --git a/NEWS b/NEWS index ccc1d43b..c4f6fe36 100644 --- a/NEWS +++ b/NEWS @@ -26,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: NEWS,v 1.3446 2020/02/12 02:21:21 tom Exp $ +-- $Id: NEWS,v 1.3450 2020/02/15 18:56:00 tom Exp $ ------------------------------------------------------------------------------- This is a log of changes that ncurses has gone through since Zeyd started @@ -46,6 +46,14 @@ 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. +20200215 + + improve manual page for panel library, extending the portability + section as well as documenting error-returns. + + show tic's version when installing terminal database in run_tic.sh + + correct check for gcc vs other compilers used in ncurses 6.0, from + FreeBSD patch by Kyle Evans (cf: 20150725). + + add notes for 6.2 to INSTALL. + 20200212 6.2 release for upload to ftp.gnu.org + update release notes + minor build-fixes, mostly to test-package scripts diff --git a/VERSION b/VERSION index d443029c..73ac659d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5:0:10 6.2 20200212 +5:0:10 6.2 20200215 diff --git a/dist.mk b/dist.mk index aa6685a7..3d2d2f23 100644 --- a/dist.mk +++ b/dist.mk @@ -26,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: dist.mk,v 1.1334 2020/02/09 21:49:08 tom Exp $ +# $Id: dist.mk,v 1.1335 2020/02/15 09:30:48 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 = 20200212 +NCURSES_PATCH = 20200215 # We don't append the patch to the version, since this only applies to releases VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) diff --git a/doc/html/man/adacurses6-config.1.html b/doc/html/man/adacurses6-config.1.html index f2de0a2c..bf325552 100644 --- a/doc/html/man/adacurses6-config.1.html +++ b/doc/html/man/adacurses6-config.1.html @@ -126,7 +126,7 @@

SEE ALSO

        curses(3x)
 
-       This describes ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
 
 
diff --git a/doc/html/man/captoinfo.1m.html b/doc/html/man/captoinfo.1m.html
index f66e3685..fbea4ddd 100644
--- a/doc/html/man/captoinfo.1m.html
+++ b/doc/html/man/captoinfo.1m.html
@@ -199,7 +199,7 @@
 

SEE ALSO

        infocmp(1m), curses(3x), terminfo(5)
 
-       This describes ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
 
 

AUTHOR

diff --git a/doc/html/man/clear.1.html b/doc/html/man/clear.1.html
index 93455b4c..853f05c3 100644
--- a/doc/html/man/clear.1.html
+++ b/doc/html/man/clear.1.html
@@ -149,7 +149,7 @@
 

SEE ALSO

        tput(1), terminfo(5)
 
-       This describes ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
 
 
diff --git a/doc/html/man/form.3x.html b/doc/html/man/form.3x.html
index 82a8afe5..2dbd8ba1 100644
--- a/doc/html/man/form.3x.html
+++ b/doc/html/man/form.3x.html
@@ -247,7 +247,7 @@
        curses(3x)  and  related  pages  whose names begin "form_" for detailed
        descriptions of the entry points.
 
-       This describes ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
 
 
diff --git a/doc/html/man/infocmp.1m.html b/doc/html/man/infocmp.1m.html
index 0f1f0e5c..ec07820b 100644
--- a/doc/html/man/infocmp.1m.html
+++ b/doc/html/man/infocmp.1m.html
@@ -513,7 +513,7 @@
 
        https://invisible-island.net/ncurses/tctest.html
 
-       This describes ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
 
 

AUTHOR

diff --git a/doc/html/man/infotocap.1m.html b/doc/html/man/infotocap.1m.html
index aadf8f49..02a383c2 100644
--- a/doc/html/man/infotocap.1m.html
+++ b/doc/html/man/infotocap.1m.html
@@ -91,7 +91,7 @@
 

SEE ALSO

        curses(3x), tic(1m), infocmp(1m), terminfo(5)
 
-       This describes ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
 
 

AUTHOR

diff --git a/doc/html/man/menu.3x.html b/doc/html/man/menu.3x.html
index 457e7aaa..9f50200d 100644
--- a/doc/html/man/menu.3x.html
+++ b/doc/html/man/menu.3x.html
@@ -222,7 +222,7 @@
        curses(3x)  and  related  pages  whose names begin "menu_" for detailed
        descriptions of the entry points.
 
-       This describes ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
 
 
diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html
index 4275f022..ddf5d2a0 100644
--- a/doc/html/man/ncurses.3x.html
+++ b/doc/html/man/ncurses.3x.html
@@ -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 ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
        The  ncurses  library emulates the curses library of System V Release 4
        UNIX, and XPG4 (X/Open Portability Guide) curses  (also  known  as  XSI
diff --git a/doc/html/man/ncurses6-config.1.html b/doc/html/man/ncurses6-config.1.html
index f5fdc4fd..0f8c15e5 100644
--- a/doc/html/man/ncurses6-config.1.html
+++ b/doc/html/man/ncurses6-config.1.html
@@ -113,7 +113,7 @@
 

SEE ALSO

        curses(3x)
 
-       This describes ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
 
 
diff --git a/doc/html/man/panel.3x.html b/doc/html/man/panel.3x.html
index 2d44419f..a9522c7d 100644
--- a/doc/html/man/panel.3x.html
+++ b/doc/html/man/panel.3x.html
@@ -27,7 +27,24 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: panel.3x,v 1.28 2020/02/02 23:34:34 tom Exp @
+  * @Id: panel.3x,v 1.39 2020/02/15 21:06:40 tom Exp @
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
+  * ---------
 -->
 
 
@@ -55,21 +72,30 @@
 
        cc [flags] sourcefiles -lpanel -lncurses
 
-       PANEL *new_panel(WINDOW *win);
-       int bottom_panel(PANEL *pan);
-       int top_panel(PANEL *pan);
-       int show_panel(PANEL *pan);
+       PANEL *new_panel(WINDOW *win);
+
+       int bottom_panel(PANEL *pan);
+       int top_panel(PANEL *pan);
+       int show_panel(PANEL *pan);
        void update_panels(void);
-       int hide_panel(PANEL *pan);
-       WINDOW *panel_window(const PANEL *pan);
-       int replace_panel(PANEL *pan, WINDOW *window);
-       int move_panel(PANEL *pan, int starty, int startx);
-       int panel_hidden(const PANEL *pan);
-       PANEL *panel_above(const PANEL *pan);
-       PANEL *panel_below(const PANEL *pan);
-       int set_panel_userptr(PANEL *pan, const void *ptr);
-       const void *panel_userptr(const PANEL *pan);
-       int del_panel(PANEL *pan);
+       int hide_panel(PANEL *pan);
+
+       WINDOW *panel_window(const PANEL *pan);
+       int replace_panel(PANEL *pan, WINDOW *window);
+       int move_panel(PANEL *pan, int starty, int startx);
+       int panel_hidden(const PANEL *pan);
+
+       PANEL *panel_above(const PANEL *pan);
+       PANEL *panel_below(const PANEL *pan);
+
+       int set_panel_userptr(PANEL *pan, const void *ptr);
+       const void *panel_userptr(const PANEL *pan);
+
+       int del_panel(PANEL *pan);
+
+       /* ncurses-extensions */
+       PANEL *ground_panel(SCREEN *sp);
+       PANEL *ceiling_panel(SCREEN *sp);
 
 
 

DESCRIPTION

@@ -89,73 +115,100 @@
 
 
 

FUNCTIONS

-       new_panel(win)
-              allocates   a   PANEL  structure, associates it with win, places
-              the panel on the top of the stack  (causes  it to  be  displayed
-              above any other panel) and returns a pointer to the new panel.
-
-       update_panels
-              refreshes  the  virtual  screen to reflect the relations between
-              the panels in the stack, but does not call doupdate  to  refresh
-              the  physical  screen.   Use  this  function and not wrefresh or
-              wnoutrefresh.  update_panels may be called more than once before
-              a call to doupdate, but doupdate is the function responsible for
-              updating the physical screen.
-
-       del_panel(pan)
-              removes the given panel from  the   stack  and  deallocates  the
-              PANEL structure (but not its associated window).
-
-       hide_panel(pan)
-              removes  the  given panel from the panel stack and thus hides it
-              from view.  The PANEL structure is not lost, merely removed from
-              the stack.
-
-       panel_hidden(pan)
-              returns  TRUE if the panel is in the panel stack, FALSE if it is
-              not.  If the panel is a null pointer, return ERR.
-
-       show_panel(pan)
-              makes a hidden panel visible by placing it on top of the  panels
-              in the panel stack.  See COMPATIBILITY below.
-
-       top_panel(pan)
-              puts  the given visible panel on top of all panels in the stack.
-              See COMPATIBILITY below.
-
-       bottom_panel(pan)
-              puts panel at the bottom of all panels.
-
-       move_panel(pan,starty,startx)
-              moves the given panel window so that its upper-left corner is at
-              starty, startx.  It does not change the position of the panel in
-              the stack.  Be sure to use this function, not mvwin, to  move  a
-              panel window.
-
-       replace_panel(pan,window)
-              replaces  the  current  window of panel with window (useful, for
-              example if you want to resize a panel; if you're using  ncurses,
-              you  can  call  replace_panel on the output of wresize(3x)).  It
-              does not change the position of the panel in the stack.
-
-       panel_above(pan)
-              returns a pointer to the panel above pan.  If the panel argument
-              is  (PANEL  *)0, it returns a pointer to the bottom panel in the
-              stack.
-
-       panel_below(pan)
-              returns a pointer to the panel just below  pan.   If  the  panel
-              argument is (PANEL *)0, it returns a pointer to the top panel in
-              the stack.
-
-       set_panel_userptr(pan,ptr)
-              sets the panel's user pointer.
-
-       panel_userptr(pan)
-              returns the user pointer for a given panel.
-
-       panel_window(pan)
-              returns a pointer to the window of the given panel.
+
+

bottom_panel

+       bottom_panel(pan) puts panel pan at the bottom of all panels.
+
+
+

ceiling_panel

+       ceiling_panel(sp) acts like panel_below(NULL), for the given SCREEN sp.
+
+
+

del_panel

+       del_panel(pan)  removes the given panel pan from the  stack and deallo-
+       cates the PANEL structure (but not its associated window).
+
+
+

ground_panel

+       ground_panel(sp) acts like panel_above(NULL), for the given SCREEN sp.
+
+
+

hide_panel

+       hide_panel(pan) removes the given panel pan from the  panel  stack  and
+       thus  hides  it  from  view.   The  PANEL structure is not lost, merely
+       removed from the stack.
+
+
+

move_panel

+       move_panel(pan,starty,startx) moves the given  panel  pan's  window  so
+       that  its  upper-left  corner is at starty, startx.  It does not change
+       the position of the panel in the stack.  Be sure to use this  function,
+       not mvwin(3x), to move a panel window.
+
+
+

new_panel

+       new_panel(win)  allocates   a  PANEL structure, associates it with win,
+       places the panel on the top of the stack (causes  it to  be   displayed
+       above any other panel) and returns a pointer to the new panel.
+
+
+

panel_above

+       panel_above(pan)  returns  a  pointer  to  the panel above pan.  If the
+       panel argument is (PANEL *)0, it returns a pointer to the bottom  panel
+       in the stack.
+
+
+

panel_below

+       panel_below(pan) returns a pointer to the panel just below pan.  If the
+       panel argument is (PANEL *)0, it returns a pointer to the top panel  in
+       the stack.
+
+
+

panel_hidden

+       panel_hidden(pan)  returns TRUE if the panel pan is in the panel stack,
+       FALSE if it is not.  If the panel is a null pointer, return ERR.
+
+
+

panel_userptr

+       panel_userptr(pan) returns the user pointer for a given panel pan.
+
+
+

panel_window

+       panel_window(pan) returns a pointer to the window of  the  given  panel
+       pan.
+
+
+

replace_panel

+       replace_panel(pan,window) replaces the current window of panel pan with
+       window This is useful, for example if you want to resize a  panel.   In
+       ncurses,  you  can  call replace_panel to resize a panel using a window
+       resized with wresize(3x).  It does not change the position of the panel
+       in the stack.
+
+
+

set_panel_userptr

+       set_panel_userptr(pan,ptr) sets the panel's user pointer.
+
+
+

show_panel

+       show_panel(pan)  makes  a  hidden panel visible by placing it on top of
+       the panels in the panel stack.  See COMPATIBILITY below.
+
+
+

top_panel

+       top_panel(pan) puts the given visible panel pan on top of all panels in
+       the stack.  See COMPATIBILITY below.
+
+
+

update_panels

+       update_panels()  refreshes  the virtual screen to reflect the relations
+       between the panels in the stack, but  does  not  call  doupdate(3x)  to
+       refresh the physical screen.  Use this function and not wrefresh(3x) or
+       wnoutrefresh(3x).
+
+       update_panels may be called more than once before a call  to  doupdate,
+       but  doupdate  is  the  function  responsible for updating the physical
+       screen.
 
 
 

DIAGNOSTICS

@@ -163,6 +216,12 @@
        Each  routine  that returns an int value returns OK if it executes suc-
        cessfully and ERR if not.
 
+       Except as noted, the pan and window parameters must  be  non-null.   If
+       those are null, an error is returned.
+
+       The  move_panel  function  uses  mvwin(3x), and will return an error if
+       mvwin returns an error.
+
 
 

COMPATIBILITY

        Reasonable care has been taken  to   ensure   compatibility  with   the
@@ -192,8 +251,25 @@
 
        It is not part of X/Open Curses.
 
-       Aside  from  ncurses,  only  systems  based  on SVr4 source code, e.g.,
-       Solaris provide this library.
+       A few implementations exist:
+
+       o   Systems  based  on  SVr4  source  code, e.g., Solaris, provide this
+           library.
+
+       o   ncurses (since version 0.6 in 1993) and PDCurses (since version 2.2
+           in 1995) provide a panel library whose common ancestor was a public
+           domain implementation by Warren Tucker published  in  u386mon  2.20
+           (1990).
+
+           According  to  Tucker, the SystemV panel library was first released
+           in SVr3.2 (1988), and his implementation  helped  with  a  port  to
+           SVr3.1 (1987).
+
+           Several  developers have improved each of these; they are no longer
+           the same as Tucker's implementation.
+
+       o   NetBSD 8 (2018) has a panel library  begun  by  Valery  Ushakov  in
+           2015.  This is based on the AT&T documentation.
 
 
 

FILES

@@ -205,13 +281,17 @@
 

SEE ALSO

        curses(3x), curs_variables(3x),
 
-       This describes ncurses version 6.2 (patch 20200212).
+       This describes ncurses version 6.2 (patch 20200215).
 
 
 

AUTHOR

-       Originally written by Warren Tucker <wht@n4hgf.mt-park.ga.us>,  primar-
-       ily  to  assist  in  porting u386mon to systems without a native panels
-       library.  Repackaged for ncurses by Zeyd ben-Halim.
+       Originally  written by Warren Tucker <wht@n4hgf.mt-park.ga.us>, primar-
+       ily to assist in porting u386mon to systems  without  a  native  panels
+       library.
+
+       Repackaged for ncurses by Zeyd ben-Halim.
+
+       Juergen Pfeifer and Thomas E. Dickey revised/improved the library.
 
 
 
@@ -222,7 +302,27 @@
 
  • NAME
  • SYNOPSIS
  • DESCRIPTION
  • -
  • FUNCTIONS
  • +
  • FUNCTIONS + +
  • DIAGNOSTICS
  • COMPATIBILITY
  • NOTE
  • diff --git a/doc/html/man/tabs.1.html b/doc/html/man/tabs.1.html index 8a785fc5..df6290d3 100644 --- a/doc/html/man/tabs.1.html +++ b/doc/html/man/tabs.1.html @@ -206,7 +206,7 @@

    SEE ALSO

            tset(1), infocmp(1m), curses(3x), terminfo(5).
     
    -       This describes ncurses version 6.2 (patch 20200212).
    +       This describes ncurses version 6.2 (patch 20200215).
     
     
     
    diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html
    index 4e45c861..0bfba033 100644
    --- a/doc/html/man/terminfo.5.html
    +++ b/doc/html/man/terminfo.5.html
    @@ -105,7 +105,7 @@
            have, by specifying how to perform screen operations, and by specifying
            padding requirements and initialization sequences.
     
    -       This manual describes ncurses version 6.2 (patch 20200212).
    +       This manual describes ncurses version 6.2 (patch 20200215).
     
     
     

    Terminfo Entry Syntax

    diff --git a/doc/html/man/tic.1m.html b/doc/html/man/tic.1m.html
    index b61a006e..184f4350 100644
    --- a/doc/html/man/tic.1m.html
    +++ b/doc/html/man/tic.1m.html
    @@ -461,7 +461,7 @@
            infocmp(1m),   captoinfo(1m),   infotocap(1m),   toe(1m),   curses(3x),
            term(5).  terminfo(5).  user_caps(5).
     
    -       This describes ncurses version 6.2 (patch 20200212).
    +       This describes ncurses version 6.2 (patch 20200215).
     
     
     

    AUTHOR

    diff --git a/doc/html/man/toe.1m.html b/doc/html/man/toe.1m.html
    index 25d5ddf1..c792d46e 100644
    --- a/doc/html/man/toe.1m.html
    +++ b/doc/html/man/toe.1m.html
    @@ -171,7 +171,7 @@
            tic(1m), infocmp(1m), captoinfo(1m),  infotocap(1m),  curses(3x),  ter-
            minfo(5).
     
    -       This describes ncurses version 6.2 (patch 20200212).
    +       This describes ncurses version 6.2 (patch 20200215).
     
     
     
    diff --git a/doc/html/man/tput.1.html b/doc/html/man/tput.1.html
    index b6fe5034..5de32dea 100644
    --- a/doc/html/man/tput.1.html
    +++ b/doc/html/man/tput.1.html
    @@ -523,7 +523,7 @@
     

    SEE ALSO

            clear(1), stty(1), tabs(1), tset(1), terminfo(5), curs_termcap(3x).
     
    -       This describes ncurses version 6.2 (patch 20200212).
    +       This describes ncurses version 6.2 (patch 20200215).
     
     
     
    diff --git a/doc/html/man/tset.1.html b/doc/html/man/tset.1.html
    index 2b774105..84876f19 100644
    --- a/doc/html/man/tset.1.html
    +++ b/doc/html/man/tset.1.html
    @@ -390,7 +390,7 @@
            csh(1),  sh(1),  stty(1),   curs_terminfo(3x),   tty(4),   terminfo(5),
            ttys(5), environ(7)
     
    -       This describes ncurses version 6.2 (patch 20200212).
    +       This describes ncurses version 6.2 (patch 20200215).
     
     
     
    diff --git a/man/manhtml.aliases b/man/manhtml.aliases
    index c8873228..4fff94b5 100644
    --- a/man/manhtml.aliases
    +++ b/man/manhtml.aliases
    @@ -1,4 +1,4 @@
    -# $Id: manhtml.aliases,v 1.14 2020/02/02 23:34:34 tom Exp $
    +# $Id: manhtml.aliases,v 1.16 2020/02/15 21:02:48 tom Exp $
     #***************************************************************************
     # Copyright 2019,2020 Thomas E. Dickey                                     *
     # Copyright 2013,2017 Free Software Foundation, Inc.                       *
    @@ -45,6 +45,7 @@ keypad(3X)		curs_inopts(3X)
     longname(3X)		curs_termattrs(3X)
     meta(3X)		curs_inopts(3X)
     mvcur(3X)		curs_terminfo(3X)
    +mvwin(3X)		curs_window(3X)
     newterm(3X)		curs_initscr(3X)
     refresh(3X)		curs_refresh(3X)
     reset_shell_mode(3X)	curs_kernel(3X)
    @@ -61,3 +62,5 @@ use_default_colors(3X)	default_colors(3X)
     use_extended_names(3X)	curs_extend(3X)
     vidputs(3X)		curs_terminfo(3X)
     wgetch(3X)		curs_getch(3X)
    +wnoutrefresh(3X)	curs_refresh(3X)
    +wrefresh(3X)		curs_refresh(3X)
    diff --git a/man/panel.3x b/man/panel.3x
    index 32dd4875..932ef48e 100644
    --- a/man/panel.3x
    +++ b/man/panel.3x
    @@ -27,12 +27,16 @@
     .\" authorization.                                                           *
     .\"***************************************************************************
     .\"
    -.\" $Id: panel.3x,v 1.28 2020/02/02 23:34:34 tom Exp $
    +.\" $Id: panel.3x,v 1.39 2020/02/15 21:06:40 tom Exp $
     .TH panel 3X ""
     .ie \n(.g .ds `` \(lq
     .el       .ds `` ``
     .ie \n(.g .ds '' \(rq
     .el       .ds '' ''
    +.de bP
    +.ie n  .IP \(bu 4
    +.el    .IP \(bu 2
    +..
     .SH NAME
     panel \- panel stack extension for curses
     .SH SYNOPSIS
    @@ -40,35 +44,41 @@ panel \- panel stack extension for curses
     .P
     \fBcc [flags] sourcefiles \-lpanel \-lncurses\fR
     .P
    -\fBPANEL *new_panel(WINDOW *win);\fR
    +\fBPANEL *new_panel(WINDOW *\fIwin\fB);\fR
    +.sp
    +\fBint bottom_panel(PANEL *\fIpan\fB);\fR
     .br
    -\fBint bottom_panel(PANEL *pan);\fR
    +\fBint top_panel(PANEL *\fIpan\fB);\fR
     .br
    -\fBint top_panel(PANEL *pan);\fR
    -.br
    -\fBint show_panel(PANEL *pan);\fR
    +\fBint show_panel(PANEL *\fIpan\fB);\fR
     .br
     \fBvoid update_panels(void);\fR
     .br
    -\fBint hide_panel(PANEL *pan);\fR
    -.br
    -\fBWINDOW *panel_window(const PANEL *pan);\fR
    +\fBint hide_panel(PANEL *\fIpan\fB);\fR
    +.sp
    +\fBWINDOW *panel_window(const PANEL *\fIpan\fB);\fR
     .br
    -\fBint replace_panel(PANEL *pan, WINDOW *window);\fR
    +\fBint replace_panel(PANEL *\fIpan\fB, WINDOW *\fIwindow\fB);\fR
     .br
    -\fBint move_panel(PANEL *pan, int starty, int startx);\fR
    +\fBint move_panel(PANEL *\fIpan\fB, int \fIstarty\fB, int \fIstartx\fB);\fR
     .br
    -\fBint panel_hidden(const PANEL *pan);\fR
    +\fBint panel_hidden(const PANEL *\fIpan\fB);\fR
    +.sp
    +\fBPANEL *panel_above(const PANEL *\fIpan\fB);\fR
     .br
    -\fBPANEL *panel_above(const PANEL *pan);\fR
    +\fBPANEL *panel_below(const PANEL *\fIpan\fB);\fR
    +.sp
    +\fBint set_panel_userptr(PANEL *\fIpan\fB, const void *\fIptr\fB);\fR
     .br
    -\fBPANEL *panel_below(const PANEL *pan);\fR
    +\fBconst void *panel_userptr(const PANEL *\fIpan\fB);\fR
    +.sp
    +\fBint del_panel(PANEL *\fIpan\fB);\fR
    +.sp
    +/* ncurses-extensions */
     .br
    -\fBint set_panel_userptr(PANEL *pan, const void *ptr);\fR
    +\fBPANEL *ground_panel(SCREEN *\fIsp\fB);\fR
     .br
    -\fBconst void *panel_userptr(const PANEL *pan);\fR
    -.br
    -\fBint del_panel(PANEL *pan);\fR
    +\fBPANEL *ceiling_panel(SCREEN *\fIsp\fB);\fR
     .br
     .SH DESCRIPTION
     Panels are \fBcurses\fR(3X) windows with the added feature of
    @@ -89,87 +99,113 @@ panel at any desired location in the stack.
     Panel routines are a functional layer added to \fBcurses\fR(3X), make only
     high-level curses calls, and work anywhere terminfo curses does.
     .SH FUNCTIONS
    -.TP
    -.B new_panel(win)
    -allocates  a  \fBPANEL\fR structure, associates it with
    -\fBwin\fR, places the panel on the top of the stack  (causes  it
    -to  be  displayed above any other panel) and returns a
    -pointer to the new panel.
    -.TP
    -.B update_panels
    -refreshes the \fIvirtual screen\fP to reflect the relations between the
    -panels in the stack, but does not call \fBdoupdate\fP to refresh the
    -\fIphysical screen\fP.
    -Use this function and not \fBwrefresh\fP or \fBwnoutrefresh\fP.
    -.B update_panels
    -may be called more than once before a call to
    -\fBdoupdate\fP, but \fBdoupdate\fP is the function responsible for updating
    -the \fIphysical screen\fP.
    -.TP
    -.B del_panel(pan)
    -removes the given panel from the  stack and deallocates the
    +.\" ---------
    +.SS bottom_panel
    +\fBbottom_panel(\fIpan\fB)\fR
    +puts panel \fIpan\fP at the bottom of all panels.
    +.\" ---------
    +.SS ceiling_panel
    +\fBceiling_panel(\fIsp\fB)\fR
    +acts like \fBpanel_below(NULL)\fP, for the given \fBSCREEN\fP \fIsp\fP.
    +.\" ---------
    +.SS del_panel
    +\fBdel_panel(\fIpan\fB)\fR
    +removes the given panel \fIpan\fP from the  stack and deallocates the
     \fBPANEL\fR structure (but not its associated window).
    -.TP
    -.B hide_panel(pan)
    -removes the given panel from the panel stack and thus hides it from
    -view.
    +.\" ---------
    +.SS ground_panel
    +\fBground_panel(\fIsp\fB)\fR
    +acts like \fBpanel_above(NULL)\fP, for the given \fBSCREEN\fP \fIsp\fP.
    +.\" ---------
    +.SS hide_panel
    +\fBhide_panel(\fIpan\fB)\fR
    +removes the given panel \fIpan\fP from the panel stack
    +and thus hides it from view.
     The \fBPANEL\fR structure is not lost, merely removed from the stack.
    -.TP
    -.B panel_hidden(pan)
    -returns \fBTRUE\fP if the panel is in the panel stack,
    -\fBFALSE\fP if it is not.
    -If the panel is a null pointer, return \fBERR\fP.
    -.TP
    -.B show_panel(pan)
    -makes a hidden panel visible by placing it on top of the panels in the
    -panel stack.
    -See COMPATIBILITY below.
    -.TP
    -.B top_panel(pan)
    -puts the given visible panel on top of all panels in the stack.
    -See
    -COMPATIBILITY below.
    -.TP
    -.B bottom_panel(pan)
    -puts panel at the bottom of all panels.
    -.TP
    -.B move_panel(pan,starty,startx)
    -moves the given panel window so that its upper-left corner is at
    -\fBstarty\fR, \fBstartx\fR.
    -It does not change the position of the
    -panel in the stack.
    -Be sure to use this function, not \fBmvwin\fR,
    -to move a panel window.
    -.TP
    -.B replace_panel(pan,window)
    -replaces the current window of panel with \fBwindow\fR (useful, for
    -example if you want to resize a panel; if you're using \fBncurses\fR,
    -you can call \fBreplace_panel\fR on the output of \fBwresize\fR(3X)).
    +.\" ---------
    +.SS move_panel
    +\fBmove_panel(\fIpan\fB,\fIstarty\fB,\fIstartx\fB)\fR
    +moves the given panel \fIpan\fP's window so that its upper-left corner is at
    +\fIstarty\fR, \fIstartx\fR.
     It does not change the position of the panel in the stack.
    -.TP
    -.B panel_above(pan)
    -returns a pointer to the panel above pan.
    +Be sure to use this function, not \fBmvwin\fR(3X), to move a panel window.
    +.\" ---------
    +.SS new_panel
    +\fBnew_panel(\fIwin\fB)\fR allocates  a  \fBPANEL\fR structure,
    +associates it with \fIwin\fR, places the panel on the top of the stack
    +(causes  it to  be  displayed above any other panel) and returns a
    +pointer to the new panel.
    +.\" ---------
    +.SS panel_above
    +\fBpanel_above(\fIpan\fB)\fR
    +returns a pointer to the panel above \fIpan\fP.
     If the panel argument is
     \fB(PANEL *)0\fR, it returns a pointer to the bottom panel in the stack.
    -.TP
    -.B panel_below(pan)
    -returns a pointer to the panel just below pan.
    +.\" ---------
    +.SS panel_below
    +\fBpanel_below(\fIpan\fB)\fR
    +returns a pointer to the panel just below \fIpan\fP.
     If the panel argument
     is \fB(PANEL *)0\fR, it returns a pointer to the top panel in the stack.
    -.TP
    -.B set_panel_userptr(pan,ptr)
    +.\" ---------
    +.SS panel_hidden
    +\fBpanel_hidden(\fIpan\fB)\fR
    +returns \fBTRUE\fP if the panel \fIpan\fP is in the panel stack,
    +\fBFALSE\fP if it is not.
    +If the panel is a null pointer, return \fBERR\fP.
    +.\" ---------
    +.SS panel_userptr
    +\fBpanel_userptr(\fIpan\fB)\fR
    +returns the user pointer for a given panel \fIpan\fP.
    +.\" ---------
    +.SS panel_window
    +\fBpanel_window(\fIpan\fB)\fR
    +returns a pointer to the window of the given panel \fIpan\fP.
    +.\" ---------
    +.SS replace_panel
    +\fBreplace_panel(\fIpan\fB,\fIwindow\fB)\fR
    +replaces the current window of panel \fIpan\fP with \fIwindow\fR
    +This is useful, for example if you want to resize a panel.
    +In \fBncurses\fR, you can call \fBreplace_panel\fR
    +to resize a panel using a window resized with \fBwresize\fR(3X).
    +It does not change the position of the panel in the stack.
    +.\" ---------
    +.SS set_panel_userptr
    +\fBset_panel_userptr(\fIpan\fB,\fIptr\fB)\fR
     sets the panel's user pointer.
    -.TP
    -.B panel_userptr(pan)
    -returns the user pointer for a given panel.
    -.TP
    -.B panel_window(pan)
    -returns a pointer to the window of the given panel.
    +.\" ---------
    +.SS show_panel
    +\fBshow_panel(\fIpan\fB)\fR
    +makes a hidden panel visible by placing it on top of the panels in the
    +panel stack.
    +See \fBCOMPATIBILITY\fP below.
    +.\" ---------
    +.SS top_panel
    +\fBtop_panel(\fIpan\fB)\fR
    +puts the given visible panel \fIpan\fP on top of all panels in the stack.
    +See \fBCOMPATIBILITY\fP below.
    +.\" ---------
    +.SS update_panels
    +\fBupdate_panels()\fR
    +refreshes the \fIvirtual screen\fP to reflect the relations between the
    +panels in the stack, but does not call \fBdoupdate\fP(3X) to refresh the
    +\fIphysical screen\fP.
    +Use this function and not \fBwrefresh\fP(3X) or \fBwnoutrefresh\fP(3X).
    +.PP
    +\fBupdate_panels\fP may be called more than once before a call to
    +\fBdoupdate\fP, but \fBdoupdate\fP is the function responsible for updating
    +the \fIphysical screen\fP.
     .SH DIAGNOSTICS
     Each routine that returns a pointer returns \fBNULL\fR if an error
     occurs.
     Each routine that returns an int value returns \fBOK\fR if it
     executes successfully and \fBERR\fR if not.
    +.PP
    +Except as noted, the \fIpan\fP and \fIwindow\fP parameters must be non-null.
    +If those are null, an error is returned.
    +.PP
    +The \fBmove_panel\fP function uses \fBmvwin\fP(3X),
    +and will return an error if \fBmvwin\fP returns an error.
     .SH COMPATIBILITY
     Reasonable care has been taken to  ensure  compatibility
     with  the  native  panel facility introduced in System V (inspection of
    @@ -198,8 +234,27 @@ The panel facility was documented in SVr4.2 in
     .PP
     It is not part of X/Open Curses.
     .PP
    -Aside from ncurses, only systems based on SVr4 source code,
    -e.g., Solaris provide this library.
    +A few implementations exist:
    +.bP
    +Systems based on SVr4 source code,
    +e.g., Solaris, provide this library.
    +.bP
    +\fBncurses\fP (since version 0.6 in 1993)
    +and \fBPDCurses\fP (since version 2.2 in 1995)
    +provide a panel library whose common ancestor
    +was a public domain implementation by Warren Tucker
    +published in \fIu386mon\fP 2.20 (1990).
    +.IP
    +According to Tucker, the SystemV panel library
    +was first released in SVr3.2 (1988),
    +and his implementation helped with a port to SVr3.1 (1987).
    +.IP
    +Several developers have improved each of these;
    +they are no longer the same as Tucker's implementation.
    +.bP
    +NetBSD 8 (2018)
    +has a panel library begun by Valery Ushakov in 2015.
    +This is based on the AT&T documentation.
     .SH FILES
     .P
     panel.h
    @@ -214,7 +269,11 @@ the panels library itself
     This describes \fBncurses\fR
     version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
     .SH AUTHOR
    +.PP
     Originally written by Warren Tucker ,
    -primarily to assist in porting u386mon to systems without a native
    +primarily to assist in porting \fIu386mon\fP to systems without a native
     panels library.
    +.PP
     Repackaged for ncurses by Zeyd ben-Halim.
    +.PP
    +Juergen Pfeifer and Thomas E. Dickey revised/improved the library.
    diff --git a/misc/run_tic.in b/misc/run_tic.in
    index 817c97bf..b335b48e 100644
    --- a/misc/run_tic.in
    +++ b/misc/run_tic.in
    @@ -1,5 +1,5 @@
     #!@SHELL@
    -# $Id: run_tic.in,v 1.37 2020/02/02 23:34:34 tom Exp $
    +# $Id: run_tic.in,v 1.38 2020/02/15 15:30:53 tom Exp $
     ##############################################################################
     # Copyright 2019,2020 Thomas E. Dickey                                       #
     # Copyright 2000-2012,2017 Free Software Foundation, Inc.                    #
    @@ -145,6 +145,7 @@ Running $TIC_PATH to install $TERMINFO ...
     	document, and install the terminfo without the -x option.
     
     EOF
    +$TIC_PATH -V
     if ( $TIC_PATH -x -s -o "$TERMINFO" $source )
     then
     	echo "** built new $TERMINFO"
    @@ -164,6 +165,7 @@ Running $TIC_PATH to install $TERMINFO ...
     	document, and install the terminfo without the -x option.
     
     EOF
    +$TIC_PATH -V
     if ( $TIC_PATH -s -o "$TERMINFO" $source )
     then
     	echo "** built new $TERMINFO"
    diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh
    index 5a3770e5..c8e4efe0 100755
    --- a/ncurses/base/MKlib_gen.sh
    +++ b/ncurses/base/MKlib_gen.sh
    @@ -2,7 +2,7 @@
     #
     # MKlib_gen.sh -- generate sources from curses.h macro definitions
     #
    -# ($Id: MKlib_gen.sh,v 1.63 2020/02/02 23:34:34 tom Exp $)
    +# ($Id: MKlib_gen.sh,v 1.64 2020/02/15 14:58:02 tom Exp $)
     #
     ##############################################################################
     # Copyright 2018,2020 Thomas E. Dickey                                       #
    @@ -74,7 +74,7 @@ USE="$3"
     # determine if we are using gcc, and if so, what version because the proposed
     # solution uses a nonstandard option.
     PRG=`echo "$1" | $AWK '{ sub(/^[ 	]*/,""); sub(/[ 	].*$/, ""); print; }' || exit 0`
    -FSF=`"$PRG" --version 2>/dev/null || exit 0 | fgrep "Free Software Foundation" | head -n 1`
    +FSF=`("$PRG" --version 2>/dev/null || exit 0) | fgrep "Free Software Foundation" | head -n 1`
     ALL=`"$PRG" -dumpversion 2>/dev/null || exit 0`
     ONE=`echo "$ALL" | sed -e 's/\..*$//'`
     if test -n "$FSF" && test -n "$ALL" && test -n "$ONE" ; then
    diff --git a/package/debian-mingw/changelog b/package/debian-mingw/changelog
    index 4401f1a7..151586b1 100644
    --- a/package/debian-mingw/changelog
    +++ b/package/debian-mingw/changelog
    @@ -1,8 +1,8 @@
    -ncurses6 (6.2+20200212) unstable; urgency=low
    +ncurses6 (6.2+20200215) unstable; urgency=low
     
       * latest weekly patch
     
    - -- Thomas E. Dickey   Sun, 09 Feb 2020 18:35:50 -0500
    + -- Thomas E. Dickey   Sat, 15 Feb 2020 04:30:48 -0500
     
     ncurses6 (5.9-20131005) unstable; urgency=low
     
    diff --git a/package/debian-mingw64/changelog b/package/debian-mingw64/changelog
    index 4401f1a7..151586b1 100644
    --- a/package/debian-mingw64/changelog
    +++ b/package/debian-mingw64/changelog
    @@ -1,8 +1,8 @@
    -ncurses6 (6.2+20200212) unstable; urgency=low
    +ncurses6 (6.2+20200215) unstable; urgency=low
     
       * latest weekly patch
     
    - -- Thomas E. Dickey   Sun, 09 Feb 2020 18:35:50 -0500
    + -- Thomas E. Dickey   Sat, 15 Feb 2020 04:30:48 -0500
     
     ncurses6 (5.9-20131005) unstable; urgency=low
     
    diff --git a/package/debian/changelog b/package/debian/changelog
    index 4bc63927..f1c9d372 100644
    --- a/package/debian/changelog
    +++ b/package/debian/changelog
    @@ -1,8 +1,8 @@
    -ncurses6 (6.2+20200212) unstable; urgency=low
    +ncurses6 (6.2+20200215) unstable; urgency=low
     
       * latest weekly patch
     
    - -- Thomas E. Dickey   Sun, 09 Feb 2020 18:35:50 -0500
    + -- Thomas E. Dickey   Sat, 15 Feb 2020 04:30:48 -0500
     
     ncurses6 (5.9-20120608) unstable; urgency=low
     
    diff --git a/package/mingw-ncurses.nsi b/package/mingw-ncurses.nsi
    index f6087561..9f10f978 100644
    --- a/package/mingw-ncurses.nsi
    +++ b/package/mingw-ncurses.nsi
    @@ -1,4 +1,4 @@
    -; $Id: mingw-ncurses.nsi,v 1.377 2020/02/09 23:35:50 tom Exp $
    +; $Id: mingw-ncurses.nsi,v 1.378 2020/02/15 09:30:48 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  "2020"
    -!define VERSION_MMDD  "0212"
    +!define VERSION_MMDD  "0215"
     !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
     
     !define MY_ABI   "5"
    diff --git a/package/mingw-ncurses.spec b/package/mingw-ncurses.spec
    index d529dfb9..085790a1 100644
    --- a/package/mingw-ncurses.spec
    +++ b/package/mingw-ncurses.spec
    @@ -3,7 +3,7 @@
     Summary: shared libraries for terminal handling
     Name: mingw32-ncurses6
     Version: 6.2
    -Release: 20200212
    +Release: 20200215
     License: X11
     Group: Development/Libraries
     Source: ncurses-%{version}-%{release}.tgz
    diff --git a/package/ncurses.spec b/package/ncurses.spec
    index b6287901..b50131de 100644
    --- a/package/ncurses.spec
    +++ b/package/ncurses.spec
    @@ -1,7 +1,7 @@
     Summary: shared libraries for terminal handling
     Name: ncurses6
     Version: 6.2
    -Release: 20200212
    +Release: 20200215
     License: X11
     Group: Development/Libraries
     Source: ncurses-%{version}-%{release}.tgz
    diff --git a/package/ncursest.spec b/package/ncursest.spec
    index 709539eb..c7332d94 100644
    --- a/package/ncursest.spec
    +++ b/package/ncursest.spec
    @@ -1,7 +1,7 @@
     Summary: Curses library with POSIX thread support.
     Name: ncursest6
     Version: 6.2
    -Release: 20200212
    +Release: 20200215
     License: X11
     Group: Development/Libraries
     Source: ncurses-%{version}-%{release}.tgz
    -- 
    2.45.0