ncurses 5.9 - patch 20130112
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 13 Jan 2013 02:00:14 +0000 (02:00 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 13 Jan 2013 02:00:14 +0000 (02:00 +0000)
+ correct prototype in manpage for vid_puts.
+ drop ncurses/tty/tty_display.h, ncurses/tty/tty_input.h, since they
  are unused in the current driver model.
+ modify mvcur to use stdout except when called within the ncurses
  library.
+ modify vidattr and vid_attr to use stdout as documented in manpage.
+ amend changes made to buffering in 20120825 so that the low-level
  putp() call uses stdout rather than ncurses' internal buffering.
  The putp_sp() call does the same, for consistency (Redhat #892674).

32 files changed:
MANIFEST
NEWS
dist.mk
man/curs_terminfo.3x
ncurses/base/lib_beep.c
ncurses/base/lib_color.c
ncurses/base/lib_flash.c
ncurses/base/lib_mouse.c
ncurses/base/lib_slkrefr.c
ncurses/curses.priv.h
ncurses/tinfo/lib_acs.c
ncurses/tinfo/lib_options.c
ncurses/tinfo/lib_tputs.c
ncurses/tinfo/tinfo_driver.c
ncurses/tty/lib_mvcur.c
ncurses/tty/lib_vidattr.c
ncurses/tty/tty_display.h [deleted file]
ncurses/tty/tty_update.c
ncurses/widechar/lib_vid_attr.c
package/debian/changelog
package/ncurses.spec
test/blue.c
test/firework.c
test/knight.c
test/modules
test/ncurses.c
test/programs
test/test_vid_puts.c [new file with mode: 0644]
test/test_vidputs.c [moved from ncurses/tty/tty_input.h with 51% similarity]
test/testaddch.c
test/view.c
test/worm.c

index 2bac987034e17cf3413e919973a2a78a28b942d9..5216ad64a518e416574bc9d3536131e8ece832a3 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
 ./ncurses/tty/lib_tstp.c
 ./ncurses/tty/lib_twait.c
 ./ncurses/tty/lib_vidattr.c
-./ncurses/tty/tty_display.h
-./ncurses/tty/tty_input.h
 ./ncurses/tty/tty_update.c
 ./ncurses/wcwidth.h
 ./ncurses/widechar/charable.c
 ./test/test_instr.c
 ./test/test_inwstr.c
 ./test/test_opaque.c
+./test/test_vid_puts.c
+./test/test_vidputs.c
 ./test/testaddch.c
 ./test/testcurs.c
 ./test/testscanw.c
diff --git a/NEWS b/NEWS
index f154f7730b8e3d929f66ee1fd247be9e051958fe..4988f4aa0a6e4ca05c606fe21caa134158422d51 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.2008 2013/01/05 23:28:30 tom Exp $
+-- $Id: NEWS,v 1.2010 2013/01/12 18:12:21 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -45,6 +45,17 @@ See the AUTHORS file for the corresponding full names.
 Changes through 1.9.9e did not credit all contributions;
 it is not possible to add this information.
 
+20130112
+       + correct prototype in manpage for vid_puts.
+       + drop ncurses/tty/tty_display.h, ncurses/tty/tty_input.h, since they
+         are unused in the current driver model.
+       + modify mvcur to use stdout except when called within the ncurses
+         library.
+       + modify vidattr and vid_attr to use stdout as documented in manpage.
+       + amend changes made to buffering in 20120825 so that the low-level
+         putp() call uses stdout rather than ncurses' internal buffering.
+         The putp_sp() call does the same, for consistency (Redhat #892674).
+
 20130105
        + add "-s" option to test/view.c to allow it to start in single-step
          mode, reducing size of trace files when it is used for debugging
diff --git a/dist.mk b/dist.mk
index d59b724276bef1e6f27ad002e7481d03ee166273..f475f10888f86a6d1279192bff36478ee613116f 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -25,7 +25,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: dist.mk,v 1.908 2013/01/05 14:08:17 tom Exp $
+# $Id: dist.mk,v 1.909 2013/01/12 14:34:58 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
@@ -37,7 +37,7 @@ SHELL = /bin/sh
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 5
 NCURSES_MINOR = 9
-NCURSES_PATCH = 20130105
+NCURSES_PATCH = 20130112
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
index 77a1b6bb8a8563d4aeb1e7f088cb77e12eadc4ab..a9c6231be2f2c81e30c5da3e39fd83967fd58f45 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
-.\" Copyright (c) 1999-2010,2011 Free Software Foundation, Inc.              *
+.\" Copyright (c) 1999-2011,2013 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            *
@@ -26,7 +26,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_terminfo.3x,v 1.36 2011/12/17 23:31:40 tom Exp $
+.\" $Id: curs_terminfo.3x,v 1.37 2013/01/12 18:11:40 tom Exp $
 .TH curs_terminfo 3X ""
 .ds n 5
 .na
@@ -77,7 +77,7 @@
 .br
 \fBint vidattr(chtype \fR\fIattrs\fR\fB);\fR
 .br
-\fBint vid_puts(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB, int (*\fR\fIputc\fR\fB)(char));\fR
+\fBint vid_puts(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR
 .br
 \fBint vid_attr(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB);\fR
 .br
index 9d7f7fd96f013e307d76f0ee0bf669ad04a0e6df..4e14cb74a2bfc4c38b842d6772d1c43f7550f677 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,2013 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            *
@@ -46,7 +46,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_beep.c,v 1.15 2009/10/24 22:02:14 tom Exp $")
+MODULE_ID("$Id: lib_beep.c,v 1.16 2013/01/12 17:26:25 tom Exp $")
 
 /*
  *     beep()
@@ -71,12 +71,9 @@ NCURSES_SP_NAME(beep) (NCURSES_SP_DCL0)
     if (cur_term == 0) {
        res = ERR;
     } else if (bell) {
-       TPUTS_TRACE("bell");
-       res = putp(bell);
-       _nc_flush();
+       res = NCURSES_PUTP2_FLUSH("bell", bell);
     } else if (flash_screen) {
-       TPUTS_TRACE("flash_screen");
-       res = putp(flash_screen);
+       res = NCURSES_PUTP2_FLUSH("flash_screen", flash_screen);
        _nc_flush();
     }
 #endif
index 003929871f99fe8962f5313f9ec42ae2d4f67e3f..3339d56fc295b3796eaa7f9e98790dd58c70ac16 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 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            *
@@ -45,7 +45,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_color.c,v 1.106 2012/12/15 19:14:34 tom Exp $")
+MODULE_ID("$Id: lib_color.c,v 1.107 2013/01/12 17:25:36 tom Exp $")
 
 #ifdef USE_TERM_DRIVER
 #define CanChange      InfoOf(SP_PARM).canchange
@@ -264,8 +264,7 @@ reset_color_pair(NCURSES_SP_DCL0)
 
     (void) SP_PARM;
     if (orig_pair != 0) {
-       TPUTS_TRACE("orig_pair");
-       putp(orig_pair);
+       (void) NCURSES_PUTP2("orig_pair", orig_pair);
        result = TRUE;
     }
     return result;
@@ -292,8 +291,7 @@ NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_DCL0)
     result = CallDriver(SP_PARM, rescolors);
 #else
     if (orig_colors != 0) {
-       TPUTS_TRACE("orig_colors");
-       putp(orig_colors);
+       NCURSES_PUTP2("orig_colors", orig_colors);
        result = TRUE;
     }
 #endif
@@ -553,11 +551,11 @@ NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx short pair, short f, short b)
            tp[f].red, tp[f].green, tp[f].blue,
            tp[b].red, tp[b].green, tp[b].blue));
 
-       TPUTS_TRACE("initialize_pair");
-       putp(TPARM_7(initialize_pair,
-                    pair,
-                    tp[f].red, tp[f].green, tp[f].blue,
-                    tp[b].red, tp[b].green, tp[b].blue));
+       NCURSES_PUTP2("initialize_pair",
+                     TPARM_7(initialize_pair,
+                             pair,
+                             tp[f].red, tp[f].green, tp[f].blue,
+                             tp[b].red, tp[b].green, tp[b].blue));
     }
 #endif
 
@@ -615,8 +613,8 @@ NCURSES_SP_NAME(init_color) (NCURSES_SP_DCLx
 #ifdef USE_TERM_DRIVER
        CallDriver_4(SP_PARM, initcolor, color, r, g, b);
 #else
-       TPUTS_TRACE("initialize_color");
-       putp(TPARM_4(initialize_color, color, r, g, b));
+       NCURSES_PUTP2("initialize_color",
+                     TPARM_4(initialize_color, color, r, g, b));
 #endif
        SP_PARM->_color_defs = max(color + 1, SP_PARM->_color_defs);
 
index 2ef9c278d967e2d4f726b02e9976b3d1f84a7026..3520177ea33fbf42b8befce92a3fb978b00b8243 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2011,2013 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            *
@@ -46,7 +46,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_flash.c,v 1.12 2011/05/28 21:53:45 tom Exp $")
+MODULE_ID("$Id: lib_flash.c,v 1.13 2013/01/12 17:26:07 tom Exp $")
 
 /*
  *     flash()
@@ -69,13 +69,9 @@ NCURSES_SP_NAME(flash) (NCURSES_SP_DCL0)
     if (HasTerminal(SP_PARM)) {
        /* FIXME: should make sure that we are not in altchar mode */
        if (flash_screen) {
-           TPUTS_TRACE("flash_screen");
-           res = putp(flash_screen);
-           _nc_flush();
+           res = NCURSES_PUTP2_FLUSH("flash_screen", flash_screen);
        } else if (bell) {
-           TPUTS_TRACE("bell");
-           res = putp(bell);
-           _nc_flush();
+           res = NCURSES_PUTP2_FLUSH("bell", bell);
        }
     }
 #endif
index 6f62120904a0824f80e959bc18ba905631f03f28..e84a964c1ccd63b8920518a3abf472b8ceb9cc9a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 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            *
@@ -84,7 +84,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_mouse.c,v 1.139 2012/07/21 23:30:50 tom Exp $")
+MODULE_ID("$Id: lib_mouse.c,v 1.140 2013/01/12 16:35:34 tom Exp $")
 
 #include <tic.h>
 
@@ -388,9 +388,7 @@ enable_xterm_mouse(SCREEN *sp, int enable)
 #if USE_EMX_MOUSE
     sp->_emxmouse_activated = enable;
 #else
-    NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                              "xterm-mouse",
-                              TPARM_1(sp->_mouse_xtermcap, enable));
+    NCURSES_PUTP2("xterm-mouse", TPARM_1(sp->_mouse_xtermcap, enable));
 #endif
     sp->_mouse_active = enable;
 }
index 2cdc89cc31feb9f72ea0b8f86f7b577f9c8d59f0..6d9fcd63507c75f59cf8be5bb8056df9f29d345c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2010,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 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            *
@@ -43,7 +43,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_slkrefr.c,v 1.28 2012/12/08 22:31:14 tom Exp $")
+MODULE_ID("$Id: lib_slkrefr.c,v 1.29 2013/01/12 17:25:48 tom Exp $")
 
 #ifdef USE_TERM_DRIVER
 #define NumLabels    InfoOf(SP_PARM).numlabels
@@ -100,8 +100,10 @@ slk_intern_refresh(SCREEN *sp)
                    CallDriver_2(sp, hwlabel, i + 1, slk->ent[i].form_text);
 #else
                    if (i < num_labels) {
-                       TPUTS_TRACE("plab_norm");
-                       putp(TPARM_2(plab_norm, i + 1, slk->ent[i].form_text));
+                       NCURSES_PUTP2("plab_norm",
+                                     TPARM_2(plab_norm,
+                                             i + 1,
+                                             slk->ent[i].form_text));
                    }
 #endif
                } else {
@@ -126,11 +128,9 @@ slk_intern_refresh(SCREEN *sp)
        CallDriver_1(sp, hwlabelOnOff, slk->hidden ? FALSE : TRUE);
 #else
        if (slk->hidden) {
-           TPUTS_TRACE("label_off");
-           putp(label_off);
+           NCURSES_PUTP2("label_off", label_off);
        } else {
-           TPUTS_TRACE("label_on");
-           putp(label_on);
+           NCURSES_PUTP2("label_on", label_on);
        }
 #endif
     }
