Module Name: src
Committed By: blymn
Date: Fri Nov 16 10:12:00 UTC 2018
Modified Files:
src/lib/libcurses: curses_private.h fileio.h screen.c shlib_version
tty.c
Log Message:
Fix for PR lib/52063
Many thanks to Onno van der Linden ([email protected]) for providing
the bulk of the patch that fixes the issue.
To generate a diff of this commit:
cvs rdiff -u -r1.67 -r1.68 src/lib/libcurses/curses_private.h
cvs rdiff -u -r1.4 -r1.5 src/lib/libcurses/fileio.h
cvs rdiff -u -r1.34 -r1.35 src/lib/libcurses/screen.c
cvs rdiff -u -r1.42 -r1.43 src/lib/libcurses/shlib_version
cvs rdiff -u -r1.47 -r1.48 src/lib/libcurses/tty.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libcurses/curses_private.h
diff -u src/lib/libcurses/curses_private.h:1.67 src/lib/libcurses/curses_private.h:1.68
--- src/lib/libcurses/curses_private.h:1.67 Mon Oct 29 00:25:20 2018
+++ src/lib/libcurses/curses_private.h Fri Nov 16 10:12:00 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: curses_private.h,v 1.67 2018/10/29 00:25:20 uwe Exp $ */
+/* $NetBSD: curses_private.h,v 1.68 2018/11/16 10:12:00 blymn Exp $ */
/*-
* Copyright (c) 1998-2000 Brett Lymn
@@ -133,6 +133,7 @@ struct __window { /* Window structure.
#define __ISDERWIN 0x00100000 /* "window" is derived from parent */
#define __IMMEDOK 0x00200000 /* refreshed when changed */
#define __SYNCOK 0x00400000 /* sync when changed */
+#define __HALFDELAY 0x00800000 /* In half delay mode */
unsigned int flags;
int delay; /* delay for getch() */
attr_t wattr; /* Character attributes */
@@ -278,7 +279,6 @@ struct __screen {
char padchar;
int endwin;
int notty;
- int half_delay;
int resized;
wchar_t *unget_list;
int unget_len, unget_pos;
Index: src/lib/libcurses/fileio.h
diff -u src/lib/libcurses/fileio.h:1.4 src/lib/libcurses/fileio.h:1.5
--- src/lib/libcurses/fileio.h:1.4 Mon Jan 2 12:38:16 2017
+++ src/lib/libcurses/fileio.h Fri Nov 16 10:12:00 2018
@@ -1,8 +1,8 @@
/*
* Do not edit! Automatically generated file:
- * from: NetBSD: shlib_version,v 1.41 2015/11/22 04:56:00 kamil Exp
+ * from: NetBSD: shlib_version,v 1.42 2017/01/02 12:38:16 roy Exp
* by : NetBSD: genfileioh.awk,v 1.2 2008/05/02 11:13:02 martin Exp
*/
#define CURSES_LIB_MAJOR 7
-#define CURSES_LIB_MINOR 1
+#define CURSES_LIB_MINOR 2
Index: src/lib/libcurses/screen.c
diff -u src/lib/libcurses/screen.c:1.34 src/lib/libcurses/screen.c:1.35
--- src/lib/libcurses/screen.c:1.34 Tue Oct 2 17:35:44 2018
+++ src/lib/libcurses/screen.c Fri Nov 16 10:12:00 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: screen.c,v 1.34 2018/10/02 17:35:44 roy Exp $ */
+/* $NetBSD: screen.c,v 1.35 2018/11/16 10:12:00 blymn Exp $ */
/*
* Copyright (c) 1981, 1993, 1994
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)screen.c 8.2 (blymn) 11/27/2001";
#else
-__RCSID("$NetBSD: screen.c,v 1.34 2018/10/02 17:35:44 roy Exp $");
+__RCSID("$NetBSD: screen.c,v 1.35 2018/11/16 10:12:00 blymn Exp $");
#endif
#endif /* not lint */
@@ -167,7 +167,6 @@ newterm(char *type, FILE *outfd, FILE *i
new_screen->__virtscr = NULL;
new_screen->curwin = 0;
new_screen->notty = FALSE;
- new_screen->half_delay = FALSE;
new_screen->resized = 0;
new_screen->unget_len = 32;
Index: src/lib/libcurses/shlib_version
diff -u src/lib/libcurses/shlib_version:1.42 src/lib/libcurses/shlib_version:1.43
--- src/lib/libcurses/shlib_version:1.42 Mon Jan 2 12:38:16 2017
+++ src/lib/libcurses/shlib_version Fri Nov 16 10:12:00 2018
@@ -1,8 +1,8 @@
-# $NetBSD: shlib_version,v 1.42 2017/01/02 12:38:16 roy Exp $
+# $NetBSD: shlib_version,v 1.43 2018/11/16 10:12:00 blymn Exp $
# Remember to update distrib/sets/lists/base/shl.* when changing
# Remember to run `make fileio.h` when changing
# Remember to increment the major numbers of libform, libmenu and
# libpanel when the libcurses major number increments.
#
major=7
-minor=1
+minor=2
Index: src/lib/libcurses/tty.c
diff -u src/lib/libcurses/tty.c:1.47 src/lib/libcurses/tty.c:1.48
--- src/lib/libcurses/tty.c:1.47 Thu Oct 18 07:53:13 2018
+++ src/lib/libcurses/tty.c Fri Nov 16 10:12:00 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: tty.c,v 1.47 2018/10/18 07:53:13 roy Exp $ */
+/* $NetBSD: tty.c,v 1.48 2018/11/16 10:12:00 blymn Exp $ */
/*-
* Copyright (c) 1992, 1993, 1994
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)tty.c 8.6 (Berkeley) 1/10/95";
#else
-__RCSID("$NetBSD: tty.c,v 1.47 2018/10/18 07:53:13 roy Exp $");
+__RCSID("$NetBSD: tty.c,v 1.48 2018/11/16 10:12:00 blymn Exp $");
#endif
#endif /* not lint */
@@ -250,11 +250,11 @@ nocbreak(void)
if (_cursesi_screen->notty == TRUE)
return OK;
/* if we were in halfdelay mode then nuke the timeout */
- if ((_cursesi_screen->half_delay == TRUE) &&
+ if ((stdscr->flags & __HALFDELAY) &&
(__notimeout() == ERR))
return ERR;
- _cursesi_screen->half_delay = FALSE;
+ stdscr->flags &= ~__HALFDELAY;
_cursesi_screen->curt = _cursesi_screen->useraw ?
&_cursesi_screen->rawt : &_cursesi_screen->baset;
return tcsetattr(fileno(_cursesi_screen->infd), TCSASOFT | TCSADRAIN,
@@ -275,10 +275,12 @@ halfdelay(int duration)
if (cbreak() == ERR)
return ERR;
- if (__timeout(duration) == ERR)
- return ERR;
+ if (duration > 255)
+ stdscr->delay = 255;
+ else
+ stdscr->delay = duration;
- _cursesi_screen->half_delay = TRUE;
+ stdscr->flags |= __HALFDELAY;
return OK;
}