X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fcurses.priv.h;h=a2e8fb2211c9463b9604291d951378374ceb0d13;hp=973eb998e3fd8119840df419306f7eeadcf68d64;hb=1c2ec25b8186b7973aeb06ec4da6b63656e12f7d;hpb=aabbbcb7892fd946828a4170378b13b9d12435c6 diff --git a/ncurses/curses.priv.h b/ncurses/curses.priv.h index 973eb998..a2e8fb22 100644 --- a/ncurses/curses.priv.h +++ b/ncurses/curses.priv.h @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. * + * Copyright (c) 1998-2007,2008 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.340 2007/09/08 21:44:40 tom Exp $ + * $Id: curses.priv.h,v 1.392 2008/09/20 21:14:11 tom Exp $ * * curses.priv.h * @@ -286,6 +286,15 @@ color_t; #define VIDATTR(attr, pair) vidattr(attr) #endif +#if NCURSES_NO_PADDING +#define GetNoPadding(sp) ((sp) ? (sp)->_no_padding : _nc_prescreen._no_padding) +#define SetNoPadding(sp) _nc_set_no_padding(sp) +extern NCURSES_EXPORT(void) _nc_set_no_padding(SCREEN *); +#else +#define GetNoPadding(sp) FALSE +#define SetNoPadding(sp) /*nothing*/ +#endif + #define WINDOW_ATTRS(w) ((w)->_attrs) #define SCREEN_ATTRS(s) (*((s)->_current_attr)) @@ -293,31 +302,100 @@ color_t; #define SET_SCREEN_PAIR(s,p) SetPair(SCREEN_ATTRS(s), p) #if USE_REENTRANT -#define SET_LINES(value) SP->_LINES = value -#define SET_COLS(value) SP->_COLS = value +NCURSES_EXPORT(int *) _nc_ptr_Lines (void); +NCURSES_EXPORT(int *) _nc_ptr_Cols (void); +#define ptrLines() (SP ? &(SP->_LINES) : &(_nc_prescreen._LINES)) +#define ptrCols() (SP ? &(SP->_COLS) : &(_nc_prescreen._COLS)) +#define SET_LINES(value) *_nc_ptr_Lines() = value +#define SET_COLS(value) *_nc_ptr_Cols() = value #else +#define ptrLines() &LINES +#define ptrCols() &COLS #define SET_LINES(value) LINES = value #define SET_COLS(value) COLS = value #endif +#define TR_MUTEX(data) _tracef("%s@%d: me:%08lX COUNT:%2u/%2d/%6d/%2d/%s%9u: " #data, \ + __FILE__, __LINE__, \ + (unsigned long) (pthread_self()), \ + data.__data.__lock, \ + data.__data.__count, \ + data.__data.__owner, \ + data.__data.__kind, \ + (data.__data.__nusers > 5) ? " OOPS " : "", \ + data.__data.__nusers) +#define TR_GLOBAL_MUTEX(name) TR_MUTEX(_nc_globals.mutex_##name) + #ifdef USE_PTHREADS + #if USE_REENTRANT #include -#define _nc_lock_global(name) pthread_mutex_lock(&_nc_globals.mutex_##name) -#define _nc_unlock_global(name) pthread_mutex_unlock(&_nc_globals.mutex_##name) +extern NCURSES_EXPORT(void) _nc_init_pthreads(void); +extern NCURSES_EXPORT(void) _nc_mutex_init(pthread_mutex_t *); +extern NCURSES_EXPORT(int) _nc_mutex_lock(pthread_mutex_t *); +extern NCURSES_EXPORT(int) _nc_mutex_trylock(pthread_mutex_t *); +extern NCURSES_EXPORT(int) _nc_mutex_unlock(pthread_mutex_t *); +#define _nc_lock_global(name) _nc_mutex_lock(&_nc_globals.mutex_##name) +#define _nc_try_global(name) _nc_mutex_trylock(&_nc_globals.mutex_##name) +#define _nc_unlock_global(name) _nc_mutex_unlock(&_nc_globals.mutex_##name) + #else #error POSIX threads requires --enable-reentrant option #endif -#else + +#if USE_WEAK_SYMBOLS +#if defined(__GNUC__) +# if defined __USE_ISOC99 +# define _cat_pragma(exp) _Pragma(#exp) +# define _weak_pragma(exp) _cat_pragma(weak name) +# else +# define _weak_pragma(exp) +# endif +# define _declare(name) __extension__ extern __typeof__(name) name +# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) +#endif +#endif + +#ifdef USE_PTHREADS +# if USE_WEAK_SYMBOLS +weak_symbol(pthread_sigmask); +weak_symbol(pthread_self); +weak_symbol(pthread_equal); +weak_symbol(pthread_mutex_init); +weak_symbol(pthread_mutex_lock); +weak_symbol(pthread_mutex_unlock); +weak_symbol(pthread_mutex_trylock); +weak_symbol(pthread_mutexattr_settype); +weak_symbol(pthread_mutexattr_init); +extern NCURSES_EXPORT(int) _nc_sigprocmask(int, const sigset_t *, sigset_t *); +# undef sigprocmask +# define sigprocmask _nc_sigprocmask +# endif +#endif + +#if HAVE_NANOSLEEP +#undef HAVE_NANOSLEEP +#define HAVE_NANOSLEEP 0 /* nanosleep suspends all threads */ +#endif + +#else /* !USE_PTHREADS */ + +#define _nc_init_pthreads() /* nothing */ +#define _nc_mutex_init(obj) /* nothing */ + #define _nc_lock_global(name) /* nothing */ +#define _nc_try_global(name) 0 #define _nc_unlock_global(name) /* nothing */ -#endif -#define _nc_lock_screen(name) /* nothing */ -#define _nc_unlock_screen(name) /* nothing */ +#endif /* USE_PTHREADS */ -#define _nc_lock_window(name) /* nothing */ -#define _nc_unlock_window(name) /* nothing */ +#if HAVE_GETTIMEOFDAY +# define PRECISE_GETTIME 1 +# define TimeType struct timeval +#else +# define PRECISE_GETTIME 0 +# define TimeType time_t +#endif /* * Definitions for color pairs @@ -399,6 +477,7 @@ typedef struct _SLK { #endif /* USE_TERMLIB */ typedef struct { + WINDOW *win; /* the window used in the hook */ int line; /* lines to take, < 0 => from bottom*/ int (*hook)(WINDOW *, int); /* callback for user */ } ripoff_t; @@ -477,6 +556,17 @@ typedef struct { size_t size; } TRACEBUF; +/* + * The filesystem database normally uses a single-letter for the lower level + * of directories. Use a hexadecimal code for filesystems which do not + * preserve mixed-case names. + */ +#if MIXEDCASE_FILENAMES +#define LEAF_FMT "%c" +#else +#define LEAF_FMT "%02x" +#endif + /* * TRACEMSE_FMT is no longer than 80 columns, there are 5 numbers that * could at most have 10 digits, and the mask contains no more than 32 bits @@ -510,6 +600,8 @@ typedef struct { char *first_name; char **keyname_table; + int slk_format; + char *safeprint_buf; size_t safeprint_used; @@ -517,6 +609,9 @@ typedef struct { int tgetent_index; long tgetent_sequence; + WINDOWLIST *_nc_windowlist; +#define _nc_windows _nc_globals._nc_windowlist + #if USE_HOME_TERMINFO char *home_terminfo; #endif @@ -543,23 +638,22 @@ typedef struct { char *tracedmp_buf; size_t tracedmp_used; - char tracemse_buf[TRACEMSE_MAX]; - unsigned char *tracetry_buf; size_t tracetry_used; -#ifndef USE_TERMLIB char traceatr_color_buf[2][80]; int traceatr_color_sel; int traceatr_color_last; -#endif /* USE_TERMLIB */ #endif /* TRACE */ #ifdef USE_PTHREADS - pthread_mutex_t mutex_set_SP; - pthread_mutex_t mutex_use_screen; - pthread_mutex_t mutex_windowlist; + pthread_mutex_t mutex_curses; + pthread_mutex_t mutex_tst_tracef; + pthread_mutex_t mutex_tracef; + int nested_tracef; + int use_pthreads; +#define _nc_use_pthreads _nc_globals.use_pthreads #endif } NCURSES_GLOBALS; @@ -568,7 +662,7 @@ extern NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals; #define N_RIPS 5 /* - * Global data which is swept up into a SCREEN when one is created. + * Global data which can be swept up into a SCREEN when one is created. * It may be modified before the next SCREEN is created. */ typedef struct { @@ -579,13 +673,24 @@ typedef struct { ripoff_t *rsp; TPARM_STATE tparm_state; TTY *saved_tty; /* savetty/resetty information */ +#if NCURSES_NO_PADDING + bool _no_padding; /* flag to set if padding disabled */ +#endif #if BROKEN_LINKER || USE_REENTRANT chtype *real_acs_map; int _LINES; int _COLS; + TERMINAL *_cur_term; +#ifdef TRACE + long _outchars; + const char *_tputs_trace; +#endif #endif } NCURSES_PRESCREEN; +#define ripoff_sp _nc_prescreen.rsp +#define ripoff_stack _nc_prescreen.rippedoff + extern NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen; /* @@ -641,7 +746,7 @@ struct screen { int slk_format; /* selected format for this screen */ /* cursor movement costs; units are 10ths of milliseconds */ #if NCURSES_NO_PADDING - int _no_padding; /* flag to set if padding disabled */ + bool _no_padding; /* flag to set if padding disabled */ #endif int _char_padding; /* cost of character put */ int _cr_cost; /* cost of (carriage_return) */ @@ -726,7 +831,7 @@ struct screen { int _maxclick; bool (*_mouse_event) (SCREEN *); bool (*_mouse_inline)(SCREEN *); - bool (*_mouse_parse) (int); + bool (*_mouse_parse) (SCREEN *, int); void (*_mouse_resume)(SCREEN *); void (*_mouse_wrap) (SCREEN *); int _mouse_fd; /* file-descriptor, if any */ @@ -740,6 +845,7 @@ struct screen { bool _mouse_gpm_loaded; bool _mouse_gpm_found; #ifdef HAVE_LIBDL + void *_dlopen_gpm; TYPE_gpm_fd _mouse_gpm_fd; TYPE_Gpm_Open _mouse_Gpm_Open; TYPE_Gpm_Close _mouse_Gpm_Close; @@ -777,12 +883,6 @@ struct screen { * per screen basis. */ struct panelhook _panelHook; - /* - * Linked-list of all windows, to support '_nc_resizeall()' and - * '_nc_freeall()' - */ - WINDOWLIST *_nc_sp_windows; -#define _nc_windows SP->_nc_sp_windows bool _sig_winch; SCREEN *_next_screen; @@ -805,6 +905,15 @@ struct screen { int _TABSIZE; int _LINES; int _COLS; +#ifdef TRACE + long _outchars; + const char *_tputs_trace; +#endif +#endif + +#ifdef TRACE + char tracechr_buf[40]; + char tracemse_buf[TRACEMSE_MAX]; #endif /* * ncurses/ncursesw are the same up to this point. @@ -821,8 +930,9 @@ extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain; extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; WINDOWLIST { - WINDOW win; /* first, so WINDOW_EXT() works */ + WINDOW win; /* first, so WINDOW_EXT() works */ WINDOWLIST *next; + SCREEN *screen; /* screen containing the window */ #ifdef _XOPEN_SOURCE_EXTENDED char addch_work[(MB_LEN_MAX * 9) + 1]; unsigned addch_used; /* number of bytes in addch_work[] */ @@ -895,11 +1005,17 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #endif #ifdef TRACE -#define TRACE_OUTCHARS(n) _nc_outchars += (n); +#if USE_REENTRANT +#define COUNT_OUTCHARS(n) _nc_count_outchars(n); +#else +#define COUNT_OUTCHARS(n) _nc_outchars += (n); +#endif #else -#define TRACE_OUTCHARS(n) /* nothing */ +#define COUNT_OUTCHARS(n) /* nothing */ #endif +#define RESET_OUTCHARS() COUNT_OUTCHARS(-_nc_outchars) + #define UChar(c) ((unsigned char)(c)) #define ChCharOf(c) ((c) & (chtype)A_CHARTEXT) #define ChAttrOf(c) ((c) & (chtype)A_ATTRIBUTES) @@ -909,7 +1025,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #endif #if USE_WIDEC_SUPPORT /* { */ -#define isEILSEQ(status) ((status == (size_t)-1) && (errno == EILSEQ)) +#define isEILSEQ(status) (((size_t)status == (size_t)-1) && (errno == EILSEQ)) #define init_mb(state) memset(&state, 0, sizeof(state)) @@ -922,12 +1038,26 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define NulChar 0,0,0,0 /* FIXME: see CCHARW_MAX */ #define CharOf(c) ((c).chars[0]) #define AttrOf(c) ((c).attr) + #define AddAttr(c,a) AttrOf(c) |= ((a) & A_ATTRIBUTES) #define RemAttr(c,a) AttrOf(c) &= ~((a) & A_ATTRIBUTES) #define SetAttr(c,a) AttrOf(c) = ((a) & A_ATTRIBUTES) | WidecExt(c) + #define NewChar2(c,a) { a, { c, NulChar } NulColor } #define NewChar(ch) NewChar2(ChCharOf(ch), ChAttrOf(ch)) + +#if CCHARW_MAX == 5 +#define CharEq(a,b) (((a).attr == (b).attr) \ + && (a).chars[0] == (b).chars[0] \ + && (a).chars[1] == (b).chars[1] \ + && (a).chars[2] == (b).chars[2] \ + && (a).chars[3] == (b).chars[3] \ + && (a).chars[4] == (b).chars[4] \ + if_EXT_COLORS(&& (a).ext_color == (b).ext_color)) +#else #define CharEq(a,b) (!memcmp(&(a), &(b), sizeof(a))) +#endif + #define SetChar(ch,c,a) do { \ NCURSES_CH_T *_cp = &ch; \ memset(_cp, 0, sizeof(ch)); \ @@ -945,7 +1075,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define PUTC(ch,b) do { if(!isWidecExt(ch)) { \ if (Charable(ch)) { \ fputc(CharOf(ch), b); \ - TRACE_OUTCHARS(1); \ + COUNT_OUTCHARS(1); \ } else { \ PUTC_INIT; \ for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) { \ @@ -961,11 +1091,11 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; } \ fwrite(PUTC_buf, (unsigned) PUTC_n, 1, b); \ } \ - TRACE_OUTCHARS(PUTC_i); \ + COUNT_OUTCHARS(PUTC_i); \ } } } while (0) -#define BLANK { WA_NORMAL, {' '} NulColor } -#define ZEROS { WA_NORMAL, {'\0'} NulColor } +#define BLANK NewChar2(' ', WA_NORMAL) +#define ZEROS NewChar2('\0', WA_NORMAL) #define ISBLANK(ch) ((ch).chars[0] == L' ' && (ch).chars[1] == L'\0') /* @@ -1080,6 +1210,13 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; # endif #endif +/* + * Standardize/simplify common loops + */ +#define each_screen(p) p = _nc_screen_chain; p != 0; p = (p)->_next_screen +#define each_window(p) p = _nc_windows; p != 0; p = (p)->next +#define each_ripoff(p) p = ripoff_stack; (p - ripoff_stack) < N_RIPS; ++p + /* * Prefixes for call/return points of library function traces. We use these to * instrument the public functions so that the traces can be easily transformed @@ -1091,6 +1228,12 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #ifdef TRACE +#if USE_REENTRANT +#define TPUTS_TRACE(s) _nc_set_tputs_trace(s); +#else +#define TPUTS_TRACE(s) _nc_tputs_trace = s; +#endif + #define START_TRACE() \ if ((_nc_tracing & TRACE_MAXIMUM) == 0) { \ int t = _nc_getenv_num("NCURSES_TRACE"); \ @@ -1098,9 +1241,21 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; trace((unsigned) t); \ } -#define TR(n, a) if (_nc_tracing & (n)) _tracef a +/* + * Many of the _tracef() calls use static buffers; lock the trace state before + * trying to fill them. + */ +#if USE_REENTRANT +#define USE_TRACEF(mask) _nc_use_tracef(mask) +extern NCURSES_EXPORT(int) _nc_use_tracef (unsigned); +extern NCURSES_EXPORT(void) _nc_locked_tracef (const char *, ...) GCC_PRINTFLIKE(1,2); +#else +#define USE_TRACEF(mask) (_nc_tracing & (mask)) +#define _nc_locked_tracef _tracef +#endif + +#define TR(n, a) if (USE_TRACEF(n)) _nc_locked_tracef a #define T(a) TR(TRACE_CALLS, a) -#define TPUTS_TRACE(s) _nc_tputs_trace = s; #define TRACE_RETURN(value,type) return _nc_retrace_##type(value) #define returnAttr(code) TRACE_RETURN(code,attr_t) @@ -1130,9 +1285,20 @@ extern NCURSES_EXPORT(const char *) _nc_retrace_cptr (const char *); extern NCURSES_EXPORT(int) _nc_retrace_int (int); extern NCURSES_EXPORT(unsigned) _nc_retrace_unsigned (unsigned); extern NCURSES_EXPORT(void *) _nc_retrace_void_ptr (void *); -extern NCURSES_EXPORT(void) _nc_fifo_dump (void); +extern NCURSES_EXPORT(void) _nc_fifo_dump (SCREEN *); + +#if USE_REENTRANT +NCURSES_WRAPPED_VAR(long, _nc_outchars); +NCURSES_WRAPPED_VAR(const char *, _nc_tputs_trace); +#define _nc_outchars NCURSES_PUBLIC_VAR(_nc_outchars()) +#define _nc_tputs_trace NCURSES_PUBLIC_VAR(_nc_tputs_trace()) +extern NCURSES_EXPORT(void) _nc_set_tputs_trace (const char *); +extern NCURSES_EXPORT(void) _nc_count_outchars (long); +#else extern NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace; extern NCURSES_EXPORT_VAR(long) _nc_outchars; +#endif + extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing; #if USE_WIDEC_SUPPORT @@ -1176,7 +1342,7 @@ extern NCURSES_EXPORT(const char *) _nc_viscbuf (const NCURSES_CH_T *, int); extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *); extern NCURSES_EXPORT(const char *) _nc_visbufn (const char *, int); -#define empty_module(name) \ +#define EMPTY_MODULE(name) \ extern NCURSES_EXPORT(void) name (void); \ NCURSES_EXPORT(void) name (void) { } @@ -1358,17 +1524,20 @@ extern NCURSES_EXPORT(int) _nc_has_mouse (void); /* lib_setup.c */ extern NCURSES_EXPORT(char *) _nc_get_locale(void); extern NCURSES_EXPORT(int) _nc_unicode_locale(void); -extern NCURSES_EXPORT(int) _nc_locale_breaks_acs(void); +extern NCURSES_EXPORT(int) _nc_locale_breaks_acs(TERMINAL *); extern NCURSES_EXPORT(int) _nc_setupterm(NCURSES_CONST char *, int, int *, bool); -extern NCURSES_EXPORT(void) _nc_get_screensize(int *, int *); +extern NCURSES_EXPORT(void) _nc_get_screensize(SCREEN *, int *, int *); /* lib_tstp.c */ #if USE_SIGWINCH -extern NCURSES_EXPORT(int) _nc_handle_sigwinch(int); +extern NCURSES_EXPORT(int) _nc_handle_sigwinch(SCREEN *); #else #define _nc_handle_sigwinch(a) /* nothing */ #endif +/* lib_ungetch.c */ +extern NCURSES_EXPORT(int) _nc_ungetch (SCREEN *, int); + /* lib_wacs.c */ #if USE_WIDEC_SUPPORT extern NCURSES_EXPORT(void) _nc_init_wacs(void); @@ -1403,26 +1572,32 @@ extern NCURSES_EXPORT(int) _nc_remove_key (TRIES **, unsigned); extern NCURSES_EXPORT(int) _nc_remove_string (TRIES **, const char *); /* elsewhere ... */ -extern NCURSES_EXPORT(ENTRY *) _nc_delink_entry(ENTRY *, TERMTYPE *); +extern NCURSES_EXPORT(ENTRY *) _nc_delink_entry (ENTRY *, TERMTYPE *); +extern NCURSES_EXPORT(NCURSES_CONST char *) _nc_keyname (SCREEN *, int); +extern NCURSES_EXPORT(NCURSES_CONST char *) _nc_unctrl (SCREEN *, chtype); +extern NCURSES_EXPORT(SCREEN *) _nc_screen_of (WINDOW *); extern NCURSES_EXPORT(WINDOW *) _nc_makenew (int, int, int, int, int); extern NCURSES_EXPORT(char *) _nc_trace_buf (int, size_t); extern NCURSES_EXPORT(char *) _nc_trace_bufcat (int, const char *); +extern NCURSES_EXPORT(char *) _nc_tracechar (SCREEN *, int); +extern NCURSES_EXPORT(char *) _nc_tracemouse (SCREEN *, MEVENT const *); extern NCURSES_EXPORT(int) _nc_access (const char *, int); extern NCURSES_EXPORT(int) _nc_baudrate (int); extern NCURSES_EXPORT(int) _nc_freewin (WINDOW *); extern NCURSES_EXPORT(int) _nc_getenv_num (const char *); -extern NCURSES_EXPORT(int) _nc_keypad (bool); +extern NCURSES_EXPORT(int) _nc_keypad (SCREEN *, bool); extern NCURSES_EXPORT(int) _nc_ospeed (int); extern NCURSES_EXPORT(int) _nc_outch (int); extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE *const); extern NCURSES_EXPORT(int) _nc_setupscreen (int, int, FILE *, bool, int); -extern NCURSES_EXPORT(int) _nc_timed_wait(int, int, int * EVENTLIST_2nd(_nc_eventlist *)); +extern NCURSES_EXPORT(int) _nc_timed_wait (SCREEN *, int, int, int * EVENTLIST_2nd(_nc_eventlist *)); extern NCURSES_EXPORT(void) _nc_do_color (short, short, bool, int (*)(int)); extern NCURSES_EXPORT(void) _nc_flush (void); -extern NCURSES_EXPORT(void) _nc_free_entry(ENTRY *, TERMTYPE *); +extern NCURSES_EXPORT(void) _nc_free_and_exit (int); +extern NCURSES_EXPORT(void) _nc_free_entry (ENTRY *, TERMTYPE *); extern NCURSES_EXPORT(void) _nc_freeall (void); extern NCURSES_EXPORT(void) _nc_hash_map (void); -extern NCURSES_EXPORT(void) _nc_init_keytry (void); +extern NCURSES_EXPORT(void) _nc_init_keytry (SCREEN *); extern NCURSES_EXPORT(void) _nc_keep_tic_dir (const char *); extern NCURSES_EXPORT(void) _nc_make_oldhash (int i); extern NCURSES_EXPORT(void) _nc_scroll_oldhash (int n, int top, int bot); @@ -1435,9 +1610,11 @@ extern NCURSES_EXPORT(void) _nc_trace_tries (TRIES *); #if NO_LEAKS extern NCURSES_EXPORT(void) _nc_alloc_entry_leaks(void); extern NCURSES_EXPORT(void) _nc_captoinfo_leaks(void); +extern NCURSES_EXPORT(void) _nc_codes_leaks(void); extern NCURSES_EXPORT(void) _nc_comp_captab_leaks(void); extern NCURSES_EXPORT(void) _nc_comp_scan_leaks(void); extern NCURSES_EXPORT(void) _nc_keyname_leaks(void); +extern NCURSES_EXPORT(void) _nc_names_leaks(void); extern NCURSES_EXPORT(void) _nc_tgetent_leaks(void); #endif @@ -1448,15 +1625,11 @@ extern NCURSES_EXPORT(void) _nc_scroll_window (WINDOW *, int const, NCURSES_SIZE #endif #if USE_WIDEC_SUPPORT && !defined(USE_TERMLIB) -#ifdef linux extern NCURSES_EXPORT(size_t) _nc_wcrtomb (char *, wchar_t, mbstate_t *); -#else -#define _nc_wcrtomb(s,wc,ps) wcrtomb(s,wc,ps) -#endif #endif #if USE_SIZECHANGE -extern NCURSES_EXPORT(void) _nc_update_screensize (void); +extern NCURSES_EXPORT(void) _nc_update_screensize (SCREEN *); #endif #if HAVE_RESIZETERM @@ -1512,7 +1685,6 @@ extern NCURSES_EXPORT_VAR(SCREEN *) SP; #define screen_lines SP->_lines #define screen_columns SP->_columns -extern NCURSES_EXPORT_VAR(int) _nc_slk_format; /* != 0 if slk_init() called */ extern NCURSES_EXPORT(int) _nc_slk_initialize (WINDOW *, int); /*