index cebf4ad655373f9bf76d526a5f9cc9b8f296a7cd..2a7b8b7a6b27d1e265f20f7989fb89c5034ca950 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 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.515 2012/12/22 21:20:22 tom Exp $
+ * $Id: curses.priv.h,v 1.521 2013/01/12 21:53:35 tom Exp $
  *
  *     curses.priv.h
  *
@@ -395,11 +395,7 @@ color_t;
 #define SET_WINDOW_PAIR(w,p)   (w)->_color = (p)
 #define SameAttrOf(a,b)                (AttrOf(a) == AttrOf(b) && GetPair(a) == GetPair(b))
 
-#if NCURSES_SP_FUNCS
-#define VIDATTR(sp,attr,pair)  NCURSES_SP_NAME(vid_attr)(sp, attr, (short) pair, 0)
-#else
-#define VIDATTR(sp,attr,pair)  vid_attr(attr, (short) pair, 0)
-#endif
+#define VIDATTR(sp,attr,pair)  NCURSES_SP_NAME(vid_puts)(NCURSES_SP_ARGx attr, (short) pair, 0, NCURSES_OUTC_FUNC)
 
 #else /* !NCURSES_EXT_COLORS */
 
@@ -412,14 +408,14 @@ color_t;
                                WINDOW_ATTRS(w) |= (A_COLOR & (attr_t) ColorPair(p))
 #define SameAttrOf(a,b)                (AttrOf(a) == AttrOf(b))
 
-#if NCURSES_SP_FUNCS
-#define VIDATTR(sp,attr,pair)  NCURSES_SP_NAME(vidattr)(sp, attr)
-#else
-#define VIDATTR(sp,attr,pair)  vidattr(attr)
-#endif
+#define VIDATTR(sp,attr,pair)  NCURSES_SP_NAME(vidputs)(NCURSES_SP_ARGx attr, NCURSES_OUTC_FUNC)
 
 #endif /* NCURSES_EXT_COLORS */
 
+#define NCURSES_OUTC_FUNC       NCURSES_SP_NAME(_nc_outch)
+#define NCURSES_PUTP2(name,value)    NCURSES_SP_NAME(_nc_putp)(NCURSES_SP_ARGx name, value)
+#define NCURSES_PUTP2_FLUSH(name,value)    NCURSES_SP_NAME(_nc_putp_flush)(NCURSES_SP_ARGx name, value)
+
 #if NCURSES_NO_PADDING
 #define GetNoPadding(sp)       ((sp) ? (sp)->_no_padding : _nc_prescreen._no_padding)
 #define SetNoPadding(sp)       _nc_set_no_padding(sp)
@@ -1242,7 +1238,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
     sp->_endwin = TRUE;                         \
     sp->_cursor = -1;                           \
     WindowList(sp) = 0;                         \
-    sp->_outch = NCURSES_SP_NAME(_nc_outch);    \
+    sp->_outch = NCURSES_OUTC_FUNC;             \
     sp->jump = 0                                \
 
 /* usually in <limits.h> */
@@ -1377,7 +1373,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 #define PUTC_INIT      init_mb (PUT_st)
 #define PUTC(ch)       do { if(!isWidecExt(ch)) {                                  \
                        if (Charable(ch)) {                                         \
-                           NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx CharOf(ch)); \
+                           NCURSES_OUTC_FUNC (NCURSES_SP_ARGx CharOf(ch)); \
                            COUNT_OUTCHARS(1);                                      \
                        } else {                                                    \
                            PUTC_INIT;                                              \
@@ -1389,12 +1385,12 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
                                                       (ch).chars[PUTC_i], &PUT_st); \
                                if (PUTC_n <= 0) {                                  \
                                    if (PUTC_ch && is8bits(PUTC_ch) && PUTC_i == 0) \
-                                       NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx CharOf(ch)); \
+                                       NCURSES_OUTC_FUNC (NCURSES_SP_ARGx CharOf(ch)); \
                                    break;                                          \
                                } else {                                            \
                                    int PUTC_j;                                     \
                                    for (PUTC_j = 0; PUTC_j < PUTC_n; ++PUTC_j) {   \
-                                       NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx PUTC_buf[PUTC_j]); \
+                                       NCURSES_OUTC_FUNC (NCURSES_SP_ARGx PUTC_buf[PUTC_j]); \
                                    }                                               \
                                }                                                   \
                            }                                                       \
@@ -1441,7 +1437,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch;
 #define ARG_CH_T       NCURSES_CH_T
 #define CARG_CH_T      NCURSES_CH_T
 #define PUTC_DATA      /* nothing */
-#define PUTC(ch)       NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx (int) ch)
+#define PUTC(ch)       NCURSES_OUTC_FUNC (NCURSES_SP_ARGx (int) ch)
 
 #define BLANK          (' '|A_NORMAL)
 #define ZEROS          ('\0'|A_NORMAL)
@@ -1866,6 +1862,8 @@ extern NCURSES_EXPORT(int) _nc_insert_ch(SCREEN *, WINDOW *, chtype);
 /* lib_mvcur.c */
 #define INFINITY       1000000 /* cost: too high to use */
 
+extern NCURSES_EXPORT(int) _nc_mvcur(int yold, int xold, int ynew, int xnew);
+
 extern NCURSES_EXPORT(void) _nc_mvcur_init (void);
 extern NCURSES_EXPORT(void) _nc_mvcur_resume (void);
 extern NCURSES_EXPORT(void) _nc_mvcur_wrap (void);
@@ -1968,6 +1966,7 @@ extern NCURSES_EXPORT(int) _nc_getenv_num (const char *);
 extern NCURSES_EXPORT(int) _nc_keypad (SCREEN *, int);
 extern NCURSES_EXPORT(int) _nc_ospeed (int);
 extern NCURSES_EXPORT(int) _nc_outch (int);
+extern NCURSES_EXPORT(int) _nc_putchar (int);
 extern NCURSES_EXPORT(int) _nc_putp(const char *, const char *);
 extern NCURSES_EXPORT(int) _nc_putp_flush(const char *, const char *);
 extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE *const);
@@ -2278,7 +2277,7 @@ extern NCURSES_EXPORT(int)      TINFO_MVCUR(SCREEN*, int, int, int, int);
 #else
 #define TINFO_HAS_KEY           NCURSES_SP_NAME(has_key)
 #define TINFO_DOUPDATE          NCURSES_SP_NAME(doupdate)
