aboutsummaryrefslogtreecommitdiff
path: root/packages/ncurses/6.5/ncurses-6.5-20250222.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/ncurses/6.5/ncurses-6.5-20250222.patch')
-rw-r--r--packages/ncurses/6.5/ncurses-6.5-20250222.patch1333
1 files changed, 1333 insertions, 0 deletions
diff --git a/packages/ncurses/6.5/ncurses-6.5-20250222.patch b/packages/ncurses/6.5/ncurses-6.5-20250222.patch
new file mode 100644
index 00000000..fc70ef2b
--- /dev/null
+++ b/packages/ncurses/6.5/ncurses-6.5-20250222.patch
@@ -0,0 +1,1333 @@
+# ncurses 6.5 - patch 20250222 - 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-20250222.patch.gz
+# patch by Thomas E. Dickey <dickey@invisible-island.net>
+# created Sat Feb 22 23:47:29 UTC 2025
+# ------------------------------------------------------------------------------
+# NEWS | 8 ++++++-
+# VERSION | 2 -
+# dist.mk | 4 +--
+# man/MKterminfo.sh | 10 +++++---
+# man/infocmp.1m | 6 ++---
+# man/terminfo.tail | 4 +--
+# ncurses/base/lib_addstr.c | 12 +++++-----
+# ncurses/base/lib_driver.c | 6 ++---
+# ncurses/base/lib_newterm.c | 10 ++++----
+# ncurses/base/safe_sprintf.c | 14 ++++++------
+# ncurses/base/vsscanf.c | 8 +++----
+# ncurses/report_hashing.c | 6 ++---
+# ncurses/tinfo/access.c | 10 ++++----
+# ncurses/tinfo/captoinfo.c | 4 +--
+# ncurses/tinfo/getenv_num.c | 6 ++---
+# ncurses/tinfo/lib_data.c | 6 ++---
+# ncurses/tinfo/lib_setup.c | 12 +++++-----
+# ncurses/tinfo/obsolete.c | 10 ++++----
+# ncurses/tinfo/parse_entry.c | 14 ++++++------
+# ncurses/tinfo/read_termcap.c | 42 ++++++++++++++++++-------------------
+# ncurses/tinfo/tinfo_driver.c | 18 +++++++--------
+# ncurses/trace/lib_tracebits.c | 8 +++----
+# ncurses/widechar/lib_ins_wch.c | 7 ++----
+# ncurses/widechar/widechars.c | 8 +++----
+# ncurses/win32con/win32_driver.c | 18 +++++++--------
+# ncurses/win32con/win_driver.c | 30 +++++++++++++-------------
+# 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 -
+# 33 files changed, 156 insertions(+), 149 deletions(-)
+# ------------------------------------------------------------------------------
+Index: NEWS
+Prereq: 1.4248
+--- ncurses-6.5-20250216+/NEWS 2025-02-16 23:54:33.000000000 +0000
++++ ncurses-6.5-20250222/NEWS 2025-02-20 09:09:47.000000000 +0000
+@@ -26,7 +26,7 @@
+ -- sale, use or other dealings in this Software without prior written --
+ -- authorization. --
+ -------------------------------------------------------------------------------
+--- $Id: NEWS,v 1.4248 2025/02/16 23:54:33 tom Exp $
++-- $Id: NEWS,v 1.4251 2025/02/20 09:09:47 tom Exp $
+ -------------------------------------------------------------------------------
+
+ This is a log of changes that ncurses has gone through since Zeyd started
+@@ -46,6 +46,12 @@
+ Changes through 1.9.9e did not credit all contributions;
+ it is not possible to add this information.
+
++20250222
++ + modify treatment of "n" parameter for waddnstr, waddnwstr, and
++ wins_nwstr to return OK when "n" is zero, for consistency with other
++ implementations (report by Benjamin Barenblat, cf: 20231118).
++ + formatting improvements for terminfo.5 (Debian #1096164).
++
+ 20250216
+ + add limit-checks in alloc_entry.c and alloc_ttype.c to avoid indexing
+ errors when using infocmp to compare all capabilities when processing
+Index: VERSION
+--- ncurses-6.5-20250216+/VERSION 2025-02-16 22:35:29.000000000 +0000
++++ ncurses-6.5-20250222/VERSION 2025-02-22 09:14:10.000000000 +0000
+@@ -1 +1 @@
+-5:0:10 6.5 20250216
++5:0:10 6.5 20250222
+Index: dist.mk
+Prereq: 1.1656
+--- ncurses-6.5-20250216+/dist.mk 2025-02-16 22:35:29.000000000 +0000
++++ ncurses-6.5-20250222/dist.mk 2025-02-22 09:14:10.000000000 +0000
+@@ -26,7 +26,7 @@
+ # use or other dealings in this Software without prior written #
+ # authorization. #
+ ##############################################################################
+-# $Id: dist.mk,v 1.1656 2025/02/16 22:35:29 tom Exp $
++# $Id: dist.mk,v 1.1657 2025/02/22 09:14:10 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 = 20250216
++NCURSES_PATCH = 20250222
+
+ # We don't append the patch to the version, since this only applies to releases
+ VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
+Index: man/MKterminfo.sh
+Prereq: 1.20
+--- ncurses-6.5-20250216+/man/MKterminfo.sh 2024-01-13 20:37:40.000000000 +0000
++++ ncurses-6.5-20250222/man/MKterminfo.sh 2025-02-20 00:14:25.000000000 +0000
+@@ -1,10 +1,10 @@
+ #!/bin/sh
+-# $Id: MKterminfo.sh,v 1.20 2024/01/13 20:37:40 tom Exp $
++# $Id: MKterminfo.sh,v 1.21 2025/02/20 00:14:25 tom Exp $
+ #
+ # MKterminfo.sh -- generate terminfo.5 from Caps tabular data
+ #
+ #***************************************************************************
+-# Copyright 2018-2020,2022 Thomas E. Dickey *
++# Copyright 2018-2024,2025 Thomas E. Dickey *
+ # Copyright 1998-2003,2017 Free Software Foundation, Inc. *
+ # *
+ # Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -76,6 +76,9 @@
+ rm -f $sorted $temp $unsorted
+
+ cat $caps | sed -n "\
++/^#%.TS/i.na
++/^#%.TE/a\
++.ad
+ /%%-STOP-HERE-%%/q
+ /^#%center/s, expand,,
+ /^#%lw25/s, lw6 , lw7 ,
+@@ -84,7 +87,6 @@
+ s/[ ][ ]*/ /g
+ s/$/T}/
+ s/ [A-Z0-9_()\-][A-Z0-9_()\-]* [0-9\-][0-9\-]* [Y\-][B\-][C\-][G\-][EK\-]\** / T{\\
+-.ad l\
+ /
+ s/ bool / /p
+ s/ num / /p
+@@ -116,7 +118,7 @@
+ done <$unsorted
+ test $saved = yes && sort $temp >>$sorted
+
+-sed -e 's/^\.\.$//' $sorted | tr "\005\006" "\012\134"
++sed -e 's/^\.\.$//' $sorted | tr "\005\006" "\012\134" | sed -e '/^$/d'
+
+ sed -e '/^center expand;/s, expand,,' \
+ -e '/^\.TS/,/^\\/s, lw[1-9][0-9]*\., l.,' \
+Index: man/infocmp.1m
+Prereq: 1.124
+--- ncurses-6.5-20250216+/man/infocmp.1m 2025-02-15 19:37:37.000000000 +0000
++++ ncurses-6.5-20250222/man/infocmp.1m 2025-02-18 00:05:00.000000000 +0000
+@@ -28,8 +28,8 @@
+ .\" authorization. *
+ .\"***************************************************************************
+ .\"
+-.\" $Id: infocmp.1m,v 1.124 2025/02/15 19:37:37 tom Exp $
+-.TH @INFOCMP@ 1M 2025-02-15 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
++.\" $Id: infocmp.1m,v 1.126 2025/02/18 00:05:00 tom Exp $
++.TH @INFOCMP@ 1M 2025-02-17 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
+ .ie \n(.g \{\
+ .ds `` \(lq
+ .ds '' \(rq
+@@ -111,7 +111,7 @@
+ expressions with the content of other entries by reference.
+ A
+ .I "\%term\%info entry"
+-entry comprises
++comprises
+ a list of one or more terminal type identifiers,
+ a human-readable description of the terminal type,
+ and a list of terminal
+Index: man/terminfo.tail
+Prereq: 1.156
+--- ncurses-6.5-20250216+/man/terminfo.tail 2025-01-19 00:51:10.000000000 +0000
++++ ncurses-6.5-20250222/man/terminfo.tail 2025-02-17 23:55:31.000000000 +0000
+@@ -27,7 +27,7 @@
+ .\" authorization. *
+ .\"***************************************************************************
+ .\"
+-.\" $Id: terminfo.tail,v 1.156 2025/01/19 00:51:10 tom Exp $
++.\" $Id: terminfo.tail,v 1.157 2025/02/17 23:55:31 tom Exp $
+ .ps +1
+ .SS "User-Defined Capabilities"
+ .
+@@ -1014,7 +1014,7 @@
+ with one parameter,
+ .IR n ,
+ to delete
+-.IR n "characters,"
++.IR n " characters,"
+ and delete mode by giving \fBsmdc\fP and \fBrmdc\fP
+ to enter and exit delete mode (any mode the terminal needs to be placed
+ in for
+Index: ncurses/base/lib_addstr.c
+Prereq: 1.63
+--- ncurses-6.5-20250216+/ncurses/base/lib_addstr.c 2024-12-07 20:00:48.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/base/lib_addstr.c 2025-02-20 08:53:36.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2019-2023,2024 Thomas E. Dickey *
++ * Copyright 2019-2024,2025 Thomas E. Dickey *
+ * Copyright 1998-2016,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -45,7 +45,7 @@
+
+ #include <curses.priv.h>
+
+-MODULE_ID("$Id: lib_addstr.c,v 1.63 2024/12/07 20:00:48 tom Exp $")
++MODULE_ID("$Id: lib_addstr.c,v 1.65 2025/02/20 08:53:36 tom Exp $")
+
+ NCURSES_EXPORT(int)
+ waddnstr(WINDOW *win, const char *astr, int n)
+@@ -55,8 +55,8 @@
+
+ T((T_CALLED("waddnstr(%p,%s,%d)"), (void *) win, _nc_visbufn(astr, n), n));
+
+- if (win && (str != NULL) && (n != 0)) {
+- bool explicit = (n > 0);
++ if (win != NULL && str != NULL) {
++ bool explicit = (n >= 0);
+
+ TR(TRACE_VIRTPUT | TRACE_ATTRS,
+ ("... current %s", _traceattr(WINDOW_ATTRS(win))));
+@@ -230,8 +230,8 @@
+
+ T((T_CALLED("waddnwstr(%p,%s,%d)"), (void *) win, _nc_viswbufn(str, n), n));
+
+- if (win && (str != NULL) && (n != 0)) {
+- bool explicit = (n > 0);
++ if (win != NULL && str != NULL) {
++ bool explicit = (n >= 0);
+
+ TR(TRACE_VIRTPUT | TRACE_ATTRS,
+ ("... current %s", _traceattr(WINDOW_ATTRS(win))));
+Index: ncurses/base/lib_driver.c
+Prereq: 1.10
+--- ncurses-6.5-20250216+/ncurses/base/lib_driver.c 2024-12-14 22:31:35.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/base/lib_driver.c 2025-02-20 01:02:09.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2020,2024 Thomas E. Dickey *
++ * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 2009-2012,2014 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -34,7 +34,7 @@
+
+ #include <curses.priv.h>
+
+-MODULE_ID("$Id: lib_driver.c,v 1.10 2024/12/14 22:31:35 tom Exp $")
++MODULE_ID("$Id: lib_driver.c,v 1.11 2025/02/20 01:02:09 tom Exp $")
+
+ #ifndef EXP_WIN32_DRIVER
+ typedef struct DriverEntry {
+@@ -61,7 +61,7 @@
+ T((T_CALLED("_nc_get_driver(%p, %s, %p)"),
+ (void *) TCB, NonNull(name), (void *) errret));
+
+- assert(TCB != 0);
++ assert(TCB != NULL);
+
+ for (i = 0; i < SIZEOF(DriverTable); i++) {
+ res = DriverTable[i].driver;
+Index: ncurses/base/lib_newterm.c
+Prereq: 1.107
+--- ncurses-6.5-20250216+/ncurses/base/lib_newterm.c 2024-12-07 17:41:36.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/base/lib_newterm.c 2025-02-20 01:02:09.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2022,2024 Thomas E. Dickey *
++ * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 1998-2016,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -49,7 +49,7 @@
+
+ #include <tic.h>
+
+-MODULE_ID("$Id: lib_newterm.c,v 1.107 2024/12/07 17:41:36 tom Exp $")
++MODULE_ID("$Id: lib_newterm.c,v 1.108 2025/02/20 01:02:09 tom Exp $")
+
+ #ifdef USE_TERM_DRIVER
+ #define NumLabels InfoOf(SP_PARM).numlabels
+@@ -190,7 +190,7 @@
+ (void *) ifp));
+
+ #if NCURSES_SP_FUNCS
+- assert(SP_PARM != 0);
++ assert(SP_PARM != NULL);
+ if (SP_PARM == NULL)
+ returnSP(SP_PARM);
+ #endif
+@@ -216,7 +216,7 @@
+
+ _nc_set_screen(NULL);
+ #ifdef USE_TERM_DRIVER
+- assert(new_term != 0);
++ assert(new_term != NULL);
+ #endif
+
+ #if NCURSES_SP_FUNCS
+@@ -251,7 +251,7 @@
+ #elif !NCURSES_SP_FUNCS
+ _nc_set_screen(CURRENT_SCREEN);
+ #endif
+- assert(SP_PARM != 0);
++ assert(SP_PARM != NULL);
+ cols = *(ptrCols(SP_PARM));
+ #ifdef USE_TERM_DRIVER
+ _nc_set_screen(SP_PARM);
+Index: ncurses/base/safe_sprintf.c
+Prereq: 1.38
+--- ncurses-6.5-20250216+/ncurses/base/safe_sprintf.c 2024-07-27 19:22:23.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/base/safe_sprintf.c 2025-02-20 01:07:05.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2023,2024 Thomas E. Dickey *
++ * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 1998-2012,2013 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -34,7 +34,7 @@
+ #include <curses.priv.h>
+ #include <ctype.h>
+
+-MODULE_ID("$Id: safe_sprintf.c,v 1.38 2024/07/27 19:22:23 tom Exp $")
++MODULE_ID("$Id: safe_sprintf.c,v 1.39 2025/02/20 01:07:05 tom Exp $")
+
+ #if USE_SAFE_SPRINTF
+
+@@ -60,12 +60,12 @@
+ size_t fmt_len;
+ char fmt_arg[BUFSIZ];
+
+- if (fmt == 0 || *fmt == '\0')
++ if (fmt == NULL || *fmt == '\0')
+ return 0;
+ fmt_len = strlen(fmt) + 1;
+- if ((format = typeMalloc(char, fmt_len)) == 0)
++ if ((format = typeMalloc(char, fmt_len)) == NULL)
+ return -1;
+- if ((buffer = typeMalloc(char, length)) == 0) {
++ if ((buffer = typeMalloc(char, length)) == NULL) {
+ free(format);
+ return -1;
+ }
+@@ -114,7 +114,7 @@
+ _nc_SLIMIT(sizeof(fmt_arg))
+ "%d", ival);
+ fmt_len += strlen(fmt_arg);
+- if ((format = _nc_doalloc(format, fmt_len)) == 0) {
++ if ((format = _nc_doalloc(format, fmt_len)) == NULL) {
+ free(buffer);
+ return -1;
+ }
+@@ -162,7 +162,7 @@
+ if (prec > (int) length) {
+ length = length + (size_t) prec;
+ buffer = typeRealloc(char, length, buffer);
+- if (buffer == 0) {
++ if (buffer == NULL) {
+ free(format);
+ return -1;
+ }
+Index: ncurses/base/vsscanf.c
+Prereq: 1.22
+--- ncurses-6.5-20250216+/ncurses/base/vsscanf.c 2023-09-23 18:48:57.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/base/vsscanf.c 2025-02-20 01:08:11.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2020,2023 Thomas E. Dickey *
++ * Copyright 2020-2023,2025 Thomas E. Dickey *
+ * Copyright 1998-2004,2012 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -39,7 +39,7 @@
+
+ #if !HAVE_VSSCANF
+
+-MODULE_ID("$Id: vsscanf.c,v 1.22 2023/09/23 18:48:57 tom Exp $")
++MODULE_ID("$Id: vsscanf.c,v 1.23 2025/02/20 01:08:11 tom Exp $")
+
+ #if !(HAVE_VFSCANF || HAVE__DOSCAN)
+
+@@ -215,7 +215,7 @@
+ int eaten;
+ void *pointer;
+
+- if (my_fmt != 0) {
++ if (my_fmt != NULL) {
+ /*
+ * Split the original format into chunks, adding a "%n" to the end
+ * of each (except of course if it used %n), and use that
+@@ -229,7 +229,7 @@
+ state = sUnknown;
+ chunk = cUnknown;
+ other = oUnknown;
+- pointer = 0;
++ pointer = NULL;
+ for (n = 0; format[n] != 0 && state != sFinal; ++n) {
+ my_fmt[n] = format[n];
+ switch (state) {
+Index: ncurses/report_hashing.c
+Prereq: 1.3
+--- ncurses-6.5-20250216+/ncurses/report_hashing.c 2020-02-02 23:34:34.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/report_hashing.c 2025-02-20 01:02:09.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2020 Thomas E. Dickey *
++ * Copyright 2020,2025 Thomas E. Dickey *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+ * copy of this software and associated documentation files (the *
+@@ -33,7 +33,7 @@
+ #include <curses.priv.h>
+ #include <tic.h>
+
+-MODULE_ID("$Id: report_hashing.c,v 1.3 2020/02/02 23:34:34 tom Exp $")
++MODULE_ID("$Id: report_hashing.c,v 1.4 2025/02/20 01:02:09 tom Exp $")
+
+ static void
+ check_names(const char *name, NCURSES_CONST char *const *table, int termcap)
+@@ -46,7 +46,7 @@
+ printf("%s:\n", name);
+ for (n = 0; table[n] != NULL; ++n) {
+ entry_ptr = _nc_find_entry(table[n], hash_table);
+- if (entry_ptr == 0) {
++ if (entry_ptr == NULL) {
+ printf(" %s\n", table[n]);
+ errs++;
+ }
+Index: ncurses/tinfo/access.c
+Prereq: 1.41
+--- ncurses-6.5-20250216+/ncurses/tinfo/access.c 2024-12-07 18:05:04.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/tinfo/access.c 2025-02-20 01:02:09.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2019-2023,2024 Thomas E. Dickey *
++ * Copyright 2019-2024,2025 Thomas E. Dickey *
+ * Copyright 1998-2011,2012 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -52,7 +52,7 @@
+
+ #include <tic.h>
+
+-MODULE_ID("$Id: access.c,v 1.41 2024/12/07 18:05:04 tom Exp $")
++MODULE_ID("$Id: access.c,v 1.42 2025/02/20 01:02:09 tom Exp $")
+
+ #define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c))
+
+@@ -78,7 +78,7 @@
+ }
+ #endif
+ #if defined(PROG_EXT)
+- if ((s = strrchr(result, '.')) != 0) {
++ if ((s = strrchr(result, '.')) != NULL) {
+ if (!strcmp(s, PROG_EXT))
+ *s = '\0';
+ }
+@@ -94,7 +94,7 @@
+ _nc_is_abs_path(const char *path)
+ {
+ #if defined(__EMX__) || defined(__DJGPP__)
+-#define is_pathname(s) ((((s) != 0) && ((s)[0] == '/')) \
++#define is_pathname(s) ((((s) != NULL) && ((s)[0] == '/')) \
+ || (((s)[0] != 0) && ((s)[1] == ':')))
+ #else
+ #define is_pathname(s) ((s) != NULL && (s)[0] == '/')
+@@ -110,7 +110,7 @@
+ {
+ const char *test = strrchr(path, '/');
+ #ifdef __EMX__
+- if (test == 0)
++ if (test == NULL)
+ test = strrchr(path, '\\');
+ #endif
+ if (test == NULL)
+Index: ncurses/tinfo/captoinfo.c
+Prereq: 1.107
+--- ncurses-6.5-20250216+/ncurses/tinfo/captoinfo.c 2025-02-15 15:31:16.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/tinfo/captoinfo.c 2025-02-20 00:48:11.000000000 +0000
+@@ -98,7 +98,7 @@
+ #include <ctype.h>
+ #include <tic.h>
+
+-MODULE_ID("$Id: captoinfo.c,v 1.107 2025/02/15 15:31:16 tom Exp $")
++MODULE_ID("$Id: captoinfo.c,v 1.108 2025/02/20 00:48:11 tom Exp $")
+
+ #if 0
+ #define DEBUG_THIS(p) DEBUG(9, p)
+@@ -980,7 +980,7 @@
+ * 'str' always points to the end of what was scanned in this step,
+ * but that may not be the end of the string.
+ */
+- assert(str != 0);
++ assert(str != NULL);
+ if (str == NULL || *str == '\0')
+ break;
+
+Index: ncurses/tinfo/getenv_num.c
+Prereq: 1.10
+--- ncurses-6.5-20250216+/ncurses/tinfo/getenv_num.c 2024-12-07 18:14:49.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/tinfo/getenv_num.c 2025-02-20 01:02:09.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2020,2024 Thomas E. Dickey *
++ * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 1998-2012,2013 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -37,7 +37,7 @@
+
+ #include <curses.priv.h>
+
+-MODULE_ID("$Id: getenv_num.c,v 1.10 2024/12/07 18:14:49 tom Exp $")
++MODULE_ID("$Id: getenv_num.c,v 1.11 2025/02/20 01:02:09 tom Exp $")
+
+ NCURSES_EXPORT(int)
+ _nc_getenv_num(const char *name)
+@@ -67,7 +67,7 @@
+ #elif HAVE_PUTENV
+ char *s;
+ _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "%s=%d", name, value);
+- if ((s = strdup(buffer)) != 0)
++ if ((s = strdup(buffer)) != NULL)
+ putenv(s);
+ #else
+ #error expected setenv/putenv functions
+Index: ncurses/tinfo/lib_data.c
+Prereq: 1.93
+--- ncurses-6.5-20250216+/ncurses/tinfo/lib_data.c 2024-12-21 20:27:36.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/tinfo/lib_data.c 2025-02-20 01:02:09.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2022,2024 Thomas E. Dickey *
++ * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 1998-2016,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -43,7 +43,7 @@
+
+ #include <curses.priv.h>
+
+-MODULE_ID("$Id: lib_data.c,v 1.93 2024/12/21 20:27:36 tom Exp $")
++MODULE_ID("$Id: lib_data.c,v 1.94 2025/02/20 01:02:09 tom Exp $")
+
+ /*
+ * OS/2's native linker complains if we don't initialize public data when
+@@ -97,7 +97,7 @@
+ {
+ my_screen = _nc_alloc_screen_sp();
+ T(("_nc_alloc_screen_sp %p", my_screen));
+- return (my_screen != 0);
++ return (my_screen != NULL);
+ }
+
+ NCURSES_EXPORT(void)
+Index: ncurses/tinfo/lib_setup.c
+Prereq: 1.249
+--- ncurses-6.5-20250216+/ncurses/tinfo/lib_setup.c 2025-01-18 14:47:35.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/tinfo/lib_setup.c 2025-02-20 01:31:35.000000000 +0000
+@@ -49,7 +49,7 @@
+ #include <locale.h>
+ #endif
+
+-MODULE_ID("$Id: lib_setup.c,v 1.249 2025/01/18 14:47:35 tom Exp $")
++MODULE_ID("$Id: lib_setup.c,v 1.250 2025/02/20 01:31:35 tom Exp $")
+
+ /****************************************************************************
+ *
+@@ -120,7 +120,7 @@
+ }
+ }
+ #else
+- if (cur_term != 0) {
++ if (cur_term != NULL) {
+ result = TerminalType(cur_term).term_names;
+ }
+ #endif
+@@ -468,7 +468,7 @@
+ TERMINAL_CONTROL_BLOCK *TCB;
+ int my_tabsize;
+
+- assert(termp != 0 && linep != 0 && colp != 0);
++ assert(termp != NULL && linep != NULL && colp != NULL);
+ TCB = (TERMINAL_CONTROL_BLOCK *) termp;
+
+ my_tabsize = TCB->info.tabsize;
+@@ -627,7 +627,7 @@
+ int old_lines;
+ int old_cols;
+
+- assert(sp != 0);
++ assert(sp != NULL);
+
+ CallDriver_2(sp, td_getsize, &old_lines, &old_cols);
+
+@@ -767,8 +767,8 @@
+ T(("_nc_unicode_locale(%s) ->%d", env, result));
+ #else
+ char *env = _nc_get_locale();
+- if (env != 0) {
+- if (strstr(env, ".UTF-8") != 0) {
++ if (env != NULL) {
++ if (strstr(env, ".UTF-8") != NULL) {
+ result = TRUE;
+ T(("_nc_unicode_locale(%s) ->%d", env, result));
+ }
+Index: ncurses/tinfo/obsolete.c
+Prereq: 1.12
+--- ncurses-6.5-20250216+/ncurses/tinfo/obsolete.c 2024-12-07 21:24:18.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/tinfo/obsolete.c 2025-02-20 01:12:11.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2020-2023,2024 Thomas E. Dickey *
++ * Copyright 2020-2024,2025 Thomas E. Dickey *
+ * Copyright 2013-2014,2016 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -37,7 +37,7 @@
+
+ #include <curses.priv.h>
+
+-MODULE_ID("$Id: obsolete.c,v 1.12 2024/12/07 21:24:18 tom Exp $")
++MODULE_ID("$Id: obsolete.c,v 1.13 2025/02/20 01:12:11 tom Exp $")
+
+ /*
+ * Obsolete entrypoint retained for binary compatibility.
+@@ -64,11 +64,11 @@
+ NCURSES_EXPORT(char *)
+ _nc_strdup(const char *s)
+ {
+- char *result = 0;
+- if (s != 0) {
++ char *result = NULL;
++ if (s != NULL) {
+ size_t need = strlen(s);
+ result = malloc(need + 1);
+- if (result != 0) {
++ if (result != NULL) {
+ _nc_STRCPY(result, s, need);
+ }
+ }
+Index: ncurses/tinfo/parse_entry.c
+Prereq: 1.113
+--- ncurses-6.5-20250216+/ncurses/tinfo/parse_entry.c 2025-01-11 20:19:34.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/tinfo/parse_entry.c 2025-02-20 09:11:49.000000000 +0000
+@@ -48,7 +48,7 @@
+ #include <ctype.h>
+ #include <tic.h>
+
+-MODULE_ID("$Id: parse_entry.c,v 1.113 2025/01/11 20:19:34 tom Exp $")
++MODULE_ID("$Id: parse_entry.c,v 1.115 2025/02/20 09:11:49 tom Exp $")
+
+ #ifdef LINT
+ static short const parametrized[] =
+@@ -492,8 +492,8 @@
+ */
+ if (!strcmp("ma", _nc_curr_token.tk_name)) {
+ entry_ptr = _nc_find_type_entry("ma", NUMBER,
+- _nc_syntax != 0);
+- assert(entry_ptr != 0);
++ _nc_syntax != SYN_TERMINFO);
++ assert(entry_ptr != NULL);
+ }
+ } else if (entry_ptr->nte_type != token_type) {
+ /*
+@@ -510,15 +510,15 @@
+ && !strcmp("ma", _nc_curr_token.tk_name)) {
+ /* tell max_attributes from arrow_key_map */
+ entry_ptr = _nc_find_type_entry("ma", NUMBER,
+- _nc_syntax != 0);
+- assert(entry_ptr != 0);
++ _nc_syntax != SYN_TERMINFO);
++ assert(entry_ptr != NULL);
+
+ } else if (token_type == STRING
+ && !strcmp("MT", _nc_curr_token.tk_name)) {
+ /* map terminfo's string MT to MT */
+ entry_ptr = _nc_find_type_entry("MT", STRING,
+- _nc_syntax != 0);
+- assert(entry_ptr != 0);
++ _nc_syntax != SYN_TERMINFO);
++ assert(entry_ptr != NULL);
+
+ } else if (token_type == BOOLEAN
+ && entry_ptr->nte_type == STRING) {
+Index: ncurses/tinfo/read_termcap.c
+Prereq: 1.105
+--- ncurses-6.5-20250216+/ncurses/tinfo/read_termcap.c 2025-01-12 00:42:58.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/tinfo/read_termcap.c 2025-02-20 01:27:42.000000000 +0000
+@@ -57,7 +57,7 @@
+ #include <sys/types.h>
+ #include <tic.h>
+
+-MODULE_ID("$Id: read_termcap.c,v 1.105 2025/01/12 00:42:58 tom Exp $")
++MODULE_ID("$Id: read_termcap.c,v 1.106 2025/02/20 01:27:42 tom Exp $")
+
+ #if !PURE_TERMINFO
+
+@@ -275,7 +275,7 @@
+ {
+ register char *r_end, *rp;
+ int myfd = FALSE;
+- char *record = 0;
++ char *record = NULL;
+ int tc_not_resolved;
+ int current;
+ int lineno;
+@@ -291,7 +291,7 @@
+ * Check if we have a top record from cgetset().
+ */
+ if (depth == 0 && toprec != 0 && _nc_cgetmatch(toprec, name) == 0) {
+- if ((record = DOALLOC(topreclen + BFRAG)) == 0) {
++ if ((record = DOALLOC(topreclen + BFRAG)) == NULL) {
+ errno = ENOMEM;
+ return (TC_SYS_ERR);
+ }
+@@ -305,7 +305,7 @@
+ /*
+ * Allocate first chunk of memory.
+ */
+- if ((record = DOALLOC(BFRAG)) == 0) {
++ if ((record = DOALLOC(BFRAG)) == NULL) {
+ errno = ENOMEM;
+ return (TC_SYS_ERR);
+ }
+@@ -315,7 +315,7 @@
+ /*
+ * Loop through database array until finding the record.
+ */
+- for (current = in_array; db_array[current] != 0; current++) {
++ for (current = in_array; db_array[current] != NULL; current++) {
+ int eof = FALSE;
+
+ /*
+@@ -408,7 +408,7 @@
+ pos = (unsigned) (rp - record);
+ newsize = (size_t) (r_end - record + BFRAG);
+ record = DOALLOC(newsize);
+- if (record == 0) {
++ if (record == NULL) {
+ if (myfd)
+ (void) close(fd);
+ errno = ENOMEM;
+@@ -464,7 +464,7 @@
+ register int newilen;
+ unsigned ilen;
+ int diff, iret, tclen, oline;
+- char *icap = 0, *scan, *tc, *tcstart, *tcend;
++ char *icap = NULL, *scan, *tc, *tcstart, *tcend;
+
+ /*
+ * Loop invariants:
+@@ -477,7 +477,7 @@
+ scan = record;
+ tc_not_resolved = FALSE;
+ for (;;) {
+- if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0) {
++ if ((tc = _nc_cgetcap(scan, "tc", '=')) == NULL) {
+ break;
+ }
+
+@@ -548,7 +548,7 @@
+ tcpos = (unsigned) (tcstart - record);
+ tcposend = (unsigned) (tcend - record);
+ record = DOALLOC(newsize);
+- if (record == 0) {
++ if (record == NULL) {
+ if (myfd)
+ (void) close(fd);
+ free(icap);
+@@ -586,7 +586,7 @@
+ (void) close(fd);
+ *len = (unsigned) (rp - record - 1); /* don't count NUL */
+ if (r_end > rp) {
+- if ((record = DOALLOC((size_t) (rp - record))) == 0) {
++ if ((record = DOALLOC((size_t) (rp - record))) == NULL) {
+ errno = ENOMEM;
+ return (TC_SYS_ERR);
+ }
+@@ -920,7 +920,7 @@
+ if ((the_source = strdup(temp)) != NULL)
+ *sourcename = the_source;
+ #else
+- if ((the_source = strdup(pathvec[i])) != 0)
++ if ((the_source = strdup(pathvec[i])) != NULL)
+ *sourcename = the_source;
+ #endif
+ }
+@@ -941,7 +941,7 @@
+ add_tc(char *termpaths[], char *path, int count)
+ {
+ char *save = strchr(path, NCURSES_PATHSEP);
+- if (save != 0)
++ if (save != NULL)
+ *save = '\0';
+ if (count < MAXPATHS
+ && _nc_access(path, R_OK) == 0) {
+@@ -949,7 +949,7 @@
+ TR(TRACE_DATABASE, ("Adding termpath %s", path));
+ }
+ termpaths[count] = 0;
+- if (save != 0)
++ if (save != NULL)
+ *save = NCURSES_PATHSEP;
+ return count;
+ }
+@@ -1034,20 +1034,20 @@
+ int j, k;
+ bool use_buffer = FALSE;
+ bool normal = TRUE;
+- char *tc_buf = 0;
++ char *tc_buf = NULL;
+ char pathbuf[PATH_MAX];
+- char *copied = 0;
++ char *copied = NULL;
+ char *cp;
+ struct stat test_stat[MAXPATHS];
+
+- termpaths[filecount] = 0;
+- if (use_terminfo_vars() && (tc = getenv("TERMCAP")) != 0) {
++ termpaths[filecount] = NULL;
++ if (use_terminfo_vars() && (tc = getenv("TERMCAP")) != NULL) {
+ if (_nc_is_abs_path(tc)) { /* interpret as a filename */
+ ADD_TC(tc, 0);
+ normal = FALSE;
+ } else if (_nc_name_match(tc, tn, "|:")) { /* treat as a capability file */
+ tc_buf = strdup(tc);
+- use_buffer = (tc_buf != 0);
++ use_buffer = (tc_buf != NULL);
+ normal = FALSE;
+ }
+ }
+@@ -1055,7 +1055,7 @@
+ if (normal) { /* normal case */
+ char envhome[PATH_MAX], *h;
+
+- if ((copied = strdup(get_termpath())) != 0) {
++ if ((copied = strdup(get_termpath())) != NULL) {
+ for (cp = copied; *cp; cp++) {
+ if (*cp == NCURSES_PATHSEP)
+ *cp = '\0';
+@@ -1140,7 +1140,7 @@
+ }
+ }
+ }
+- if (copied != 0)
++ if (copied != NULL)
+ free(copied);
+ #endif /* USE_GETCAP */
+
+@@ -1153,7 +1153,7 @@
+
+ /* find a terminal matching tn, if we can */
+ #if USE_GETCAP_CACHE
+- if (getcwd(cwd_buf, sizeof(cwd_buf)) != 0) {
++ if (getcwd(cwd_buf, sizeof(cwd_buf)) != NULL) {
+ _nc_set_writedir((char *) 0); /* note: this does a chdir */
+ #endif
+ for_entry_list(ep) {
+Index: ncurses/tinfo/tinfo_driver.c
+Prereq: 1.78
+--- ncurses-6.5-20250216+/ncurses/tinfo/tinfo_driver.c 2025-01-18 14:47:35.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/tinfo/tinfo_driver.c 2025-02-20 01:30:20.000000000 +0000
+@@ -52,7 +52,7 @@
+ # endif
+ #endif
+
+-MODULE_ID("$Id: tinfo_driver.c,v 1.78 2025/01/18 14:47:35 tom Exp $")
++MODULE_ID("$Id: tinfo_driver.c,v 1.79 2025/02/20 01:30:20 tom Exp $")
+
+ /*
+ * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS,
+@@ -94,8 +94,8 @@
+ #endif
+
+ #define TCBMAGIC NCDRV_MAGIC(NCDRV_TINFO)
+-#define AssertTCB() assert(TCB!=0 && TCB->magic==TCBMAGIC)
+-#define SetSP() assert(TCB->csp!=0); sp = TCB->csp; (void) sp
++#define AssertTCB() assert(TCB != NULL && TCB->magic == TCBMAGIC)
++#define SetSP() assert(TCB->csp != NULL); sp = TCB->csp; (void) sp
+
+ /*
+ * This routine needs to do all the work to make curscr look
+@@ -163,7 +163,7 @@
+ START_TRACE();
+ T((T_CALLED("tinfo::drv_CanHandle(%p)"), (void *) TCB));
+
+- assert(TCB != 0 && tname != 0);
++ assert(TCB != NULL && tname != NULL);
+ termp = (TERMINAL *) TCB;
+ sp = TCB->csp;
+ TCB->magic = TCBMAGIC;
+@@ -545,7 +545,7 @@
+ drv_getsize(TERMINAL_CONTROL_BLOCK * TCB, int *l, int *c)
+ {
+ AssertTCB();
+- assert(l != 0 && c != 0);
++ assert(l != NULL && c != NULL);
+ *l = lines;
+ *c = columns;
+ return OK;
+@@ -1076,7 +1076,7 @@
+ SCREEN *sp = TCB->csp;
+
+ AssertTCB();
+- assert(sp != 0);
++ assert(sp != NULL);
+ if (ena_acs != NULL) {
+ NCURSES_PUTP2("ena_acs", ena_acs);
+ }
+@@ -1516,12 +1516,12 @@
+ int code = ERR;
+ size_t i;
+ TERM_DRIVER *res = (TERM_DRIVER *) 0;
+- TERM_DRIVER *use = 0;
++ TERM_DRIVER *use = NULL;
+
+ T((T_CALLED("_nc_get_driver(%p, %s, %p)"),
+ (void *) TCB, NonNull(name), (void *) errret));
+
+- assert(TCB != 0);
++ assert(TCB != NULL);
+
+ for (i = 0; i < SIZEOF(DriverTable); i++) {
+ res = DriverTable[i].driver;
+@@ -1532,7 +1532,7 @@
+ If on Windows td_CanHandle returned FALSE although the terminal
+ name is empty, we default to ms-terminal as tinfo TERM type.
+ */
+- if (name == 0 || *name == 0 || (strcmp(name, "unknown") == 0)) {
++ if (name == NULL || *name == 0 || (strcmp(name, "unknown") == 0)) {
+ name = MS_TERMINAL;
+ T(("Set TERM=%s", name));
+ }
+Index: ncurses/trace/lib_tracebits.c
+Prereq: 1.33
+--- ncurses-6.5-20250216+/ncurses/trace/lib_tracebits.c 2024-12-21 16:39:29.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/trace/lib_tracebits.c 2025-02-20 01:02:09.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2019-2020,2024 Thomas E. Dickey *
++ * Copyright 2019-2024,2025 Thomas E. Dickey *
+ * Copyright 1998-2012,2015 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -35,7 +35,7 @@
+
+ #include <curses.priv.h>
+
+-MODULE_ID("$Id: lib_tracebits.c,v 1.33 2024/12/21 16:39:29 tom Exp $")
++MODULE_ID("$Id: lib_tracebits.c,v 1.34 2025/02/20 01:02:09 tom Exp $")
+
+ #if HAVE_SYS_TERMIO_H
+ #include <sys/termio.h> /* needed for ISC */
+@@ -244,7 +244,7 @@
+ buf = _nc_trace_buf(0,
+ 8 + sizeof(dwFlagsOut) +
+ 8 + sizeof(dwFlagsIn));
+- if (buf != 0) {
++ if (buf != NULL) {
+ lookup_bits(buf, dwFlagsIn, "dwIn", tty->dwFlagIn);
+ lookup_bits(buf, dwFlagsOut, "dwOut", tty->dwFlagOut);
+ }
+@@ -284,7 +284,7 @@
+
+ buf = _nc_trace_buf(0,
+ 8 + sizeof(cflags));
+- if (buf != 0) {
++ if (buf != NULL) {
+ if (tty->sg_flags & ALLCTRL) {
+ lookup_bits(buf, cflags, "cflags", tty->sg_flags);
+ }
+Index: ncurses/widechar/lib_ins_wch.c
+Prereq: 1.31
+--- ncurses-6.5-20250216+/ncurses/widechar/lib_ins_wch.c 2024-12-07 18:03:14.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/widechar/lib_ins_wch.c 2025-02-20 01:02:09.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2019-2023,2024 Thomas E. Dickey *
++ * Copyright 2019-2024,2025 Thomas E. Dickey *
+ * Copyright 2002-2016,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -40,7 +40,7 @@
+
+ #include <curses.priv.h>
+
+-MODULE_ID("$Id: lib_ins_wch.c,v 1.31 2024/12/07 18:03:14 tom Exp $")
++MODULE_ID("$Id: lib_ins_wch.c,v 1.32 2025/02/20 01:02:09 tom Exp $")
+
+ /*
+ * Insert the given character, updating the current location to simplify
+@@ -109,8 +109,7 @@
+ (void *) win, _nc_viswbufn(wstr, n), n));
+
+ if (win != NULL
+- && wstr != NULL
+- && n != 0) {
++ && wstr != NULL) {
+
+ if (n < 0) {
+ n = INT_MAX;
+Index: ncurses/widechar/widechars.c
+Prereq: 1.10
+--- ncurses-6.5-20250216+/ncurses/widechar/widechars.c 2024-08-31 15:55:27.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/widechar/widechars.c 2025-02-20 01:02:09.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2020,2024 Thomas E. Dickey *
++ * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 2012,2013 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -31,7 +31,7 @@
+
+ #if USE_WIDEC_SUPPORT
+
+-MODULE_ID("$Id: widechars.c,v 1.10 2024/08/31 15:55:27 tom Exp $")
++MODULE_ID("$Id: widechars.c,v 1.11 2025/02/20 01:02:09 tom Exp $")
+
+ #if defined(_NC_MINGW)
+ /*
+@@ -45,7 +45,7 @@
+ int count;
+ int try;
+
+- if (s != 0 && n != 0) {
++ if (s != NULL && n != 0) {
+ /*
+ * MultiByteToWideChar() can decide to return more than one
+ * wide-character. We want only one. Ignore any trailing null, both
+@@ -96,7 +96,7 @@
+ int count;
+ wchar_t temp;
+
+- if (s != 0 && n != 0) {
++ if (s != NULL && n != 0) {
+ count = _nc_mbtowc(&temp, s, n);
+ if (count == 1) {
+ int check = WideCharToMultiByte(CP_UTF8,
+Index: ncurses/win32con/win32_driver.c
+Prereq: 1.4
+--- ncurses-6.5-20250216+/ncurses/win32con/win32_driver.c 2023-09-16 16:29:24.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/win32con/win32_driver.c 2025-02-20 01:15:57.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2020,2023 Thomas E. Dickey *
++ * Copyright 2018-2023,2025 Thomas E. Dickey *
+ * Copyright 2008-2016,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -48,18 +48,18 @@
+
+ #define CUR TerminalType(my_term).
+
+-MODULE_ID("$Id: win32_driver.c,v 1.4 2023/09/16 16:29:24 tom Exp $")
++MODULE_ID("$Id: win32_driver.c,v 1.5 2025/02/20 01:15:57 tom Exp $")
+
+ #define WINMAGIC NCDRV_MAGIC(NCDRV_WINCONSOLE)
+ #define EXP_OPTIMIZE 0
+
+ static bool console_initialized = FALSE;
+
+-#define AssertTCB() assert(TCB != 0 && (TCB->magic == WINMAGIC))
++#define AssertTCB() assert(TCB != NULL && (TCB->magic == WINMAGIC))
+ #define validateConsoleHandle() (AssertTCB() , console_initialized ||\
+ (console_initialized=\
+ _nc_console_checkinit(TRUE,FALSE)))
+-#define SetSP() assert(TCB->csp != 0); sp = TCB->csp; (void) sp
++#define SetSP() assert(TCB->csp != NULL); sp = TCB->csp; (void) sp
+ #define AdjustY() (WINCONSOLE.buffered ?\
+ 0 : (int) WINCONSOLE.SBI.srWindow.Top)
+ #define RevAttr(attr) (WORD) (((attr) & 0xff00) | \
+@@ -422,7 +422,7 @@
+ };
+
+ for (x = 0; x < Width; x++)
+- setcchar(&empty[x], blank, 0, 0, 0);
++ setcchar(&empty[x], blank, 0, 0, NULL);
+ #else
+ chtype *empty = TypeAlloca(chtype, Width);
+
+@@ -530,11 +530,11 @@
+
+ T((T_CALLED("win32con::wcon_CanHandle(%p)"), TCB));
+
+- assert((TCB != 0) && (tname != 0));
++ assert((TCB != NULL) && (tname != NULL));
+
+ TCB->magic = WINMAGIC;
+
+- if (tname == 0 || *tname == 0) {
++ if (tname == NULL || *tname == 0) {
+ if (!_nc_console_vt_supported())
+ code = TRUE;
+ } else if (tname != 0 && *tname == '#') {
+@@ -551,7 +551,7 @@
+ || (strncmp(tname + 1, "win32con", n) == 0))) {
+ code = TRUE;
+ }
+- } else if (tname != 0 && stricmp(tname, "unknown") == 0) {
++ } else if (tname != NULL && stricmp(tname, "unknown") == 0) {
+ code = TRUE;
+ }
+
+@@ -1059,7 +1059,7 @@
+ for (n = 0; n < SIZEOF(table); ++n) {
+ real_map[table[n].acs_code] =
+ (chtype) table[n].use_code | A_ALTCHARSET;
+- if (sp != 0)
++ if (sp != NULL)
+ sp->_screen_acs_map[table[n].acs_code] = TRUE;
+ }
+ }
+Index: ncurses/win32con/win_driver.c
+Prereq: 1.76
+--- ncurses-6.5-20250216+/ncurses/win32con/win_driver.c 2024-11-28 00:17:49.000000000 +0000
++++ ncurses-6.5-20250222/ncurses/win32con/win_driver.c 2025-02-20 01:19:43.000000000 +0000
+@@ -1,5 +1,5 @@
+ /****************************************************************************
+- * Copyright 2018-2023,2024 Thomas E. Dickey *
++ * Copyright 2018-2024,2025 Thomas E. Dickey *
+ * Copyright 2008-2016,2017 Free Software Foundation, Inc. *
+ * *
+ * Permission is hereby granted, free of charge, to any person obtaining a *
+@@ -57,7 +57,7 @@
+
+ #define CONTROL_PRESSED (LEFT_CTRL_PRESSED | RIGHT_CTRL_PRESSED)
+
+-MODULE_ID("$Id: win_driver.c,v 1.76 2024/11/28 00:17:49 tom Exp $")
++MODULE_ID("$Id: win_driver.c,v 1.77 2025/02/20 01:19:43 tom Exp $")
+
+ #define TypeAlloca(type,count) (type*) _alloca(sizeof(type) * (size_t) (count))
+
+@@ -70,8 +70,8 @@
+ static bool InitConsole(void);
+ static bool okConsoleHandle(TERMINAL_CONTROL_BLOCK *);
+
+-#define AssertTCB() assert(TCB != 0 && (TCB->magic == WINMAGIC))
+-#define SetSP() assert(TCB->csp != 0); sp = TCB->csp; (void) sp
++#define AssertTCB() assert(TCB != NULL && (TCB->magic == WINMAGIC))
++#define SetSP() assert(TCB->csp != NULL); sp = TCB->csp; (void) sp
+
+ #define GenMap(vKey,key) MAKELONG(key, vKey)
+
+@@ -519,7 +519,7 @@
+ };
+
+ for (x = 0; x < Width; x++)
+- setcchar(&empty[x], blank, 0, 0, 0);
++ setcchar(&empty[x], blank, 0, 0, NULL);
+ #else
+ chtype *empty = TypeAlloca(chtype, Width);
+
+@@ -629,13 +629,13 @@
+
+ T((T_CALLED("win32con::wcon_CanHandle(%p)"), TCB));
+
+- assert((TCB != 0) && (tname != 0));
++ assert((TCB != NULL) && (tname != NULL));
+
+ TCB->magic = WINMAGIC;
+
+- if (tname == 0 || *tname == 0)
++ if (tname == NULL || *tname == 0)
+ code = TRUE;
+- else if (tname != 0 && *tname == '#') {
++ else if (tname != NULL && *tname == '#') {
+ /*
+ * Use "#" (a character which cannot begin a terminal's name) to
+ * select specific driver from the table.
+@@ -649,7 +649,7 @@
+ || (strncmp(tname + 1, "win32con", n) == 0))) {
+ code = TRUE;
+ }
+- } else if (tname != 0 && stricmp(tname, "unknown") == 0) {
++ } else if (tname != NULL && stricmp(tname, "unknown") == 0) {
+ code = TRUE;
+ } else if (SysISATTY(TCB->term.Filedes)) {
+ code = TRUE;
+@@ -1173,7 +1173,7 @@
+
+ want = (size_t) (CON.save_size.X * CON.save_size.Y);
+
+- if ((CON.save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) {
++ if ((CON.save_screen = malloc(want * sizeof(CHAR_INFO))) != NULL) {
+ bufferCoord.X = (SHORT) (CON.window_only ? CON.SBI.srWindow.Left : 0);
+ bufferCoord.Y = (SHORT) (CON.window_only ? CON.SBI.srWindow.Top : 0);
+
+@@ -1449,7 +1449,7 @@
+
+ for (n = 0; n < SIZEOF(table); ++n) {
+ real_map[table[n].acs_code] = (chtype) table[n].use_code | A_ALTCHARSET;
+- if (sp != 0)
++ if (sp != NULL)
+ sp->_screen_acs_map[table[n].acs_code] = TRUE;
+ }
+ }
+@@ -2000,9 +2000,9 @@
+
+ #define TC_PROLOGUE(fd) \
+ SCREEN *sp; \
+- TERMINAL *term = 0; \
++ TERMINAL *term = NULL; \
+ int code = ERR; \
+- if (_nc_screen_chain == 0) \
++ if (_nc_screen_chain == NULL) \
+ return 0; \
+ for (each_screen(sp)) { \
+ if (sp->_term && (sp->_term->Filedes == fd)) { \
+@@ -2010,7 +2010,7 @@
+ break; \
+ } \
+ } \
+- assert(term != 0)
++ assert(term != NULL)
+
+ int
+ _nc_mingw_tcsetattr(
+@@ -2269,7 +2269,7 @@
+ static bool
+ okConsoleHandle(TERMINAL_CONTROL_BLOCK * TCB)
+ {
+- return ((TCB != 0) &&
++ return ((TCB != NULL) &&
+ (TCB->magic == WINMAGIC) &&
+ InitConsole());
+ }
+Index: package/debian-mingw/changelog
+--- ncurses-6.5-20250216+/package/debian-mingw/changelog 2025-02-16 22:35:29.000000000 +0000
++++ ncurses-6.5-20250222/package/debian-mingw/changelog 2025-02-20 09:14:10.000000000 +0000
+@@ -1,8 +1,8 @@
+-ncurses6td (6.5+20250216) unstable; urgency=low
++ncurses6td (6.5+20250222) unstable; urgency=low
+
+ * latest weekly patch
+
+- -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 16 Feb 2025 17:35:29 -0500
++ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 20 Feb 2025 04:14:10 -0500
+
+ ncurses6 (5.9+20131005) unstable; urgency=low
+
+Index: package/debian-mingw64/changelog
+--- ncurses-6.5-20250216+/package/debian-mingw64/changelog 2025-02-16 22:35:29.000000000 +0000
++++ ncurses-6.5-20250222/package/debian-mingw64/changelog 2025-02-20 09:14:10.000000000 +0000
+@@ -1,8 +1,8 @@
+-ncurses6td (6.5+20250216) unstable; urgency=low
++ncurses6td (6.5+20250222) unstable; urgency=low
+
+ * latest weekly patch
+
+- -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 16 Feb 2025 17:35:29 -0500
++ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 20 Feb 2025 04:14:10 -0500
+
+ ncurses6 (5.9+20131005) unstable; urgency=low
+
+Index: package/debian/changelog
+--- ncurses-6.5-20250216+/package/debian/changelog 2025-02-16 22:35:29.000000000 +0000
++++ ncurses-6.5-20250222/package/debian/changelog 2025-02-20 09:14:10.000000000 +0000
+@@ -1,8 +1,8 @@
+-ncurses6td (6.5+20250216) unstable; urgency=low
++ncurses6td (6.5+20250222) unstable; urgency=low
+
+ * latest weekly patch
+
+- -- Thomas E. Dickey <dickey@invisible-island.net> Sun, 16 Feb 2025 17:35:29 -0500
++ -- Thomas E. Dickey <dickey@invisible-island.net> Thu, 20 Feb 2025 04:14:10 -0500
+
+ ncurses6 (5.9+20120608) unstable; urgency=low
+
+Index: package/mingw-ncurses.nsi
+Prereq: 1.690
+--- ncurses-6.5-20250216+/package/mingw-ncurses.nsi 2025-02-16 22:35:29.000000000 +0000
++++ ncurses-6.5-20250222/package/mingw-ncurses.nsi 2025-02-20 09:14:10.000000000 +0000
+@@ -1,4 +1,4 @@
+-; $Id: mingw-ncurses.nsi,v 1.690 2025/02/16 22:35:29 tom Exp $
++; $Id: mingw-ncurses.nsi,v 1.691 2025/02/20 09:14:10 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 "2025"
+-!define VERSION_MMDD "0216"
++!define VERSION_MMDD "0222"
+ !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}
+
+ !define MY_ABI "5"
+Index: package/mingw-ncurses.spec
+--- ncurses-6.5-20250216+/package/mingw-ncurses.spec 2025-02-16 22:35:29.000000000 +0000
++++ ncurses-6.5-20250222/package/mingw-ncurses.spec 2025-02-20 09:14:10.000000000 +0000
+@@ -3,7 +3,7 @@
+ Summary: shared libraries for terminal handling
+ Name: mingw32-ncurses6
+ Version: 6.5
+-Release: 20250216
++Release: 20250222
+ License: X11
+ Group: Development/Libraries
+ URL: https://invisible-island.net/ncurses/
+Index: package/ncurses.spec
+--- ncurses-6.5-20250216+/package/ncurses.spec 2025-02-16 22:35:29.000000000 +0000
++++ ncurses-6.5-20250222/package/ncurses.spec 2025-02-20 09:14:10.000000000 +0000
+@@ -1,7 +1,7 @@
+ Summary: shared libraries for terminal handling
+ Name: ncurses6
+ Version: 6.5
+-Release: 20250216
++Release: 20250222
+ License: X11
+ Group: Development/Libraries
+ URL: https://invisible-island.net/ncurses/
+Index: package/ncursest.spec
+--- ncurses-6.5-20250216+/package/ncursest.spec 2025-02-16 22:35:29.000000000 +0000
++++ ncurses-6.5-20250222/package/ncursest.spec 2025-02-20 09:14:10.000000000 +0000
+@@ -1,7 +1,7 @@
+ Summary: Curses library with POSIX thread support.
+ Name: ncursest6
+ Version: 6.5
+-Release: 20250216
++Release: 20250222
+ License: X11
+ Group: Development/Libraries
+ Source: ncurses-%{version}-%{release}.tgz