From 3e91848cbe3dad23fdb60962fa9b678592591c34 Mon Sep 17 00:00:00 2001 From: "Thomas E. Dickey" Date: Sun, 19 Apr 2020 02:02:25 +0000 Subject: [PATCH] ncurses 6.2 - patch 20200418 + improve tracemunch logic for "RUN" compaction. + fix a special case in wresize() where copying the old text did not check if the last cell on a row was the beginning of a fullwidth character (adapted from patch by Benno Schulenberg). + use vt52+keypad in xterm-vt52, from xterm #354 -TD + improve see-also section of user_caps.5 --- 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/curs_print.3x.html | 4 +- doc/html/man/form.3x.html | 6 +-- doc/html/man/form_field.3x.html | 4 +- doc/html/man/form_field_buffer.3x.html | 4 +- doc/html/man/form_field_new.3x.html | 6 +-- doc/html/man/form_field_userptr.3x.html | 4 +- doc/html/man/form_fieldtype.3x.html | 4 +- doc/html/man/form_new.3x.html | 4 +- doc/html/man/form_requestname.3x.html | 6 +-- doc/html/man/form_userptr.3x.html | 4 +- doc/html/man/infocmp.1m.html | 2 +- doc/html/man/infotocap.1m.html | 2 +- doc/html/man/menu.3x.html | 2 +- doc/html/man/menu_items.3x.html | 4 +- doc/html/man/menu_mark.3x.html | 4 +- doc/html/man/menu_new.3x.html | 4 +- doc/html/man/menu_pattern.3x.html | 4 +- doc/html/man/menu_requestname.3x.html | 6 +-- doc/html/man/menu_userptr.3x.html | 4 +- doc/html/man/mitem_current.3x.html | 4 +- doc/html/man/mitem_name.3x.html | 4 +- doc/html/man/mitem_new.3x.html | 4 +- doc/html/man/mitem_userptr.3x.html | 4 +- doc/html/man/ncurses.3x.html | 4 +- doc/html/man/ncurses6-config.1.html | 2 +- doc/html/man/panel.3x.html | 2 +- doc/html/man/resizeterm.3x.html | 2 +- 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 +- doc/html/man/user_caps.5.html | 10 ++++- man/curs_variables.3x | 4 +- man/manhtml.aliases | 9 ++-- man/manhtml.externs | 4 +- man/user_caps.5 | 15 ++++++- misc/terminfo.src | 9 ++-- ncurses/base/wresize.c | 12 +++++- 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 +- test/tracemunch | 56 +++++++++++++++++++++---- 54 files changed, 181 insertions(+), 98 deletions(-) diff --git a/NEWS b/NEWS index ec054959..abc1f01b 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.3475 2020/04/11 17:01:12 tom Exp $ +-- $Id: NEWS,v 1.3477 2020/04/18 23:57:32 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. +20200418 + + improve tracemunch logic for "RUN" compaction. + + fix a special case in wresize() where copying the old text did not + check if the last cell on a row was the beginning of a fullwidth + character (adapted from patch by Benno Schulenberg). + + use vt52+keypad in xterm-vt52, from xterm #354 -TD + + improve see-also section of user_caps.5 + 20200411 + fix find_pair(), overlooked when refactoring for _nc_reserve_pairs() (report/testcase by Brad Town, cf: 20170812). diff --git a/VERSION b/VERSION index 570cd2b2..64b56c44 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -5:0:10 6.2 20200411 +5:0:10 6.2 20200418 diff --git a/dist.mk b/dist.mk index a186c9f8..5186f357 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.1345 2020/04/11 13:11:52 tom Exp $ +# $Id: dist.mk,v 1.1346 2020/04/18 09:00:18 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 = 20200411 +NCURSES_PATCH = 20200418 # 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 fcf97309..df056884 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 
diff --git a/doc/html/man/captoinfo.1m.html b/doc/html/man/captoinfo.1m.html
index 1bb8adac..660d651f 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 

AUTHOR

diff --git a/doc/html/man/clear.1.html b/doc/html/man/clear.1.html
index 436e878e..a7a779a8 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 
diff --git a/doc/html/man/curs_print.3x.html b/doc/html/man/curs_print.3x.html
index 76d7886b..d5a9a55e 100644
--- a/doc/html/man/curs_print.3x.html
+++ b/doc/html/man/curs_print.3x.html
@@ -27,7 +27,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_print.3x,v 1.14 2020/02/02 23:34:34 tom Exp @
+  * @Id: curs_print.3x,v 1.15 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -71,7 +71,7 @@
 
 

RETURN VALUE

        The mcprint function returns ERR if the  write  operation  aborted  for
-       some  reason.  In this case, errno will contain either an error associ-
+       some  reason.  In this case, errno will contain either an error associ-
        ated with write(2) or one of the following:
 
        ENODEV