-#define TINFO_MVCUR             NCURSES_SP_NAME(mvcur)
+#define TINFO_MVCUR             NCURSES_SP_NAME(_nc_mvcur)
 #endif
 
 /*
@@ -2351,7 +2350,9 @@ extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_curs_set)(SCREEN*,int);
 extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_get_tty_mode)(SCREEN*,TTY*);
 extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_mcprint)(SCREEN*,char*, int);
 extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_msec_cost)(SCREEN*, const char *, int);
+extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_mvcur)(SCREEN*, int, int, int, int);
 extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_outch)(SCREEN*, int);
+extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_putchar)(SCREEN*, int);
 extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_putp)(SCREEN*, const char *, const char*);
 extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_putp_flush)(SCREEN*, const char *, const char *);
 extern NCURSES_EXPORT(int)      NCURSES_SP_NAME(_nc_resetty)(SCREEN*);
index d8fdedca843f182569c0eb7e96d13ae633ae66b4..704eda5c9a293c19d86c20b3c424fda13296c1fa 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2010,2013 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            *
@@ -39,7 +39,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_acs.c,v 1.43 2010/12/25 23:00:45 tom Exp $")
+MODULE_ID("$Id: lib_acs.c,v 1.44 2013/01/12 17:24:42 tom Exp $")
 
 #if BROKEN_LINKER || USE_REENTRANT
 #define MyBuffer _nc_prescreen.real_acs_map
@@ -169,8 +169,7 @@ NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_DCL0)
     CallDriver_2(SP_PARM, initacs, real_map, fake_map);
 #else
     if (ena_acs != NULL) {
-       TPUTS_TRACE("ena_acs");
-       putp(ena_acs);
+       NCURSES_PUTP2("ena_acs", ena_acs);
     }
 #if NCURSES_EXT_FUNCS
     /*
index e64b27587fac78d7febefcbf0599abe58c693c80..613c5d04fb3d787f28d117528e71e2f3835245c6 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2011,2013 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            *
@@ -46,7 +46,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_options.c,v 1.72 2011/10/22 16:31:35 tom Exp $")
+MODULE_ID("$Id: lib_options.c,v 1.74 2013/01/12 16:44:17 tom Exp $")
 
 NCURSES_EXPORT(int)
 idlok(WINDOW *win, bool flag)
@@ -165,16 +165,16 @@ meta(WINDOW *win GCC_UNUSED, bool flag)
 #ifdef USE_TERM_DRIVER
        if (IsTermInfo(sp)) {
            if (flag) {
-               NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_on", meta_on);
+               NCURSES_PUTP2("meta_on", meta_on);
            } else {
-               NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_off", meta_off);
+               NCURSES_PUTP2("meta_off", meta_off);
            }
        }
 #else
        if (flag) {
-           NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_on", meta_on);
+           NCURSES_PUTP2("meta_on", meta_on);
        } else {
-           NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_off", meta_off);
+           NCURSES_PUTP2("meta_off", meta_off);
        }
 #endif
        result = OK;
@@ -199,19 +199,16 @@ NCURSES_SP_NAME(curs_set) (NCURSES_SP_DCLx int vis)
            if (!bBuiltIn) {
                switch (vis) {
                case 2:
-                   code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
-                                                           "cursor_visible",
-                                                           cursor_visible);
+                   code = NCURSES_PUTP2_FLUSH("cursor_visible",
+                                              cursor_visible);
                    break;
                case 1:
-                   code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
-                                                           "cursor_normal",
-                                                           cursor_normal);
+                   code = NCURSES_PUTP2_FLUSH("cursor_normal",
+                                              cursor_normal);
                    break;
                case 0:
-                   code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
-                                                           "cursor_invisible",
-                                                           cursor_invisible);
+                   code = NCURSES_PUTP2_FLUSH("cursor_invisible",
+                                              cursor_invisible);
                    break;
                }
            } else
@@ -301,7 +298,7 @@ NCURSES_EXPORT(int)
 NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_DCLx
                                 const char *name, const char *value)
 {
-    int rc = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx name, value);
+    int rc = NCURSES_PUTP2(name, value);
     if (rc != ERR) {
        _nc_flush();
     }
@@ -354,13 +351,9 @@ _nc_keypad(SCREEN *sp, int flag)
                sp->_keypad_on = flag;
 #else
            if (flag) {
-               (void) NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
-                                                       "keypad_xmit",
-                                                       keypad_xmit);
+               (void) NCURSES_PUTP2_FLUSH("keypad_xmit", keypad_xmit);
            } else if (!flag && keypad_local) {
-               (void) NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx
-                                                       "keypad_local",
-                                                       keypad_local);
+               (void) NCURSES_PUTP2_FLUSH("keypad_local", keypad_local);
            }
 
            if (flag && !sp->_tried) {
index 586f2cd0ca5a2d8990bf40d2fcf0feadd7ccd2df..523678210da69211ba893501dd41ac8e6eb68090 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 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            *
@@ -51,7 +51,7 @@
 #include <termcap.h>           /* ospeed */
 #include <tic.h>
 
-MODULE_ID("$Id: lib_tputs.c,v 1.88 2012/12/08 20:01:20 tom Exp $")
+MODULE_ID("$Id: lib_tputs.c,v 1.93 2013/01/12 20:57:32 tom Exp $")
 
 NCURSES_EXPORT_VAR(char) PC = 0;              /* used by termcap library */
 NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0;        /* used by termcap library */
@@ -178,13 +178,48 @@ _nc_outch(int ch)
 }
 #endif
 
+/*
+ * This is used for the putp special case.
+ */
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(_nc_putchar) (NCURSES_SP_DCLx int ch)
+{
+    (void) SP_PARM;
+    return putchar(ch);
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(int)
+_nc_putchar(int ch)
+{
+    return putchar(ch);
+}
+#endif
+
+/*
+ * putp is special - per documentation it calls tputs with putchar as the
+ * parameter for outputting characters.  This means that it uses stdio, which
+ * is not signal-safe.  Applications call this entrypoint; we do not call it
+ * from within the library.
+ */
 NCURSES_EXPORT(int)
 NCURSES_SP_NAME(putp) (NCURSES_SP_DCLx const char *string)
 {
     return NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
-                                  string, 1, NCURSES_SP_NAME(_nc_outch));
+                                  string, 1, NCURSES_SP_NAME(_nc_putchar));
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(int)
+putp(const char *string)
+{
+    return NCURSES_SP_NAME(putp) (CURRENT_SCREEN, string);
 }
+#endif
 
+/*
+ * Use these entrypoints rather than "putp" within the library.
+ */
 NCURSES_EXPORT(int)
 NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_DCLx
                           const char *name GCC_UNUSED,
@@ -194,18 +229,13 @@ NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_DCLx
 
     if (string != 0) {
        TPUTS_TRACE(name);
-       rc = NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx string);
+       rc = NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
+                                    string, 1, NCURSES_SP_NAME(_nc_outch));
     }
     return rc;
 }
 
 #if NCURSES_SP_FUNCS
-NCURSES_EXPORT(int)
-putp(const char *string)
-{
-    return NCURSES_SP_NAME(putp) (CURRENT_SCREEN, string);
-}
-
 NCURSES_EXPORT(int)
 _nc_putp(const char *name, const char *string)
 {
index 0a463082667d7e544a13d8076e1c135a132f924b..7b6abc487998891bce4e21845b5374acd6596166 100644 (file)
@@ -50,7 +50,7 @@
 # endif
 #endif
 
-MODULE_ID("$Id: tinfo_driver.c,v 1.26 2013/01/05 23:25:36 tom Exp $")
+MODULE_ID("$Id: tinfo_driver.c,v 1.29 2013/01/12 22:01:43 tom Exp $")
 
 /*
  * SCO defines TIOCGSIZE and the corresponding struct.  Other systems (SunOS,
@@ -184,22 +184,18 @@ drv_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB, int beepFlag)
     /* FIXME: should make sure that we are not in altchar mode */
     if (beepFlag) {
        if (bell) {
-           res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "bell", bell);
+           res = NCURSES_PUTP2("bell", bell);
            NCURSES_SP_NAME(_nc_flush) (sp);
        } else if (flash_screen) {
-           res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                            "flash_screen",
-                                            flash_screen);
+           res = NCURSES_PUTP2("flash_screen", flash_screen);
            NCURSES_SP_NAME(_nc_flush) (sp);
        }
     } else {
        if (flash_screen) {
-           res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                            "flash_screen",
-                                            flash_screen);
+           res = NCURSES_PUTP2("flash_screen", flash_screen);
            NCURSES_SP_NAME(_nc_flush) (sp);
        } else if (bell) {
-           res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "bell", bell);
+           res = NCURSES_PUTP2("bell", bell);
            NCURSES_SP_NAME(_nc_flush) (sp);
        }
     }
@@ -315,7 +311,7 @@ drv_rescol(TERMINAL_CONTROL_BLOCK * TCB)
     SetSP();
 
     if (orig_pair != 0) {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "orig_pair", orig_pair);
+       NCURSES_PUTP2("orig_pair", orig_pair);
        result = TRUE;
     }
     return result;
@@ -331,7 +327,7 @@ drv_rescolors(TERMINAL_CONTROL_BLOCK * TCB)
     SetSP();
 
     if (orig_colors != 0) {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "orig_colors", orig_colors);
+       NCURSES_PUTP2("orig_colors", orig_colors);
        result = TRUE;
     }
     return result;
@@ -693,12 +689,11 @@ drv_initpair(TERMINAL_CONTROL_BLOCK * TCB, int pair, int f, int b)
            tp[f].red, tp[f].green, tp[f].blue,
            tp[b].red, tp[b].green, tp[b].blue));
 
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                  "initialize_pair",
-                                  TPARM_7(initialize_pair,
-                                          pair,
-                                          tp[f].red, tp[f].green, tp[f].blue,
-                                          tp[b].red, tp[b].green, tp[b].blue));
+       NCURSES_PUTP2("initialize_pair",
+                     TPARM_7(initialize_pair,
+                             pair,
+                             tp[f].red, tp[f].green, tp[f].blue,
+                             tp[b].red, tp[b].green, tp[b].blue));
     }
 }
 
@@ -730,9 +725,8 @@ drv_initcolor(TERMINAL_CONTROL_BLOCK * TCB,
 
     AssertTCB();
     if (initialize_color != NULL) {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                  "initialize_color",
-                                  TPARM_4(initialize_color, color, r, g, b));
+       NCURSES_PUTP2("initialize_color",
+                     TPARM_4(initialize_color, color, r, g, b));
     }
 }
 
@@ -896,7 +890,7 @@ drv_mvcur(TERMINAL_CONTROL_BLOCK * TCB, int yold, int xold, int ynew, int xnew)
 {
     SCREEN *sp = TCB->csp;
     AssertTCB();
-    return TINFO_MVCUR(sp, yold, xold, ynew, xnew);
+    return NCURSES_SP_NAME(_nc_mvcur) (sp, yold, xold, ynew, xnew);
 }
 
 static void
@@ -906,9 +900,8 @@ drv_hwlabel(TERMINAL_CONTROL_BLOCK * TCB, int labnum, char *text)
 
     AssertTCB();
     if (labnum > 0 && labnum <= num_labels) {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                  "plab_norm",
-                                  TPARM_2(plab_norm, labnum, text));
+       NCURSES_PUTP2("plab_norm",
+                     TPARM_2(plab_norm, labnum, text));
     }
 }
 
@@ -919,9 +912,9 @@ drv_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB, int OnFlag)
 
     AssertTCB();
     if (OnFlag) {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "label_on", label_on);
+       NCURSES_PUTP2("label_on", label_on);
     } else {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "label_off", label_off);
+       NCURSES_PUTP2("label_off", label_off);
     }
 }
 
@@ -986,7 +979,7 @@ drv_initacs(TERMINAL_CONTROL_BLOCK * TCB, chtype *real_map, chtype *fake_map)
     AssertTCB();
     assert(sp != 0);
     if (ena_acs != NULL) {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "ena_acs", ena_acs);
