]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - ncurses/curses.priv.h
ncurses 6.1 - patch 20191012
[ncurses.git] / ncurses / curses.priv.h
index e7af5822fcdd309370ebd60c065bf861e452d682..f619c5c967e5bcb4fed445108e1165febd737066 100644 (file)
@@ -34,7 +34,7 @@
  ****************************************************************************/
 
 /*
- * $Id: curses.priv.h,v 1.621 2019/05/04 20:29:09 tom Exp $
+ * $Id: curses.priv.h,v 1.625 2019/07/28 18:32:05 tom Exp $
  *
  *     curses.priv.h
  *
@@ -482,7 +482,14 @@ typedef union {
 #define SET_WINDOW_PAIR(w,p)   (w)->_color = (p)
 #define SameAttrOf(a,b)                (AttrOf(a) == AttrOf(b) && GetPair(a) == GetPair(b))
 
-#define VIDATTR(sp,attr,pair)  NCURSES_SP_NAME(vid_puts)(NCURSES_SP_ARGx attr, (NCURSES_PAIRS_T) pair, 0, NCURSES_OUTC_FUNC)
+#define VIDPUTS(sp,attr,pair)  do { \
+                                   int vid_pair = pair; \
+                                   NCURSES_SP_NAME(vid_puts)( \
+                                       NCURSES_SP_ARGx attr, \
+                                       (NCURSES_PAIRS_T) pair, \
+                                       &vid_pair, \
+                                       NCURSES_OUTC_FUNC); \
+                               } while (0)
 
 #else /* !NCURSES_EXT_COLORS */
 
@@ -495,7 +502,7 @@ typedef union {
                                WINDOW_ATTRS(w) |= ColorPair(p)
 #define SameAttrOf(a,b)                (AttrOf(a) == AttrOf(b))
 
-#define VIDATTR(sp,attr,pair)  NCURSES_SP_NAME(vidputs)(NCURSES_SP_ARGx attr, NCURSES_OUTC_FUNC)
+#define VIDPUTS(sp,attr,pair)  NCURSES_SP_NAME(vidputs)(NCURSES_SP_ARGx attr, NCURSES_OUTC_FUNC)
 
 #endif /* NCURSES_EXT_COLORS */
 
@@ -1759,12 +1766,16 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 #define TPUTS_TRACE(s) _nc_tputs_trace = s;
 #endif
 
+#ifdef HAVE_CONSISTENT_GETENV
 #define START_TRACE() \
        if ((_nc_tracing & TRACE_MAXIMUM) == 0) { \
            int t = _nc_getenv_num("NCURSES_TRACE"); \
            if (t >= 0) \
                trace((unsigned) t); \
        }
+#else
+#define START_TRACE() /* nothing */
+#endif
 
 /*
  * Many of the _tracef() calls use static buffers; lock the trace state before
@@ -1951,7 +1962,7 @@ extern    NCURSES_EXPORT(void) name (void); \
 #if USE_XMC_SUPPORT
 #define UpdateAttrs(sp,c) if (!SameAttrOf(SCREEN_ATTRS(sp), c)) { \
                                attr_t chg = AttrOf(SCREEN_ATTRS(sp)); \
-                               VIDATTR(sp, AttrOf(c), GetPair(c)); \
+                               VIDPUTS(sp, AttrOf(c), GetPair(c)); \
                                if (magic_cookie_glitch > 0 \
                                 && XMC_CHANGES((chg ^ AttrOf(SCREEN_ATTRS(sp))))) { \
                                        T(("%s @%d before glitch %d,%d", \
@@ -1963,7 +1974,7 @@ extern    NCURSES_EXPORT(void) name (void); \
                        }
 #else
 #define UpdateAttrs(sp,c) if (!SameAttrOf(SCREEN_ATTRS(sp), c)) { \
-                                   VIDATTR(sp, AttrOf(c), GetPair(c)); \
+                                   VIDPUTS(sp, AttrOf(c), GetPair(c)); \
                        }
 #endif
 
@@ -2167,18 +2178,20 @@ extern NCURSES_EXPORT(int)    _nc_ripoffline(int, int(*)(WINDOW*, int));
 
 #define SETUP_FAIL ERR
 
-#define ret_error(code, fmt, arg)      if (errret) {\
-                                           *errret = code;\
+#define ret_error(rc, fmt, p, q)       if (errret) {\
+                                           *errret = rc;\
+                                           q;\
                                            returnCode(SETUP_FAIL);\
                                        } else {\
-                                           fprintf(stderr, fmt, arg);\
+                                           fprintf(stderr, fmt, p);\
+                                           q;\
                                            ExitTerminfo(EXIT_FAILURE);\
                                        }
 
-#define ret_error1(code, fmt, arg)     ret_error(code, "'%s': " fmt, arg)
+#define ret_error1(rc, fmt, p, q)      ret_error(rc, "'%s': " fmt, p, q)
 
-#define ret_error0(code, msg)          if (errret) {\
-                                           *errret = code;\
+#define ret_error0(rc, msg)            if (errret) {\
+                                           *errret = rc;\
                                            returnCode(SETUP_FAIL);\
                                        } else {\
                                            fprintf(stderr, msg);\