aboutsummaryrefslogtreecommitdiff
path: root/packages/ncurses/6.5/ncurses-6.5-20240629.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/ncurses/6.5/ncurses-6.5-20240629.patch')
-rw-r--r--packages/ncurses/6.5/ncurses-6.5-20240629.patch727
1 files changed, 727 insertions, 0 deletions
diff --git a/packages/ncurses/6.5/ncurses-6.5-20240629.patch b/packages/ncurses/6.5/ncurses-6.5-20240629.patch
new file mode 100644
index 00000000..9f21f67a
--- /dev/null
+++ b/packages/ncurses/6.5/ncurses-6.5-20240629.patch
@@ -0,0 +1,727 @@
+# ncurses 6.5 - patch 20240629 - Thomas E. Dickey
+#
+# ------------------------------------------------------------------------------
+#
+# Ncurses 6.5 is at
+# https://invisible-island.net/archives/ncurses/
+# https://invisible-mirror.net/archives/ncurses/
+# https://ftp.gnu.org/gnu/ncurses/
+#
+# Patches for ncurses 6.5 can be found at
+# https://invisible-island.net/archives/ncurses/6.5
+# https://invisible-mirror.net/archives/ncurses/6.5
+#
+# ------------------------------------------------------------------------------
+# https://invisible-island.net/archives/ncurses/6.5/ncurses-6.5-20240629.patch.gz
+# patch by Thomas E. Dickey <dickey@invisible-island.net>
+# created Sun Jun 30 00:08:16 UTC 2024
+# ------------------------------------------------------------------------------
+# NEWS | 12 ++++++++-
+# VERSION | 2 -
+# dist.mk | 4 +--
+# ncurses/base/lib_delwin.c | 21 ++++++++--------
+# 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/chgat.c | 7 +++--
+# test/demo_new_pair.c | 17 ++++++++++---
+# test/dup_field.c | 6 ++--
+# test/edit_field.c | 6 ++--
+# test/gdc.c | 48 +++++++++++++++++++++++++++----------
+# test/move_field.c | 6 ++--
+# test/popup_msg.c | 7 +++--
+# test/programs | 8 +++---
+# test/test_instr.c | 38 ++++++++++++++++++++++++++---
+# test/test_inwstr.c | 39 ++++++++++++++++++++++++++----
+# 21 files changed, 175 insertions(+), 68 deletions(-)
+# ------------------------------------------------------------------------------
+Index: NEWS
+Prereq: 1.4143
+--- ncurses-6.5-20240622+/NEWS 2024-06-22 22:59:44.000000000 +0000
++++ ncurses-6.5-20240629/NEWS 2024-06-29 19:31:28.000000000 +0000
+@@ -26,7 +26,7 @@
+ -- sale, use or other dealings in this Software without prior written --
+ -- authorization. --
+ -------------------------------------------------------------------------------
+--- $Id: NEWS,v 1.4143 2024/06/22 22:59:44 tom Exp $
++-- $Id: NEWS,v 1.4145 2024/06/29 19:31:28 tom Exp $
+ -------------------------------------------------------------------------------
+
+ This is a log of changes that ncurses has gone through since Zeyd started
+@@ -46,6 +46,16 @@
+ Changes through 1.9.9e did not credit all contributions;
+ it is not possible to add this information.
+
++20240629
++ + build-fix for ncurses-examples with newer PDCurses, which no longer
++ has stubs for unimplemented features.
++ + add help-popup for test_instr.c, test_inwstr.c
++ + modify checks in delwin to avoid checking if the window is a pad
++ until first checking if it is still on the active window-list
++ (cf: 20211115).
++ + improve -t option of test/gdc.c, allowing hours only, or hours and
++ minutes only.
++
+ 20240622
+ + improve test/gdc.c (patch by Branden Robinson).
+ + improve formatting/style of manpages (patches by Branden Robinson).
+Index: VERSION
+--- ncurses-6.5-20240622+/VERSION 2024-06-21 22:24:47.000000000 +0000
++++ ncurses-6.5-20240629/VERSION 2024-06-29 10:00:32.000000000 +0000
+@@ -1 +1 @@
+-5:0:10 6.5 20240622
++5:0:10 6.5 20240629
+Index: dist.mk
+Prereq: 1.1619
+--- ncurses-6.5-20240622+/dist.mk 2024-06-22 09:24:38.000000000 +0000
++++ ncurses-6.5-20240629/dist.mk 2024-06-29 10:00:32.000000000 +0000
+@@ -26,7 +26,7 @@
+ # use or other dealings in this Software without prior written #
+ # authorization. #
+ ##############################################################################
+-# $Id: dist.mk,v 1.1619 2024/06/22 09:24:38 tom Exp $
++# $Id: dist.mk,v 1.1620 2024/06/29 10:00:32 tom Exp $
+ # Makefile for creating ncurses distributions.
+ #
+ # This only needs to be used directly as a makefile by developers, but
+@@ -38,7 +38,7 @@
+ # These define the major/minor/patch versions of ncurses.
+ NCURSES_MAJOR = 6
+ NCURSES_MINOR = 5
+-NCURSES_PATCH = 20240622
++NCURSES_PATCH = 20240629
+
+ # We don't append the patch to the version, since this only applies to releases
+ VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
+Index: ncurses/base/lib_delwin.c
+Prereq: 1.25
+--- ncurses-6.5-20240622+/ncurses/base/lib_delwin.c 2023-10-21 11:12:44.000000000 +0000
++++ ncurses-6.5-20240629/ncurses/base/lib_delwin.c 2024-06-29 16:51:40.000000000 +0000
+@@ -43,30 +43,31 @@
+
+ #include <curses.priv.h>
+
+-MODULE_ID("$Id: lib_delwin.c,v 1.25 2023/10/21 11:12:44 tom Exp $")
++MODULE_ID("$Id: lib_delwin.c,v 1.26 2024/06/29 16:51:40 tom Exp $")
+
+ static bool
+ cannot_delete(WINDOW *win)
+ {
+ bool result = TRUE;
++ bool found = FALSE;
++ SCREEN *scan;
++ WINDOWLIST *p;
+
+- if (IS_PAD(win)) {
+- result = FALSE;
+- } else {
+- WINDOWLIST *p;
+-#if NCURSES_SP_FUNCS && defined(USE_SP_WINDOWLIST)
+- SCREEN *sp = _nc_screen_of(win);
+-#endif
+-
+- for (each_window(SP_PARM, p)) {
++ for (each_screen(scan)) {
++ for (each_window(scan, p)) {
+ if (&(p->win) == win) {
+ result = FALSE;
++ found = TRUE;
++ break;
+ } else if (IS_SUBWIN(&(p->win))
+ && p->win._parent == win) {
+ result = TRUE;
++ found = TRUE;
+ break;
+ }
+ }
++ if (found)
++ break;
+ }
+ return result;
+ }
+Index: package/debian-mingw/changelog
+--- ncurses-6.5-20240622+/package/debian-mingw/changelog 2024-06-21 22:24:47.000000000 +0000
++++ ncurses-6.5-20240629/package/debian-mingw/changelog 2024-06-29 10:00:32.000000000 +0000
+@@ -1,8 +1,8 @@
+-ncurses6td (6.5+20240622) unstable; urgency=low
++ncurses6td (6.5+20240629) unstable; urgency=low
+
+ * latest weekly patch
+
+- -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 21 Jun 2024 18:24:47 -0400
++ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 29 Jun 2024 06:00:32 -0400
+
+ ncurses6 (5.9+20131005) unstable; urgency=low
+
+Index: package/debian-mingw64/changelog
+--- ncurses-6.5-20240622+/package/debian-mingw64/changelog 2024-06-21 22:24:47.000000000 +0000
++++ ncurses-6.5-20240629/package/debian-mingw64/changelog 2024-06-29 10:00:32.000000000 +0000
+@@ -1,8 +1,8 @@
+-ncurses6td (6.5+20240622) unstable; urgency=low
++ncurses6td (6.5+20240629) unstable; urgency=low
+
+ * latest weekly patch
+
+- -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 21 Jun 2024 18:24:47 -0400
++ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 29 Jun 2024 06:00:32 -0400
+
+ ncurses6 (5.9+20131005) unstable; urgency=low
+
+Index: package/debian/changelog
+--- ncurses-6.5-20240622+/package/debian/changelog 2024-06-21 22:24:47.000000000 +0000
++++ ncurses-6.5-20240629/package/debian/changelog 2024-06-29 10:00:32.000000000 +0000
+@@ -1,8 +1,8 @@
+-ncurses6td (6.5+20240622) unstable; urgency=low
++ncurses6td (6.5+20240629) unstable; urgency=low
+
+ * latest weekly patch
+
+- -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 21 Jun 2024 18:24:47 -0400
++ -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 29 Jun 2024 06:00:32 -0400
+
+ ncurses6 (5.9+20120608) unstable; urgency=low
+
+Index: package/mingw-ncurses.nsi
+Prereq: 1.654
+--- ncurses-6.5-20240622+/package/mingw-ncurses.nsi 2024-06-21 22:24:47.000000000 +0000
++++ ncurses-6.5-20240629/package/mingw-ncurses.nsi 2024-06-29 10:00:32.000000000 +0000
+@@ -1,4 +1,4 @@
+-; $Id: mingw-ncurses.nsi,v 1.654 2024/06/21 22:24:47 tom Exp $
++; $Id: mingw-ncurses.nsi,v 1.655 2024/06/29 10:00:32 tom Exp $
+
+ ; TODO add examples
+ ; TODO bump ABI to 6
+@@ -10,7 +10,7 @@
+ !define VERSION_MAJOR "6"
+ !define VERSION_MINOR "5"
+ !define VERSION_YYYY "2024"
+-!define VERSION_MMDD "0622"
++!define VERSION_MMDD "0629"
+ !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
+
+ !define MY_ABI "5"
+Index: package/mingw-ncurses.spec
+--- ncurses-6.5-20240622+/package/mingw-ncurses.spec 2024-06-21 22:24:47.000000000 +0000
++++ ncurses-6.5-20240629/package/mingw-ncurses.spec 2024-06-29 10:00:32.000000000 +0000
+@@ -3,7 +3,7 @@
+ Summary: shared libraries for terminal handling
+ Name: mingw32-ncurses6
+ Version: 6.5
+-Release: 20240622
++Release: 20240629
+ License: X11
+ Group: Development/Libraries
+ URL: https://invisible-island.net/ncurses/
+Index: package/ncurses.spec
+--- ncurses-6.5-20240622+/package/ncurses.spec 2024-06-21 22:24:47.000000000 +0000
++++ ncurses-6.5-20240629/package/ncurses.spec 2024-06-29 10:00:32.000000000 +0000
+@@ -1,7 +1,7 @@
+ Summary: shared libraries for terminal handling
+ Name: ncurses6
+ Version: 6.5
+-Release: 20240622
++Release: 20240629
+ License: X11
+ Group: Development/Libraries
+ URL: https://invisible-island.net/ncurses/
+Index: package/ncursest.spec
+--- ncurses-6.5-20240622+/package/ncursest.spec 2024-06-21 22:24:47.000000000 +0000
++++ ncurses-6.5-20240629/package/ncursest.spec 2024-06-29 10:00:32.000000000 +0000
+@@ -1,7 +1,7 @@
+ Summary: Curses library with POSIX thread support.
+ Name: ncursest6
+ Version: 6.5
+-Release: 20240622
++Release: 20240629
+ License: X11
+ Group: Development/Libraries
+ Source: ncurses-%{version}-%{release}.tgz
+Index: test/chgat.c
+Prereq: 1.20
+--- ncurses-6.5-20240622+/test/chgat.c 2022-12-10 23:31:31.000000000 +0000
++++ ncurses-6.5-20240629/test/chgat.c 2024-06-29 17:45:32.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2019-2020,2022 Thomas E. Dickey *
++ * Copyright 2019-2022,2024 Thomas E. Dickey *
+ * Copyright 2006-2012,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -27,16 +27,17 @@
+ * authorization. *
+ ****************************************************************************/
+ /*
+- * $Id: chgat.c,v 1.20 2022/12/10 23:31:31 tom Exp $
++ * $Id: chgat.c,v 1.21 2024/06/29 17:45:32 tom Exp $
+ *
+ * test-driver for chgat/wchgat/mvchgat/mvwchgat
+ */
+
+ #include <test.priv.h>
+-#include <popup_msg.h>
+
+ #if HAVE_CHGAT
+
++#include <popup_msg.h>
++
+ #define SHOW(n) ((n) == ERR ? "ERR" : "OK")
+ #define COLOR_DEFAULT (-1)
+
+Index: test/demo_new_pair.c
+Prereq: 1.27
+--- ncurses-6.5-20240622+/test/demo_new_pair.c 2022-12-04 00:40:11.000000000 +0000
++++ ncurses-6.5-20240629/test/demo_new_pair.c 2024-06-29 19:30:26.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2021,2022 Thomas E. Dickey *
++ * Copyright 2018-2022,2024 Thomas E. Dickey *
+ * Copyright 2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -27,7 +27,7 @@
+ * authorization. *
+ ****************************************************************************/
+ /*
+- * $Id: demo_new_pair.c,v 1.27 2022/12/04 00:40:11 tom Exp $
++ * $Id: demo_new_pair.c,v 1.28 2024/06/29 19:30:26 tom Exp $
+ *
+ * Demonstrate the alloc_pair() function.
+ */
+@@ -36,6 +36,7 @@
+ #include <time.h>
+ #include <popup_msg.h>
+
++#if HAVE_TIGETSTR
+ #if HAVE_ALLOC_PAIR && USE_WIDEC_SUPPORT
+
+ #include <sys/types.h>
+@@ -391,11 +392,19 @@
+ ExitProgram(EXIT_SUCCESS);
+ }
+
+-#else
++#else /* !(HAVE_ALLOC_PAIR && USE_WIDEC_SUPPORT) */
+ int
+ main(void)
+ {
+ printf("This program requires the ncurses alloc_pair function\n");
+ ExitProgram(EXIT_FAILURE);
+ }
+-#endif
++#endif /* HAVE_ALLOC_PAIR && USE_WIDEC_SUPPORT */
++#else /* !HAVE_TIGETSTR */
++int
++main(void)
++{
++ printf("This program requires the terminfo functions such as tigetstr\n");
++ ExitProgram(EXIT_FAILURE);
++}
++#endif /* HAVE_TIGETSTR */
+Index: test/dup_field.c
+Prereq: 1.8
+--- ncurses-6.5-20240622+/test/dup_field.c 2023-11-11 00:29:10.000000000 +0000
++++ ncurses-6.5-20240629/test/dup_field.c 2024-06-29 17:45:32.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2020-2022,2023 Thomas E. Dickey *
++ * Copyright 2020-2023,2024 Thomas E. Dickey *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+@@ -26,7 +26,7 @@
+ * authorization. *
+ ****************************************************************************/
+ /*
+- * $Id: dup_field.c,v 1.8 2023/11/11 00:29:10 tom Exp $
++ * $Id: dup_field.c,v 1.9 2024/06/29 17:45:32 tom Exp $
+ *
+ * Demonstrate dup_field().
+ */
+@@ -62,7 +62,7 @@
+ { CTRL('W'), REQ_NEXT_WORD, "go to next word" },
+ { CTRL('X'), REQ_CLR_FIELD, "clear field" },
+ { CTRL('['), MY_QUIT, "exit form" },
+- { KEY_F(1), MY_HELP, "show this screen", },
++ { HELP_KEY_2, MY_HELP, "show this screen", },
+ { KEY_BACKSPACE, REQ_DEL_PREV, "delete previous character" },
+ { KEY_BTAB, REQ_PREV_FIELD, "go to previous field" },
+ { KEY_DOWN, REQ_DOWN_CHAR, "move down 1 character" },
+Index: test/edit_field.c
+Prereq: 1.31
+--- ncurses-6.5-20240622+/test/edit_field.c 2020-02-02 23:34:34.000000000 +0000
++++ ncurses-6.5-20240629/test/edit_field.c 2024-06-29 17:49:56.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2019,2020 Thomas E. Dickey *
++ * Copyright 2019-2020,2024 Thomas E. Dickey *
+ * Copyright 2003-2014,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -27,7 +27,7 @@
+ * authorization. *
+ ****************************************************************************/
+ /*
+- * $Id: edit_field.c,v 1.31 2020/02/02 23:34:34 tom Exp $
++ * $Id: edit_field.c,v 1.32 2024/06/29 17:49:56 tom Exp $
+ *
+ * A wrapper for form_driver() which keeps track of the user's editing changes
+ * for each field, and makes the resulting length available as a
+@@ -131,7 +131,7 @@
+ CTRL(']'), MY_INS_MODE, "toggle REQ_INS_MODE/REQ_OVL_MODE",
+ },
+ {
+- KEY_F(1), MY_HELP, "show this screen",
++ HELP_KEY_2, MY_HELP, "show this screen",
+ },
+ {
+ KEY_BACKSPACE, REQ_DEL_PREV, "delete previous character"
+Index: test/gdc.c
+Prereq: 1.58
+--- ncurses-6.5-20240622+/test/gdc.c 2024-06-22 22:27:52.000000000 +0000
++++ ncurses-6.5-20240629/test/gdc.c 2024-06-29 19:59:06.000000000 +0000
+@@ -34,7 +34,7 @@
+ * modified 10-18-89 for curses (jrl)
+ * 10-18-89 added signal handling
+ *
+- * $Id: gdc.c,v 1.58 2024/06/22 22:27:52 tom Exp $
++ * $Id: gdc.c,v 1.60 2024/06/29 19:59:06 tom Exp $
+ */
+
+ #include <test.priv.h>
+@@ -150,24 +150,23 @@
+ mask |= m;
+ }
+
+-static void
++static GCC_NORETURN void
+ usage(int ok)
+ {
+ static const char *msg[] =
+ {
+ "usage: gdc [-dns] -[t HH:MM:SS] [COUNT]"
+ ,""
+- ,"Display a digital clock, running indefinitely or for COUNT"
+- " seconds."
++ ,"Display a digital clock, running indefinitely or for COUNT seconds."
+ ,""
+ ,USAGE_COMMON
+ ,"Options:"
+ #if HAVE_USE_DEFAULT_COLORS
+- ," -d uses the terminal's default background color"
++ ," -d uses the terminal's default background color"
+ #endif
+- ," -n reads input from /dev/null"
+- ," -s scrolls each digit into place"
+- ," -t HH:MM:SS starts clock at specified time"
++ ," -n reads input from /dev/null"
++ ," -s scrolls each digit into place"
++ ," -t TIME specify starting time as hh:mm:ss (default is ``now'')"
+ };
+ unsigned j;
+ for (j = 0; j < SIZEOF(msg); j++)
+@@ -181,13 +180,38 @@
+ int hh, mm, ss;
+ int check;
+ time_t result;
+- char c;
++ char c = 0;
+ struct tm *tm;
+
+- if (sscanf(value, "%d:%d:%d%c", &hh, &mm, &ss, &c) != 3) {
+- if (sscanf(value, "%02d%02d%02d%c", &hh, &mm, &ss, &c) != 3) {
+- usage(FALSE);
++ switch (sscanf(value, "%d:%d:%d%c", &hh, &mm, &ss, &c)) {
++ default:
++ usage(FALSE);
++ /* NOTREACHED */
++ case 1:
++ if (strspn(value, "0123456789") >= 2) {
++ switch (sscanf(value, "%02d%02d%02d%c", &hh, &mm, &ss, &c)) {
++ default:
++ usage(FALSE);
++ /* NOTREACHED */
++ case 1:
++ mm = 0;
++ /* FALLTHRU */
++ case 2:
++ ss = 0;
++ /* FALLTHRU */
++ case 3:
++ break;
++ }
++ break;
++ } else {
++ mm = 0;
+ }
++ /* FALLTHRU */
++ case 2:
++ ss = 0;
++ /* FALLTHRU */
++ case 3:
++ break;
+ }
+
+ if ((hh < 0) || (hh >= 24) ||
+Index: test/move_field.c
+Prereq: 1.15
+--- ncurses-6.5-20240622+/test/move_field.c 2023-11-11 00:28:19.000000000 +0000
++++ ncurses-6.5-20240629/test/move_field.c 2024-06-29 17:45:02.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2020-2022,2023 Thomas E. Dickey *
++ * Copyright 2020-2023,2024 Thomas E. Dickey *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+@@ -26,7 +26,7 @@
+ * authorization. *
+ ****************************************************************************/
+ /*
+- * $Id: move_field.c,v 1.15 2023/11/11 00:28:19 tom Exp $
++ * $Id: move_field.c,v 1.16 2024/06/29 17:45:02 tom Exp $
+ *
+ * Demonstrate move_field().
+ */
+@@ -62,7 +62,7 @@
+ { CTRL('W'), REQ_NEXT_WORD, "go to next word" },
+ { CTRL('X'), REQ_CLR_FIELD, "clear field" },
+ { CTRL('['), MY_QUIT, "exit form" },
+- { KEY_F(1), MY_HELP, "show this screen", },
++ { HELP_KEY_2, MY_HELP, "show this screen", },
+ { KEY_BACKSPACE, REQ_DEL_PREV, "delete previous character" },
+ { KEY_BTAB, REQ_PREV_FIELD, "go to previous field" },
+ { KEY_DOWN, REQ_DOWN_CHAR, "move down 1 character" },
+Index: test/popup_msg.c
+Prereq: 1.11
+--- ncurses-6.5-20240622+/test/popup_msg.c 2021-12-18 21:19:19.000000000 +0000
++++ ncurses-6.5-20240629/test/popup_msg.c 2024-06-29 18:34:58.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2020,2021 Thomas E. Dickey *
++ * Copyright 2018-2021,2024 Thomas E. Dickey *
+ * Copyright 2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -27,7 +27,7 @@
+ * authorization. *
+ ****************************************************************************/
+ /*
+- * $Id: popup_msg.c,v 1.11 2021/12/18 21:19:19 tom Exp $
++ * $Id: popup_msg.c,v 1.12 2024/06/29 18:34:58 tom Exp $
+ *
+ * Show a multi-line message in a window which may extend beyond the screen.
+ *
+@@ -83,7 +83,7 @@
+ if (width < check)
+ width = check;
+ }
+- length = n;
++ length = n + 2;
+
+ if ((help = newwin(high, wide, y0, x0)) == 0)
+ return;
+@@ -96,6 +96,7 @@
+
+ keypad(data, TRUE);
+
++ waddstr(data, "Press ^[ or ^Q to exit this window.\n\n");
+ for (n = 0; n < length; ++n) {
+ waddstr(data, msg[n]);
+ if ((n + 1) < length) {
+Index: test/programs
+Prereq: 1.57
+--- ncurses-6.5-20240622+/test/programs 2023-11-10 11:48:38.000000000 +0000
++++ ncurses-6.5-20240629/test/programs 2024-06-29 18:49:58.000000000 +0000
+@@ -1,6 +1,6 @@
+-# $Id: programs,v 1.57 2023/11/10 11:48:38 tom Exp $
++# $Id: programs,v 1.58 2024/06/29 18:49:58 tom Exp $
+ ##############################################################################
+-# Copyright 2018-2022,2023 Thomas E. Dickey #
++# Copyright 2018-2023,2024 Thomas E. Dickey #
+ # Copyright 2006-2016,2017 Free Software Foundation, Inc. #
+ # #
+ # Permission is hereby granted, free of charge, to any person obtaining a #
+@@ -100,8 +100,8 @@
+ test_endwin $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_endwin
+ test_get_wstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_get_wstr popup_msg
+ test_getstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_getstr popup_msg
+-test_instr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_instr
+-test_inwstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_inwstr
++test_instr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_instr popup_msg
++test_inwstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_inwstr popup_msg
+ test_mouse $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_mouse
+ test_opaque $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_opaque
+ test_setupterm $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_setupterm
+Index: test/test_instr.c
+Prereq: 1.12
+--- ncurses-6.5-20240622+/test/test_instr.c 2022-12-10 23:58:01.000000000 +0000
++++ ncurses-6.5-20240629/test/test_instr.c 2024-06-29 18:42:53.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2020,2022 Thomas E. Dickey *
++ * Copyright 2020-2022,2024 Thomas E. Dickey *
+ * Copyright 2007-2010,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -27,7 +27,7 @@
+ * authorization. *
+ ****************************************************************************/
+ /*
+- * $Id: test_instr.c,v 1.12 2022/12/10 23:58:01 tom Exp $
++ * $Id: test_instr.c,v 1.13 2024/06/29 18:42:53 tom Exp $
+ *
+ * Author: Thomas E Dickey
+ *
+@@ -44,6 +44,7 @@
+ */
+
+ #include <test.priv.h>
++#include <popup_msg.h>
+
+ #define BASE_Y 6
+ #define MAX_COLS 1024
+@@ -68,6 +69,26 @@
+ show_1st(win, line, buffer);
+ }
+
++static void
++show_help(WINDOW *win)
++{
++ static const char *msgs[] =
++ {
++ "Show file contents and a viewport from the variants of winstr."
++ ,"Use h/j/k/l or arrow keys to move the viewport."
++ ,""
++ ,"Other commands:"
++ ,"+ increases the buffer-size used."
++ ,"- decreases the buffer-size used."
++ ,"w opens new window on the next filename."
++ ,"q quits the current file/window."
++ ,"? shows this help-window"
++ ,0
++ };
++
++ popup_msg(win, msgs);
++}
++
+ static int
+ recursive_test(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
+ {
+@@ -169,8 +190,15 @@
+ }
+ break;
+ case '+':
+- ++limit;
++ if (limit + 2 < MAX_COLS) {
++ ++limit;
++ } else {
++ beep();
++ }
+ break;
++ case HELP_KEY_1:
++ show_help(txtwin);
++ continue;
+ default:
+ beep();
+ break;
+@@ -273,8 +301,10 @@
+
+ setlocale(LC_ALL, "");
+
+- if (optind + 1 > argc)
++ if (optind + 1 > argc) {
++ fprintf(stderr, "At least one text-file is needed\n");
+ usage(FALSE);
++ }
+
+ initscr();
+
+Index: test/test_inwstr.c
+Prereq: 1.8
+--- ncurses-6.5-20240622+/test/test_inwstr.c 2022-12-10 23:56:39.000000000 +0000
++++ ncurses-6.5-20240629/test/test_inwstr.c 2024-06-29 18:40:02.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2020,2022 Thomas E. Dickey *
++ * Copyright 2020-2022,2024 Thomas E. Dickey *
+ * Copyright 2007-2010,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -27,7 +27,7 @@
+ * authorization. *
+ ****************************************************************************/
+ /*
+- * $Id: test_inwstr.c,v 1.8 2022/12/10 23:56:39 tom Exp $
++ * $Id: test_inwstr.c,v 1.9 2024/06/29 18:40:02 tom Exp $
+ *
+ * Author: Thomas E Dickey
+ *
+@@ -47,6 +47,8 @@
+
+ #if USE_WIDEC_SUPPORT
+
++#include <popup_msg.h>
++
+ #define BASE_Y 6
+ #define MAX_COLS 1024
+
+@@ -70,6 +72,26 @@
+ show_1st(win, line, buffer);
+ }
+
++static void
++show_help(WINDOW *win)
++{
++ static const char *msgs[] =
++ {
++ "Show file contents and a viewport from the variants of winwstr."
++ ,"Use h/j/k/l or arrow keys to move the viewport."
++ ,""
++ ,"Other commands:"
++ ,"+ increases the buffer-size used."
++ ,"- decreases the buffer-size used."
++ ,"w opens new window on the next filename."
++ ,"q quits the current file/window."
++ ,"? shows this help-window"
++ ,0
++ };
++
++ popup_msg(win, msgs);
++}
++
+ static int
+ recursive_test(int level, char **argv, WINDOW *chrwin, WINDOW *strwin)
+ {
+@@ -169,8 +191,15 @@
+ }
+ break;
+ case '+':
+- ++limit;
++ if (limit + 2 < MAX_COLS) {
++ ++limit;
++ } else {
++ beep();
++ }
+ break;
++ case HELP_KEY_1:
++ show_help(txtwin);
++ continue;
+ default:
+ beep();
+ break;
+@@ -273,8 +302,10 @@
+
+ setlocale(LC_ALL, "");
+
+- if (optind + 1 > argc)
++ if (optind + 1 > argc) {
++ fprintf(stderr, "At least one text-file is needed\n");
+ usage(FALSE);
++ }
+
+ initscr();
+