+       NCURSES_PUTP2("ena_acs", ena_acs);
     }
 #if NCURSES_EXT_FUNCS
     /*
@@ -1223,7 +1216,7 @@ __nc_putp(SCREEN *sp, const char *name GCC_UNUSED, const char *value)
     int rc = ERR;
 
     if (value) {
-       rc = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx name, value);
+       rc = NCURSES_PUTP2(name, value);
     }
     return rc;
 }
index 78453e35f0db9f89811b6e5d41322cc2d5d4d005..634159dc0fe4762f61c269e70e985be3e4c08b73 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 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            *
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_mvcur.c,v 1.128 2012/12/15 20:59:27 tom Exp $")
+MODULE_ID("$Id: lib_mvcur.c,v 1.131 2013/01/12 22:21:29 tom Exp $")
 
 #define WANT_CHAR(sp, y, x) NewScreen(sp)->_line[y].text[x]    /* desired state */
 
@@ -176,6 +176,9 @@ static bool profiling = FALSE;
 static float diff;
 #endif /* MAIN */
 
+#undef NCURSES_OUTC_FUNC
+#define NCURSES_OUTC_FUNC myOutCh
+
 #define OPT_SIZE 512
 
 static int normalized_cost(NCURSES_SP_DCLx const char *const cap, int affcnt);
@@ -274,10 +277,9 @@ reset_scroll_region(NCURSES_SP_DCL0)
 /* Set the scroll-region to a known state (the default) */
 {
     if (change_scroll_region) {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                  "change_scroll_region",
-                                  TPARM_2(change_scroll_region,
-                                          0, screen_lines(SP_PARM) - 1));
+       NCURSES_PUTP2("change_scroll_region",
+                     TPARM_2(change_scroll_region,
+                             0, screen_lines(SP_PARM) - 1));
     }
 }
 
@@ -290,9 +292,7 @@ NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_DCL0)
 
     /* initialize screen for cursor access */
     if (enter_ca_mode) {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                  "enter_ca_mode",
-                                  enter_ca_mode);
+       NCURSES_PUTP2("enter_ca_mode", enter_ca_mode);
     }
 
     /*
@@ -482,9 +482,7 @@ NCURSES_SP_NAME(_nc_mvcur_wrap) (NCURSES_SP_DCL0)
     }
 
     if (exit_ca_mode) {
-       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                  "exit_ca_mode",
-                                  exit_ca_mode);
+       NCURSES_PUTP2("exit_ca_mode", exit_ca_mode);
     }
     /*
      * Reset terminal's tab counter.  There's a long-time bug that
@@ -944,9 +942,14 @@ onscreen_mvcur(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew, int ovw)
        return (ERR);
 }
 
-NCURSES_EXPORT(int)
-TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
-/* optimized cursor move from (yold, xold) to (ynew, xnew) */
+/*
+ * optimized cursor move from (yold, xold) to (ynew, xnew)
+ */
+static int
+_nc_real_mvcur(NCURSES_SP_DCLx
+              int yold, int xold,
+              int ynew, int xnew,
+              NCURSES_SP_OUTC myOutCh)
 {
     NCURSES_CH_T oldattr;
     int code;
@@ -995,18 +998,14 @@ TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
 
                if (l > 0) {
                    if (carriage_return) {
-                       NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                                  "carriage_return",
-                                                  carriage_return);
+                       NCURSES_PUTP2("carriage_return", carriage_return);
                    } else
                        NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx '\r');
                    xold = 0;
 
                    while (l > 0) {
                        if (newline) {
-                           NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx
-                                                      "newline",
-                                                      newline);
+                           NCURSES_PUTP2("newline", newline);
                        } else
                            NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx '\n');
                        l--;
@@ -1043,13 +1042,63 @@ TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
     returnCode(code);
 }
 
-#if NCURSES_SP_FUNCS && !defined(USE_TERM_DRIVER)
+/*
+ * These entrypoints are used within the library.
+ */
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(_nc_mvcur) (NCURSES_SP_DCLx
+                           int yold, int xold,
+                           int ynew, int xnew)
+{
+    return _nc_real_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew,
+                         NCURSES_SP_NAME(_nc_outch));
+}
+
+#if NCURSES_SP_FUNCS
+NCURSES_EXPORT(int)
+_nc_mvcur(int yold, int xold,
+         int ynew, int xnew)
+{
+    return NCURSES_SP_NAME(_nc_mvcur) (CURRENT_SCREEN, yold, xold, ynew, xnew);
+}
+#endif
+
+#if defined(USE_TERM_DRIVER)
+/*
+ * The terminal driver does not support the external "mvcur()".
+ */
+NCURSES_EXPORT(int)
+TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew)
+{
+    return _nc_real_mvcur(NCURSES_SP_ARGx
+                         yold, xold,
+                         ynew, xnew,
+                         NCURSES_SP_NAME(_nc_outch));
+}
+
+#else /* !USE_TERM_DRIVER */
+
+/*
+ * These entrypoints support users of the library.
+ */
+NCURSES_EXPORT(int)
+NCURSES_SP_NAME(mvcur) (NCURSES_SP_DCLx int yold, int xold, int ynew,
+                       int xnew)
+{
+    return _nc_real_mvcur(NCURSES_SP_ARGx
+                         yold, xold,
+                         ynew, xnew,
+                         NCURSES_SP_NAME(_nc_putchar));
+}
+
+#if NCURSES_SP_FUNCS
 NCURSES_EXPORT(int)
 mvcur(int yold, int xold, int ynew, int xnew)
 {
     return NCURSES_SP_NAME(mvcur) (CURRENT_SCREEN, yold, xold, ynew, xnew);
 }
 #endif
+#endif /* USE_TERM_DRIVER */
 
 #if defined(TRACE) || defined(NCURSES_TEST)
 NCURSES_EXPORT_VAR(int) _nc_optimize_enable = OPTIMIZE_ALL;
index 4e2184bc86826c85629b8d87822b4c85cabeb408..c0a406c5e2050e176df3b0dc8ff53244486f41d1 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2011,2013 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            *
@@ -69,7 +69,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_vidattr.c,v 1.62 2011/05/28 21:22:04 tom Exp $")
+MODULE_ID("$Id: lib_vidattr.c,v 1.63 2013/01/12 18:00:54 tom Exp $")
 
 #define doPut(mode) \
        TPUTS_TRACE(#mode); \
@@ -324,7 +324,7 @@ NCURSES_SP_NAME(vidattr) (NCURSES_SP_DCLx chtype newmode)
     T((T_CALLED("vidattr(%p,%s)"), (void *) SP_PARM, _traceattr(newmode)));
     returnCode(NCURSES_SP_NAME(vidputs) (NCURSES_SP_ARGx
                                         newmode,
-                                        NCURSES_SP_NAME(_nc_outch)));
+                                        NCURSES_SP_NAME(_nc_putchar)));
 }
 
 #if NCURSES_SP_FUNCS
