aboutsummaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/Caps10
-rw-r--r--include/Caps-ncurses12
-rw-r--r--include/Caps.aix410
-rw-r--r--include/Caps.hpux1110
-rw-r--r--include/Caps.keys10
-rw-r--r--include/Caps.osf1r510
-rw-r--r--include/Caps.uwin10
-rwxr-xr-xinclude/MKkey_defs.sh14
-rw-r--r--include/MKterm.h.awk.in37
-rw-r--r--include/Makefile.in20
-rw-r--r--include/curses.events55
-rw-r--r--include/curses.h.in54
-rw-r--r--include/headers4
-rw-r--r--include/nc_alloc.h4
-rw-r--r--include/nc_mingw.h23
-rw-r--r--include/nc_termios.h8
-rw-r--r--include/nc_tparm.h14
-rw-r--r--include/nc_win32.h183
-rw-r--r--include/ncurses_cfg.hin4
-rw-r--r--include/ncurses_defs6
-rw-r--r--include/ncurses_dll.h.in70
-rw-r--r--include/term_entry.h6
-rw-r--r--include/win32_curses.h75
23 files changed, 507 insertions, 142 deletions
diff --git a/include/Caps b/include/Caps
index af0ec4513a57..4528cffb80ed 100644
--- a/include/Caps
+++ b/include/Caps
@@ -30,7 +30,7 @@
# Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995
# and: Eric S. Raymond <esr@snark.thyrsus.com>
#
-# $Id: Caps,v 1.45 2020/02/02 23:34:34 tom Exp $
+# $Id: Caps,v 1.46 2020/10/17 21:30:19 tom Exp $
#
# This is the master termcap/terminfo capability table.
#
@@ -189,8 +189,12 @@
#%indicates that padding may be specified
#%.TP
#%#[1-9]
-#%in the description field indicates that the string is passed through tparm with
-#%parms as given (#\fIi\fP).
+#%in the description field indicates that the string is passed
+#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
+#%.IP
+#%If no parameters are listed in the description,
+#%passing the string through \fBtparm\fP(3X) may give unexpected results,
+#%e.g., if it contains percent (%%) signs.
#%.TP
#%(P*)
#%indicates that padding may vary in proportion to the number of
diff --git a/include/Caps-ncurses b/include/Caps-ncurses
index a1aef0d51e57..d8c8baca1fb3 100644
--- a/include/Caps-ncurses
+++ b/include/Caps-ncurses
@@ -28,7 +28,7 @@
#
# Author: Thomas E. Dickey
#
-# $Id: Caps-ncurses,v 1.8 2020/02/02 23:34:34 tom Exp $
+# $Id: Caps-ncurses,v 1.10 2020/09/29 19:05:19 tom Exp $
#
#############################################################################
#
@@ -342,6 +342,7 @@ infoalias ksel kslt IBM key_select
# are not listed here.
#
used_by ncurses
+userdef CO num n number of indexed colors overlaying RGB space
userdef E3 str - clears the terminal's scrollback buffer.
userdef RGB bool - use direct colors with 1/3 of color-pair bits per color.
userdef RGB num n use direct colors with given number of bits per color.
@@ -361,6 +362,15 @@ userdef xm str nnnsnn mouse response, p6 = x-ordinate starting region
userdef xm str nnnsnnn mouse response, p7 = y-ordinate ending region
userdef xm str nnnsnnnn mouse response, p8 = x-ordinate ending region
#
+used_by mintty
+userdef Rmol str - remove overline-mode
+userdef Smol str - set overline-mode
+userdef blink2 str - turn on rapid blinking
+userdef norm str - turn off bold and half-bright mode
+userdef opaq str - turn off blank mode
+userdef setal str n set underline-color
+userdef smul2 str - begin double underline mode
+#
used_by screen
userdef AN bool - turn on autonuke.
userdef AX bool - understands ANSI set default fg/bg color (\E[39m / \E[49m).
diff --git a/include/Caps.aix4 b/include/Caps.aix4
index 100489c592d8..a27f2699582b 100644
--- a/include/Caps.aix4
+++ b/include/Caps.aix4
@@ -29,7 +29,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.aix4,v 1.17 2020/02/02 23:34:34 tom Exp $
+# $Id: Caps.aix4,v 1.18 2020/10/17 21:30:19 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with AIX 4.x's terminfo.
@@ -189,8 +189,12 @@
#%indicates that padding may be specified
#%.TP
#%#[1-9]
-#%in the description field indicates that the string is passed through tparm with
-#%parms as given (#\fIi\fP).
+#%in the description field indicates that the string is passed
+#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
+#%.IP
+#%If no parameters are listed in the description,
+#%passing the string through \fBtparm\fP(3X) may give unexpected results,
+#%e.g., if it contains percent (%%) signs.
#%.TP
#%(P*)
#%indicates that padding may vary in proportion to the number of
diff --git a/include/Caps.hpux11 b/include/Caps.hpux11
index e028224c3834..712a74297f6a 100644
--- a/include/Caps.hpux11
+++ b/include/Caps.hpux11
@@ -29,7 +29,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.hpux11,v 1.15 2020/02/02 23:34:34 tom Exp $
+# $Id: Caps.hpux11,v 1.16 2020/10/17 21:30:19 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with HPUX 11.x's terminfo.
@@ -189,8 +189,12 @@
#%indicates that padding may be specified
#%.TP
#%#[1-9]
-#%in the description field indicates that the string is passed through tparm with
-#%parms as given (#\fIi\fP).
+#%in the description field indicates that the string is passed
+#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
+#%.IP
+#%If no parameters are listed in the description,
+#%passing the string through \fBtparm\fP(3X) may give unexpected results,
+#%e.g., if it contains percent (%%) signs.
#%.TP
#%(P*)
#%indicates that padding may vary in proportion to the number of
diff --git a/include/Caps.keys b/include/Caps.keys
index 6b03964fd67d..018f68474fda 100644
--- a/include/Caps.keys
+++ b/include/Caps.keys
@@ -30,7 +30,7 @@
# Author: Thomas Dickey
# and: Ilya Zakharevich
#
-# $Id: Caps.keys,v 1.14 2020/02/02 23:34:34 tom Exp $
+# $Id: Caps.keys,v 1.15 2020/10/17 21:30:19 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is illustrates an experimental extension to describe alt-, shift- and
@@ -191,8 +191,12 @@
#%indicates that padding may be specified
#%.TP
#%#[1-9]
-#%in the description field indicates that the string is passed through tparm with
-#%parms as given (#\fIi\fP).
+#%in the description field indicates that the string is passed
+#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
+#%.IP
+#%If no parameters are listed in the description,
+#%passing the string through \fBtparm\fP(3X) may give unexpected results,
+#%e.g., if it contains percent (%%) signs.
#%.TP
#%(P*)
#%indicates that padding may vary in proportion to the number of
diff --git a/include/Caps.osf1r5 b/include/Caps.osf1r5
index 94991837a968..8a2955486ee9 100644
--- a/include/Caps.osf1r5
+++ b/include/Caps.osf1r5
@@ -29,7 +29,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.osf1r5,v 1.13 2020/02/02 23:34:34 tom Exp $
+# $Id: Caps.osf1r5,v 1.14 2020/10/17 21:30:19 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with OSF/1 version 5 (Tru64) terminfo.
@@ -189,8 +189,12 @@
#%indicates that padding may be specified
#%.TP
#%#[1-9]
-#%in the description field indicates that the string is passed through tparm with
-#%parms as given (#\fIi\fP).
+#%in the description field indicates that the string is passed
+#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
+#%.IP
+#%If no parameters are listed in the description,
+#%passing the string through \fBtparm\fP(3X) may give unexpected results,
+#%e.g., if it contains percent (%%) signs.
#%.TP
#%(P*)
#%indicates that padding may vary in proportion to the number of
diff --git a/include/Caps.uwin b/include/Caps.uwin
index 7628bd47b6e8..de0d5b77cae9 100644
--- a/include/Caps.uwin
+++ b/include/Caps.uwin
@@ -29,7 +29,7 @@
#
# Author: Thomas Dickey
#
-# $Id: Caps.uwin,v 1.12 2020/02/02 23:34:34 tom Exp $
+# $Id: Caps.uwin,v 1.13 2020/10/17 21:30:19 tom Exp $
#
# This is an adaptation of ncurses' termcap/terminfo capability table, which
# is designed to align with U/Win's terminfo.
@@ -189,8 +189,12 @@
#%indicates that padding may be specified
#%.TP
#%#[1-9]
-#%in the description field indicates that the string is passed through tparm with
-#%parms as given (#\fIi\fP).
+#%in the description field indicates that the string is passed
+#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP).
+#%.IP
+#%If no parameters are listed in the description,
+#%passing the string through \fBtparm\fP(3X) may give unexpected results,
+#%e.g., if it contains percent (%%) signs.
#%.TP
#%(P*)
#%indicates that padding may vary in proportion to the number of
diff --git a/include/MKkey_defs.sh b/include/MKkey_defs.sh
index 865a7b9c8b87..86d6891c3693 100755
--- a/include/MKkey_defs.sh
+++ b/include/MKkey_defs.sh
@@ -1,5 +1,5 @@
#! /bin/sh
-# $Id: MKkey_defs.sh,v 1.19 2020/02/02 23:34:34 tom Exp $
+# $Id: MKkey_defs.sh,v 1.21 2020/08/17 10:45:33 tom Exp $
##############################################################################
# Copyright 2019,2020 Thomas E. Dickey #
# Copyright 2001-2013,2017 Free Software Foundation, Inc. #
@@ -63,8 +63,7 @@ fi
# add keys that we generate automatically:
cat >>$data <<EOF
-key_resize kr1 str R1 KEY_RESIZE + ----- Terminal resize event
-key_event kv1 str V1 KEY_EVENT + ----- We were interrupted by an event
+key_resize kr1 str R1 KEY_RESIZE + NCURSES_EXT_FUNCS Terminal resize event
EOF
THIS=./`basename $0`
@@ -142,6 +141,12 @@ $5 != "-" && $6 != "-" {
maxkey = thiskey;
if (pass == 2 || pass == 3) {
showkey=sprintf(octal_fmt, thiskey);
+ ifdef = 0;
+ if (index($7,"NCURSES_") == 1) {
+ ifdef = 1;
+ printf "\n";
+ printf "#ifdef %s\n", $7;
+ }
if ($5 == "KEY_F(0)" ) {
printf "#define "
print_cols("KEY_F0", 16);
@@ -160,6 +165,9 @@ $5 != "-" && $6 != "-" {
printf " %s", $i
print " */"
}
+ if (ifdef != 0) {
+ printf "#endif\n";
+ }
}
}
END {
diff --git a/include/MKterm.h.awk.in b/include/MKterm.h.awk.in
index ee4e2b48dc1f..c93cdeac6971 100644
--- a/include/MKterm.h.awk.in
+++ b/include/MKterm.h.awk.in
@@ -60,7 +60,7 @@ BEGIN {
print "/* and: Thomas E. Dickey 1995-on */"
print "/****************************************************************************/"
print ""
- print "/* $Id: MKterm.h.awk.in,v 1.74 2020/02/02 23:34:34 tom Exp $ */"
+ print "/* $Id: MKterm.h.awk.in,v 1.78 2020/10/31 23:14:24 tom Exp $ */"
print ""
print "/*"
print "** term.h -- Definition of struct term"
@@ -82,6 +82,24 @@ BEGIN {
print " * definition (based on the system for which this was configured)."
print " */"
print ""
+ print "#ifndef __NCURSES_H"
+ print ""
+ print "typedef struct screen SCREEN;"
+ print ""
+ print "#if @NCURSES_SP_FUNCS@"
+ print "#undef NCURSES_SP_FUNCS"
+ print "#define NCURSES_SP_FUNCS @NCURSES_PATCH@"
+ print "#undef NCURSES_SP_NAME"
+ print "#define NCURSES_SP_NAME(name) name##_sp"
+ print ""
+ print "/* Define the sp-funcs helper function */"
+ print "#undef NCURSES_SP_OUTC"
+ print "#define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC)"
+ print "typedef int (*NCURSES_SP_OUTC)(SCREEN*, int);"
+ print "#endif"
+ print ""
+ print "#endif /* __NCURSES_H */"
+ print ""
print "#undef NCURSES_CONST"
print "#define NCURSES_CONST @NCURSES_CONST@"
print ""
@@ -127,9 +145,14 @@ BEGIN {
print ""
print "#else /* !HAVE_TERMIO_H */"
print ""
- print "#if _WIN32"
- print "# include <ncurses_mingw.h>"
- print "# define TTY struct termios"
+ print "#if (defined(_WIN32) || defined(_WIN64))"
+ print "#if @EXP_WIN32_DRIVER@"
+ print "#include <win32_curses.h>"
+ print "#define TTY struct winconmode"
+ print "#else"
+ print "#include <ncurses_mingw.h>"
+ print "#define TTY struct termios"
+ print "#endif"
print "#else"
print "#undef TERMIOS"
print "#include <sgtty.h>"
@@ -143,6 +166,9 @@ BEGIN {
print "#ifdef TERMIOS"
print "#define GET_TTY(fd, buf) tcgetattr(fd, buf)"
print "#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf)"
+ print "#elif @EXP_WIN32_DRIVER@ && (defined(_WIN32) || defined(_WIN64))"
+ print "#define GET_TTY(fd, buf) _nc_console_getmode(_nc_console_fd2handle(fd),buf)"
+ print "#define SET_TTY(fd, buf) _nc_console_setmode(_nc_console_fd2handle(fd),buf)"
print "#else"
print "#define GET_TTY(fd, buf) gtty(fd, buf)"
print "#define SET_TTY(fd, buf) stty(fd, buf)"
@@ -298,6 +324,7 @@ END {
print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE2 *, char *, int);"
print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);"
print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);"
+ print "extern NCURSES_EXPORT(char *) _nc_tiparm(int, const char *, ...);"
print ""
print "#endif /* NCURSES_INTERNALS */"
print ""
@@ -330,7 +357,6 @@ END {
print "extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */"
print "#else"
print "extern NCURSES_EXPORT(char *) tparm (const char *, long,long,long,long,long,long,long,long,long); /* special */"
- print "extern NCURSES_EXPORT(char *) tparm_varargs (const char *, ...); /* special */"
print "#endif"
print ""
print "extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */"
@@ -361,7 +387,6 @@ END {
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, const char *, ...); /* special */"
print "#else"
print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, const char *, long,long,long,long,long,long,long,long,long); /* special */"
- print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm_varargs) (SCREEN*, const char *, ...); /* special */"
print "#endif"
print ""
print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */"
diff --git a/include/Makefile.in b/include/Makefile.in
index d23c472b1c18..b911f8eadce1 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.46 2020/02/02 23:34:34 tom Exp $
+# $Id: Makefile.in,v 1.51 2020/09/18 22:55:10 tom Exp $
##############################################################################
# Copyright 2019,2020 Thomas E. Dickey #
# Copyright 1998-2013,2015 Free Software Foundation, Inc. #
@@ -28,7 +28,7 @@
# authorization. #
##############################################################################
#
-# Author: Thomas E. Dickey 1996-2001
+# Author: Thomas E. Dickey 1996-on
#
# Makefile for ncurses source code.
#
@@ -59,6 +59,10 @@ INSTALL_DATA = @INSTALL_DATA@
AWK = @AWK@
LN_S = @LN_S@
+CC = @CC@
+CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@
+CPPFLAGS = -DHAVE_CONFIG_H -I. @CPPFLAGS@
+
CTAGS = @CTAGS@
ETAGS = @ETAGS@
@@ -100,6 +104,7 @@ curses.h : $(CAPLIST) \
$(srcdir)/MKkey_defs.sh
cat curses.head >$@
AWK=$(AWK) $(SHELL) $(srcdir)/MKkey_defs.sh $(CAPLIST) >>$@
+ $(SHELL) -c 'if test "@NCURSES_WGETCH_EVENTS@" = "1" ; then cat $(srcdir)/curses.events >>$@ ; fi'
$(SHELL) -c 'if test "@NCURSES_CH_T@" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi'
cat $(srcdir)/curses.tail >>$@
@@ -141,6 +146,17 @@ distclean :: clean
realclean :: distclean
+# Verify that each header-file can be compiled without including another.
+check:
+ @$(SHELL) -c "for header in *.h;\
+ do \
+ echo \"** testing \$${header}\" ; \
+ echo \"#include <\$${header}>\" >headers.c; \
+ echo \"int main(void) { return 0; }\" >>headers.c; \
+ $(CC) -c $(CFLAGS) $(CPPFLAGS) headers.c; \
+ done"
+ -@rm -f headers.*
+
###############################################################################
# The remainder of this file is automatically generated during configuration
###############################################################################
diff --git a/include/curses.events b/include/curses.events
new file mode 100644
index 000000000000..25a2583fc9b5
--- /dev/null
+++ b/include/curses.events
@@ -0,0 +1,55 @@
+/* $Id*/
+/*
+ * vile:cmode:
+ * This file is part of ncurses, designed to be appended after curses.h.in
+ * (see that file for the relevant copyright).
+ */
+
+/*
+ * This is an extension to support events...
+ */
+#ifdef NCURSES_WGETCH_EVENTS
+#if !defined(__BEOS__) || defined(__HAIKU__)
+ /* Fix _nc_timed_wait() on BEOS... */
+# define NCURSES_EVENT_VERSION 1
+#endif /* !defined(__BEOS__) */
+
+/*
+ * Bits to set in _nc_event.data.flags
+ */
+# define _NC_EVENT_TIMEOUT_MSEC 1
+# define _NC_EVENT_FILE 2
+# define _NC_EVENT_FILE_READABLE 2
+# if 0 /* Not supported yet... */
+# define _NC_EVENT_FILE_WRITABLE 4
+# define _NC_EVENT_FILE_EXCEPTION 8
+# endif
+
+typedef struct
+{
+ int type;
+ union
+ {
+ long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */
+ struct
+ {
+ unsigned int flags;
+ int fd;
+ unsigned int result;
+ } fev; /* _NC_EVENT_FILE */
+ } data;
+} _nc_event;
+
+typedef struct
+{
+ int count;
+ int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */
+ _nc_event *events[1];
+} _nc_eventlist;
+
+extern NCURSES_EXPORT(int) wgetch_events (WINDOW *, _nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */
+extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */
+
+#define KEY_EVENT 0633 /* We were interrupted by an event */
+
+#endif /* NCURSES_WGETCH_EVENTS */
diff --git a/include/curses.h.in b/include/curses.h.in
index 2cb3224b3ecc..c516b22c1fe4 100644
--- a/include/curses.h.in
+++ b/include/curses.h.in
@@ -33,7 +33,7 @@
* and: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: curses.h.in,v 1.266 2020/02/08 10:51:53 tom Exp $ */
+/* $Id: curses.h.in,v 1.269 2020/08/17 14:14:12 tom Exp $ */
#ifndef __NCURSES_H
#define __NCURSES_H
@@ -498,55 +498,6 @@ struct _win_st
#endif /* NCURSES_OPAQUE */
/*
- * This is an extension to support events...
- */
-#if @NCURSES_EXT_FUNCS@
-#ifdef NCURSES_WGETCH_EVENTS
-#if !defined(__BEOS__) || defined(__HAIKU__)
- /* Fix _nc_timed_wait() on BEOS... */
-# define NCURSES_EVENT_VERSION 1
-#endif /* !defined(__BEOS__) */
-
-/*
- * Bits to set in _nc_event.data.flags
- */
-# define _NC_EVENT_TIMEOUT_MSEC 1
-# define _NC_EVENT_FILE 2
-# define _NC_EVENT_FILE_READABLE 2
-# if 0 /* Not supported yet... */
-# define _NC_EVENT_FILE_WRITABLE 4
-# define _NC_EVENT_FILE_EXCEPTION 8
-# endif
-
-typedef struct
-{
- int type;
- union
- {
- long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */
- struct
- {
- unsigned int flags;
- int fd;
- unsigned int result;
- } fev; /* _NC_EVENT_FILE */
- } data;
-} _nc_event;
-
-typedef struct
-{
- int count;
- int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */
- _nc_event *events[1];
-} _nc_eventlist;
-
-extern NCURSES_EXPORT(int) wgetch_events (WINDOW *, _nc_eventlist *); /* experimental */
-extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *);/* experimental */
-
-#endif /* NCURSES_WGETCH_EVENTS */
-#endif /* NCURSES_EXT_FUNCS */
-
-/*
* GCC (and some other compilers) define '__attribute__'; we're using this
* macro to alert the compiler to flag inconsistencies in printf/scanf-like
* function calls. Just in case '__attribute__' isn't defined, make a dummy.
@@ -590,7 +541,7 @@ extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *)
#endif
#undef GCC_DEPRECATED
-#if (__GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2))
+#if (__GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2)) && !defined(NCURSES_INTERNALS)
#define GCC_DEPRECATED(msg) __attribute__((deprecated))
#else
#define GCC_DEPRECATED(msg) /* nothing */
@@ -895,7 +846,6 @@ extern NCURSES_EXPORT(int) putp (const char *); /* implemented */
extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */
#else
extern NCURSES_EXPORT(char *) tparm (const char *, NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG); /* special */
-extern NCURSES_EXPORT(char *) tparm_varargs (const char *, ...); /* special */
#endif
extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */
diff --git a/include/headers b/include/headers
index dbb134d13f90..32e33fdbc734 100644
--- a/include/headers
+++ b/include/headers
@@ -1,4 +1,4 @@
-# $Id: headers,v 1.14 2020/02/02 23:34:34 tom Exp $
+# $Id: headers,v 1.15 2020/08/29 18:51:13 tom Exp $
##############################################################################
# Copyright 2020 Thomas E. Dickey #
# Copyright 1998-2012,2013 Free Software Foundation, Inc. #
@@ -49,5 +49,7 @@ $(srcdir)/nc_tparm.h
@ port_win32con
$(srcdir)/ncurses_mingw.h
$(srcdir)/nc_mingw.h
+@ port_win32
+$(srcdir)/win32_curses.h
# vile:makemode
diff --git a/include/nc_alloc.h b/include/nc_alloc.h
index ca63e78cd922..8d19f98e0f67 100644
--- a/include/nc_alloc.h
+++ b/include/nc_alloc.h
@@ -30,7 +30,7 @@
/****************************************************************************
* Author: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: nc_alloc.h,v 1.26 2020/02/02 23:34:34 tom Exp $ */
+/* $Id: nc_alloc.h,v 1.27 2020/07/04 20:01:13 tom Exp $ */
#ifndef NC_ALLOC_included
#define NC_ALLOC_included 1
@@ -78,7 +78,7 @@ extern NCURSES_EXPORT(void) _nc_free_tinfo(int) GCC_NORETURN GCC_DEPRECATED("use
#ifdef NCURSES_INTERNALS
extern NCURSES_EXPORT(void) _nc_free_tic(int) GCC_NORETURN;
extern NCURSES_EXPORT(void) _nc_free_tparm(void);
-extern NCURSES_EXPORT(void) _nc_leaks_dump_entry(void);
+extern void _nc_leaks_dump_entry(void);
extern NCURSES_EXPORT(void) _nc_leaks_tic(void);
#if NCURSES_SP_FUNCS
diff --git a/include/nc_mingw.h b/include/nc_mingw.h
index 68a418494560..6729b29d3d09 100644
--- a/include/nc_mingw.h
+++ b/include/nc_mingw.h
@@ -31,12 +31,13 @@
* Author: Thomas Dickey, 2008-on *
****************************************************************************/
-/* $Id: nc_mingw.h,v 1.7 2020/02/02 23:34:34 tom Exp $ */
+/* $Id: nc_mingw.h,v 1.9 2020/07/11 22:13:19 tom Exp $ */
#ifndef NC_MINGW_H
#define NC_MINGW_H 1
#ifdef _WIN32
+
#ifdef WINVER
# if WINVER < 0x0501
# error WINVER must at least be 0x0501
@@ -52,9 +53,21 @@
#undef gettimeofday
#define gettimeofday(tv,tz) _nc_gettimeofday(tv,tz)
+#if HAVE_SYS_TIME_H
#include <sys/time.h> /* for struct timeval */
+#endif
-extern int _nc_gettimeofday(struct timeval *, void *);
+#ifdef _MSC_VER
+#include <winsock2.h> /* for struct timeval */
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ncurses_dll.h>
+
+NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *);
#undef HAVE_GETTIMEOFDAY
#define HAVE_GETTIMEOFDAY 1
@@ -65,7 +78,11 @@ extern int _nc_gettimeofday(struct timeval *, void *);
#undef wcwidth
#define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs))
-extern int _nc_wcwidth(wchar_t);
+NCURSES_EXPORT(int) _nc_wcwidth(wchar_t);
+
+#ifdef __cplusplus
+}
+#endif
#endif /* _WIN32 */
diff --git a/include/nc_termios.h b/include/nc_termios.h
index 87fa46efb48d..13cc0af7ab53 100644
--- a/include/nc_termios.h
+++ b/include/nc_termios.h
@@ -31,7 +31,7 @@
* Author: Thomas E. Dickey 2011 *
****************************************************************************/
-/* $Id: nc_termios.h,v 1.7 2020/02/02 23:34:34 tom Exp $ */
+/* $Id: nc_termios.h,v 1.8 2020/08/29 20:53:19 tom Exp $ */
#ifndef NC_TERMIOS_included
#define NC_TERMIOS_included 1
@@ -70,9 +70,13 @@
#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)
#endif
+#if defined(EXP_WIN32_DRIVER)
+#undef TERMIOS
+#endif
+
#else /* !HAVE_TERMIO_H */
-#if _WIN32
+#if defined(_WIN32) && !defined(EXP_WIN32_DRIVER)
/* lflag bits */
#define ISIG 0x0001
diff --git a/include/nc_tparm.h b/include/nc_tparm.h
index 61570959c08c..943d9476055d 100644
--- a/include/nc_tparm.h
+++ b/include/nc_tparm.h
@@ -31,7 +31,7 @@
* Author: Thomas E. Dickey 2006 *
****************************************************************************/
-/* $Id: nc_tparm.h,v 1.10 2020/02/02 23:34:34 tom Exp $ */
+/* $Id: nc_tparm.h,v 1.11 2020/05/27 23:33:31 tom Exp $ */
#ifndef NC_TPARM_included
#define NC_TPARM_included 1
@@ -77,4 +77,16 @@
#define TPARM_0(a) TPARM_1(a,0)
#endif
+#ifdef NCURSES_INTERNALS
+#define TIPARM_1(s,a) _nc_tiparm(1,s,a)
+#define TIPARM_2(s,a,b) _nc_tiparm(2,s,a,b)
+#define TIPARM_3(s,a,b,c) _nc_tiparm(3,s,a,b,c)
+#define TIPARM_4(s,a,b,c,d) _nc_tiparm(4,s,a,b,c,d)
+#define TIPARM_5(s,a,b,c,d,e) _nc_tiparm(5,s,a,b,c,d,e)
+#define TIPARM_6(s,a,b,c,d,e,f) _nc_tiparm(6,s,a,b,c,d,e,f)
+#define TIPARM_7(s,a,b,c,d,e,f,g) _nc_tiparm(7,s,a,b,c,d,e,f,g)
+#define TIPARM_8(s,a,b,c,d,e,f,g,h) _nc_tiparm(8,s,a,b,c,d,e,f,g,h)
+#define TIPARM_9(s,a,b,c,d,e,f,g,h,i) _nc_tiparm(9,s,a,b,c,d,e,f,g,h,i)
+#endif
+
#endif /* NC_TPARM_included */
diff --git a/include/nc_win32.h b/include/nc_win32.h
new file mode 100644
index 000000000000..790e8dfe9388
--- /dev/null
+++ b/include/nc_win32.h
@@ -0,0 +1,183 @@
+/****************************************************************************
+ * Copyright 2018-2019,2020 Thomas E. Dickey *
+ * Copyright 2008-2010,2017 Free Software Foundation, Inc. *
+ * *
+ * 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. *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Author: Thomas Dickey, 2008-on *
+ ****************************************************************************/
+
+/* $Id: nc_win32.h,v 1.9 2020/09/13 00:17:30 tom Exp $ */
+
+#ifndef NC_WIN32_H
+#define NC_WIN32_H 1
+
+#if defined(_WIN32) || defined(_WIN64)
+
+#ifndef _NC_WINDOWS
+#define _NC_WINDOWS
+#endif
+
+#ifdef TERMIOS
+#error TERMIOS must not be defined on Windows
+#endif
+
+/* We no longer support WindowsXP.
+ Minimum requirement is Windows Vista or Server2008,
+ aka Windows NT 6.0
+*/
+#ifdef WINVER
+# if WINVER < 0x0600
+# error WINVER must at least be 0x0600
+# endif
+#else
+# define WINVER 0x0600
+#endif
+
+#undef _NC_CHECK_MINTTY
+#if WINVER >= 0x0600
+#define _NC_CHECK_MINTTY
+#endif
+
+#include <windows.h>
+
+#if HAVE_SYS_TIME_H
+#include <sys/time.h> /* for struct timeval */
+#endif
+
+#ifdef _NC_MSC
+#include <winsock2.h> /* for struct timeval */
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <ncurses_dll.h>
+
+#undef HAVE_GETTIMEOFDAY
+#define HAVE_GETTIMEOFDAY 1
+extern NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *);
+
+#undef wcwidth
+#define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs))
+extern NCURSES_EXPORT(int) _nc_wcwidth(wchar_t);
+
+#ifdef EVENTLIST_2nd /* test.priv.h just needs the preceding */
+
+extern NCURSES_EXPORT(void) _nc_console_size(int* Lines, int* Cols);
+extern NCURSES_EXPORT(HANDLE) _nc_console_handle(int fd);
+extern NCURSES_EXPORT(int) _nc_console_isatty(int fd);
+extern NCURSES_EXPORT(int) _nc_console_test(int fd);
+extern NCURSES_EXPORT(int) _nc_console_read(SCREEN *sp,HANDLE hdl,int *buf);
+extern NCURSES_EXPORT(int) _nc_console_twait(SCREEN *, HANDLE,int,int,int * EVENTLIST_2nd(_nc_eventlist * evl));
+extern NCURSES_EXPORT(WORD) _nc_console_MapColor(bool fore, int color);
+extern NCURSES_EXPORT(void) _nc_console_selectActiveHandle(void);
+extern NCURSES_EXPORT(bool) _nc_console_get_SBI(void);
+extern NCURSES_EXPORT(void) _nc_console_set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info);
+extern NCURSES_EXPORT(int) _nc_console_testmouse(SCREEN *,HANDLE,int EVENTLIST_2nd(_nc_eventlist*));
+extern NCURSES_EXPORT(int) _nc_console_keyok(int keycode,int flag);
+extern NCURSES_EXPORT(bool) _nc_console_keyExist(int keycode);
+extern NCURSES_EXPORT(bool) _nc_console_checkinit(bool initFlag, bool assumeTermInfo);
+extern NCURSES_EXPORT(int) _nc_console_vt_supported(void);
+
+#ifdef _NC_CHECK_MINTTY
+extern NCURSES_EXPORT(int) _nc_console_checkmintty(int fd, LPHANDLE pMinTTY);
+#endif
+
+#undef VALID_TERM_ENV
+#define MS_TERMINAL "ms-terminal"
+#define VALID_TERM_ENV(term_env, no_terminal) \
+ (term_env = (NonEmpty(term_env) \
+ ? term_env \
+ : (_nc_console_vt_supported() \
+ ? MS_TERMINAL \
+ : no_terminal)), \
+ NonEmpty(term_env))
+
+ /*
+ * Various Console mode definitions
+ */
+
+ /* Flags to enable virtual Terminal processing */
+#define VT_FLAG_OUT ENABLE_VIRTUAL_TERMINAL_PROCESSING
+#define VT_FLAG_IN ENABLE_VIRTUAL_TERMINAL_INPUT
+
+ /* Default flags for input/output modes */
+#define CONMODE_IN_DEFAULT (ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT)
+#define CONMODE_OUT_DEFAULT (ENABLE_PROCESSED_OUTPUT | DISABLE_NEWLINE_AUTO_RETURN | ENABLE_LVB_GRID_WORLDWIDE)
+
+ /* Flags to reset from RAW/CBREAK */
+#define CONMODE_NORAW (ENABLE_PROCESSED_INPUT|ENABLE_LINE_INPUT)
+#define CONMODE_NOCBREAK (ENABLE_LINE_INPUT)
+
+
+#if defined(USE_TERM_DRIVER) && defined(USE_WIN32CON_DRIVER)
+extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_WIN_DRIVER;
+#endif
+
+#define CON_NUMPAIRS 64
+typedef struct {
+ BOOL initialized;
+ BOOL buffered;
+ BOOL window_only;
+ BOOL progMode;
+ BOOL isMinTTY;
+ BOOL isTermInfoConsole;
+ HANDLE out;
+ HANDLE inp;
+ HANDLE hdl;
+ HANDLE lastOut;
+ int numButtons;
+ LPDWORD ansi_map;
+ LPDWORD map;
+ LPDWORD rmap;
+ WORD pairs[CON_NUMPAIRS];
+ COORD origin;
+ CHAR_INFO *save_screen;
+ COORD save_size;
+ SMALL_RECT save_region;
+ CONSOLE_SCREEN_BUFFER_INFO SBI;
+ CONSOLE_SCREEN_BUFFER_INFO save_SBI;
+ CONSOLE_CURSOR_INFO save_CI;
+ TTY originalMode;
+} ConsoleInfo;
+
+extern NCURSES_EXPORT_VAR(ConsoleInfo) _nc_CONSOLE;
+#define WINCONSOLE _nc_CONSOLE
+
+#define TypeAlloca(type,count)(type*) _alloca(sizeof(type)*(size_t)(count))
+
+#endif /* EVENTLIST_2nd */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _WIN32 || _WIN64 */
+
+#endif /* NC_WIN32_H */
diff --git a/include/ncurses_cfg.hin b/include/ncurses_cfg.hin
index bf9b2c5fc293..8d9ed81a8406 100644
--- a/include/ncurses_cfg.hin
+++ b/include/ncurses_cfg.hin
@@ -31,7 +31,7 @@
* Author: Thomas E. Dickey 1997-on *
****************************************************************************/
/*
- * $Id: ncurses_cfg.hin,v 1.12 2020/02/02 23:34:34 tom Exp $
+ * $Id: ncurses_cfg.hin,v 1.13 2020/03/08 12:37:59 tom Exp $
*
* Both ncurses_cfg.h and ncurses_def.h are internal header-files used when
* building ncurses.
@@ -43,7 +43,7 @@
* 971222) to autoconf 2.12 or 2.13 to do this.
*
* See:
- * http://invisible-island.net/autoconf/
+ * https://invisible-island.net/autoconf/
* ftp://ftp.invisible-island.net/autoconf/
*/
#ifndef NC_CONFIG_H
diff --git a/include/ncurses_defs b/include/ncurses_defs
index e37fc901eaaf..b805c8414182 100644
--- a/include/ncurses_defs
+++ b/include/ncurses_defs
@@ -1,4 +1,4 @@
-# $Id: ncurses_defs,v 1.92 2020/02/02 23:34:34 tom Exp $
+# $Id: ncurses_defs,v 1.95 2020/08/01 19:48:21 tom Exp $
##############################################################################
# Copyright 2018-2019,2020 Thomas E. Dickey #
# Copyright 2000-2016,2017 Free Software Foundation, Inc. #
@@ -63,6 +63,8 @@ HAVE_DERWIN 1
HAVE_DIRENT_H
HAVE_DUPWIN 1
HAVE_ERRNO
+HAVE_EXIT_CURSES 1
+HAVE_EXIT_TERMINFO 1
HAVE_FCNTL_H
HAVE_FILTER 1
HAVE_FORM_H
@@ -120,7 +122,7 @@ HAVE_NANOSLEEP
HAVE_NC_ALLOC_H
HAVE_NEWPAD 1
HAVE_PANEL_H
-HAVE_PCRE2_POSIX_H
+HAVE_PCRE2POSIX_H
HAVE_PCREPOSIX_H
HAVE_POLL
HAVE_POLL_H
diff --git a/include/ncurses_dll.h.in b/include/ncurses_dll.h.in
index f439d48013ca..437c54de0271 100644
--- a/include/ncurses_dll.h.in
+++ b/include/ncurses_dll.h.in
@@ -26,7 +26,7 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
****************************************************************************/
-/* $Id: ncurses_dll.h.in,v 1.12 2020/02/02 23:34:34 tom Exp $ */
+/* $Id: ncurses_dll.h.in,v 1.17 2020/09/05 17:58:47 juergen Exp $ */
#ifndef NCURSES_DLL_H_incl
#define NCURSES_DLL_H_incl 1
@@ -66,52 +66,34 @@
* using functions to access them.
*/
#define NCURSES_PUBLIC_VAR(name) @NCURSES_WRAP_PREFIX@##name
-#define NCURSES_WRAPPED_VAR(type,name) extern type NCURSES_PUBLIC_VAR(name)(void)
-/* no longer needed on cygwin or mingw, thanks to auto-import */
-/* but this structure may be useful at some point for an MSVC build */
-/* so, for now unconditionally define the important flags */
-/* "the right way" for proper static and dll+auto-import behavior */
-#undef NCURSES_DLL
-#define NCURSES_STATIC
-
-#if defined(__CYGWIN__) || defined(_WIN32)
-# if defined(NCURSES_DLL)
-# if defined(NCURSES_STATIC)
-# undef NCURSES_STATIC
-# endif
-# endif
-# undef NCURSES_IMPEXP
-# undef NCURSES_API
-# undef NCURSES_EXPORT
-# undef NCURSES_EXPORT_VAR
-# if defined(NCURSES_DLL)
-/* building a DLL */
-# define NCURSES_IMPEXP __declspec(dllexport)
-# elif defined(NCURSES_STATIC)
-/* building or linking to a static library */
-# define NCURSES_IMPEXP /* nothing */
-# else
-/* linking to the DLL */
-# define NCURSES_IMPEXP __declspec(dllimport)
-# endif
-# define NCURSES_API __cdecl
-# define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
-# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
+#if defined(BUILDING_NCURSES)
+# define NCURSES_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT
+#else
+# define NCURSES_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT
#endif
-/* Take care of non-cygwin platforms */
-#if !defined(NCURSES_IMPEXP)
-# define NCURSES_IMPEXP /* nothing */
-#endif
-#if !defined(NCURSES_API)
-# define NCURSES_API /* nothing */
-#endif
-#if !defined(NCURSES_EXPORT)
-# define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
-#endif
-#if !defined(NCURSES_EXPORT_VAR)
-# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
+#define NCURSES_WRAPPED_VAR(type,name) extern NCURSES_IMPEXP type NCURSES_PUBLIC_VAR(name)(void)
+
+#define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API
+#define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type
+
+/*
+ * These symbols hide dllimport/dllexport, for compilers which care about it.
+ */
+#if defined(__CYGWIN__) || (defined(_WIN32) || defined(_WIN64))
+# if defined(NCURSES_STATIC) /* "static" here only implies "not-a-DLL" */
+# define NCURSES_EXPORT_GENERAL_IMPORT
+# define NCURSES_EXPORT_GENERAL_EXPORT
+# else
+# define NCURSES_EXPORT_GENERAL_IMPORT __declspec(dllimport)
+# define NCURSES_EXPORT_GENERAL_EXPORT __declspec(dllexport)
+# endif
+# define NCURSES_API __cdecl
+#else
+# define NCURSES_EXPORT_GENERAL_IMPORT
+# define NCURSES_EXPORT_GENERAL_EXPORT
+# define NCURSES_API /* FIXME: __attribute__ ((cdecl)) is only available on x86 */
#endif
#endif /* NCURSES_DLL_H_incl */
diff --git a/include/term_entry.h b/include/term_entry.h
index df13f53f49ee..18e4b87aab77 100644
--- a/include/term_entry.h
+++ b/include/term_entry.h
@@ -33,7 +33,7 @@
* and: Thomas E. Dickey 1998-on *
****************************************************************************/
-/* $Id: term_entry.h,v 1.59 2020/02/02 23:34:34 tom Exp $ */
+/* $Id: term_entry.h,v 1.60 2020/02/29 15:46:00 anonymous.maarten Exp $ */
/*
* term_entry.h -- interface to entry-manipulation code
@@ -200,8 +200,8 @@ extern NCURSES_EXPORT(bool) _nc_entry_match (char *, char *);
extern NCURSES_EXPORT(int) _nc_resolve_uses (bool); /* obs 20040705 */
extern NCURSES_EXPORT(int) _nc_resolve_uses2 (bool, bool);
extern NCURSES_EXPORT(void) _nc_free_entries (ENTRY *);
-extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype)(TERMTYPE *); /* obs 20040705 */
-extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE2 *, bool);
+extern NCURSES_IMPEXP void (NCURSES_API *_nc_check_termtype)(TERMTYPE *); /* obs 20040705 */
+extern NCURSES_IMPEXP void (NCURSES_API *_nc_check_termtype2)(TERMTYPE2 *, bool);
/* trace_xnames.c */
extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *);
diff --git a/include/win32_curses.h b/include/win32_curses.h
new file mode 100644
index 000000000000..5babf47d214a
--- /dev/null
+++ b/include/win32_curses.h
@@ -0,0 +1,75 @@
+/****************************************************************************
+ * Copyright 2018,2020 Thomas E. Dickey *
+ * Copyright 2008-2014,2017 Free Software Foundation, Inc. *
+ * *
+ * 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. *
+ ****************************************************************************/
+
+/****************************************************************************
+ * Author: Juergen Pfeifer, 2008-on *
+ ****************************************************************************/
+
+/* $Id: win32_curses.h,v 1.2 2020/11/14 23:52:46 tom Exp $ */
+
+/*
+ * This is the interface we use on Windows to mimic the control of the settings
+ * of what acts like the classic TTY - the Windows Console.
+ */
+
+#if (defined(_WIN32) || defined(_WIN64))
+#ifndef _NC_WIN32_CURSES_H
+#define _NC_WIN32_CURSES_H 1
+
+struct winconmode
+{
+ unsigned long dwFlagIn;
+ unsigned long dwFlagOut;
+};
+
+extern NCURSES_EXPORT(void*) _nc_console_fd2handle(int fd);
+extern NCURSES_EXPORT(int) _nc_console_setmode(void* handle, const struct winconmode* arg);
+extern NCURSES_EXPORT(int) _nc_console_getmode(void* handle, struct winconmode* arg);
+extern NCURSES_EXPORT(int) _nc_console_flush(void* handle);
+
+/*
+ A few definitions of Unix functions we need to emulate
+*/
+#define SIGHUP 1
+#define SIGKILL 9
+
+#undef getlogin
+#define getlogin() getenv("USERNAME")
+
+#undef ttyname
+#define ttyname(fd) NULL
+
+#undef sleep
+#define sleep(n) Sleep((n) * 1000)
+
+#undef gettimeofday
+#define gettimeofday(tv,tz) _nc_gettimeofday(tv,tz)
+
+#endif /* _NC_WIN32_CURSES_H */
+#endif /* _WIN32||_WIN64 */