diff --git a/doc/html/man/form.3x.html b/doc/html/man/form.3x.html
index a1fd58a5..51272fca 100644
--- a/doc/html/man/form.3x.html
+++ b/doc/html/man/form.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form.3x,v 1.34 2020/02/02 23:34:34 tom Exp @
+  * @Id: form.3x,v 1.35 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -168,7 +168,7 @@
 
 
 

RETURN VALUE

-       Routines that return pointers return NULL on error, and  set  errno  to
+       Routines that return pointers return NULL on error, and  set  errno  to
        the  corresponding  error-code returned by functions returning an inte-
        ger.  Routines that return an integer return one of the following error
        codes:
@@ -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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 
diff --git a/doc/html/man/form_field.3x.html b/doc/html/man/form_field.3x.html
index 1c6060bb..b8d8bc64 100644
--- a/doc/html/man/form_field.3x.html
+++ b/doc/html/man/form_field.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field.3x,v 1.14 2020/02/02 23:34:34 tom Exp @
+  * @Id: form_field.3x,v 1.15 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -73,7 +73,7 @@
 
 

RETURN VALUE

        The  function  form_fields  returns  a pointer (which may be NULL).  It
-       does not set errno.
+       does not set errno.
 
        The function field_count returns ERR if the form parameter is NULL.
 
diff --git a/doc/html/man/form_field_buffer.3x.html b/doc/html/man/form_field_buffer.3x.html
index b4fc8d0d..3cde7991 100644
--- a/doc/html/man/form_field_buffer.3x.html
+++ b/doc/html/man/form_field_buffer.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_buffer.3x,v 1.25 2020/02/02 23:34:34 tom Exp @
+  * @Id: form_field_buffer.3x,v 1.26 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -103,7 +103,7 @@
 
 
 

RETURN VALUE

-       The field_buffer function returns NULL on error.  It sets errno accord-
+       The field_buffer function returns NULL on error.  It sets errno accord-
        ing to their success:
 
        E_OK The routine succeeded.
diff --git a/doc/html/man/form_field_new.3x.html b/doc/html/man/form_field_new.3x.html
index aa680053..ac197ecc 100644
--- a/doc/html/man/form_field_new.3x.html
+++ b/doc/html/man/form_field_new.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_new.3x,v 1.21 2020/02/02 23:34:34 tom Exp @
+  * @Id: form_field_new.3x,v 1.22 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -81,8 +81,8 @@
 
 
 

RETURN VALUE

-       The function, new_field, dup_field, link_field return  NULL  on  error.
-       They set errno according to their success:
+       The functions new_field, dup_field, link_field return  NULL  on  error.
+       They set errno according to their success:
 
        E_OK The routine succeeded.
 
diff --git a/doc/html/man/form_field_userptr.3x.html b/doc/html/man/form_field_userptr.3x.html
index 3545f5a1..62d7fbbb 100644
--- a/doc/html/man/form_field_userptr.3x.html
+++ b/doc/html/man/form_field_userptr.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_userptr.3x,v 1.13 2020/02/02 23:34:34 tom Exp @
+  * @Id: form_field_userptr.3x,v 1.14 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -66,7 +66,7 @@
 
 

RETURN VALUE

        The function field_userptr returns a pointer (which may be  NULL).   It
-       does not set errno.
+       does not set errno.
 
        The function set_field_userptr returns E_OK (success).
 
diff --git a/doc/html/man/form_fieldtype.3x.html b/doc/html/man/form_fieldtype.3x.html
index 4b350132..56d682d4 100644
--- a/doc/html/man/form_fieldtype.3x.html
+++ b/doc/html/man/form_fieldtype.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_fieldtype.3x,v 1.20 2020/02/02 23:34:34 tom Exp @
+  * @Id: form_fieldtype.3x,v 1.21 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -109,7 +109,7 @@
 
 
 

RETURN VALUE

-       The  pointer-valued  routines  return  NULL  on  error.  They set errno
+       The  pointer-valued  routines  return  NULL  on  error.  They set errno
        according to their success:
 
        E_OK The routine succeeded.
diff --git a/doc/html/man/form_new.3x.html b/doc/html/man/form_new.3x.html
index fc271036..ed4c893e 100644
--- a/doc/html/man/form_new.3x.html
+++ b/doc/html/man/form_new.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_new.3x,v 1.12 2020/02/02 23:34:34 tom Exp @
+  * @Id: form_new.3x,v 1.13 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -66,7 +66,7 @@
 
 
 

RETURN VALUE

-       The  function  new_form returns NULL on error.  It sets errno according
+       The  function  new_form returns NULL on error.  It sets errno according
        to the function's success:
 
        E_OK The routine succeeded.