diff --git a/ncurses/tty/tty_display.h b/ncurses/tty/tty_display.h
deleted file mode 100644 (file)
index 4c45a08..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/****************************************************************************
- * Copyright (c) 1998-2003,2004 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            *
- * "Software"), to deal in the Software without restriction, including      *
- * without limitation the rights to use, copy, modify, merge, publish,      *
- * distribute, distribute with modifications, sublicense, and/or sell       *
- * copies of the Software, and to permit persons to whom the Software is    *
- * furnished to do so, subject to the following conditions:                 *
- *                                                                          *
- * The above copyright notice and this permission notice shall be included  *
- * in all copies or substantial portions of the Software.                   *
- *                                                                          *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
- *                                                                          *
- * Except as contained in this notice, the name(s) of the above copyright   *
- * holders shall not be used in advertising or otherwise to promote the     *
- * sale, use or other dealings in this Software without prior written       *
- * authorization.                                                           *
- ************************************************************************** */
-
-#ifndef TTY_DISPLAY_H
-#define TTY_DISPLAY_H 1
-
-/*
- * $Id: tty_display.h,v 1.6 2005/01/01 23:41:12 tom Exp $
- */
-extern NCURSES_EXPORT(bool) _nc_tty_beep (void);
-extern NCURSES_EXPORT(bool) _nc_tty_check_resize (void);
-extern NCURSES_EXPORT(bool) _nc_tty_cursor (int);
-extern NCURSES_EXPORT(bool) _nc_tty_flash (void);
-extern NCURSES_EXPORT(bool) _nc_tty_init_color (int,int,int,int);
-extern NCURSES_EXPORT(bool) _nc_tty_init_pair (int,int,int);
-extern NCURSES_EXPORT(bool) _nc_tty_slk_hide (bool);
-extern NCURSES_EXPORT(bool) _nc_tty_slk_update (int,const char *);
-extern NCURSES_EXPORT(bool) _nc_tty_start_color (void);
-extern NCURSES_EXPORT(void) _nc_tty_display_resume (void);
-extern NCURSES_EXPORT(void) _nc_tty_display_suspend (void);
-extern NCURSES_EXPORT(void) _nc_tty_dispose (void);    /* frees SP->_term */
-extern NCURSES_EXPORT(void) _nc_tty_switch_to (void);
-extern NCURSES_EXPORT(void) _nc_tty_update (void);
-
-struct tty_display_data {
-       int             _fifohold;      /* set if breakout marked           */
-       unsigned long   _current_attr;  /* terminal attribute current set   */
-       int             _cursrow;       /* physical cursor row (-1=unknown) */
-       int             _curscol;       /* physical cursor column           */
-
-       /* cursor movement costs; units are 10ths of milliseconds */
-       int             _char_padding;  /* cost of character put            */
-       int             _cr_cost;       /* cost of (carriage_return)        */
-       int             _cup_cost;      /* cost of (cursor_address)         */
-       int             _home_cost;     /* cost of (cursor_home)            */
-       int             _ll_cost;       /* cost of (cursor_to_ll)           */
-#if USE_HARD_TABS
-       int             _ht_cost;       /* cost of (tab)                    */
-       int             _cbt_cost;      /* cost of (backtab)                */
-#endif /* USE_HARD_TABS */
-       int             _cub1_cost;     /* cost of (cursor_left)            */
-       int             _cuf1_cost;     /* cost of (cursor_right)           */
-       int             _cud1_cost;     /* cost of (cursor_down)            */
-       int             _cuu1_cost;     /* cost of (cursor_up)              */
-       int             _cub_cost;      /* cost of (parm_cursor_left)       */
-       int             _cuf_cost;      /* cost of (parm_cursor_right)      */
-       int             _cud_cost;      /* cost of (parm_cursor_down)       */
-       int             _cuu_cost;      /* cost of (parm_cursor_up)         */
-       int             _hpa_cost;      /* cost of (column_address)         */
-       int             _vpa_cost;      /* cost of (row_address)            */
-       /* used in lib_doupdate.c, must be chars */
-       int             _ed_cost;       /* cost of (clr_eos)                */
-       int             _el_cost;       /* cost of (clr_eol)                */
-       int             _el1_cost;      /* cost of (clr_bol)                */
-       int             _dch1_cost;     /* cost of (delete_character)       */
-       int             _ich1_cost;     /* cost of (insert_character)       */
-       int             _dch_cost;      /* cost of (parm_dch)               */
-       int             _ich_cost;      /* cost of (parm_ich)               */
-       int             _ech_cost;      /* cost of (erase_chars)            */
-       int             _rep_cost;      /* cost of (repeat_char)            */
-       int             _hpa_ch_cost;   /* cost of (column_address)         */
-       int             _cup_ch_cost;   /* cost of (cursor_address)         */
-       int             _smir_cost;     /* cost of (enter_insert_mode)      */
-       int             _rmir_cost;     /* cost of (exit_insert_mode)       */
-       int             _ip_cost;       /* cost of (insert_padding)         */
-       /* used in lib_mvcur.c */
-       char *          _address_cursor;
-       int             _carriage_return_length;
-       int             _cursor_home_length;
-       int             _cursor_to_ll_length;
-
-       chtype          _xmc_suppress;  /* attributes to suppress if xmc     */
-       chtype          _xmc_triggers;  /* attributes to process if xmc      */
-
-       bool            _sig_winch;
-};
-
-
-#define DelCharCost(count) \
-               ((parm_dch != 0) \
-               ? D->_dch_cost \
-               : ((delete_character != 0) \
-                       ? (D->_dch1_cost * count) \
-                       : INFINITY))
-
-#define InsCharCost(count) \
-               ((parm_ich != 0) \
-               ? D->_ich_cost \
-               : ((enter_insert_mode && exit_insert_mode) \
-                 ? D->_smir_cost + D->_rmir_cost + (D->_ip_cost * count) \
-                 : ((insert_character != 0) \
-                   ? ((D->_ich1_cost + D->_ip_cost) * count) \
-                   : INFINITY)))
-
-#if USE_XMC_SUPPORT
-#define UpdateAttrs(c) if (!SameAttrOf(D->_current_attr, AttrOf(c))) { \
-                               attr_t chg = D->_current_attr; \
-                               vidattr(AttrOf(c)); \
-                               if (magic_cookie_glitch > 0 \
-                                && XMC_CHANGES((chg ^ D->_current_attr))) { \
-                                       T(("%s @%d before glitch %d,%d", \
-                                               __FILE__, __LINE__, \
-                                               D->_cursrow, \
-                                               D->_curscol)); \
-                                       _nc_do_xmc_glitch(chg); \
-                               } \
-                       }
-#else
-#define UpdateAttrs(c) if (!SameAttrOf(D->_current_attr, AttrOf(c))) \
-                               vidattr(AttrOf(c));
-#endif
-
-#define XMC_CHANGES(c) ((c) & D->_xmc_suppress)
-
-#endif /* TTY_DISPLAY_H */
index 01feddd9183ae4983d4f21baaaac9c68cf7d4fd4..e9ad69811951f9831895fa162e710dd0f8b85eac 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 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            *
@@ -82,7 +82,7 @@
 
 #include <ctype.h>
 
-MODULE_ID("$Id: tty_update.c,v 1.273 2012/12/22 21:38:17 tom Exp $")
+MODULE_ID("$Id: tty_update.c,v 1.274 2013/01/12 17:24:22 tom Exp $")
 
 /*
  * This define controls the line-breakout optimization.  Every once in a
@@ -145,8 +145,7 @@ position_check(NCURSES_SP_DCLx int expected_y, int expected_x, char *legend)
 
     NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
     memset(buf, '\0', sizeof(buf));
-    NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx "\033[6n"); /* only works on ANSI-compatibles */
-    NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG);
+    NCURSES_PUTP2_FLUSH("cpr", "\033[6n");     /* only works on ANSI-compatibles */
     *(s = buf) = 0;
     do {
        int ask = sizeof(buf) - 1 - (s - buf);
@@ -316,8 +315,7 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch)
 #endif
     SP_PARM->_curscol += chlen;
     if (char_padding) {
-       TPUTS_TRACE("char_padding");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx char_padding);
+       NCURSES_PUTP2("char_padding", char_padding);
     }
 }
 
@@ -388,8 +386,7 @@ PutCharLR(NCURSES_SP_DCLx const ARG_CH_T ch)
        PutAttrChar(NCURSES_SP_ARGx ch);
     } else if (enter_am_mode && exit_am_mode) {
        /* we can suppress automargin */
-       TPUTS_TRACE("exit_am_mode");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_am_mode);
+       NCURSES_PUTP2("exit_am_mode", exit_am_mode);
 
        PutAttrChar(NCURSES_SP_ARGx ch);
        SP_PARM->_curscol--;
@@ -398,8 +395,7 @@ PutCharLR(NCURSES_SP_DCLx const ARG_CH_T ch)
                       SP_PARM->_curscol,
                       "exit_am_mode");
 
