X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fcurses.priv.h;h=1f5507b2a02a25d926ff237de409ffd5fa016e78;hp=444ad558ba244a045f65067bd7366e4e9e271448;hb=fb24ca09eab8f14b9be7ea60acf174aae46df43d;hpb=8fc9fa113b27e0749e0840fef04c9d4acad4aae7 diff --git a/ncurses/curses.priv.h b/ncurses/curses.priv.h index 444ad558..1f5507b2 100644 --- a/ncurses/curses.priv.h +++ b/ncurses/curses.priv.h @@ -35,7 +35,7 @@ /* - * $Id: curses.priv.h,v 1.436 2009/08/30 18:13:54 tom Exp $ + * $Id: curses.priv.h,v 1.442 2009/10/31 20:33:43 tom Exp $ * * curses.priv.h * @@ -196,11 +196,10 @@ extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t); /* * Options for terminal drivers, etc... */ -#if 0 +#ifdef USE_TERM_DRIVER #define USE_SP_RIPOFF 1 #define USE_SP_TERMTYPE 1 #define USE_SP_WINDOWLIST 1 -#define USE_TERM_DRIVER 1 #endif /* @@ -969,9 +968,6 @@ struct screen { bool _nc_sp_idlok; bool _nc_sp_idcok; -#define _nc_idlok SP_PARM->_nc_sp_idlok -#define _nc_idcok SP_PARM->_nc_sp_idcok - /* * These are the data that support the mouse interface. */ @@ -1261,7 +1257,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; putc(PUTC_ch,b); \ break; \ } \ - fwrite(PUTC_buf, (unsigned) PUTC_n, 1, b); \ + IGNORE_RC(fwrite(PUTC_buf, (unsigned) PUTC_n, 1, b)); \ } \ COUNT_OUTCHARS(PUTC_i); \ } } } while (0) @@ -1504,6 +1500,15 @@ extern NCURSES_EXPORT(const char *) _nc_viscbuf (const NCURSES_CH_T *, int); #endif /* TRACE/!TRACE */ +/* + * Workaround for defective implementation of gcc attribute warn_unused_result + */ +#if defined(__GNUC__) && defined(_FORTIFY_SOURCE) +#define IGNORE_RC(func) errno = func +#else +#define IGNORE_RC(func) (void) func +#endif /* gcc workarounds */ + /* * Return-codes for tgetent() and friends. */ @@ -1714,6 +1719,7 @@ extern NCURSES_EXPORT(char *) _nc_get_locale(void); extern NCURSES_EXPORT(int) _nc_unicode_locale(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_tinfo_cmdch(TERMINAL *, char); /* lib_set_term.c */ extern NCURSES_EXPORT(int) _nc_ripoffline(int, int(*)(WINDOW*, int)); @@ -1812,6 +1818,10 @@ extern NCURSES_EXPORT(int) _nc_waddch_nosync (WINDOW *, const NCURSES_CH_T); extern NCURSES_EXPORT(void) _nc_scroll_window (WINDOW *, int const, NCURSES_SIZE_T const, NCURSES_SIZE_T const, NCURSES_CH_T); #endif +#if USE_WIDEC_SUPPORT +extern NCURSES_EXPORT(int) _nc_insert_wch(WINDOW *, const cchar_t *); +#endif + #if USE_WIDEC_SUPPORT && !defined(USE_TERMLIB) extern NCURSES_EXPORT(size_t) _nc_wcrtomb (char *, wchar_t, mbstate_t *); #endif @@ -1833,6 +1843,26 @@ extern NCURSES_EXPORT(int) _nc_eventlist_timeout(_nc_eventlist *); #define wgetnstr_events(win, str, maxlen, evl) wgetnstr(win, str, maxlen) #endif +/* + * Wide-character macros to hide some platform-differences. + */ +#if USE_WIDEC_SUPPORT +#if HAVE_MBTOWC && HAVE_MBLEN +#define reset_mbytes(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0)) +#define count_mbytes(buffer,length,state) mblen(buffer,length) +#define check_mbytes(wch,buffer,length,state) \ + (int) mbtowc(&wch, buffer, length) +#define state_unused +#elif HAVE_MBRTOWC && HAVE_MBRLEN +#define reset_mbytes(state) init_mb(state) +#define count_mbytes(buffer,length,state) mbrlen(buffer,length,&state) +#define check_mbytes(wch,buffer,length,state) \ + (int) mbrtowc(&wch, buffer, length, &state) +#else +make an error +#endif +#endif + /* * Not everyone has vsscanf(), but we'd like to use it for scanw(). */ @@ -1868,7 +1898,7 @@ extern NCURSES_EXPORT_VAR(SCREEN *) SP; #define _nc_set_screen(sp) SP = sp #endif -#if NCURSES_SP_FUNCS && 0 +#if NCURSES_SP_FUNCS #define CURRENT_SCREEN_PRE (IsPreScreen(CURRENT_SCREEN) ? CURRENT_SCREEN : new_prescr()) #else #define CURRENT_SCREEN_PRE CURRENT_SCREEN