diff --git a/doc/html/man/form_requestname.3x.html b/doc/html/man/form_requestname.3x.html
index 9245e4b6..77b03fa8 100644
--- a/doc/html/man/form_requestname.3x.html
+++ b/doc/html/man/form_requestname.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_requestname.3x,v 1.12 2020/02/02 23:34:34 tom Exp @
+  * @Id: form_requestname.3x,v 1.13 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -67,10 +67,10 @@
 
 
 

RETURN VALUE

-       form_request_name  returns  NULL on error and sets errno to E_BAD_ARGU-
+       form_request_name  returns  NULL on error and sets errno to E_BAD_ARGU-
        MENT.
        form_request_by_name returns E_NO_MATCH on  error.   It  does  not  set
-       errno.
+       errno.
 
 
 

SEE ALSO

diff --git a/doc/html/man/form_userptr.3x.html b/doc/html/man/form_userptr.3x.html
index 4675f543..37186136 100644
--- a/doc/html/man/form_userptr.3x.html
+++ b/doc/html/man/form_userptr.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_userptr.3x,v 1.16 2020/02/02 23:34:34 tom Exp @
+  * @Id: form_userptr.3x,v 1.17 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -66,7 +66,7 @@
 
 

RETURN VALUE

        The function form_userptr returns a pointer (which may  be  NULL).   It
-       does not set errno.
+       does not set errno.
 
        The function set_form_userptr returns E_OK (success).
 
diff --git a/doc/html/man/infocmp.1m.html b/doc/html/man/infocmp.1m.html
index 2eef4f8c..a079ff36 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 

AUTHOR

diff --git a/doc/html/man/infotocap.1m.html b/doc/html/man/infotocap.1m.html
index 46caeaa6..33ee9626 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 

AUTHOR

diff --git a/doc/html/man/menu.3x.html b/doc/html/man/menu.3x.html
index 5a3b7057..7629a65d 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 
diff --git a/doc/html/man/menu_items.3x.html b/doc/html/man/menu_items.3x.html
index e5cdf9cf..dda9991d 100644
--- a/doc/html/man/menu_items.3x.html
+++ b/doc/html/man/menu_items.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_items.3x,v 1.14 2020/02/02 23:34:34 tom Exp @
+  * @Id: menu_items.3x,v 1.15 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -70,7 +70,7 @@
 
 

RETURN VALUE

        The function menu_items returns a pointer (which may be NULL).  It does
-       not set errno.
+       not set errno.
 
        The function item_count returns ERR (the general  curses  error  return
        value) if its menu parameter is NULL.
diff --git a/doc/html/man/menu_mark.3x.html b/doc/html/man/menu_mark.3x.html
index d023db27..22c80480 100644
--- a/doc/html/man/menu_mark.3x.html
+++ b/doc/html/man/menu_mark.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_mark.3x,v 1.15 2020/02/02 23:34:34 tom Exp @
+  * @Id: menu_mark.3x,v 1.16 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -76,7 +76,7 @@
 
 

RETURN VALUE

        The function menu_mark returns a pointer (which may be NULL).  It  does
-       not set errno.
+       not set errno.
 
        The function set_menu_mark may return the following error codes:
 
diff --git a/doc/html/man/menu_new.3x.html b/doc/html/man/menu_new.3x.html
index 5838d7f0..e436240f 100644
--- a/doc/html/man/menu_new.3x.html
+++ b/doc/html/man/menu_new.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_new.3x,v 1.15 2020/02/02 23:34:34 tom Exp @
+  * @Id: menu_new.3x,v 1.16 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -66,7 +66,7 @@
 
 
 

RETURN VALUE

-       The  function  new_menu returns NULL on error.  It sets errno according
+       The  function  new_menu returns NULL on error.  It sets errno according
        to the function's failure:
 
        E_NOT_CONNECTED
diff --git a/doc/html/man/menu_pattern.3x.html b/doc/html/man/menu_pattern.3x.html
index 1be9d1bf..01212b4b 100644
--- a/doc/html/man/menu_pattern.3x.html
+++ b/doc/html/man/menu_pattern.3x.html
@@ -27,7 +27,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_pattern.3x,v 1.18 2020/02/02 23:34:34 tom Exp @
+  * @Id: menu_pattern.3x,v 1.19 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -71,7 +71,7 @@
 

RETURN VALUE

        The  function menu_pattern returns a pointer, which is NULL if the menu
        parameter is NULL.  Otherwise, it is a pointer to  a  string  which  is
-       empty if no pattern has been set.  It does not set errno.
+       empty if no pattern has been set.  It does not set errno.
 
        The function set_menu_pattern may return the following error codes:
 