-       TPUTS_TRACE("enter_am_mode");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx enter_am_mode);
+       NCURSES_PUTP2("enter_am_mode", enter_am_mode);
     } else if ((enter_insert_mode && exit_insert_mode)
               || insert_character || parm_ich) {
        GoTo(NCURSES_SP_ARGx
@@ -561,8 +557,7 @@ EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T * ntext, int num)
                && runcount > SP_PARM->_ech_cost + SP_PARM->_cup_ch_cost
                && can_clear_with(NCURSES_SP_ARGx CHREF(ntext0))) {
                UpdateAttrs(SP_PARM, ntext0);
-               NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
-                                      TPARM_1(erase_chars, runcount));
+               NCURSES_PUTP2("erase_chars", TPARM_1(erase_chars, runcount));
 
                /*
                 * If this is the last part of the given interval,
@@ -1098,9 +1093,8 @@ ClrToEOL(NCURSES_SP_DCLx NCURSES_CH_T blank, int needclear)
 
     if (needclear) {
        UpdateAttrs(SP_PARM, blank);
-       TPUTS_TRACE("clr_eol");
        if (clr_eol && SP_PARM->_el_cost <= (screen_columns(SP_PARM) - SP_PARM->_curscol)) {
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_eol);
+           NCURSES_PUTP2("clr_eol", clr_eol);
        } else {
            int count = (screen_columns(SP_PARM) - SP_PARM->_curscol);
            while (count-- > 0)
@@ -1366,13 +1360,11 @@ TransformLine(NCURSES_SP_DCLx int const lineno)
                        && SP_PARM->_el_cost <= SP_PARM->_el1_cost) {
                        GoTo(NCURSES_SP_ARGx lineno, 0);
                        UpdateAttrs(SP_PARM, blank);
-                       TPUTS_TRACE("clr_eol");
-                       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_eol);
+                       NCURSES_PUTP2("clr_eol", clr_eol);
                    } else {
                        GoTo(NCURSES_SP_ARGx lineno, nFirstChar - 1);
                        UpdateAttrs(SP_PARM, blank);
-                       TPUTS_TRACE("clr_bol");
-                       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_bol);
+                       NCURSES_PUTP2("clr_bol", clr_bol);
                    }
 
                    while (firstChar < nFirstChar)
@@ -1570,8 +1562,7 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank)
     if (fast_clear) {
        if (clear_screen) {
            UpdateAttrs(SP_PARM, blank);
-           TPUTS_TRACE("clear_screen");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clear_screen);
+           NCURSES_PUTP2("clear_screen", clear_screen);
            SP_PARM->_cursrow = SP_PARM->_curscol = 0;
            position_check(SP_PARM,
                           SP_PARM->_cursrow,
@@ -1591,8 +1582,7 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank)
            UpdateAttrs(SP_PARM, blank);
            for (i = 0; i < screen_lines(SP_PARM); i++) {
                GoTo(NCURSES_SP_ARGx i, 0);
-               TPUTS_TRACE("clr_eol");
-               NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_eol);
+               NCURSES_PUTP2("clr_eol", clr_eol);
            }
            GoTo(NCURSES_SP_ARGx 0, 0);
        }
@@ -1643,27 +1633,22 @@ InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count)
            count--;
        }
     } else if (enter_insert_mode && exit_insert_mode) {
-       TPUTS_TRACE("enter_insert_mode");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx enter_insert_mode);
+       NCURSES_PUTP2("enter_insert_mode", enter_insert_mode);
        while (count) {
            PutAttrChar(NCURSES_SP_ARGx CHREF(*line));
            if (insert_padding) {
-               TPUTS_TRACE("insert_padding");
-               NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_padding);
+               NCURSES_PUTP2("insert_padding", insert_padding);
            }
            line++;
            count--;
        }
-       TPUTS_TRACE("exit_insert_mode");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_insert_mode);
+       NCURSES_PUTP2("exit_insert_mode", exit_insert_mode);
     } else {
        while (count) {
-           TPUTS_TRACE("insert_character");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_character);
+           NCURSES_PUTP2("insert_character", insert_character);
            PutAttrChar(NCURSES_SP_ARGx CHREF(*line));
            if (insert_padding) {
-               TPUTS_TRACE("insert_padding");
-               NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_padding);
+               NCURSES_PUTP2("insert_padding", insert_padding);
            }
            line++;
            count--;
@@ -1697,8 +1682,7 @@ DelChar(NCURSES_SP_DCLx int count)
                                NCURSES_SP_NAME(_nc_outch));
     } else {
        for (n = 0; n < count; n++) {
-           TPUTS_TRACE("delete_character");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_character);
+           NCURSES_PUTP2("delete_character", delete_character);
        }
     }
 }
@@ -1750,13 +1734,11 @@ scroll_csr_forward(NCURSES_SP_DCLx
     if (n == 1 && scroll_forward && top == miny && bot == maxy) {
        GoTo(NCURSES_SP_ARGx bot, 0);
        UpdateAttrs(SP_PARM, blank);
-       TPUTS_TRACE("scroll_forward");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_forward);
+       NCURSES_PUTP2("scroll_forward", scroll_forward);
     } else if (n == 1 && delete_line && bot == maxy) {
        GoTo(NCURSES_SP_ARGx top, 0);
        UpdateAttrs(SP_PARM, blank);
-       TPUTS_TRACE("delete_line");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line);
+       NCURSES_PUTP2("delete_line", delete_line);
     } else if (parm_index && top == miny && bot == maxy) {
        GoTo(NCURSES_SP_ARGx bot, 0);
        UpdateAttrs(SP_PARM, blank);
@@ -1777,15 +1759,13 @@ scroll_csr_forward(NCURSES_SP_DCLx
        GoTo(NCURSES_SP_ARGx bot, 0);
        UpdateAttrs(SP_PARM, blank);
        for (i = 0; i < n; i++) {
-           TPUTS_TRACE("scroll_forward");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_forward);
+           NCURSES_PUTP2("scroll_forward", scroll_forward);
        }
     } else if (delete_line && bot == maxy) {
        GoTo(NCURSES_SP_ARGx top, 0);
        UpdateAttrs(SP_PARM, blank);
        for (i = 0; i < n; i++) {
-           TPUTS_TRACE("delete_line");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line);
+           NCURSES_PUTP2("delete_line", delete_line);
        }
     } else
        return ERR;
@@ -1819,13 +1799,11 @@ scroll_csr_backward(NCURSES_SP_DCLx
     if (n == 1 && scroll_reverse && top == miny && bot == maxy) {
        GoTo(NCURSES_SP_ARGx top, 0);
        UpdateAttrs(SP_PARM, blank);
-       TPUTS_TRACE("scroll_reverse");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_reverse);
+       NCURSES_PUTP2("scroll_reverse", scroll_reverse);
     } else if (n == 1 && insert_line && bot == maxy) {
        GoTo(NCURSES_SP_ARGx top, 0);
        UpdateAttrs(SP_PARM, blank);
-       TPUTS_TRACE("insert_line");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line);
+       NCURSES_PUTP2("insert_line", insert_line);
     } else if (parm_rindex && top == miny && bot == maxy) {
        GoTo(NCURSES_SP_ARGx top, 0);
        UpdateAttrs(SP_PARM, blank);
@@ -1846,15 +1824,13 @@ scroll_csr_backward(NCURSES_SP_DCLx
        GoTo(NCURSES_SP_ARGx top, 0);
        UpdateAttrs(SP_PARM, blank);
        for (i = 0; i < n; i++) {
-           TPUTS_TRACE("scroll_reverse");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_reverse);
+           NCURSES_PUTP2("scroll_reverse", scroll_reverse);
        }
     } else if (insert_line && bot == maxy) {
        GoTo(NCURSES_SP_ARGx top, 0);
        UpdateAttrs(SP_PARM, blank);
        for (i = 0; i < n; i++) {
-           TPUTS_TRACE("insert_line");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line);
+           NCURSES_PUTP2("insert_line", insert_line);
        }
     } else
        return ERR;
@@ -1885,8 +1861,7 @@ scroll_idl(NCURSES_SP_DCLx int n, int del, int ins, NCURSES_CH_T blank)
     GoTo(NCURSES_SP_ARGx del, 0);
     UpdateAttrs(SP_PARM, blank);
     if (n == 1 && delete_line) {
-       TPUTS_TRACE("delete_line");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line);
+       NCURSES_PUTP2("delete_line", delete_line);
     } else if (parm_delete_line) {
        TPUTS_TRACE("parm_delete_line");
        NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
@@ -1895,16 +1870,14 @@ scroll_idl(NCURSES_SP_DCLx int n, int del, int ins, NCURSES_CH_T blank)
                                NCURSES_SP_NAME(_nc_outch));
     } else {                   /* if (delete_line) */
        for (i = 0; i < n; i++) {
-           TPUTS_TRACE("delete_line");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line);
+           NCURSES_PUTP2("delete_line", delete_line);
        }
     }
 
     GoTo(NCURSES_SP_ARGx ins, 0);
     UpdateAttrs(SP_PARM, blank);
     if (n == 1 && insert_line) {
-       TPUTS_TRACE("insert_line");
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line);
+       NCURSES_PUTP2("insert_line", insert_line);
     } else if (parm_insert_line) {
        TPUTS_TRACE("parm_insert_line");
        NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx
@@ -1913,8 +1886,7 @@ scroll_idl(NCURSES_SP_DCLx int n, int del, int ins, NCURSES_CH_T blank)
                                NCURSES_SP_NAME(_nc_outch));
     } else {                   /* if (insert_line) */
        for (i = 0; i < n; i++) {
-           TPUTS_TRACE("insert_line");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line);
+           NCURSES_PUTP2("insert_line", insert_line);
        }
     }
 
@@ -1971,24 +1943,20 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx
                 && (SP_PARM->_cursrow == bot || SP_PARM->_cursrow == bot - 1))
                && save_cursor && restore_cursor) {
                cursor_saved = TRUE;
-               TPUTS_TRACE("save_cursor");
-               NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx save_cursor);
+               NCURSES_PUTP2("save_cursor", save_cursor);
            }
-           TPUTS_TRACE("change_scroll_region");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
-                                  TPARM_2(change_scroll_region, top, bot));
+           NCURSES_PUTP2("change_scroll_region",
+                         TPARM_2(change_scroll_region, top, bot));
            if (cursor_saved) {
-               TPUTS_TRACE("restore_cursor");
-               NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx restore_cursor);
+               NCURSES_PUTP2("restore_cursor", restore_cursor);
            } else {
                SP_PARM->_cursrow = SP_PARM->_curscol = -1;
            }
 
            res = scroll_csr_forward(NCURSES_SP_ARGx n, top, bot, top, bot, blank);
 
-           TPUTS_TRACE("change_scroll_region");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
-                                  TPARM_2(change_scroll_region, 0, maxy));
+           NCURSES_PUTP2("change_scroll_region",
+                         TPARM_2(change_scroll_region, 0, maxy));
            SP_PARM->_cursrow = SP_PARM->_curscol = -1;
        }
 
@@ -2021,15 +1989,12 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx
                    SP_PARM->_cursrow == top - 1)
                && save_cursor && restore_cursor) {
                cursor_saved = TRUE;
-               TPUTS_TRACE("save_cursor");
-               NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx save_cursor);
+               NCURSES_PUTP2("save_cursor", save_cursor);
            }
-           TPUTS_TRACE("change_scroll_region");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
-                                  TPARM_2(change_scroll_region, top, bot));
+           NCURSES_PUTP2("change_scroll_region",
+                         TPARM_2(change_scroll_region, top, bot));
            if (cursor_saved) {
-               TPUTS_TRACE("restore_cursor");
-               NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx restore_cursor);
+               NCURSES_PUTP2("restore_cursor", restore_cursor);
            } else {
                SP_PARM->_cursrow = SP_PARM->_curscol = -1;
            }
@@ -2037,9 +2002,8 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx
            res = scroll_csr_backward(NCURSES_SP_ARGx
                                      -n, top, bot, top, bot, blank);
 
-           TPUTS_TRACE("change_scroll_region");
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
-                                  TPARM_2(change_scroll_region, 0, maxy));
+           NCURSES_PUTP2("change_scroll_region",
+                         TPARM_2(change_scroll_region, 0, maxy));
            SP_PARM->_cursrow = SP_PARM->_curscol = -1;
        }
 
@@ -2110,23 +2074,25 @@ NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_DCL0)
     }
 
     if (exit_attribute_mode)
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_attribute_mode);
+       NCURSES_PUTP2("exit_attribute_mode", exit_attribute_mode);
     else {
        /* turn off attributes */
        if (exit_alt_charset_mode)
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_alt_charset_mode);
+           NCURSES_PUTP2("exit_alt_charset_mode", exit_alt_charset_mode);
        if (exit_standout_mode)
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_standout_mode);
+           NCURSES_PUTP2("exit_standout_mode", exit_standout_mode);
        if (exit_underline_mode)
-           NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_underline_mode);
+           NCURSES_PUTP2("exit_underline_mode", exit_underline_mode);
     }
     if (exit_insert_mode)
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_insert_mode);
-    if (enter_am_mode && exit_am_mode)
-       NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx
-                              (auto_right_margin
-                               ? enter_am_mode
-                               : exit_am_mode));
+       NCURSES_PUTP2("exit_insert_mode", exit_insert_mode);
+    if (enter_am_mode && exit_am_mode) {
+       if (auto_right_margin) {
+           NCURSES_PUTP2("enter_am_mode", enter_am_mode);
+       } else {
+           NCURSES_PUTP2("exit_am_mode", exit_am_mode);
+       }
+    }
 }
 
 #if NCURSES_SP_FUNCS
index 9fc802d78b61bbf058cfb2be015fb78cc80a508e..c752c1d149703e78a8cefe238f4281d592f18d4c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 2002-2011,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 2002-2012,2013 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            *
@@ -36,7 +36,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_vid_attr.c,v 1.16 2012/06/09 20:29:33 tom Exp $")
+MODULE_ID("$Id: lib_vid_attr.c,v 1.17 2013/01/12 18:01:35 tom Exp $")
 
 #define doPut(mode) TPUTS_TRACE(#mode); NCURSES_SP_NAME(tputs)(NCURSES_SP_ARGx mode, 1, outc)
 
@@ -278,7 +278,7 @@ NCURSES_SP_NAME(vid_attr) (NCURSES_SP_DCLx
                                          newmode,
                                          pair,
                                          opts,
-                                         NCURSES_SP_NAME(_nc_outch)));
+                                         NCURSES_SP_NAME(_nc_putchar)));
 }
 
 #if NCURSES_SP_FUNCS
index 6d8b7350a8ec2bae698b1342d01004dcb0bad3a6..54a7f92b83df5cc6365ed5ec1fb9300a95eef457 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (5.9-20130105) unstable; urgency=low
+ncurses6 (5.9-20130112) unstable; urgency=low
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 05 Jan 2013 10:15:33 -0500
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sat, 12 Jan 2013 10:00:42 -0500
 
 ncurses6 (5.9-20120608) unstable; urgency=low
 
