# ncurses 6.3 - patch 20211211 - Thomas E. Dickey # # ------------------------------------------------------------------------------ # # Ncurses 6.3 is at # ftp://ftp.invisible-island.net/ncurses/ # https://invisible-mirror.net/archives/ncurses/ # https://ftp.gnu.org/gnu/ncurses/ # # Patches for ncurses 6.3 can be found at # ftp://ftp.invisible-island.net/ncurses/6.3 # https://invisible-mirror.net/archives/ncurses/6.3 # # ------------------------------------------------------------------------------ # ftp://ftp.invisible-island.net/ncurses/6.3/ncurses-6.3-20211211.patch.gz # patch by Thomas E. Dickey # created Sun Dec 12 01:11:22 UTC 2021 # ------------------------------------------------------------------------------ # Ada95/gen/gen.c | 7 - # MANIFEST | 1 # NEWS | 5 # VERSION | 2 # dist.mk | 4 # ncurses-6.3-20211211/test/combine.c | 204 ++++++++++++++++++++++++++++++++++ # ncurses/base/lib_delwin.c | 5 # 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 # progs/tic.c | 7 - # test/modules | 3 # test/programs | 3 # 17 files changed, 237 insertions(+), 26 deletions(-) # ------------------------------------------------------------------------------ Index: Ada95/gen/gen.c Prereq: 1.77 --- ncurses-6.3-20211204+/Ada95/gen/gen.c 2020-08-16 18:05:05.000000000 +0000 +++ ncurses-6.3-20211211/Ada95/gen/gen.c 2021-12-11 21:03:21.000000000 +0000 @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2020 Thomas E. Dickey * + * Copyright 2020,2021 Thomas E. Dickey * * Copyright 1998-2014,2016 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,7 +35,7 @@ /* Version Control - $Id: gen.c,v 1.77 2020/08/16 18:05:05 tom Exp $ + $Id: gen.c,v 1.78 2021/12/11 21:03:21 tom Exp $ --------------------------------------------------------------------------*/ /* This program prints on its standard output the source for the @@ -95,7 +95,7 @@ const char *name, size_t value) { - fprintf(fp, " %-28s : constant := %lu;\n", name, value); + fprintf(fp, " %-28s : constant := %lu;\n", name, (unsigned long)value); } #define PRINT_NAMED_CONSTANT(name) \ @@ -490,6 +490,7 @@ print_comment(fp, "Field_Options from opts(3FORM)"); PRINT_NAMED_BITMASK(Field_Options, O_NL_OVERLOAD); PRINT_NAMED_BITMASK(Field_Options, O_BS_OVERLOAD); + /* Field_Options_Size is defined below */ print_comment(fp, "MEVENT structure from mouse(3NCURSES)"); Index: MANIFEST --- ncurses-6.3-20211204+/MANIFEST 2021-10-20 22:50:11.000000000 +0000 +++ ncurses-6.3-20211211/MANIFEST 2021-12-11 21:06:27.000000000 +0000 @@ -1111,6 +1111,7 @@ ./test/color_content.c ./test/color_name.h ./test/color_set.c +./test/combine.c ./test/configure ./test/configure.in ./test/demo_altkeys.c Index: NEWS Prereq: 1.3753 --- ncurses-6.3-20211204+/NEWS 2021-12-04 23:03:57.000000000 +0000 +++ ncurses-6.3-20211211/NEWS 2021-12-11 21:46:44.000000000 +0000 @@ -26,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: NEWS,v 1.3753 2021/12/04 23:03:57 tom Exp $ +-- $Id: NEWS,v 1.3755 2021/12/11 21:46:44 tom Exp $ ------------------------------------------------------------------------------- This is a log of changes that ncurses has gone through since Zeyd started @@ -46,6 +46,9 @@ Changes through 1.9.9e did not credit all contributions; it is not possible to add this information. +20211211 + + add test/combine.c, to demo/test combining characters. + 20211204 + improve configure check for getttynam (report by Werner Fink). Index: VERSION --- ncurses-6.3-20211204+/VERSION 2021-12-04 12:21:05.000000000 +0000 +++ ncurses-6.3-20211211/VERSION 2021-12-11 13:00:34.000000000 +0000 @@ -1 +1 @@ -5:0:10 6.3 20211204 +5:0:10 6.3 20211211 Index: dist.mk Prereq: 1.1453 --- ncurses-6.3-20211204+/dist.mk 2021-12-04 12:21:05.000000000 +0000 +++ ncurses-6.3-20211211/dist.mk 2021-12-11 13:00:34.000000000 +0000 @@ -26,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: dist.mk,v 1.1453 2021/12/04 12:21:05 tom Exp $ +# $Id: dist.mk,v 1.1454 2021/12/11 13:00:34 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 = 3 -NCURSES_PATCH = 20211204 +NCURSES_PATCH = 20211211 # 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.23 --- ncurses-6.3-20211204+/ncurses/base/lib_delwin.c 2021-11-15 23:05:32.000000000 +0000 +++ ncurses-6.3-20211211/ncurses/base/lib_delwin.c 2021-12-11 23:56:25.000000000 +0000 @@ -43,16 +43,17 @@ #include -MODULE_ID("$Id: lib_delwin.c,v 1.23 2021/11/15 23:05:32 tom Exp $") +MODULE_ID("$Id: lib_delwin.c,v 1.24 2021/12/11 23:56:25 tom Exp $") static bool cannot_delete(WINDOW *win) { - WINDOWLIST *p; bool result = TRUE; + if (IS_PAD(win)) { result = FALSE; } else { + WINDOWLIST *p; #ifdef USE_SP_WINDOWLIST SCREEN *sp = _nc_screen_of(win); #endif Index: package/debian-mingw/changelog --- ncurses-6.3-20211204+/package/debian-mingw/changelog 2021-12-04 12:21:05.000000000 +0000 +++ ncurses-6.3-20211211/package/debian-mingw/changelog 2021-12-11 13:00:34.000000000 +0000 @@ -1,8 +1,8 @@ -ncurses6 (6.3+20211204) unstable; urgency=low +ncurses6 (6.3+20211211) unstable; urgency=low * latest weekly patch - -- Thomas E. Dickey Sat, 04 Dec 2021 07:21:05 -0500 + -- Thomas E. Dickey Sat, 11 Dec 2021 08:00:34 -0500 ncurses6 (5.9-20131005) unstable; urgency=low Index: package/debian-mingw64/changelog --- ncurses-6.3-20211204+/package/debian-mingw64/changelog 2021-12-04 12:21:05.000000000 +0000 +++ ncurses-6.3-20211211/package/debian-mingw64/changelog 2021-12-11 13:00:34.000000000 +0000 @@ -1,8 +1,8 @@ -ncurses6 (6.3+20211204) unstable; urgency=low +ncurses6 (6.3+20211211) unstable; urgency=low * latest weekly patch - -- Thomas E. Dickey Sat, 04 Dec 2021 07:21:05 -0500 + -- Thomas E. Dickey Sat, 11 Dec 2021 08:00:34 -0500 ncurses6 (5.9-20131005) unstable; urgency=low Index: package/debian/changelog --- ncurses-6.3-20211204+/package/debian/changelog 2021-12-04 12:21:05.000000000 +0000 +++ ncurses-6.3-20211211/package/debian/changelog 2021-12-11 13:00:34.000000000 +0000 @@ -1,8 +1,8 @@ -ncurses6 (6.3+20211204) unstable; urgency=low +ncurses6 (6.3+20211211) unstable; urgency=low * latest weekly patch - -- Thomas E. Dickey Sat, 04 Dec 2021 07:21:05 -0500 + -- Thomas E. Dickey Sat, 11 Dec 2021 08:00:34 -0500 ncurses6 (5.9-20120608) unstable; urgency=low Index: package/mingw-ncurses.nsi Prereq: 1.495 --- ncurses-6.3-20211204+/package/mingw-ncurses.nsi 2021-12-04 12:21:05.000000000 +0000 +++ ncurses-6.3-20211211/package/mingw-ncurses.nsi 2021-12-11 13:00:34.000000000 +0000 @@ -1,4 +1,4 @@ -; $Id: mingw-ncurses.nsi,v 1.495 2021/12/04 12:21:05 tom Exp $ +; $Id: mingw-ncurses.nsi,v 1.496 2021/12/11 13:00:34 tom Exp $ ; TODO add examples ; TODO bump ABI to 6 @@ -10,7 +10,7 @@ !define VERSION_MAJOR "6" !define VERSION_MINOR "3" !define VERSION_YYYY "2021" -!define VERSION_MMDD "1204" +!define VERSION_MMDD "1211" !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD} !define MY_ABI "5" Index: package/mingw-ncurses.spec --- ncurses-6.3-20211204+/package/mingw-ncurses.spec 2021-12-04 12:21:05.000000000 +0000 +++ ncurses-6.3-20211211/package/mingw-ncurses.spec 2021-12-11 13:00:34.000000000 +0000 @@ -3,7 +3,7 @@ Summary: shared libraries for terminal handling Name: mingw32-ncurses6 Version: 6.3 -Release: 20211204 +Release: 20211211 License: X11 Group: Development/Libraries Source: ncurses-%{version}-%{release}.tgz Index: package/ncurses.spec --- ncurses-6.3-20211204+/package/ncurses.spec 2021-12-04 12:21:05.000000000 +0000 +++ ncurses-6.3-20211211/package/ncurses.spec 2021-12-11 13:00:34.000000000 +0000 @@ -1,7 +1,7 @@ Summary: shared libraries for terminal handling Name: ncurses6 Version: 6.3 -Release: 20211204 +Release: 20211211 License: X11 Group: Development/Libraries Source: ncurses-%{version}-%{release}.tgz Index: package/ncursest.spec --- ncurses-6.3-20211204+/package/ncursest.spec 2021-12-04 12:21:05.000000000 +0000 +++ ncurses-6.3-20211211/package/ncursest.spec 2021-12-11 13:00:34.000000000 +0000 @@ -1,7 +1,7 @@ Summary: Curses library with POSIX thread support. Name: ncursest6 Version: 6.3 -Release: 20211204 +Release: 20211211 License: X11 Group: Development/Libraries Source: ncurses-%{version}-%{release}.tgz Index: progs/tic.c Prereq: 1.307 --- ncurses-6.3-20211204+/progs/tic.c 2021-10-05 08:07:05.000000000 +0000 +++ ncurses-6.3-20211211/progs/tic.c 2021-12-12 00:00:33.000000000 +0000 @@ -49,7 +49,7 @@ #include #include -MODULE_ID("$Id: tic.c,v 1.307 2021/10/05 08:07:05 tom Exp $") +MODULE_ID("$Id: tic.c,v 1.308 2021/12/12 00:00:33 tom Exp $") #define STDIN_NAME "" @@ -682,7 +682,6 @@ main(int argc, char *argv[]) { char my_tmpname[PATH_MAX]; - char my_altfile[PATH_MAX]; int v_opt = -1; int smart_defaults = TRUE; char *termcap; @@ -933,6 +932,7 @@ } if (tmp_fp == NULL) { + char my_altfile[PATH_MAX]; tmp_fp = open_input(source_file, my_altfile); if (!strcmp(source_file, "-")) { source_file = STDIN_NAME; @@ -2717,12 +2717,11 @@ static void check_conflict(TERMTYPE2 *tp) { - bool conflict = FALSE; - if (!(_nc_syntax == SYN_TERMCAP && capdump)) { char *check = calloc((size_t) (NUM_STRINGS(tp) + 1), sizeof(char)); NAME_VALUE *given = get_fkey_list(tp); unsigned j, k; + bool conflict = FALSE; if (check == NULL) failed("check_conflict"); Index: test/combine.c --- /dev/null 2021-12-11 17:04:04.096000000 +0000 +++ ncurses-6.3-20211211/test/combine.c 2021-12-12 01:10:28.000000000 +0000 @@ -0,0 +1,204 @@ +/**************************************************************************** + * Copyright 2021 Thomas E. Dickey * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ +/* + * $Id: combine.c,v 1.7 2021/12/12 01:10:28 tom Exp $ + */ + +#include + +#if USE_WIDEC_SUPPORT + +static int c_opt; +static int r_opt; + +static int +next_char(int value) +{ + do { + ++value; + } while (!iswprint((wint_t) value)); + return value; +} + +static void +do_row(int row, int base_ch, int over_ch) +{ + int col = 0; + bool done = FALSE; + bool reverse = (r_opt && !(row % 2)); + + move(row, col); + printw("[U+%04X]", over_ch); + do { + if (c_opt) { + wchar_t source[2]; + cchar_t target; + attr_t attr = reverse ? A_REVERSE : A_NORMAL; + + source[1] = 0; + + source[0] = base_ch; + setcchar(&target, source, attr, 0, NULL); + add_wch(&target); + + source[0] = over_ch; + setcchar(&target, source, attr, 0, NULL); + add_wch(&target); + } else { + wchar_t data[3]; + + data[0] = base_ch; + data[1] = over_ch; + data[2] = 0; + if (reverse) + attr_on(A_REVERSE, NULL); + addwstr(data); + if (reverse) + attr_off(A_REVERSE, NULL); + } + col = getcurx(stdscr); + base_ch = next_char(base_ch); + done = (col + 1 >= COLS); + } while (!done); +} + +#define LAST_OVER 0x6f + +static int +next_over(int value) +{ + if (++value > LAST_OVER) + value = 0; + return value; +} + +static int +prev_over(int value) +{ + if (--value < 0) + value = LAST_OVER; + return value; +} + +static void +do_all(int over_it) +{ + int row; + + for (row = 0; row < LINES; ++row) { + do_row(row, ' ', 0x300 + over_it); + over_it = next_over(over_it); + } +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: combine [options]", + "", + "Demonstrate combining-characters.", + "", + "Options:", + " -c use cchar_t data rather than wchar_t string", + " -r draw even-numbered rows in reverse-video", + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + int n; + int over_it = 0; + bool done = FALSE; + + while ((n = getopt(argc, argv, "cr")) != -1) { + switch (n) { + case 'c': + c_opt = TRUE; + break; + case 'r': + r_opt = TRUE; + break; + default: + usage(); + break; + } + } + + setlocale(LC_ALL, ""); + initscr(); + cbreak(); + noecho(); + keypad(stdscr, TRUE); + + do { + do_all(over_it); + switch (getch()) { + case 'q': + case QUIT: + case ESCAPE: + done = TRUE; + break; + case KEY_HOME: + case '0': + over_it = 0; + break; + case KEY_END: + case '$': + over_it = LAST_OVER; + break; + case KEY_UP: + case '-': + over_it = prev_over(over_it); + break; + case KEY_DOWN: + case '+': + over_it = next_over(over_it); + break; + } + } while (!done); + + endwin(); + + ExitProgram(EXIT_SUCCESS); +} +#else +int +main(void) +{ + printf("This program requires wide-curses functions\n"); + ExitProgram(EXIT_FAILURE); +} +#endif Index: test/modules Prereq: 1.74 --- ncurses-6.3-20211204+/test/modules 2021-02-13 16:33:43.000000000 +0000 +++ ncurses-6.3-20211211/test/modules 2021-12-11 17:41:34.000000000 +0000 @@ -1,4 +1,4 @@ -# $Id: modules,v 1.74 2021/02/13 16:33:43 tom Exp $ +# $Id: modules,v 1.75 2021/12/11 17:41:34 tom Exp $ ############################################################################## # Copyright 2018-2020,2021 Thomas E. Dickey # # Copyright 1998-2016,2017 Free Software Foundation, Inc. # @@ -42,6 +42,7 @@ clip_printw progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h color_content progs $(srcdir) $(HEADER_DEPS) color_set progs $(srcdir) $(HEADER_DEPS) +combine progs $(srcdir) $(HEADER_DEPS) demo_altkeys progs $(srcdir) $(HEADER_DEPS) demo_defkey progs $(srcdir) $(HEADER_DEPS) demo_forms progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h Index: test/programs Prereq: 1.49 --- ncurses-6.3-20211204+/test/programs 2021-03-13 20:37:44.000000000 +0000 +++ ncurses-6.3-20211211/test/programs 2021-12-11 17:46:18.000000000 +0000 @@ -1,4 +1,4 @@ -# $Id: programs,v 1.49 2021/03/13 20:37:44 tom Exp $ +# $Id: programs,v 1.50 2021/12/11 17:46:18 tom Exp $ ############################################################################## # Copyright 2018-2020,2021 Thomas E. Dickey # # Copyright 2006-2016,2017 Free Software Foundation, Inc. # @@ -40,6 +40,7 @@ clip_printw $(LDFLAGS_CURSES) $(LOCAL_LIBS) clip_printw popup_msg color_content $(LDFLAGS_CURSES) $(LOCAL_LIBS) color_content color_set $(LDFLAGS_CURSES) $(LOCAL_LIBS) color_set +combine $(LDFLAGS_CURSES) $(LOCAL_LIBS) combine popup_msg demo_altkeys $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_altkeys demo_defkey $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_defkey demo_forms $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_forms edit_field popup_msg