diff --git a/doc/html/man/menu_requestname.3x.html b/doc/html/man/menu_requestname.3x.html
index 7b7674b6..e0d2c5ad 100644
--- a/doc/html/man/menu_requestname.3x.html
+++ b/doc/html/man/menu_requestname.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_requestname.3x,v 1.12 2020/02/02 23:34:34 tom Exp @
+  * @Id: menu_requestname.3x,v 1.13 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -67,10 +67,10 @@
 
 
 

RETURN VALUE

-       menu_request_name  returns  NULL on error and sets errno to E_BAD_ARGU-
+       menu_request_name  returns  NULL on error and sets errno to E_BAD_ARGU-
        MENT.
        menu_request_by_name returns E_NO_MATCH on  error.   It  does  not  set
-       errno.
+       errno.
 
 
 

SEE ALSO

diff --git a/doc/html/man/menu_userptr.3x.html b/doc/html/man/menu_userptr.3x.html
index 9ced8093..aac3a056 100644
--- a/doc/html/man/menu_userptr.3x.html
+++ b/doc/html/man/menu_userptr.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_userptr.3x,v 1.13 2020/02/02 23:34:34 tom Exp @
+  * @Id: menu_userptr.3x,v 1.14 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -66,7 +66,7 @@
 
 

RETURN VALUE

        menu_userptr returns a pointer (which may be NULL).  It  does  not  set
-       errno.
+       errno.
 
        set_menu_userptr returns E_OK (success).
 
diff --git a/doc/html/man/mitem_current.3x.html b/doc/html/man/mitem_current.3x.html
index 77f26168..a6663c01 100644
--- a/doc/html/man/mitem_current.3x.html
+++ b/doc/html/man/mitem_current.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_current.3x,v 1.17 2020/02/02 23:34:34 tom Exp @
+  * @Id: mitem_current.3x,v 1.18 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -77,7 +77,7 @@
 
 

RETURN VALUE

        current_item returns a pointer (which may be NULL).  It  does  not  set
-       errno.
+       errno.
 
        top_row  and  item_index return ERR (the general curses error value) if
        their menu parameter is NULL.
diff --git a/doc/html/man/mitem_name.3x.html b/doc/html/man/mitem_name.3x.html
index a22e0c94..aee591bd 100644
--- a/doc/html/man/mitem_name.3x.html
+++ b/doc/html/man/mitem_name.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_name.3x,v 1.11 2020/02/02 23:34:34 tom Exp @
+  * @Id: mitem_name.3x,v 1.12 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -65,7 +65,7 @@
 
 

RETURN VALUE

        These routines return a pointer (which may be NULL).  They do  not  set
-       errno.
+       errno.
 
 
 

SEE ALSO

diff --git a/doc/html/man/mitem_new.3x.html b/doc/html/man/mitem_new.3x.html
index f9db946a..6fb45e58 100644
--- a/doc/html/man/mitem_new.3x.html
+++ b/doc/html/man/mitem_new.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_new.3x,v 1.16 2020/02/02 23:34:34 tom Exp @
+  * @Id: mitem_new.3x,v 1.17 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -69,7 +69,7 @@
 
 
 

RETURN VALUE

-       The  function  new_item returns NULL on error.  It sets errno according
+       The  function  new_item returns NULL on error.  It sets errno according
        to the function's failure:
 
        E_BAD_ARGUMENT
diff --git a/doc/html/man/mitem_userptr.3x.html b/doc/html/man/mitem_userptr.3x.html
index 00d0a4ba..d2c6090e 100644
--- a/doc/html/man/mitem_userptr.3x.html
+++ b/doc/html/man/mitem_userptr.3x.html
@@ -28,7 +28,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_userptr.3x,v 1.14 2020/02/02 23:34:34 tom Exp @
+  * @Id: mitem_userptr.3x,v 1.15 2020/03/28 19:06:28 tom Exp @
 -->
 
 
@@ -66,7 +66,7 @@
 
 

RETURN VALUE

        The function item_userptr returns a pointer (possibly NULL).   It  does
-       not set errno.
+       not set errno.
 
        The set_item_userptr always returns E_OK (success).
 
diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html
index 3f47873b..de942e64 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
        The  ncurses  library emulates the curses library of System V Release 4
        UNIX, and XPG4 (X/Open Portability Guide) curses  (also  known  as  XSI
@@ -259,7 +259,7 @@
                     Each cell (row and column) in a  WINDOW  is  stored  as  a
                     cchar_t.
 
-                    The  setcchar(3x)  and  getcchar(3x)  functions  store and
+                    The  setcchar(3x)  and  getcchar(3x)  functions  store and
                     retrieve the data from a cchar_t structure.
 
                wchar_t
diff --git a/doc/html/man/ncurses6-config.1.html b/doc/html/man/ncurses6-config.1.html
index 26e4e84e..e8c45cd6 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 
diff --git a/doc/html/man/panel.3x.html b/doc/html/man/panel.3x.html
index 7ebcbce6..76a8ab28 100644
--- a/doc/html/man/panel.3x.html
+++ b/doc/html/man/panel.3x.html
@@ -281,7 +281,7 @@
 

SEE ALSO

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

AUTHOR

diff --git a/doc/html/man/resizeterm.3x.html b/doc/html/man/resizeterm.3x.html
index 3705e3c7..b19559d9 100644
--- a/doc/html/man/resizeterm.3x.html
+++ b/doc/html/man/resizeterm.3x.html
@@ -76,7 +76,7 @@
 

resize_term

        Most  of the work is done by the inner function resize_term.  The outer
        function resizeterm adds bookkeeping for the SIGWINCH handler, as  well
-       as repainting the soft-key area (see slk_touch(3x)).
+       as repainting the soft-key area (see slk_touch(3x)).
 
        When  resizing  the windows, resize_term blank-fills the areas that are
        extended.  The calling application should  fill  in  these  areas  with
diff --git a/doc/html/man/tabs.1.html b/doc/html/man/tabs.1.html
index af46c413..8f2e188a 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 
diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html
index 0c4b20bf..4bccd4aa 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 20200321).
+       This manual describes ncurses version 6.2 (patch 20200418).
 
 
 

Terminfo Entry Syntax

diff --git a/doc/html/man/tic.1m.html b/doc/html/man/tic.1m.html
index 4054464c..d325fb09 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 

AUTHOR

diff --git a/doc/html/man/toe.1m.html b/doc/html/man/toe.1m.html
index 5bf6b2ad..eda95e44 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 
diff --git a/doc/html/man/tput.1.html b/doc/html/man/tput.1.html
index 090a8f37..e25ff673 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 
diff --git a/doc/html/man/tset.1.html b/doc/html/man/tset.1.html
index f113a4f2..904116ae 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 20200321).
+       This describes ncurses version 6.2 (patch 20200418).
 
 
 
diff --git a/doc/html/man/user_caps.5.html b/doc/html/man/user_caps.5.html
index 95bb74d1..8626b0b4 100644
--- a/doc/html/man/user_caps.5.html
+++ b/doc/html/man/user_caps.5.html
@@ -27,7 +27,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: user_caps.5,v 1.12 2020/02/02 23:34:34 tom Exp @
+  * @Id: user_caps.5,v 1.15 2020/04/18 10:29:43 tom Exp @
 -->
 
 
@@ -372,6 +372,14 @@
 

SEE ALSO

        tic(1m), infocmp(1m).
 
+       The  terminal database section NCURSES USER-DEFINABLE CAPABILITIES sum-
+       marizes commonly-used user-defined capabilities which are used  in  the
+       terminal  descriptions.   Some  of  those  features  are  mentioned  in
+       screen(1) or tmux(1).
+
+       XTerm Control Sequences provides further information on the xterm  fea-
+       tures which are used in these extended capabilities.
+
 
 

AUTHORS

        Thomas E. Dickey
