diff options
Diffstat (limited to 'test/test.priv.h')
| -rw-r--r-- | test/test.priv.h | 176 | 
1 files changed, 158 insertions, 18 deletions
diff --git a/test/test.priv.h b/test/test.priv.h index 6913b25d14ca..a901185b8df0 100644 --- a/test/test.priv.h +++ b/test/test.priv.h @@ -1,5 +1,5 @@  /**************************************************************************** - * Copyright 2018-2019,2020 Thomas E. Dickey                                * + * Copyright 2018-2023,2024 Thomas E. Dickey                                *   * Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *   *                                                                          *   * Permission is hereby granted, free of charge, to any person obtaining a  * @@ -30,7 +30,7 @@  /****************************************************************************   *  Author: Thomas E. Dickey                    1996-on                     *   ****************************************************************************/ -/* $Id: test.priv.h,v 1.191 2020/09/12 23:54:42 tom Exp $ */ +/* $Id: test.priv.h,v 1.218 2024/02/10 14:40:03 tom Exp $ */  #ifndef __TEST_PRIV_H  #define __TEST_PRIV_H 1 @@ -67,22 +67,18 @@  #define HAVE_ASSUME_DEFAULT_COLORS 0  #endif -#ifndef HAVE_BSD_STRING_H -#define HAVE_BSD_STRING_H 0 -#endif - -#ifndef HAVE_CURSES_VERSION -#define HAVE_CURSES_VERSION 0 -#endif - -#ifndef HAVE_CURSCR -#define HAVE_CURSCR 0 +#ifndef HAVE_CFMAKERAW +#define HAVE_CFMAKERAW 0  #endif  #ifndef HAVE_CHGAT  #define HAVE_CHGAT 0  #endif +#ifndef HAVE_CLOCK_GETTIME +#define HAVE_CLOCK_GETTIME 0 +#endif +  #ifndef HAVE_COLOR_CONTENT  #define HAVE_COLOR_CONTENT 0  #endif @@ -95,6 +91,18 @@  #define HAVE_COLOR_SET 0  #endif +#ifndef HAVE_BSD_STRING_H +#define HAVE_BSD_STRING_H 0 +#endif + +#ifndef HAVE_CURSES_VERSION +#define HAVE_CURSES_VERSION 0 +#endif + +#ifndef HAVE_CURSCR +#define HAVE_CURSCR 0 +#endif +  #ifndef HAVE_DELSCREEN  #define HAVE_DELSCREEN 0  #endif @@ -123,6 +131,10 @@  #define HAVE_GETMAXX 0  #endif +#ifndef HAVE_GETTIMEOFDAY +#define HAVE_GETTIMEOFDAY 0 +#endif +  #ifndef HAVE_GETOPT_H  #define HAVE_GETOPT_H 0  #endif @@ -163,6 +175,10 @@  #define HAVE_LOCALE_H 0  #endif +#ifndef HAVE_MATH_FUNCS +#define HAVE_MATH_FUNCS 0 +#endif +  #ifndef HAVE_MATH_H  #define HAVE_MATH_H 0  #endif @@ -243,6 +259,10 @@  #define HAVE_STDINT_H 0  #endif +#ifndef HAVE_STDNORETURN_H +#define HAVE_STDNORETURN_H 0 +#endif +  #ifndef HAVE_STRSTR  #define HAVE_STRSTR 0  #endif @@ -283,6 +303,18 @@  #define HAVE_TIGETSTR 0  #endif +#ifndef HAVE_TIPARM +#define HAVE_TIPARM 0 +#endif + +#ifndef HAVE_TIPARM_S +#define HAVE_TIPARM_S 0 +#endif + +#ifndef HAVE_TISCAN_S +#define HAVE_TISCAN_S 0 +#endif +  #ifndef HAVE_TPUTS_SP  #define HAVE_TPUTS_SP 0  #endif @@ -299,6 +331,10 @@  #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 @@ -355,6 +391,10 @@  #define NO_LEAKS 0  #endif +#ifndef HAVE__NC_TPARM_ANALYZE +#define HAVE__NC_TPARM_ANALYZE 0 +#endif +  /*   * Workaround for HPUX   */ @@ -391,6 +431,12 @@  #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 @@ -441,6 +487,13 @@ extern int optind;  #include <assert.h>  #include <ctype.h> +#if HAVE_STDINT_H +#include <stdint.h> +#define my_intptr_t	intptr_t +#else +#define my_intptr_t	long +#endif +  #if defined(_MSC_VER)  #undef popen  #define popen(s,n) _popen(s,n) @@ -539,8 +592,12 @@ extern int optind;  /* 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 */ @@ -685,6 +742,48 @@ extern int optind;  #define HELP_KEY_1	'?'  #define HELP_KEY_2	KEY_F(1) +/* our "standard" options for getopt, needed for help2man */ +#define OPTS_USAGE	'h' +#define OPTS_VERSION	'V' +#define OPTS_COMMON	"hV" +#define USAGE_COMMON	\ + "Common options:"\ +," -h       show this message"\ +," -V       show version of curses" + +#if HAVE_CURSES_VERSION +#define format_version(buffer, size) strcpy(buffer, curses_version()) +#elif defined(NCURSES_VERSION_MAJOR) && defined(NCURSES_VERSION_MINOR) && defined(NCURSES_VERSION_PATCH) +#define format_version(buffer, size) \ +	_nc_SPRINTF(buffer, _nc_SLIMIT(size) "ncurses %d.%d.%d", \ +		    NCURSES_VERSION_MAJOR, \ +		    NCURSES_VERSION_MINOR, \ +		    NCURSES_VERSION_PATCH) +#else +#define format_version(buffer, size) strcpy(buffer, "ncurses-examples") +#endif + +#define VERSION_COMMON() \ +static char *version_common(char **argv) { \ +	char *base = argv[0]; \ +	char *part = strrchr(base, '/'); \ +	size_t need = strlen(base) + 80; \ +	char *result = malloc(need); \ +	if (result != NULL) { \ +	    if (part++ == NULL) part = base; \ +	    _nc_SPRINTF(result, _nc_SLIMIT(need) "%.20s: ", part); \ +	    format_version(result + strlen(result), need - strlen(result)); \ +	} \ +	return result; \ +} \ +static void show_version(char **argv) { \ +	char *value = version_common(argv); \ +	if (value != NULL) { \ +	    puts(value); \ +	    free(value); \ +	} \ +} +  /* from nc_string.h, to make this stand alone */  #if HAVE_BSD_STRING_H  #include <bsd/string.h> @@ -708,10 +807,18 @@ extern int optind;  #define HAVE_SNPRINTF 0  #endif +#ifndef HAVE_STRDUP +#define HAVE_STRDUP 0 +#endif +  #ifndef USE_STRING_HACKS  #define USE_STRING_HACKS 0  #endif +#ifndef HAVE_STRSTR +#define HAVE_STRSTR 0 +#endif +  #ifndef NCURSES_CAST  #ifdef __cplusplus  extern "C" { @@ -738,10 +845,10 @@ extern "C" {  #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 @@ -910,15 +1017,20 @@ extern int TABSIZE;  #define UChar(c)    ((unsigned char)(c)) +#ifndef SIZEOF  #define SIZEOF(table)	(sizeof(table)/sizeof(table[0])) +#endif  #if defined(NCURSES_VERSION) && HAVE_NC_ALLOC_H  #include <nc_alloc.h> -#if HAVE_EXIT_TERMINFO && 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)) @@ -999,6 +1111,26 @@ extern int TABSIZE;  #endif  #endif +#if HAVE_CLOCK_GETTIME +# define GetClockTime(t) clock_gettime(CLOCK_REALTIME, t) +# define TimeType struct timespec +# define TimeScale 1000000000L	/* 1e9 */ +# define ElapsedSeconds(b,e) \ +	    (double) (((e)->tv_sec - (b)->tv_sec) \ +		    + ((e)->tv_nsec - (b)->tv_nsec) / TimeScale) +#elif HAVE_GETTIMEOFDAY +# define GetClockTime(t) gettimeofday(t, 0) +# define TimeType struct timeval +# define TimeScale 1000000L	/* 1e6 */ +# define ElapsedSeconds(b,e) \ +	    (double) (((e)->tv_sec - (b)->tv_sec) \ +		    + ((e)->tv_usec - (b)->tv_usec) / TimeScale) +#else +# define TimeType time_t +# define GetClockTime(t) time((time_t*)0) +# define ElapsedSeconds(b,e) (double)((e) - (b)) +#endif +  /*   * Ultrix 3.1   */ @@ -1135,6 +1267,14 @@ extern char *tgoto(char *, int, int);	/* available, but not prototyped */  #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.   */ @@ -1159,7 +1299,7 @@ extern char *tgoto(char *, int, int);	/* available, but not prototyped */  #define WANT_USE_SCREEN() extern void _nc_want_use_screen(void)  #endif -#if defined(TRACE) && HAVE__TRACEF +#if defined(TRACE) && HAVE__TRACEF && HAVE_CURSES_TRACE  #define Trace(p) _tracef p  #define USE_TRACE 1  #define START_TRACE() \  | 