index 9f472cfa3dded825db0754901968a3b653b42151..e210d01f8944c068df4468dfd5252d3e32acf8d5 100644 (file)
@@ -1,7 +1,7 @@
 Summary: shared libraries for terminal handling
 Name: ncurses6
 Release: 5.9
-Version: 20130105
+Version: 20130112
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{release}-%{version}.tgz
index dfe6abf1b426d8d711e1ecbaf54170d36f1be17e..dcea13834a20924f60f9aa813d31b4dbd3f792a1 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2009,2013 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            *
@@ -40,7 +40,7 @@
  * results, use the ncurses(3) library.  On non-Intel machines, SVr4 curses is
  * just as good.
  *
- * $Id: blue.c,v 1.33 2009/10/24 21:03:35 tom Exp $
+ * $Id: blue.c,v 1.34 2013/01/13 01:06:17 tom Exp $
  */
 
 #include <test.priv.h>
@@ -202,8 +202,8 @@ printcard(int value)
     if (value == NOCARD)
        (void) addstr("   ");
     else {
-       addch(ranks[value % SUIT_LENGTH][0] | COLOR_PAIR(BLUE_ON_WHITE));
-       addch(ranks[value % SUIT_LENGTH][1] | COLOR_PAIR(BLUE_ON_WHITE));
+       addch(ranks[value % SUIT_LENGTH][0] | (chtype) COLOR_PAIR(BLUE_ON_WHITE));
+       addch(ranks[value % SUIT_LENGTH][1] | (chtype) COLOR_PAIR(BLUE_ON_WHITE));
        addch(suits[value / SUIT_LENGTH]);
     }
     (void) addch(' ');
index 2c409d835a2be32b3a02ba9d8b2e03e8af5623eb..4da069b4cb207c0bd0a9a3054b646392bfae909d 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2010,2013 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            *
@@ -26,7 +26,7 @@
  * authorization.                                                           *
  ****************************************************************************/
 /*
- * $Id: firework.c,v 1.27 2010/11/13 20:58:25 tom Exp $
+ * $Id: firework.c,v 1.28 2013/01/13 01:06:17 tom Exp $
  */
 #include <test.priv.h>
 
@@ -94,14 +94,14 @@ explode(int row, int col)
     showit();
 
     init_pair(1, get_colour(&bold), my_bg);
-    (void) attrset(COLOR_PAIR(1) | bold);
+    (void) attrset((chtype) COLOR_PAIR(1) | bold);
     MvPrintw(row - 1, col - 1, " - ");
     MvPrintw(row + 0, col - 1, "-+-");
     MvPrintw(row + 1, col - 1, " - ");
     showit();
 
     init_pair(1, get_colour(&bold), my_bg);
-    (void) attrset(COLOR_PAIR(1) | bold);
+    (void) attrset((chtype) COLOR_PAIR(1) | bold);
     MvPrintw(row - 2, col - 2, " --- ");
     MvPrintw(row - 1, col - 2, "-+++-");
     MvPrintw(row + 0, col - 2, "-+#+-");
@@ -110,7 +110,7 @@ explode(int row, int col)
     showit();
 
     init_pair(1, get_colour(&bold), my_bg);
-    (void) attrset(COLOR_PAIR(1) | bold);
+    (void) attrset((chtype) COLOR_PAIR(1) | bold);
     MvPrintw(row - 2, col - 2, " +++ ");
     MvPrintw(row - 1, col - 2, "++#++");
     MvPrintw(row + 0, col - 2, "+# #+");
@@ -119,7 +119,7 @@ explode(int row, int col)
     showit();
 
     init_pair(1, get_colour(&bold), my_bg);
-    (void) attrset(COLOR_PAIR(1) | bold);
+    (void) attrset((chtype) COLOR_PAIR(1) | bold);
     MvPrintw(row - 2, col - 2, "  #  ");
     MvPrintw(row - 1, col - 2, "## ##");
     MvPrintw(row + 0, col - 2, "#   #");
@@ -128,7 +128,7 @@ explode(int row, int col)
     showit();
 
     init_pair(1, get_colour(&bold), my_bg);
-    (void) attrset(COLOR_PAIR(1) | bold);
+    (void) attrset((chtype) COLOR_PAIR(1) | bold);
     MvPrintw(row - 2, col - 2, " # # ");
     MvPrintw(row - 1, col - 2, "#   #");
     MvPrintw(row + 0, col - 2, "     ");
index 604be1ec984fa81ab97d0ee5ad9c83e2ecdaa184..91c1ba36bbb805d5523e42376b16e10a624331c5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 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            *
@@ -33,7 +33,7 @@
  * Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995.  Mouse support
  * added September 20th 1995.
  *
- * $Id: knight.c,v 1.33 2012/12/09 00:14:28 tom Exp $
+ * $Id: knight.c,v 1.34 2013/01/13 00:40:33 tom Exp $
  */
 
 #include <test.priv.h>
@@ -123,9 +123,9 @@ init_program(void)
        (void) init_pair(PLUS_COLOR, (short) COLOR_RED, (short) bg);
        (void) init_pair(MINUS_COLOR, (short) COLOR_GREEN, (short) bg);
 
-       trail |= COLOR_PAIR(TRAIL_COLOR);
-       plus |= COLOR_PAIR(PLUS_COLOR);
-       minus |= COLOR_PAIR(MINUS_COLOR);
+       trail |= (chtype) COLOR_PAIR(TRAIL_COLOR);
+       plus |= (chtype) COLOR_PAIR(PLUS_COLOR);
+       minus |= (chtype) COLOR_PAIR(MINUS_COLOR);
     }
 #ifdef NCURSES_MOUSE_VERSION
     (void) mousemask(BUTTON1_CLICKED, (mmask_t *) NULL);
index d9a40905a3eac68394fbe51d68fbfb42f1de93b6..997b5760cd36fd5b5460b28b6bed891310fc95d6 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: modules,v 1.46 2012/12/02 00:50:53 tom Exp $
+# $Id: modules,v 1.47 2013/01/12 22:50:55 tom Exp $
 ##############################################################################
-# Copyright (c) 1998-2010,2012 Free Software Foundation, Inc.                #
+# Copyright (c) 1998-2012,2013 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 "Software"), #
@@ -86,6 +86,8 @@ test_getstr   progs           $(srcdir)       $(HEADER_DEPS)
 test_instr     progs           $(srcdir)       $(HEADER_DEPS)
 test_inwstr    progs           $(srcdir)       $(HEADER_DEPS)
 test_opaque    progs           $(srcdir)       $(HEADER_DEPS)
+test_vid_puts  progs           $(srcdir)       $(HEADER_DEPS)
+test_vidputs   progs           $(srcdir)       $(HEADER_DEPS)
 testaddch      progs           $(srcdir)       $(HEADER_DEPS)
 testcurs       progs           $(srcdir)       $(HEADER_DEPS)
 testscanw      progs           $(srcdir)       $(HEADER_DEPS)
index 15f732964e8b950eb671780afd48b4929ee8bc94..b18205dcac490b6f6adbe081bdb98e808541493a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2011,2012 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2012,2013 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            *
@@ -40,7 +40,7 @@ AUTHOR
    Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
            Thomas E. Dickey (beginning revision 1.27 in 1996).
 
-$Id: ncurses.c,v 1.386 2012/12/29 23:37:55 tom Exp $
+$Id: ncurses.c,v 1.387 2013/01/13 00:40:17 tom Exp $
 
 ***************************************************************************/
 
@@ -3908,7 +3908,7 @@ test_sgr_attributes(void)
        /* Use non-default colors if possible to exercise bce a little */
        if (use_colors) {
            init_pair(1, COLOR_WHITE, COLOR_BLUE);
-           normal |= COLOR_PAIR(1);
+           normal |= (chtype) COLOR_PAIR(1);
        }
        bkgdset(normal);
        erase();
index bfcc134eb9ccc9c7a626771acbdc06f6211ccb4f..477089164a7f035e3295f276b7ccfbc629b510cd 100644 (file)
@@ -1,6 +1,6 @@
-# $Id: programs,v 1.19 2009/09/12 19:44:01 tom Exp $
+# $Id: programs,v 1.21 2013/01/13 00:46:13 tom Exp $
 ##############################################################################
-# Copyright (c) 2006-2008,2009 Free Software Foundation, Inc.                #
+# Copyright (c) 2006-2009,2013 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 "Software"), #
@@ -83,6 +83,8 @@ test_getstr   $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_getstr
 test_instr     $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_instr
 test_inwstr    $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_inwstr
 test_opaque    $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_opaque
+test_vid_puts  $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_vid_puts
+test_vidputs   $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   test_vidputs
 testaddch      $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   testaddch
 testcurs       $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   testcurs
 testscanw      $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   testscanw