diff --git a/man/curs_variables.3x b/man/curs_variables.3x
index cd0c8665..25294dfe 100644
--- a/man/curs_variables.3x
+++ b/man/curs_variables.3x
@@ -27,7 +27,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_variables.3x,v 1.14 2020/02/02 23:34:34 tom Exp $
+.\" $Id: curs_variables.3x,v 1.15 2020/04/18 14:29:07 tom Exp $
 .TH curs_variables 3X ""
 .ie \n(.g .ds `` \(lq
 .el       .ds `` ``
@@ -112,7 +112,7 @@ i.e., the number of lines.
 .SS TABSIZE
 This variable holds the number of columns used by the \fIcurses\fP library
 when converting a tab character to spaces as it adds the tab to a window
-(see curs_addch(3X).
+(see \fBcurs_addch\fP(3X).
 .SS The Current Screen
 This implementation of curses uses a special window \fBcurscr\fP to
 record its updates to the terminal screen.
diff --git a/man/manhtml.aliases b/man/manhtml.aliases
index 4fff94b5..68357971 100644
--- a/man/manhtml.aliases
+++ b/man/manhtml.aliases
@@ -1,4 +1,4 @@
-# $Id: manhtml.aliases,v 1.16 2020/02/15 21:02:48 tom Exp $
+# $Id: manhtml.aliases,v 1.17 2020/04/18 14:30:44 tom Exp $
 #***************************************************************************
 # Copyright 2019,2020 Thomas E. Dickey                                     *
 # Copyright 2013,2017 Free Software Foundation, Inc.                       *
@@ -28,14 +28,15 @@
 # authorization.                                                           *
 #***************************************************************************
 # Items in this list will be linked to the corresponding manpages by man2html
-assume_default_colors(3X)	default_colors(3X)
 addch(3X)		curs_addch(3X)
+assume_default_colors(3X)	default_colors(3X)
 curs_set(3X)		curs_kernel(3X)
 delscreen(3X)		curs_initscr(3X)
 doupdate(3X)		curs_refresh(3X)
 endwin(3X)		curs_initscr(3X)
 filter(3X)		curs_util(3X)
 get_wch(3X)		curs_get_wch(3X)
+getcchar(3X)		curs_getcchar(3X)
 getch(3X)		curs_getch(3X)
 inch(3X)		curs_inch(3X)
 infocmp(1)		infocmp(1M)
@@ -51,14 +52,16 @@ refresh(3X)		curs_refresh(3X)
 reset_shell_mode(3X)	curs_kernel(3X)
 set_fieldtype(3X)	form_fieldtype(3X)
 set_term(3X)		curs_initscr(3X)
+setcchar(3X)		curs_getcchar(3X)
 setupterm(3X)		curs_terminfo(3X)
 slk_init(3X)		curs_slk(3X)
+slk_touch(3X)		curs_slk(3X)
 tic(1)			tic(1M)
 tigetstr(3X)		curs_terminfo(3X)
 tparm(3X)		curs_terminfo(3X)
 tputs(3X)		curs_terminfo(3X)
-use_env(3X)		curs_util(3X)
 use_default_colors(3X)	default_colors(3X)
+use_env(3X)		curs_util(3X)
 use_extended_names(3X)	curs_extend(3X)
 vidputs(3X)		curs_terminfo(3X)
 wgetch(3X)		curs_getch(3X)
diff --git a/man/manhtml.externs b/man/manhtml.externs
index c6fcace7..8787b2ce 100644
--- a/man/manhtml.externs
+++ b/man/manhtml.externs
@@ -1,4 +1,4 @@
-# $Id: manhtml.externs,v 1.13 2020/02/02 23:34:34 tom Exp $
+# $Id: manhtml.externs,v 1.14 2020/04/18 09:48:50 tom Exp $
 # Items in this list will not be linked by man2html
 #***************************************************************************
 # Copyright 2019,2020 Thomas E. Dickey                                     *
@@ -51,12 +51,14 @@ putchar(3)
 putwc(3)
 read(2)
 scanf(3)
+screen(1)
 sh(1)
 sscanf(3)
 stdio(3)
 stty(1)
 system(3)
 termios(3)
+tmux(1)
 tty(4)
 ttys(5)
 vprintf(3)
diff --git a/man/user_caps.5 b/man/user_caps.5
index 31f4f72d..8f29cbdf 100644
--- a/man/user_caps.5
+++ b/man/user_caps.5
@@ -27,7 +27,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: user_caps.5,v 1.12 2020/02/02 23:34:34 tom Exp $
+.\" $Id: user_caps.5,v 1.15 2020/04/18 10:29:43 tom Exp $
 .TH user_caps 5
 .ie \n(.g .ds `` \(lq
 .el       .ds `` ``
@@ -409,16 +409,29 @@ given the list of values,
 ask \fBkey_defined\fP(3X) for the \fIkey-code\fP which
 would be returned for those keys by \fBwgetch\fP(3X).
 .PP
+.\"
 .SH PORTABILITY
 .PP
 The \*(``\-x\*('' extension feature of \fB@TIC@\fP and \fB@INFOCMP@\fP
 has been adopted in NetBSD curses.
 That implementation stores user-defined capabilities,
 but makes no use of these capabilities itself.
+.\"
 .SH SEE ALSO
 .PP
 \fB@TIC@\fR(1M),
 \fB@INFOCMP@\fR(1M).
+.PP
+The terminal database section
+.I "NCURSES USER-DEFINABLE CAPABILITIES"
+summarizes commonly-used user-defined capabilities
+which are used in the terminal descriptions.
+Some of those features are mentioned in \fBscreen\fR(1) or \fBtmux\fR(1).
+.PP
+.I "XTerm Control Sequences"
+provides further information on the \fBxterm\fP features
+which are used in these extended capabilities.
+.\"
 .SH AUTHORS
 .PP
 Thomas E. Dickey
diff --git a/misc/terminfo.src b/misc/terminfo.src
index 7b08ffb9..ab2e471f 100644
--- a/misc/terminfo.src
+++ b/misc/terminfo.src
@@ -6,8 +6,8 @@
 # Report bugs and new terminal descriptions to
 #	bug-ncurses@gnu.org
 #
-#	$Revision: 1.787 $
-#	$Date: 2020/02/22 23:05:24 $
+#	$Revision: 1.788 $
+#	$Date: 2020/04/18 16:46:32 $
 #
 # 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
@@ -5059,7 +5059,7 @@ xterm-vt52|xterm emulating dec vt52,
 	cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK,
 	home=\EH, ht=^I, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC,
 	kcuu1=\EA, nel=\r\n, ri=\EI, rmacs=\EG, smacs=\EF,
-	use=xterm+kbs,
+	use=xterm+kbs, use=vt52+keypad,
 
 xterm-noapp|xterm with cursor keys in normal mode,
 	rmcup@, rmkx=\E>, smcup@, smkx=\E=, use=xterm+noapp,
@@ -26476,4 +26476,7 @@ v3220|LANPAR Vision II model 3220/3221/3222,
 #	+ improve vt50h and vt52 based on DECScope manual -TD
 #	+ add/use vt52+keypad and vt52-basic -TD
 #
+# 2020-04-18
+#	+ use vt52+keypad in xterm-vt52, from xterm #354 -TD
+#
 ######## SHANTIH!  SHANTIH!  SHANTIH!
diff --git a/ncurses/base/wresize.c b/ncurses/base/wresize.c
index 93276ef5..30718b88 100644
--- a/ncurses/base/wresize.c
+++ b/ncurses/base/wresize.c
@@ -34,7 +34,7 @@
 
 #include 
 
-MODULE_ID("$Id: wresize.c,v 1.39 2020/02/02 23:34:34 tom Exp $")
+MODULE_ID("$Id: wresize.c,v 1.41 2020/04/18 21:01:00 tom Exp $")
 
 static int
 cleanup_lines(struct ldat *data, int length)
@@ -176,7 +176,15 @@ wresize(WINDOW *win, int ToLines, int ToCols)
 		    if (s == 0)
 			returnCode(cleanup_lines(new_lines, row));
 		    for (col = 0; col <= ToCols; ++col) {
-			s[col] = (col <= size_x
+			bool valid = (col <= size_x);
+			if_WIDEC({
+			    if (col == ToCols
+				&& col < size_x
+				&& isWidecBase(win->_line[row].text[col])) {
+				valid = FALSE;
+			    }
+			});
+			s[col] = (valid
 				  ? win->_line[row].text[col]
 				  : win->_nc_bkgd);
 		    }
diff --git a/package/debian-mingw/changelog b/package/debian-mingw/changelog
index a2d3d304..787bc2db 100644
--- a/package/debian-mingw/changelog
+++ b/package/debian-mingw/changelog
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20200411) unstable; urgency=low
+ncurses6 (6.2+20200418) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey   Sat, 11 Apr 2020 09:11:52 -0400
+ -- Thomas E. Dickey   Sat, 18 Apr 2020 05:00:18 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
diff --git a/package/debian-mingw64/changelog b/package/debian-mingw64/changelog
index a2d3d304..787bc2db 100644
--- a/package/debian-mingw64/changelog
+++ b/package/debian-mingw64/changelog
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20200411) unstable; urgency=low
+ncurses6 (6.2+20200418) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey   Sat, 11 Apr 2020 09:11:52 -0400
+ -- Thomas E. Dickey   Sat, 18 Apr 2020 05:00:18 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
diff --git a/package/debian/changelog b/package/debian/changelog
index 13d22d0f..2ee20423 100644
--- a/package/debian/changelog
+++ b/package/debian/changelog
@@ -1,8 +1,8 @@
-ncurses6 (6.2+20200411) unstable; urgency=low
+ncurses6 (6.2+20200418) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey   Sat, 11 Apr 2020 09:11:52 -0400
+ -- Thomas E. Dickey   Sat, 18 Apr 2020 05:00:18 -0400
 
 ncurses6 (5.9-20120608) unstable; urgency=low
 
diff --git a/package/mingw-ncurses.nsi b/package/mingw-ncurses.nsi
index 2d891b19..73c5ccb0 100644
--- a/package/mingw-ncurses.nsi
+++ b/package/mingw-ncurses.nsi
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.389 2020/04/11 13:11:52 tom Exp $
+; $Id: mingw-ncurses.nsi,v 1.390 2020/04/18 09:00:18 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  "0411"
+!define VERSION_MMDD  "0418"
 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
 
 !define MY_ABI   "5"
diff --git a/package/mingw-ncurses.spec b/package/mingw-ncurses.spec
index 083b9448..446bb27f 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: 20200411
+Release: 20200418
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
diff --git a/package/ncurses.spec b/package/ncurses.spec
index 6d9f928d..d12d2a1d 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: 20200411
+Release: 20200418
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
diff --git a/package/ncursest.spec b/package/ncursest.spec
index fcb76d01..91b56209 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: 20200411
+Release: 20200418
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
diff --git a/test/tracemunch b/test/tracemunch
index 4de41963..9d15dd58 100755
--- a/test/tracemunch
+++ b/test/tracemunch
@@ -1,5 +1,5 @@
 #!/usr/bin/env perl
-# $Id: tracemunch,v 1.28 2020/03/08 12:22:49 tom Exp $
+# $Id: tracemunch,v 1.29 2020/04/18 23:52:24 tom Exp $
 ##############################################################################
 # Copyright 2018-2019,2020 Thomas E. Dickey                                  #
 # Copyright 1998-2005,2017 Free Software Foundation, Inc.                    #
@@ -43,7 +43,27 @@ our $putattr =
     'PutAttrChar\(\{\{ ' . "'(.)'"
   . ' = 0[0-7]+ \}\}\) at \(([0-9]+), ([0-9]+)\)';
 our $waddnstr =
-  'waddnstr\(0x([[:xdigit:]]+),"([^\"]+)",[0-9]+\) called \{A_NORMAL\}';
+'^called \{waddnstr\((0x[[:xdigit:]]+|window\d+),"((\\.|[^\"]*))",[-]?[0-9]+\)';
+
+our %TR = qw(
+  DISABLE       0x0000
+  TIMES         0x0001
+  TPUTS         0x0002
+  UPDATE        0x0004
+  MOVE          0x0008
+  CHARPUT       0x0010
+  ORDINARY      0x001F
+  CALLS         0x0020
+  VIRTPUT       0x0040
+  IEVENT        0x0080
+  BITS          0x0100
+  ICALLS        0x0200
+  CCALLS        0x0400
+  DATABASE      0x0800
+  ATTRS         0x1000
+);
+
+our $tracelevel = 0;
 
 # If the trace is complete, we can infer addresses using the return value from
 # newwin, etc.  But if it is incomplete, we can still check for special cases
@@ -457,6 +477,14 @@ sub muncher($) {
             $_ =~ s/\r\n/\n/g;
             $_ =~ s/\r/\n/g;
 
+            if ( $_ =~
+                /^TRACING NCURSES version.*\(tracelevel=(0x[[:xdigit:]]+)\)/ )
+            {
+                $tracelevel = hex $1;
+                print;
+                next;
+            }
+
             my $thread = "";
             if ( $_ =~ /^(0x[[:xdigit:]]+):/ ) {
                 $thr_addr{$1} = ++$thr_nums unless defined $thr_addr{$1};
@@ -520,8 +548,9 @@ sub muncher($) {
                 }
             }
 
-            # Compactify runs of PutAttrChar calls (TR_CHARPUT)
-            if ( $_ =~ /$putattr/ ) {
+            # Compactify runs of PutAttrChar
+            if ( ( ( $tracelevel & $TR{CHARPUT} ) != 0 ) and $_ =~ /$putattr/ )
+            {
                 my $putattr_chars = $1;
                 my $starty        = $2;
                 my $startx        = $3;
@@ -530,19 +559,23 @@ sub muncher($) {
                         $putattr_chars .= $1;
                     }
                     else {
+                        next if ( $_ =~ /^PUTC 0x[[:xdigit:]]+.*/ );
+                        next if ( $_ =~ /^\.\.\.skip.*/ );
+                        next if ( $_ =~ /^forced to blank.*/ );
                         last;
                     }
                 }
-                print
-"RUN of PutAttrChar()s: \"$putattr_chars\" from ${starty}, ${startx}\n";
+                print "RUN of PutAttrChar()s:"
+                  . " \"$putattr_chars\" from ${starty}, ${startx}\n";
                 redo CLASSIFY;
             }
 
-            # Compactify runs of waddnstr calls (TR_CALLS)
-            if ( $_ =~ /$waddnstr/ ) {
+            # Compactify runs of waddnstr calls
+            if ( ( ( $tracelevel & $TR{CALLS} ) != 0 ) and $_ =~ /$waddnstr/ ) {
                 my $waddnstr_chars = $2;
                 my $winaddr        = $1;
                 while (<$STDIN>) {
+                    next if ( $_ =~ /^return \}0/ );
                     if ( $_ =~ /$waddnstr/ && $1 eq $winaddr ) {
                         $waddnstr_chars .= $2;
                     }
@@ -551,7 +584,8 @@ sub muncher($) {
                     }
                 }
                 my $winaddstr = &transaddr($winaddr);
-                print "RUN of waddnstr()s: $winaddr, \"$waddnstr_chars\"\n";
+                print "RUN of waddnstr()s:"
+                  . " $winaddstr, \"$waddnstr_chars\"\n";
                 redo CLASSIFY;
             }
 
@@ -580,6 +614,10 @@ sub muncher($) {
     }
 }
 
+for my $tr ( keys %TR ) {
+    $TR{$tr} = hex $TR{$tr};
+}
+
 if ( $#ARGV >= 0 ) {
     while ( $#ARGV >= 0 ) {
         my $file = shift @ARGV;
-- 
2.45.0