/****************************************************************************
- * Copyright 2018-2019,2020 Thomas E. Dickey *
+ * Copyright 2018-2021,2022 Thomas E. Dickey *
* Copyright 1998-2017,2018 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
/****************************************************************************
* Author: Thomas E. Dickey 1996-on *
****************************************************************************/
-/* $Id: test.priv.h,v 1.187 2020/07/11 23:01:49 tom Exp $ */
+/* $Id: test.priv.h,v 1.201 2022/05/21 20:37:38 tom Exp $ */
#ifndef __TEST_PRIV_H
#define __TEST_PRIV_H 1
#define HAVE_STDINT_H 0
#endif
+#ifndef HAVE_STDNORETURN_H
+#define HAVE_STDNORETURN_H 0
+#endif
+
#ifndef HAVE_STRSTR
#define HAVE_STRSTR 0
#endif
#define HAVE_WINSSTR 0
#endif
+#ifndef HAVE_UNGET_WCH
+#define HAVE_UNGET_WCH 0
+#endif
+
#ifndef HAVE_USE_DEFAULT_COLORS
#define HAVE_USE_DEFAULT_COLORS 0
#endif
#include <curses.h>
#endif
+#if HAVE_STDNORETURN_H && !defined(NCURSES_VERSION)
+#include <stdnoreturn.h>
+#undef GCC_NORETURN
+#define GCC_NORETURN _Noreturn
+#endif
+
+#if !(defined(NCURSES_WGETCH_EVENTS) && defined(NEED_KEY_EVENT))
+#undef KEY_EVENT /* reduce compiler-warnings with Visual C++ */
+#endif
+
#if defined(HAVE_XCURSES) || defined(PDCURSES)
/* no other headers */
#undef HAVE_SETUPTERM /* nonfunctional */
/* workaround, to build against NetBSD's variant of the form library */
#ifdef HAVE_NETBSD_FORM_H
#define form_getyx(form, y, x) y = (int)current_field(form)->cursor_ypos, x = (int)current_field(form)->cursor_xpos
-#else
+#define form_field_row(field) (field)->form_row
+#define form_field_col(field) (field)->form_col
+#else /* e.g., SVr4, ncurses */
#define form_getyx(form, y, x) y = (int)(form)->currow, x = (int)(form)->curcol
+#define form_field_row(field) (field)->frow
+#define form_field_col(field) (field)->fcol
#endif
/* workaround, to build against NetBSD's variant of the form library */
#endif
#if USE_STRING_HACKS && HAVE_SNPRINTF
-#define _nc_SPRINTF NCURSES_VOID snprintf
+#define _nc_SPRINTF NCURSES_VOID (snprintf)
#define _nc_SLIMIT(n) NCURSES_CAST(size_t,n),
#else
-#define _nc_SPRINTF NCURSES_VOID sprintf
+#define _nc_SPRINTF NCURSES_VOID (sprintf)
#define _nc_SLIMIT(n) /* nothing */
#endif
#if defined(NCURSES_VERSION) && HAVE_NC_ALLOC_H
#include <nc_alloc.h>
-#if HAVE_NC_FREEALL && defined(USE_TINFO)
+#if HAVE_EXIT_TERMINFO && !defined(USE_CURSES) && (defined(USE_TERMINFO) || defined(USE_TINFO))
#undef ExitProgram
#define ExitProgram(code) exit_terminfo(code)
+#elif HAVE_EXIT_CURSES
+#undef ExitProgram
+#define ExitProgram(code) exit_curses(code)
#endif
-#else
+#else /* not ncurses-tree */
#define typeMalloc(type,n) (type *) malloc((size_t)(n) * sizeof(type))
#define typeCalloc(type,elts) (type *) calloc((size_t)(elts), sizeof(type))
#define typeRealloc(type,n,p) (type *) realloc(p, (size_t)(n) * sizeof(type))
#define EXIT_FAILURE 1
#endif
-#if defined(_WIN32) || defined(USE_WIN32CON_DRIVER)
+#undef _NC_WINDOWS
+#if (defined(_WIN32) || defined(_WIN64))
+#define _NC_WINDOWS 1
+#endif
+
+#if defined(_NC_WINDOWS) || defined(USE_WIN32CON_DRIVER)
#if defined(PDCURSES)
#ifdef WINVER
#define SIGKILL 9
#define getlogin() "username"
-#elif defined(HAVE_NCURSESW_NCURSES_H)
+#elif defined(EXP_WIN32_DRIVER)
+
+#if defined(HAVE_NCURSESW_NCURSES_H)
+#include <ncursesw/nc_win32.h>
+#elif defined(HAVE_NCURSES_NCURSES_H)
+#include <ncurses/nc_win32.h>
+#else
+#include <nc_win32.h>
+#endif
+
+#else
+
+#if defined(HAVE_NCURSESW_NCURSES_H)
#include <ncursesw/nc_mingw.h>
#elif defined(HAVE_NCURSES_NCURSES_H)
#include <ncurses/nc_mingw.h>
#include <nc_mingw.h>
#endif
+#endif
+
/* conflicts in test/firstlast.c */
#undef large
#undef small
#define InitAndCatch(init,handler) do { init; CATCHALL(handler); } while (0)
#endif
-#if defined(_WIN32) || defined(USE_WIN32CON_DRIVER)
+#if defined(_NC_WINDOWS) || defined(USE_WIN32CON_DRIVER)
#define SetupAlarm(opt) (void)opt
#else
#define SetupAlarm(opt) if (opt) alarm((unsigned)opt)
#define CONST_MENUS /* nothing */
#endif
+#if defined(NCURSES_CONST)
+#define CONST_FMT NCURSES_CONST
+#elif defined(PDCURSES)
+#define CONST_FMT const
+#else
+#define CONST_FMT /* nothing */
+#endif
+
/*
* Simplify setting up demo of threading with these macros.
*/