diff --git a/test/test_vid_puts.c b/test/test_vid_puts.c
new file mode 100644 (file)
index 0000000..3a2bc82
--- /dev/null
@@ -0,0 +1,148 @@
+/****************************************************************************
+ * Copyright (c) 2013 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            *
+ * "Software"), to deal in the Software without restriction, including      *
+ * without limitation the rights to use, copy, modify, merge, publish,      *
+ * distribute, distribute with modifications, sublicense, and/or sell       *
+ * copies of the Software, and to permit persons to whom the Software is    *
+ * furnished to do so, subject to the following conditions:                 *
+ *                                                                          *
+ * The above copyright notice and this permission notice shall be included  *
+ * in all copies or substantial portions of the Software.                   *
+ *                                                                          *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+ * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+ * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+ *                                                                          *
+ * Except as contained in this notice, the name(s) of the above copyright   *
+ * holders shall not be used in advertising or otherwise to promote the     *
+ * sale, use or other dealings in this Software without prior written       *
+ * authorization.                                                           *
+ ****************************************************************************/
+/*
+ * $Id: test_vid_puts.c,v 1.4 2013/01/13 01:04:14 tom Exp $
+ *
+ * Demonstrate the vid_puts and vid_attr functions.
+ * Thomas Dickey - 2013/01/12
+ */
+
+#define USE_TINFO
+#include <test.priv.h>
+
+#if USE_WIDEC_SUPPORT && HAVE_SETUPTERM
+
+#define valid(s) ((s != 0) && s != (char *)-1)
+
+static FILE *my_fp;
+static bool p_opt = FALSE;
+
+static
+TPUTS_PROTO(outc, c)
+{
+    int rc = c;
+
+    rc = putc(c, my_fp);
+    TPUTS_RETURN(rc);
+}
+
+static bool
+outs(char *s)
+{
+    if (valid(s)) {
+       tputs(s, 1, outc);
+       return TRUE;
+    }
+    return FALSE;
+}
+
+static void
+cleanup(void)
+{
+    outs(exit_attribute_mode);
+    if (!outs(orig_colors))
+       outs(orig_pair);
+    outs(cursor_normal);
+}
+
+static void
+change_attr(chtype attr)
+{
+    if (p_opt) {
+       vid_puts(attr, (short) 0, (void *) 0, outc);
+    } else {
+       vid_attr(attr, (short) 0, (void *) 0);
+    }
+}
+
+static void
+test_vid_puts(void)
+{
+    fprintf(my_fp, "Name: ");
+    change_attr(A_BOLD);
+    fputs("Bold", my_fp);
+    change_attr(A_REVERSE);
+    fputs(" Reverse", my_fp);
+    change_attr(A_NORMAL);
+    fputs("\n", my_fp);
+}
+
+static void
+usage(void)
+{
+    static const char *tbl[] =
+    {
+       "Usage: test_vid_puts [options]"
+       ,""
+       ,"Options:"
+       ,"  -e      use stderr (default stdout)"
+       ,"  -p      use vid_puts (default vid_attr)"
+    };
+    unsigned n;
+    for (n = 0; n < SIZEOF(tbl); ++n)
+       fprintf(stderr, "%s\n", tbl[n]);
+    ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+    int ch;
+
+    my_fp = stdout;
+
+    while ((ch = getopt(argc, argv, "ep")) != -1) {
+       switch (ch) {
+       case 'e':
+           my_fp = stderr;
+           break;
+       case 'p':
+           p_opt = TRUE;
+           break;
+       default:
+           usage();
+           break;
+       }
+    }
+    if (optind < argc)
+       usage();
+
+    setupterm((char *) 0, 1, (int *) 0);
+    test_vid_puts();
+    cleanup();
+    ExitProgram(EXIT_SUCCESS);
+}
+
+#else
+int
+main(void)
+{
+    printf("This program requires the wide-ncurses terminfo library\n");
+    ExitProgram(EXIT_FAILURE);
+}
+#endif
similarity index 51%
rename from ncurses/tty/tty_input.h
rename to test/test_vidputs.c
index e520793eea642dc2d01141bfb6c577dcc64bd3ba..c32f50b7812c9b13eb92f3b3319d144642b978ce 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998,2000 Free Software Foundation, Inc.                   *
+ * Copyright (c) 2013 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            *
  * sale, use or other dealings in this Software without prior written       *
  * authorization.                                                           *
  ****************************************************************************/
-
 /*
- * $Id: tty_input.h,v 1.2 2000/12/10 02:26:51 tom Exp $
+ * $Id: test_vidputs.c,v 1.3 2013/01/13 00:58:54 tom Exp $
+ *
+ * Demonstrate the vidputs and vidattr functions.
+ * Thomas Dickey - 2013/01/12
  */
 
-#ifndef TTY_INPUT_H
-#define TTY_INPUT_H 1
-
-extern NCURSES_EXPORT(bool) _nc_tty_mouse_mask (mmask_t);
-extern NCURSES_EXPORT(bool) _nc_tty_pending (void);
-extern NCURSES_EXPORT(int)  _nc_tty_next_event (int);
-extern NCURSES_EXPORT(void) _nc_tty_flags_changed (void);
-extern NCURSES_EXPORT(void) _nc_tty_flush (void);
-extern NCURSES_EXPORT(void) _nc_tty_input_resume (void);
-extern NCURSES_EXPORT(void) _nc_tty_input_suspend (void);
-
-struct tty_input_data {
-       int             _ifd;           /* input file ptr for screen        */
-       int             _keypad_xmit;   /* current terminal state           */
-       int             _meta_on;       /* current terminal state           */
-
-       /*
-        * These are the data that support the mouse interface.
-        */
-       bool            (*_mouse_event) (SCREEN *);
-       bool            (*_mouse_inline)(SCREEN *);
-       bool            (*_mouse_parse) (int);
-       void            (*_mouse_resume)(SCREEN *);
-       void            (*_mouse_wrap)  (SCREEN *);
-       int             _mouse_fd;      /* file-descriptor, if any */
-       int             mousetype;
-};
-
-#endif /* TTY_INPUT_H */
+#define USE_TINFO
+#include <test.priv.h>
+
+#if HAVE_SETUPTERM
+
+#define valid(s) ((s != 0) && s != (char *)-1)
+
+static FILE *my_fp;
+static bool p_opt = FALSE;
+
+static
+TPUTS_PROTO(outc, c)
+{
+    int rc = c;
+
+    rc = putc(c, my_fp);
+    TPUTS_RETURN(rc);
+}
+
+static bool
+outs(char *s)
+{
+    if (valid(s)) {
+       tputs(s, 1, outc);
+       return TRUE;
+    }
+    return FALSE;
+}
+
+static void
+cleanup(void)
+{
+    outs(exit_attribute_mode);
+    if (!outs(orig_colors))
+       outs(orig_pair);
+    outs(cursor_normal);
+}
+
+static void
+change_attr(chtype attr)
+{
+    if (p_opt) {
+       vidputs(attr, outc);
+    } else {
+       vidattr(attr);
+    }
+}
+
+static void
+test_vidputs(void)
+{
+    fprintf(my_fp, "Name: ");
+    change_attr(A_BOLD);
+    fputs("Bold", my_fp);
+    change_attr(A_REVERSE);
+    fputs(" Reverse", my_fp);
+    change_attr(A_NORMAL);
+    fputs("\n", my_fp);
+}
+
+static void
+usage(void)
+{
+    static const char *tbl[] =
+    {
+       "Usage: test_vidputs [options]"
+       ,""
+       ,"Options:"
+       ,"  -e      use stderr (default stdout)"
+       ,"  -p      use vidputs (default vidattr)"
+    };
+    unsigned n;
+    for (n = 0; n < SIZEOF(tbl); ++n)
+       fprintf(stderr, "%s\n", tbl[n]);
+    ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED)
+{
+    int ch;
+
+    my_fp = stdout;
+
+    while ((ch = getopt(argc, argv, "ep")) != -1) {
+       switch (ch) {
+       case 'e':
+           my_fp = stderr;
+           break;
+       case 'p':
+           p_opt = TRUE;
+           break;
+       default:
+           usage();
+           break;
+       }
+    }
+    if (optind < argc)
+       usage();
+
+    setupterm((char *) 0, 1, (int *) 0);
+    test_vidputs();
+    cleanup();
+    ExitProgram(EXIT_SUCCESS);
+}
+#else
+int
+main(int argc GCC_UNUSED,
+     char *argv[]GCC_UNUSED)
+{
+    fprintf(stderr, "This program requires terminfo\n");
+    exit(EXIT_FAILURE);
+}
+#endif
index d0c36d434b66d2d3710bfcf59f92e325489267f9..f0a476e10e4123ae2bb3e98480727b864b832f7b 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2011,2013 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            *
@@ -29,7 +29,7 @@
  * This is an example written by Alexander V. Lukyanov <lav@yars.free.net>,
  * to demonstrate an inconsistency between ncurses and SVr4 curses.
  *
- * $Id: testaddch.c,v 1.8 2011/04/23 20:13:12 tom Exp $
+ * $Id: testaddch.c,v 1.9 2013/01/13 01:02:41 tom Exp $
  */
 #include <test.priv.h>
 
@@ -72,8 +72,8 @@ main(
     }
     addch('\n');
     for (i = 0; i < 8; i++) {
-       back = (i & 1) ? A_BOLD | 'B' | COLOR_PAIR(1) : ' ';
-       set = (i & 2) ? A_REVERSE | COLOR_PAIR(2) : 0;
+       back = (i & 1) ? (A_BOLD | 'B' | COLOR_PAIR(1)) : ' ';
+       set = (i & 2) ? (A_REVERSE | COLOR_PAIR(2)) : 0;
        attr = (chtype) ((i & 4) ? COLOR_PAIR(4) : 0);
 
        bkgdset(back);
index cf11cbf04cfbddbec443453891c38acfb7fe1390..f775040a8d79018bac73a4719a56b4694b55c90e 100644 (file)
@@ -50,7 +50,7 @@
  * scroll operation worked, and the refresh() code only had to do a
  * partial repaint.
  *
- * $Id: view.c,v 1.90 2013/01/05 23:18:13 tom Exp $
+ * $Id: view.c,v 1.91 2013/01/13 01:00:44 tom Exp $
  */
 
 #include <test.priv.h>
@@ -274,7 +274,7 @@ main(int argc, char *argv[])
        case 'T':
            {
                char *next = 0;
-               int tvalue = strtol(optarg, &next, 0);
+               int tvalue = (int) strtol(optarg, &next, 0);
                if (tvalue < 0 || (next != 0 && *next != 0))
                    usage();
                trace((unsigned) tvalue);
index f64911c632cf053ee612e642ba41a3d704d7eb71..0d2209915c96654b7f0706291b098556227ff9e0 100644 (file)
@@ -61,7 +61,7 @@ Options:
   traces will be dumped.  The program stops and waits for one character of
   input at the beginning and end of the interval.
 
-  $Id: worm.c,v 1.62 2012/12/15 18:32:40 tom Exp $
+  $Id: worm.c,v 1.63 2013/01/13 01:00:11 tom Exp $
 */
 
 #include <test.priv.h>
@@ -502,7 +502,7 @@ main(int argc, char *argv[])
 
 #define SET_COLOR(num, fg) \
            init_pair(num+1, (short) fg, (short) bg); \
-           flavor[num] |= COLOR_PAIR(num+1) | A_BOLD
+           flavor[num] |= (chtype) COLOR_PAIR(num+1) | A_BOLD
 
        SET_COLOR(0, COLOR_GREEN);
        SET_COLOR(1, COLOR_RED);