X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fcurses.priv.h;h=67a85920e268bbf4ece12953156338d3843f251e;hp=2a7b8b7a6b27d1e265f20f7989fb89c5034ca950;hb=34d602f272c394e9a980438e636e1ce4d355f83b;hpb=a1e63be290fce9e589bc57c9f753be09e8ac0cc7 diff --git a/ncurses/curses.priv.h b/ncurses/curses.priv.h index 2a7b8b7a..67a85920 100644 --- a/ncurses/curses.priv.h +++ b/ncurses/curses.priv.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc. * + * Copyright (c) 1998-2013,2014 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 * @@ -34,7 +34,7 @@ ****************************************************************************/ /* - * $Id: curses.priv.h,v 1.521 2013/01/12 21:53:35 tom Exp $ + * $Id: curses.priv.h,v 1.537 2014/05/03 21:20:12 tom Exp $ * * curses.priv.h * @@ -86,6 +86,12 @@ extern "C" { #include +#if defined __hpux +# ifndef EILSEQ +# define EILSEQ 47 +# endif +#endif + #ifndef PATH_MAX # if defined(_POSIX_PATH_MAX) # define PATH_MAX _POSIX_PATH_MAX @@ -173,6 +179,18 @@ extern int errno; #define USE_SIGWINCH 0 #endif +/* + * When building in the MSYS2 environment, the automatic discovery of + * the path separator in configure doesn't work properly. So, if building + * for MinGW, we enforce the correct Windows PATH separator + */ +#ifdef __MINGW32__ +# ifdef NCURSES_PATHSEP +# undef NCURSES_PATHSEP +# endif +# define NCURSES_PATHSEP ';' +#endif + /* * If desired, one can configure this, disabling environment variables that * point to custom terminfo/termcap locations. @@ -184,6 +202,17 @@ extern int errno; extern NCURSES_EXPORT(int) _nc_env_access (void); #endif +/* + * Not all platforms have memmove; some have an equivalent bcopy. (Some may + * have neither). + */ +#if USE_OK_BCOPY +#define memmove(d,s,n) bcopy(s,d,n) +#elif USE_MY_MEMMOVE +#define memmove(d,s,n) _nc_memmove(d,s,n) +extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t); +#endif + /* * If we have va_copy(), use it for assigning va_list's. */ @@ -271,14 +300,6 @@ typedef TRIES { * Structure for palette tables */ -typedef struct -{ - short red, green, blue; /* what color_content() returns */ - short r, g, b; /* params to init_color() */ - int init; /* true if we called init_color() */ -} -color_t; - #define MAXCOLUMNS 135 #define MAXLINES 66 #define FIFO_SIZE MAXCOLUMNS+2 /* for nocbreak mode input */ @@ -303,6 +324,14 @@ color_t; #include /* we'll use -Ipath directive to get the right one! */ +typedef struct +{ + NCURSES_COLOR_T red, green, blue; /* what color_content() returns */ + NCURSES_COLOR_T r, g, b; /* params to init_color() */ + int init; /* true if we called init_color() */ +} +color_t; + /* * If curses.h did not expose the SCREEN-functions, then we do not need the * parameter in the corresponding unextended functions. @@ -333,7 +362,7 @@ color_t; #define HasTerminal(sp) (((sp) != 0) && (0 != ((sp)->_term))) #define IsValidScreen(sp) (HasTerminal(sp) && !IsPreScreen(sp)) -#if BROKEN_LINKER || USE_REENTRANT +#if USE_REENTRANT #define CurTerm _nc_prescreen._cur_term #else #define CurTerm cur_term @@ -362,6 +391,16 @@ color_t; #include +/* + * Simplify ifdef's for the "*_ATTR" macros in case italics are not configured. + */ +#ifdef A_ITALIC +#define USE_ITALIC 1 +#else +#define USE_ITALIC 0 +#define A_ITALIC 0 +#endif + /* * Use these macros internally, to make tracing less verbose. But leave the * option for compiling the tracing into the library. @@ -818,6 +857,7 @@ typedef struct { char *first_name; char **keyname_table; + int init_keyname; int slk_format; @@ -1071,6 +1111,9 @@ struct screen { /* used in lib_vidattr.c */ bool _use_rmso; /* true if we may use 'rmso' */ bool _use_rmul; /* true if we may use 'rmul' */ +#if USE_ITALIC + bool _use_ritm; /* true if we may use 'ritm' */ +#endif #if USE_KLIBC_KBD bool _extended_key; /* true if an extended key */ @@ -1316,8 +1359,8 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define UChar(c) ((unsigned char)(c)) #define UShort(c) ((unsigned short)(c)) -#define ChCharOf(c) ((c) & (chtype)A_CHARTEXT) -#define ChAttrOf(c) ((c) & (chtype)A_ATTRIBUTES) +#define ChCharOf(c) ((chtype)(c) & (chtype)A_CHARTEXT) +#define ChAttrOf(c) ((chtype)(c) & (chtype)A_ATTRIBUTES) #ifndef MB_LEN_MAX #define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */ @@ -1686,7 +1729,9 @@ extern NCURSES_EXPORT(void) name (void); \ NCURSES_EXPORT(void) name (void) { } #define ALL_BUT_COLOR ((chtype)~(A_COLOR)) -#define NONBLANK_ATTR (A_NORMAL|A_BOLD|A_DIM|A_BLINK) +#define NONBLANK_ATTR (A_BOLD | A_DIM | A_BLINK | A_ITALIC) +#define TPARM_ATTR (A_STANDOUT | A_UNDERLINE | A_REVERSE | A_BLINK | A_DIM | A_BOLD | A_ALTCHARSET | A_INVIS | A_PROTECT) +#define XMC_CONFLICT (A_STANDOUT | A_UNDERLINE | A_REVERSE | A_BLINK | A_DIM | A_BOLD | A_INVIS | A_PROTECT | A_ITALIC) #define XMC_CHANGES(c) ((c) & SP_PARM->_xmc_suppress) #define toggle_attr_on(S,at) {\ @@ -2085,8 +2130,6 @@ extern NCURSES_EXPORT_VAR(int *) _nc_oldnums; #define USE_SETBUF_0 0 -#define NC_BUFFERED(sp,flag) NCURSES_SP_NAME(_nc_set_buffer)(NCURSES_SP_ARGx sp->_ofp, flag) - #define NC_OUTPUT(sp) ((sp != 0) ? sp->_ofp : stdout) /* @@ -2169,7 +2212,6 @@ extern NCURSES_EXPORT(int) _nc_get_tty_mode(TTY *); sp->jump = outc #ifdef USE_TERM_DRIVER -typedef void* TERM_HANDLE; typedef struct _termInfo { @@ -2195,48 +2237,46 @@ typedef struct _termInfo typedef struct term_driver { bool isTerminfo; - bool (*CanHandle)(struct DriverTCB*, const char*, int*); - void (*init)(struct DriverTCB*); - void (*release)(struct DriverTCB*); - int (*size)(struct DriverTCB*, int* Line, int *Cols); - int (*sgmode)(struct DriverTCB*, int setFlag, TTY*); - chtype (*conattr)(struct DriverTCB*); - int (*hwcur)(struct DriverTCB*, int yold, int xold, int y, int x); - int (*mode)(struct DriverTCB*, int progFlag, int defFlag); - bool (*rescol)(struct DriverTCB*); - bool (*rescolors)(struct DriverTCB*); - void (*color)(struct DriverTCB*, int fore, int color, int(*)(SCREEN*, int)); - int (*doBeepOrFlash)(struct DriverTCB*, int); - void (*initpair)(struct DriverTCB*, int, int, int); - void (*initcolor)(struct DriverTCB*, int, int, int, int); - void (*docolor)(struct DriverTCB*, int, int, int, int(*)(SCREEN*, int)); - void (*initmouse)(struct DriverTCB*); - int (*testmouse)(struct DriverTCB*, int EVENTLIST_2nd(_nc_eventlist*)); - void (*setfilter)(struct DriverTCB*); - void (*hwlabel)(struct DriverTCB*, int, char*); - void (*hwlabelOnOff)(struct DriverTCB*, int); - int (*update)(struct DriverTCB*); - int (*defaultcolors)(struct DriverTCB*, int, int); - int (*print)(struct DriverTCB*, char*, int); - int (*getsize)(struct DriverTCB*, int*, int*); - int (*setsize)(struct DriverTCB*, int, int); - void (*initacs)(struct DriverTCB*, chtype*, chtype*); - void (*scinit)(SCREEN *); - void (*scexit)(SCREEN *); - int (*twait)(struct DriverTCB*, int, int, int* EVENTLIST_2nd(_nc_eventlist*)); - int (*read)(struct DriverTCB*, int*); - int (*nap)(struct DriverTCB*, int); - int (*kpad)(struct DriverTCB*, int); - int (*kyOk)(struct DriverTCB*, int, int); - bool (*kyExist)(struct DriverTCB*, int); + const char* (*td_name)(struct DriverTCB*); + bool (*td_CanHandle)(struct DriverTCB*, const char*, int*); + void (*td_init)(struct DriverTCB*); + void (*td_release)(struct DriverTCB*); + int (*td_size)(struct DriverTCB*, int* Line, int *Cols); + int (*td_sgmode)(struct DriverTCB*, int setFlag, TTY*); + chtype (*td_conattr)(struct DriverTCB*); + int (*td_hwcur)(struct DriverTCB*, int yold, int xold, int y, int x); + int (*td_mode)(struct DriverTCB*, int progFlag, int defFlag); + bool (*td_rescol)(struct DriverTCB*); + bool (*td_rescolors)(struct DriverTCB*); + void (*td_color)(struct DriverTCB*, int fore, int color, int(*)(SCREEN*, int)); + int (*td_doBeepOrFlash)(struct DriverTCB*, int); + void (*td_initpair)(struct DriverTCB*, int, int, int); + void (*td_initcolor)(struct DriverTCB*, int, int, int, int); + void (*td_docolor)(struct DriverTCB*, int, int, int, int(*)(SCREEN*, int)); + void (*td_initmouse)(struct DriverTCB*); + int (*td_testmouse)(struct DriverTCB*, int EVENTLIST_2nd(_nc_eventlist*)); + void (*td_setfilter)(struct DriverTCB*); + void (*td_hwlabel)(struct DriverTCB*, int, char*); + void (*td_hwlabelOnOff)(struct DriverTCB*, int); + int (*td_update)(struct DriverTCB*); + int (*td_defaultcolors)(struct DriverTCB*, int, int); + int (*td_print)(struct DriverTCB*, char*, int); + int (*td_getsize)(struct DriverTCB*, int*, int*); + int (*td_setsize)(struct DriverTCB*, int, int); + void (*td_initacs)(struct DriverTCB*, chtype*, chtype*); + void (*td_scinit)(SCREEN *); + void (*td_scexit)(SCREEN *); + int (*td_twait)(struct DriverTCB*, int, int, int* EVENTLIST_2nd(_nc_eventlist*)); + int (*td_read)(struct DriverTCB*, int*); + int (*td_nap)(struct DriverTCB*, int); + int (*td_kpad)(struct DriverTCB*, int); + int (*td_kyOk)(struct DriverTCB*, int, int); + bool (*td_kyExist)(struct DriverTCB*, int); } TERM_DRIVER; typedef struct DriverTCB { TERMINAL term; /* needs to be the first Element !!! */ - TERM_HANDLE inp; /* The input handle of the Terminal */ - TERM_HANDLE out; /* The output handle of the Terminal in shell mode */ - TERM_HANDLE hdl; /* The output handle of the Terminal in prog mode */ TERM_DRIVER* drv; /* The driver for that Terminal */ SCREEN* csp; /* The screen that owns that Terminal */ TerminalInfo info; /* Driver independent core capabilities of the Terminal */ @@ -2306,17 +2346,41 @@ extern NCURSES_EXPORT(void) _nc_get_screensize(SCREEN *, int *, int *); #ifdef __MINGW32__ #include extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_WIN_DRIVER; +extern NCURSES_EXPORT(int) _nc_mingw_isatty(int fd); +extern NCURSES_EXPORT(int) _nc_mingw_isconsole(int fd); +extern NCURSES_EXPORT(int) _nc_mingw_console_read( + SCREEN *sp, + HANDLE fd, + int *buf); +extern NCURSES_EXPORT(int) _nc_mingw_testmouse( + SCREEN * sp, + HANDLE fd, + int delay); +#else #endif extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_TINFO_DRIVER; #endif +#if defined(USE_TERM_DRIVER) && defined(__MINGW32__) +#define NC_ISATTY(fd) _nc_mingw_isatty(fd) +#else +#define NC_ISATTY(fd) isatty(fd) +#endif + #ifdef USE_TERM_DRIVER -#define IsTermInfo(sp) (TCBOf(sp) && ((TCBOf(sp)->drv->isTerminfo))) +# define IsTermInfo(sp) ((TCBOf(sp) != 0) && ((TCBOf(sp)->drv->isTerminfo))) +# define HasTInfoTerminal(sp) ((0 != TerminalOf(sp)) && IsTermInfo(sp)) +# ifdef __MINGW32__ +# define IsTermInfoOnConsole(sp) (IsTermInfo(sp)&&_nc_mingw_isconsole(TerminalOf(sp)->Filedes)) +#else +# define IsTermInfoOnConsole(sp) FALSE +# endif #else -#define IsTermInfo(sp) TRUE +# define IsTermInfo(sp) TRUE +# define HasTInfoTerminal(sp) (0 != TerminalOf(sp)) +# define IsTermInfoOnConsole(sp) FALSE #endif -#define HasTInfoTerminal(sp) ((0 != TerminalOf(sp)) && IsTermInfo(sp)) #define IsValidTIScreen(sp) (HasTInfoTerminal(sp)) /* @@ -2366,7 +2430,7 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_set_tty_mode)(SCREEN*, TTY*) extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_setupscreen)(SCREEN**, int, int, FILE *, int, int); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_tgetent)(SCREEN*,char*,const char *); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_tigetnum)(SCREEN*,NCURSES_CONST char*); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vid_attr)(SCREEN *, attr_t, short, void *); +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vid_attr)(SCREEN *, attr_t, NCURSES_COLOR_T, void *); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vidputs)(SCREEN*,chtype,int(*) (SCREEN*, int)); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_color)(SCREEN*, int, int, int, NCURSES_SP_OUTC); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_xmc_glitch)(SCREEN*, attr_t);