ncurses 6.0 - patch 20171028
authorThomas E. Dickey <dickey@invisible-island.net>
Sun, 29 Oct 2017 00:35:34 +0000 (00:35 +0000)
committerThomas E. Dickey <dickey@invisible-island.net>
Sun, 29 Oct 2017 00:35:34 +0000 (00:35 +0000)
+ improve man/curs_inwstr.3x, correct end-logic for lib_inwstr.c
  (report by Midolikawa H).
+ fix typo in a few places for "improvements" (patch by Sven Joachim).
+ clear the other half of a double-width character on which a line
  drawing character is drawn.
+ make test/ncurses.c "s" test easier to understand which subtests are
  available; add a "S" wide-character overlap test-screen.
+ modify test/ncurses.c C/c tests to allow for extended color pairs.
+ add endwin() call in error-returns from test/ncurses.c omitted in
  recent redesign of its menu (cf: 20170923).
+ improve install of hashed-db by removing the ".db" file as done for
  directory-tree terminal databases.
+ repair a few overlooked items in include/ncurses_defs from recent
  port/refactoring of test-programs (cf: 20170909).
+ add test/padview.c, to compare pads with direct updates in view.c

49 files changed:
MANIFEST
NEWS
VERSION
dist.mk
doc/html/man/adacurses6-config.1.html
doc/html/man/captoinfo.1m.html
doc/html/man/clear.1.html
doc/html/man/curs_inch.3x.html
doc/html/man/curs_inwstr.3x.html
doc/html/man/form.3x.html
doc/html/man/infocmp.1m.html
doc/html/man/infotocap.1m.html
doc/html/man/menu.3x.html
doc/html/man/ncurses.3x.html
doc/html/man/ncurses6-config.1.html
doc/html/man/panel.3x.html
doc/html/man/tabs.1.html
doc/html/man/terminfo.5.html
doc/html/man/tic.1m.html
doc/html/man/toe.1m.html
doc/html/man/tput.1.html
doc/html/man/tset.1.html
include/ncurses_defs
man/curs_inch.3x
man/curs_inwstr.3x
misc/run_tic.in
ncurses/base/lib_box.c
ncurses/base/lib_color.c
ncurses/base/lib_hline.c
ncurses/base/lib_pad.c
ncurses/base/lib_vline.c
ncurses/tinfo/make_hash.c
ncurses/widechar/lib_inwstr.c
package/debian-mingw/changelog
package/debian-mingw64/changelog
package/debian/changelog
package/mingw-ncurses.nsi
package/mingw-ncurses.spec
package/ncurses.spec
test/README
test/dots.c
test/dots_curses.c
test/dots_mvcur.c
test/dots_termcap.c
test/modules
test/ncurses.c
test/padview.c [new file with mode: 0644]
test/programs
test/view.c

index 86d38eb4e72f2caf1a8db58f66d0ee89e1446a1f..a5b6aac7e2810b47bf460ffeb01bb8c0b484d15e 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
 ./test/package/debian/watch
 ./test/package/mingw-ncurses-examples.spec
 ./test/package/ncurses-examples.spec
 ./test/package/debian/watch
 ./test/package/mingw-ncurses-examples.spec
 ./test/package/ncurses-examples.spec
+./test/padview.c
 ./test/picsmap.c
 ./test/popup_msg.c
 ./test/popup_msg.h
 ./test/picsmap.c
 ./test/popup_msg.c
 ./test/popup_msg.h
diff --git a/NEWS b/NEWS
index b023262db99191b27b634f111bcb5c66f1e3d014..fdc81b1d34d6722a04fb0266462af115e99127ac 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: NEWS,v 1.2979 2017/10/21 20:29:16 tom Exp $
+-- $Id: NEWS,v 1.2991 2017/10/28 23:46:30 tom Exp $
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
 -------------------------------------------------------------------------------
 
 This is a log of changes that ncurses has gone through since Zeyd started
@@ -45,6 +45,23 @@ 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.
 
 Changes through 1.9.9e did not credit all contributions;
 it is not possible to add this information.
 
+20171028
+       + improve man/curs_inwstr.3x, correct end-logic for lib_inwstr.c
+         (report by Midolikawa H).
+       + fix typo in a few places for "improvements" (patch by Sven Joachim).
+       + clear the other half of a double-width character on which a line
+         drawing character is drawn.
+       + make test/ncurses.c "s" test easier to understand which subtests are
+         available; add a "S" wide-character overlap test-screen.
+       + modify test/ncurses.c C/c tests to allow for extended color pairs.
+       + add endwin() call in error-returns from test/ncurses.c omitted in
+         recent redesign of its menu (cf: 20170923).
+       + improve install of hashed-db by removing the ".db" file as done for
+         directory-tree terminal databases.
+       + repair a few overlooked items in include/ncurses_defs from recent
+         port/refactoring of test-programs (cf: 20170909).
+       + add test/padview.c, to compare pads with direct updates in view.c
+
 20171021
        + modify test/view.c to expand tabs using the ncurses library rather
          than in the test-program.
 20171021
        + modify test/view.c to expand tabs using the ncurses library rather
          than in the test-program.
@@ -2742,7 +2759,7 @@ it is not possible to add this information.
        + regenerated html manpages.
 
 20120107
        + regenerated html manpages.
 
 20120107
-       + various improvments for MinGW (Juergen Pfeifer):
+       + various improvements for MinGW (Juergen Pfeifer):
          + modify stat() calls to ignore the st_size member
          + drop mk-dlls.sh script.
          + change recommended regular expression library.
          + modify stat() calls to ignore the st_size member
          + drop mk-dlls.sh script.
          + change recommended regular expression library.
@@ -5193,7 +5210,7 @@ it is not possible to add this information.
        + fix ifdef in c++/internal.h for QNX 6.1
        + test-compiled with (old) egcs-1.1.2, modified configure script to
          not unset the $CXX and related variables which would prevent this.
        + fix ifdef in c++/internal.h for QNX 6.1
        + test-compiled with (old) egcs-1.1.2, modified configure script to
          not unset the $CXX and related variables which would prevent this.
-       + fix a few terminfo.src typos exposed by improvments to "-f" option.
+       + fix a few terminfo.src typos exposed by improvements to "-f" option.
        + improve infocmp/tic "-f" option formatting.
 
 20060923
        + improve infocmp/tic "-f" option formatting.
 
 20060923
diff --git a/VERSION b/VERSION
index 3161a8d1f8dd59a403d558cce596d6a72e8b2016..7914d5b249457b57d5e702167fb65bf5b403ad2b 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5:0:9  6.0     20171021
+5:0:9  6.0     20171028
diff --git a/dist.mk b/dist.mk
index 71921f343b69aaa3a096b11cb464eef4bfc26ffe..04eef89b998ec485aa99c4884136d847a9fe5a8e 100644 (file)
--- a/dist.mk
+++ b/dist.mk
@@ -25,7 +25,7 @@
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
 # use or other dealings in this Software without prior written               #
 # authorization.                                                             #
 ##############################################################################
-# $Id: dist.mk,v 1.1188 2017/10/15 14:51:52 tom Exp $
+# $Id: dist.mk,v 1.1189 2017/10/22 10:49:45 tom Exp $
 # Makefile for creating ncurses distributions.
 #
 # This only needs to be used directly as a makefile by developers, but
 # 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 = 6
 NCURSES_MINOR = 0
 # These define the major/minor/patch versions of ncurses.
 NCURSES_MAJOR = 6
 NCURSES_MINOR = 0
-NCURSES_PATCH = 20171021
+NCURSES_PATCH = 20171028
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
 
 # We don't append the patch to the version, since this only applies to releases
 VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR)
index caa27fd0ba554741c55178b9132725a99be5ad0c..3b1cb2607457ac5d26710a562f9689c8e3233962 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 
 
 
 
index 968588ec71d027dfd4c8f72d00937356569c1439..a435d3952933b4d8fc44c00fc0420a1f9e409b60 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index bbefd61c50d1e65efbd2a9bc8ef282bb630d5526..2f499b75b6056f009ed2051cbadb853ba94c0552 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 
 
 
 
index 6d376744b8bb26b30fbeaf84e1a81e1ae5c46dd3..c1c25140c47f091cf71f4bd238cc304dff04a665 100644 (file)
@@ -27,7 +27,7 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inch.3x,v 1.18 2017/10/14 19:14:47 tom Exp @
+  * @Id: curs_inch.3x,v 1.19 2017/10/28 20:16:52 Sven.Joachim Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
        <STRONG>o</STRONG>   System  V  curses  added support for several video attributes which
            could be combined with characters in the window.
 
        <STRONG>o</STRONG>   System  V  curses  added support for several video attributes which
            could be combined with characters in the window.
 
-           Reflecting this improvment, the function was altered to return  the
+           Reflecting this improvement, the function was altered to return the
            character combined with all video attributes in a <STRONG>chtype</STRONG> value.
 
        X/Open Curses does not specify the size and layout of attributes, color
            character combined with all video attributes in a <STRONG>chtype</STRONG> value.
 
        X/Open Curses does not specify the size and layout of attributes, color
index 2b9b52912c4e010ede3e7700ffc1e6b1868dc5d5..3b8608aa47d4430040367c46cef822b9ce717003 100644 (file)
@@ -1,6 +1,6 @@
 <!-- 
   ****************************************************************************
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002-2010,2012 Free Software Foundation, Inc.              *
+  * Copyright (c) 2002-2012,2017 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            *
   *                                                                          *
   * 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 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inwstr.3x,v 1.8 2012/11/03 23:03:59 tom Exp @
+  * @Id: curs_inwstr.3x,v 1.9 2017/10/28 23:42:58 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>inwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>innwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>winwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>winnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvinwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvinnwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwinwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwinnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>inwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>innwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>winwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>winnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvinwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvinnwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwinwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwinnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
-       These routines return a string of <STRONG>wchar_t</STRONG> characters in <EM>wstr</EM>, extracted
-       starting   at   the  current  cursor  position  in  the  named  window.
-       Attributes are stripped from the characters.  The four functions with <EM>n</EM>
-       as  the  last  argument return a leading substring at most <EM>n</EM> bytes long
-       (exclusive of the trailing NUL).  Transfer stops at the end of the cur-
-       rent  line, or when <EM>n</EM> bytes have been stored at the location referenced
-       by <EM>wstr</EM>.
+       These routines return a string of  <STRONG>wchar_t</STRONG>  wide  characters  in  <EM>wstr</EM>,
+       extracted starting at the current cursor position in the named window.
 
 
-       If the size <EM>n</EM> is not large enough to store  a  complete  character,  an
-       error is generated.
+       The  four  functions  with <EM>n</EM> as the last argument return a leading sub-
+       string at most <EM>n</EM> characters  long  (exclusive  of  the  trailing  NUL).
+       Transfer  stops  at  the  end of the current line, or when <EM>n</EM> characters
+       have been stored at the location referenced by <EM>wstr</EM>.
+
+       If the size <EM>n</EM> is not large enough to store a complete  complex  charac-
+       ter, an error is generated.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       Note that all routines except <STRONG>winnwstr</STRONG> may be macros.
+       All routines except <STRONG>winnwstr</STRONG> may be macros.
+
+       Each cell in the window holds a complex character (i.e., base- and com-
+       bining-characters) together with attributes and color.  These functions
+       store  only  the  wide  characters, ignoring attributes and color.  Use
+       <STRONG>in_wchstr</STRONG> to return the complex characters from a window.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
-       All  routines  return <STRONG>ERR</STRONG> upon failure. Upon successful completion, the
+       All routines return <STRONG>ERR</STRONG> upon failure. Upon successful  completion,  the
        *<STRONG>inwstr</STRONG> routines return <STRONG>OK</STRONG>, and the *<STRONG>innwstr</STRONG> routines return the number
        of characters read into the string.
 
        *<STRONG>inwstr</STRONG> routines return <STRONG>OK</STRONG>, and the *<STRONG>innwstr</STRONG> routines return the number
        of characters read into the string.
 
-       Functions  with  a  "mv"  prefix  first perform a cursor movement using
+       Functions with a "mv" prefix first  perform  a  cursor  movement  using
        <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
        the window pointer is null.
 
        <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if
        the window pointer is null.
 
index 8a6a1fcd4e85a8cfc8d8a16ead0380a60f066783..68632a19ca13ff46b6bb0fe8890ef65c27c54c3a 100644 (file)
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
        descriptions of the entry points.
 
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  and  related  pages  whose names begin "form_" for detailed
        descriptions of the entry points.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 
 
 
 
index 8658f77719fc92fd5b8060120a93d7c83ddbb126..cee761d94b92d3a1a089ab73a0b44c81c34d94c2 100644 (file)
 
        http://invisible-island.net/ncurses/tctest.html
 
 
        http://invisible-island.net/ncurses/tctest.html
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index 3006556b46e0921b850fdeb71009ac6c374e8560..a8e213f56d6e08612b7ee17a04ca70c8d37bbd05 100644 (file)
@@ -85,7 +85,7 @@
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index 9d1f818b77667273045802ef1ba30658039260c1..3013aac052119974f6eaf6e51954cb15b8b4b003 100644 (file)
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names  begin  "menu_"  for  detailed
        descriptions of the entry points.
 
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names  begin  "menu_"  for  detailed
        descriptions of the entry points.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 
 
 
 
index 17a0feadad7033cc414382b24a9baf9d636a82a5..86378eb9e00b388b9e307cd7eb0371b429783273 100644 (file)
@@ -59,7 +59,7 @@
        method of updating  character  screens  with  reasonable  optimization.
        This  implementation  is  "new  curses"  (ncurses)  and is the approved
        replacement for 4.4BSD classic curses,  which  has  been  discontinued.
        method of updating  character  screens  with  reasonable  optimization.
        This  implementation  is  "new  curses"  (ncurses)  and is the approved
        replacement for 4.4BSD classic curses,  which  has  been  discontinued.
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
        The  <STRONG>ncurses</STRONG>  library emulates the curses library of System V Release 4
        UNIX, and XPG4 (X/Open Portability Guide) curses  (also  known  as  XSI
 
        The  <STRONG>ncurses</STRONG>  library emulates the curses library of System V Release 4
        UNIX, and XPG4 (X/Open Portability Guide) curses  (also  known  as  XSI
index 19ce50e1970c24b49e3bc2b90fa4c23103b50424..e44bcdb5f55a309e0f54257f806c2ec7276cf2b1 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 
 
 
 
index ab84cd471c376fad66624d37c882e9f3f1275746..014d58e04e004622edddb5529dcfde0b8d31142b 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index 86255f618f64eb369a9a27d13b0ccb9485c78e38..8ce3ea2564d7dd8c19dd04c0c2cd9bdd6d037a69 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 
 
 
 
index 7e52bd52a7ce62c8623d1d193628612bc4fe5195..e4202c5360639f0e38dee703984bb7ac2b770337 100644 (file)
@@ -74,7 +74,7 @@
        <EM>Terminfo</EM> describes terminals by giving a set of capabilities which they
        have, by specifying how to perform screen operations, and by specifying
        padding  requirements  and  initialization  sequences.   This describes
        <EM>Terminfo</EM> describes terminals by giving a set of capabilities which they
        have, by specifying how to perform screen operations, and by specifying
        padding  requirements  and  initialization  sequences.   This describes
-       <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 </PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
 
 
 </PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE>
index 27e64e351c454cdd56b57e4432ed751886b34f7a..960c27111150a82adf987248ca881881a7cfc09e 100644 (file)
        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,   <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,   <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,   <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,   <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
        <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
        <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,   <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,   <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,   <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,   <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
        <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
index 718f40aa0e6c6190777d041ed789e55d5842d130..d6f6307ffba8d02d81e0c0ef7b60d97e9b30c6c1 100644 (file)
        <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,  <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG>ter-</STRONG>
        <STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG>.
 
        <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,  <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG>ter-</STRONG>
        <STRONG><A HREF="terminfo.5.html">minfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 
 
 
 
index a855831c8c5b7f7f7a497f6108bb14ff6895653c..50b7a89677dd439d96f9c73ccc1a9d17bf974344 100644 (file)
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 
 
 
 
index 40b12eb3214ac200825b303ee577121872616121..24a58a802dced14e9cd76bcc3e9b2faf8a8e21b8 100644 (file)
        <STRONG>csh(1)</STRONG>,  <STRONG>sh(1)</STRONG>,  <STRONG>stty(1)</STRONG>,   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,   <STRONG>tty(4)</STRONG>,   <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>,
        <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
 
        <STRONG>csh(1)</STRONG>,  <STRONG>sh(1)</STRONG>,  <STRONG>stty(1)</STRONG>,   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,   <STRONG>tty(4)</STRONG>,   <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>,
        <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG>
 
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171014).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20171028).
 
 
 
 
 
 
index 669950150d0671fe6b431764531b8198459e5989..86ca93785639c7a3b2a7903c04f4373f1c9ec1cf 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: ncurses_defs,v 1.81 2017/09/29 23:56:38 tom Exp $
+# $Id: ncurses_defs,v 1.83 2017/10/22 23:53:00 tom Exp $
 ##############################################################################
 # Copyright (c) 2000-2016,2017 Free Software Foundation, Inc.                #
 #                                                                            #
 ##############################################################################
 # Copyright (c) 2000-2016,2017 Free Software Foundation, Inc.                #
 #                                                                            #
@@ -55,6 +55,7 @@ HAVE_COLOR_SET        1
 HAVE_COPYWIN   1
 HAVE_CURSCR    1
 HAVE_CURSES_DATA_TTYTYPE       1
 HAVE_COPYWIN   1
 HAVE_CURSCR    1
 HAVE_CURSES_DATA_TTYTYPE       1
+HAVE_DELSCREEN 1
 HAVE_DERWIN    1
 HAVE_DIRENT_H
 HAVE_DUPWIN    1
 HAVE_DERWIN    1
 HAVE_DIRENT_H
 HAVE_DUPWIN    1
@@ -106,7 +107,9 @@ HAVE_MBSTOWCS
 HAVE_MBTOWC
 HAVE_MENU_H
 HAVE_MKSTEMP
 HAVE_MBTOWC
 HAVE_MENU_H
 HAVE_MKSTEMP
+HAVE_MVDERWIN  1
 HAVE_MVVLINE   1
 HAVE_MVVLINE   1
+HAVE_MVWIN     1
 HAVE_MVWVLINE  1
 HAVE_NANOSLEEP
 HAVE_NC_ALLOC_H
 HAVE_MVWVLINE  1
 HAVE_NANOSLEEP
 HAVE_NC_ALLOC_H
@@ -124,6 +127,7 @@ HAVE_REGEX_H_FUNCS
 HAVE_REMOVE
 HAVE_RESIZETERM
 HAVE_RESIZE_TERM
 HAVE_REMOVE
 HAVE_RESIZETERM
 HAVE_RESIZE_TERM
+HAVE_RESTARTTERM       1
 HAVE_RIPOFFLINE        1
 HAVE_SCR_DUMP 1
 HAVE_SELECT
 HAVE_RIPOFFLINE        1
 HAVE_SCR_DUMP 1
 HAVE_SELECT
@@ -188,11 +192,14 @@ HAVE_VIDPUTS      1
 HAVE_VID_PUTS  1
 HAVE_VSNPRINTF
 HAVE_VSSCANF
 HAVE_VID_PUTS  1
 HAVE_VSNPRINTF
 HAVE_VSSCANF
+HAVE_VW_PRINTW 1
+HAVE_WCHGAT    1
 HAVE_WCSRTOMBS
 HAVE_WCSTOMBS
 HAVE_WCTOB 
 HAVE_WCTOMB
 HAVE_WCTYPE_H
 HAVE_WCSRTOMBS
 HAVE_WCSTOMBS
 HAVE_WCTOB 
 HAVE_WCTOMB
 HAVE_WCTYPE_H
+HAVE_WINSDELLN 1
 HAVE_WINSSTR   1
 HAVE_WORKING_POLL
 HAVE_WRESIZE
 HAVE_WINSSTR   1
 HAVE_WORKING_POLL
 HAVE_WRESIZE
index 4fe29e430584225320f0b97977bf9d885c08eb12..3386900ad089e88765f7cceca8debb74466783d2 100644 (file)
@@ -27,7 +27,7 @@
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_inch.3x,v 1.18 2017/10/14 19:14:47 tom Exp $
+.\" $Id: curs_inch.3x,v 1.19 2017/10/28 20:16:52 Sven.Joachim Exp $
 .TH curs_inch 3X ""
 .de bP
 .IP \(bu 4
 .TH curs_inch 3X ""
 .de bP
 .IP \(bu 4
@@ -89,7 +89,7 @@ with the \fIstandout\fP attribute removed.
 System V curses added support for several video attributes which
 could be combined with characters in the window.
 .IP
 System V curses added support for several video attributes which
 could be combined with characters in the window.
 .IP
-Reflecting this improvment, the function was altered to return the
+Reflecting this improvement, the function was altered to return the
 character combined with all video attributes in a \fBchtype\fP value.
 .PP
 X/Open Curses does not specify 
 character combined with all video attributes in a \fBchtype\fP value.
 .PP
 X/Open Curses does not specify 
index 0cdf4d8df65b6116b73882d0b093a9046d35242c..63ebed0bec832a195b8fd0d74f088daa76361cdb 100644 (file)
@@ -1,5 +1,5 @@
 .\"***************************************************************************
 .\"***************************************************************************
-.\" Copyright (c) 2002-2010,2012 Free Software Foundation, Inc.              *
+.\" Copyright (c) 2002-2012,2017 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            *
 .\"                                                                          *
 .\" 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.                                                           *
 .\"***************************************************************************
 .\"
 .\" authorization.                                                           *
 .\"***************************************************************************
 .\"
-.\" $Id: curs_inwstr.3x,v 1.8 2012/11/03 23:03:59 tom Exp $
+.\" $Id: curs_inwstr.3x,v 1.9 2017/10/28 23:42:58 tom Exp $
 .TH curs_inwstr 3X ""
 .SH NAME
 \fBinwstr\fR,
 .TH curs_inwstr 3X ""
 .SH NAME
 \fBinwstr\fR,
 .nf
 \fB#include <curses.h> \fR
 .sp
 .nf
 \fB#include <curses.h> \fR
 .sp
-\fBint inwstr(\fR\fBwchar_t *\fR\fIstr\fR\fB);\fR
+\fBint inwstr(\fR\fBwchar_t *\fR\fIwstr\fR\fB);\fR
 .br
 .br
-\fBint innwstr(\fR\fBwchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
+\fBint innwstr(\fR\fBwchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
 .br
 .br
-\fBint winwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIstr\fR\fB);\fR
+\fBint winwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIwstr\fR\fB);\fR
 .br
 .br
-\fBint winnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
+\fBint winnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
 .br
 .br
-\fBint mvinwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB);\fR
+\fBint mvinwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB);\fR
 .br
 .br
-\fBint mvinnwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
+\fBint mvinnwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
 .br
 .br
-\fBint mvwinwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB);\fR
+\fBint mvwinwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB);\fR
 .br
 .br
-\fBint mvwinnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR
+\fBint mvwinnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR
 .fi
 .SH DESCRIPTION
 .fi
 .SH DESCRIPTION
-These routines return a string of \fBwchar_t\fR characters in \fIwstr\fR,
+.PP
+These routines return a string of \fBwchar_t\fR wide characters in \fIwstr\fR,
 extracted starting at the current cursor position in the named window.
 extracted starting at the current cursor position in the named window.
-Attributes are stripped from the characters.
+.PP
 The four functions with \fIn\fR as the last argument return a leading substring at most
 The four functions with \fIn\fR as the last argument return a leading substring at most
-\fIn\fR bytes long (exclusive of the trailing NUL).
-Transfer stops at the end of the current line, or when \fIn\fR bytes have
+\fIn\fR characters long (exclusive of the trailing NUL).
+Transfer stops at the end of the current line, or when \fIn\fR characters have
 been stored at the location referenced by \fIwstr\fR.
 .PP
 been stored at the location referenced by \fIwstr\fR.
 .PP
-If the size \fIn\fR is not large enough to store a complete character,
+If the size \fIn\fR is not large enough to store a complete complex character,
 an error is generated.
 .SH NOTES
 an error is generated.
 .SH NOTES
-Note that all routines except
+.PP
+All routines except
 \fBwinnwstr\fR
 may be macros.
 \fBwinnwstr\fR
 may be macros.
+.PP
+Each cell in the window holds a complex character (i.e., base-
+and combining-characters) together with attributes and color.
+These functions store only the wide characters,
+ignoring attributes and color.
+Use \fBin_wchstr\fP to return the complex characters from a window.
 .SH RETURN VALUE
 All routines return
 \fBERR\fR
 .SH RETURN VALUE
 All routines return
 \fBERR\fR
index 784f9f42bff02a1c02180221ea9a1063bcc8f9d3..ef2e26518726ea0cf3be5960424a07a580613ab6 100644 (file)
@@ -1,7 +1,7 @@
 #!@SHELL@
 #!@SHELL@
-# $Id: run_tic.in,v 1.34 2012/10/06 19:00:51 tom Exp $
+# $Id: run_tic.in,v 1.35 2017/10/24 00:16:22 tom Exp $
 ##############################################################################
 ##############################################################################
-# Copyright (c) 1998-2011,2012 Free Software Foundation, Inc.                #
+# Copyright (c) 1998-2012,2017 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"), #
 #                                                                            #
 # Permission is hereby granted, free of charge, to any person obtaining a    #
 # copy of this software and associated documentation files (the "Software"), #
@@ -36,7 +36,7 @@
 # Assumes:
 #      The leaf directory names (lib, tabset, terminfo)
 #
 # Assumes:
 #      The leaf directory names (lib, tabset, terminfo)
 #
-echo '** Building terminfo database, please wait...'
+echo "** Building terminfo database, please wait..."
 #
 # The script is designed to be run from the misc/Makefile as
 #      make install.data
 #
 # The script is designed to be run from the misc/Makefile as
 #      make install.data
@@ -84,7 +84,7 @@ then
                fi
        elif test "$TIC_PATH" = unknown
        then
                fi
        elif test "$TIC_PATH" = unknown
        then
-               echo '? no tic program found'
+               echo "? no tic program found"
                exit 1
        fi
 else
                exit 1
        fi
 else
@@ -105,11 +105,12 @@ SHLIB_HOST=@host_os@
 export SHLIB_HOST
 
 # don't use user's TERMINFO variable
 export SHLIB_HOST
 
 # don't use user's TERMINFO variable
-TERMINFO=${DESTDIR}$ticdir ; export TERMINFO
+unset TERMINFO_DIRS
+TERMINFO="${DESTDIR}$ticdir" ; export TERMINFO
 umask 022
 
 # Construct the name of the old (obsolete) pathname, e.g., /usr/lib/terminfo.
 umask 022
 
 # Construct the name of the old (obsolete) pathname, e.g., /usr/lib/terminfo.
-TICDIR=`echo $TERMINFO | sed -e 's%/share/\([^/]*\)$%/lib/\1%'`
+TICDIR=`echo "$TERMINFO" | sed -e 's%/share/\([^/]*\)$%/lib/\1%'`
 
 # Parent directory may not exist, which would confuse the install for hashed
 # database.  Fix.
 
 # Parent directory may not exist, which would confuse the install for hashed
 # database.  Fix.
@@ -123,7 +124,13 @@ fi
 # would generate a lot of confusing error messages if we tried to overwrite it.
 # We explicitly remove its contents rather than the directory itself, in case
 # the directory is actually a symbolic link.
 # would generate a lot of confusing error messages if we tried to overwrite it.
 # We explicitly remove its contents rather than the directory itself, in case
 # the directory is actually a symbolic link.
-( test -d "$TERMINFO" && cd $TERMINFO && rm -fr ? 2>/dev/null )
+if test -d "$TERMINFO"
+then
+       ( cd "$TERMINFO" && rm -fr ? 2>/dev/null )
+elif test -f "$TERMINFO.db"
+then
+       ( rm -f "$TERMINFO.db" 2>/dev/null )
+fi
 
 if test "$ext_funcs" = 1 ; then
 cat <<EOF
 
 if test "$ext_funcs" = 1 ; then
 cat <<EOF
@@ -137,11 +144,11 @@ Running $TIC_PATH to install $TERMINFO ...
        document, and install the terminfo without the -x option.
 
 EOF
        document, and install the terminfo without the -x option.
 
 EOF
-if ( $TIC_PATH -x -s -o $TERMINFO $source )
+if ( $TIC_PATH -x -s -o "$TERMINFO" $source )
 then
 then
-       echo '** built new '$TERMINFO
+       echo "** built new $TERMINFO"
 else
 else
-       echo '? tic could not build '$TERMINFO
+       echo "? tic could not build $TERMINFO"
        exit 1
 fi
 else
        exit 1
 fi
 else
@@ -156,11 +163,11 @@ Running $TIC_PATH to install $TERMINFO ...
        document, and install the terminfo without the -x option.
 
 EOF
        document, and install the terminfo without the -x option.
 
 EOF
-if ( $TIC_PATH -s -o $TERMINFO $source )
+if ( $TIC_PATH -s -o "$TERMINFO" $source )
 then
 then
-       echo '** built new '$TERMINFO
+       echo "** built new $TERMINFO"
 else
 else
-       echo '? tic could not build '$TERMINFO
+       echo "? tic could not build $TERMINFO"
        exit 1
 fi
 fi
        exit 1
 fi
 fi
@@ -170,12 +177,12 @@ fi
 # all systems support symbolic links, and those that do provide a variety
 # of options for 'test'.
 if test "$TICDIR" != "$TERMINFO" ; then
 # all systems support symbolic links, and those that do provide a variety
 # of options for 'test'.
 if test "$TICDIR" != "$TERMINFO" ; then
-       ( rm -f $TICDIR 2>/dev/null )
-       if ( cd $TICDIR 2>/dev/null )
+       ( rm -f "$TICDIR" 2>/dev/null )
+       if ( cd "$TICDIR" 2>/dev/null )
        then
        then
-               cd $TICDIR
+               cd "$TICDIR"
                TICDIR=`pwd`
                TICDIR=`pwd`
-               if test $TICDIR != $TERMINFO ; then
+               if test "$TICDIR "!= "$TERMINFO "; then
                        # Well, we tried.  Some systems lie to us, so the
                        # installer will have to double-check.
                        echo "Verify if $TICDIR and $TERMINFO are the same."
                        # Well, we tried.  Some systems lie to us, so the
                        # installer will have to double-check.
                        echo "Verify if $TICDIR and $TERMINFO are the same."
@@ -190,11 +197,11 @@ if test "$TICDIR" != "$TERMINFO" ; then
                if test "$RELATIVE" != "$ticdir" ; then
                        RELATIVE=../`echo $ticdir|sed -e 's%^'$prefix'/%%' -e 's%^/%%'`
                fi
                if test "$RELATIVE" != "$ticdir" ; then
                        RELATIVE=../`echo $ticdir|sed -e 's%^'$prefix'/%%' -e 's%^/%%'`
                fi
-               if ( @LN_S@ $RELATIVE $TICDIR )
+               if ( @LN_S@ "$RELATIVE" "$TICDIR" )
                then
                then
-                       echo '** sym-linked '$TICDIR' for compatibility'
+                       echo "** sym-linked $TICDIR for compatibility"
                else
                else
-                       echo '** could not sym-link '$TICDIR' for compatibility'
+                       echo "** could not sym-link $TICDIR for compatibility"
                fi
        fi
 fi
                fi
        fi
 fi
index 6f17c97a5b07bd28f0e65e4c8cd0f40fa55fa4eb..dccb8e12d61c6a05e5fda18b28c8ef1c67a4d79a 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
 /****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2010,2017 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            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -42,7 +42,7 @@
 
 #include <curses.priv.h>
 
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_box.c,v 1.24 2010/04/24 23:51:57 tom Exp $")
+MODULE_ID("$Id: lib_box.c,v 1.25 2017/10/27 21:56:17 tom Exp $")
 
 #if USE_WIDEC_SUPPORT
 static NCURSES_INLINE chtype
 
 #if USE_WIDEC_SUPPORT
 static NCURSES_INLINE chtype
@@ -114,10 +114,20 @@ wborder(WINDOW *win,
     win->_line[endy].lastchar = win->_line[0].lastchar = endx;
 
     for (i = 0; i <= endy; i++) {
     win->_line[endy].lastchar = win->_line[0].lastchar = endx;
 
     for (i = 0; i <= endy; i++) {
+#if USE_WIDEC_SUPPORT
+       if (endx > 0 && isWidecExt(win->_line[i].text[endx])) {
+           SetChar2(win->_line[i].text[endx - 1], ' ');
+       }
+#endif
        SetChar2(win->_line[i].text[0], wls);
        SetChar2(win->_line[i].text[endx], wrs);
        win->_line[i].firstchar = 0;
        win->_line[i].lastchar = endx;
        SetChar2(win->_line[i].text[0], wls);
        SetChar2(win->_line[i].text[endx], wrs);
        win->_line[i].firstchar = 0;
        win->_line[i].lastchar = endx;
+#if USE_WIDEC_SUPPORT
+       if (isWidecExt(win->_line[i].text[1])) {
+           SetChar2(win->_line[i].text[1], ' ');
+       }
+#endif
     }
     SetChar2(win->_line[0].text[0], wtl);
     SetChar2(win->_line[0].text[endx], wtr);
     }
     SetChar2(win->_line[0].text[0], wtl);
     SetChar2(win->_line[0].text[endx], wtr);
index 433b1641c5967179f0d16bd35634f9b0997e5668..8871159fae8bda90cfc9ee6968c8ac8ac0c8f936 100644 (file)
@@ -48,7 +48,7 @@
 #define CUR SP_TERMTYPE
 #endif
 
 #define CUR SP_TERMTYPE
 #endif
 
-MODULE_ID("$Id: lib_color.c,v 1.135 2017/08/19 23:48:19 tom Exp $")
+MODULE_ID("$Id: lib_color.c,v 1.136 2017/10/22 15:19:37 tom Exp $")
 
 #ifdef USE_TERM_DRIVER
 #define CanChange      InfoOf(SP_PARM).canchange
 
 #ifdef USE_TERM_DRIVER
 #define CanChange      InfoOf(SP_PARM).canchange
@@ -547,7 +547,7 @@ _nc_reserve_pairs(SCREEN *sp, int want)
            TYPE_REALLOC(colorpair_t, have, sp->_color_pairs);
            if (sp->_color_pairs != 0) {
                memset(sp->_color_pairs + sp->_pair_alloc, 0,
            TYPE_REALLOC(colorpair_t, have, sp->_color_pairs);
            if (sp->_color_pairs != 0) {
                memset(sp->_color_pairs + sp->_pair_alloc, 0,
-                      sizeof(colorpair_t) * (have - sp->_pair_alloc));
+                      sizeof(colorpair_t) * (size_t) (have - sp->_pair_alloc));
            }
 #endif
        }
            }
 #endif
        }
index 32f0b477e0be96f8fe17b79b268906951727b6a7..0fac51de74fb8db4941ae3b1de87e93fd80d6c6c 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
 /****************************************************************************
- * Copyright (c) 1998-2010,2016 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2016,2017 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            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -29,6 +29,8 @@
 /****************************************************************************
  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
 /****************************************************************************
  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ *     and: Thomas E. Dickey                        1996-on                 *
+ *     and: Sven Verdoolaege                        2001                    *
  ****************************************************************************/
 
 /*
  ****************************************************************************/
 
 /*
@@ -40,7 +42,7 @@
 
 #include <curses.priv.h>
 
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_hline.c,v 1.14 2016/05/28 23:11:26 tom Exp $")
+MODULE_ID("$Id: lib_hline.c,v 1.15 2017/10/28 19:57:42 tom Exp $")
 
 NCURSES_EXPORT(int)
 whline(WINDOW *win, chtype ch, int n)
 
 NCURSES_EXPORT(int)
 whline(WINDOW *win, chtype ch, int n)
@@ -66,6 +68,14 @@ whline(WINDOW *win, chtype ch, int n)
            SetChar2(wch, ch);
        wch = _nc_render(win, wch);
 
            SetChar2(wch, ch);
        wch = _nc_render(win, wch);
 
+#if USE_WIDEC_SUPPORT
+       if (start > 0 && isWidecExt(line->text[start])) {
+           SetChar2(line->text[start - 1], ' ');
+       }
+       if (end < win->_maxx && isWidecExt(line->text[end + 1])) {
+           SetChar2(line->text[end + 1], ' ');
+       }
+#endif
        while (end >= start) {
            line->text[end] = wch;
            end--;
        while (end >= start) {
            line->text[end] = wch;
            end--;
index b87498b500cd89173bfa3abf5e1880cd8fdcc2d7..8c7e5af01c9c512af37f7e9e90e53ced5f07559f 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
 /****************************************************************************
- * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2010,2017 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            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -42,7 +42,7 @@
 
 #include <curses.priv.h>
 
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_pad.c,v 1.46 2010/04/24 23:50:45 tom Exp $")
+MODULE_ID("$Id: lib_pad.c,v 1.47 2017/10/22 19:57:26 tom Exp $")
 
 NCURSES_EXPORT(WINDOW *)
 NCURSES_SP_NAME(newpad) (NCURSES_SP_DCLx int l, int c)
 
 NCURSES_EXPORT(WINDOW *)
 NCURSES_SP_NAME(newpad) (NCURSES_SP_DCLx int l, int c)
@@ -188,6 +188,12 @@ pnoutrefresh(WINDOW *win,
 
     T(("pad being refreshed"));
 
 
     T(("pad being refreshed"));
 
+#ifdef TRACE
+    if (USE_TRACEF(TRACE_UPDATE)) {
+       _tracedump("...pad", win);
+       _nc_unlock_global(tracef);
+    }
+#endif /* TRACE */
 #if USE_SCROLL_HINTS
     if (win->_pad._pad_y >= 0) {
        displaced = pminrow - win->_pad._pad_y
 #if USE_SCROLL_HINTS
     if (win->_pad._pad_y >= 0) {
        displaced = pminrow - win->_pad._pad_y
index bb06e1b94c70cb8a9500e809446aaec6e7029e29..acb5dfd125f88227de877d6f8e04e8215d59b038 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
 /****************************************************************************
- * Copyright (c) 1998-2010,2016 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2016,2017 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            *
  *                                                                          *
  * Permission is hereby granted, free of charge, to any person obtaining a  *
  * copy of this software and associated documentation files (the            *
@@ -29,6 +29,8 @@
 /****************************************************************************
  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
 /****************************************************************************
  *  Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995               *
  *     and: Eric S. Raymond <esr@snark.thyrsus.com>                         *
+ *     and: Thomas E. Dickey                        1996-on                 *
+ *     and: Sven Verdoolaege                        2001                    *
  ****************************************************************************/
 
 /*
  ****************************************************************************/
 
 /*
@@ -40,7 +42,7 @@
 
 #include <curses.priv.h>
 
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_vline.c,v 1.13 2016/05/28 23:11:26 tom Exp $")
+MODULE_ID("$Id: lib_vline.c,v 1.14 2017/10/28 19:55:44 tom Exp $")
 
 NCURSES_EXPORT(int)
 wvline(WINDOW *win, chtype ch, int n)
 
 NCURSES_EXPORT(int)
 wvline(WINDOW *win, chtype ch, int n)
@@ -66,6 +68,14 @@ wvline(WINDOW *win, chtype ch, int n)
 
        while (end >= row) {
            struct ldat *line = &(win->_line[end]);
 
        while (end >= row) {
            struct ldat *line = &(win->_line[end]);
+#if USE_WIDEC_SUPPORT
+           if (col > 0 && isWidecExt(line->text[col])) {
+               SetChar2(line->text[col - 1], ' ');
+           }
+           if (col < win->_maxx && isWidecExt(line->text[col + 1])) {
+               SetChar2(line->text[col + 1], ' ');
+           }
+#endif
            line->text[col] = wch;
            CHANGED_CELL(line, col);
            end--;
            line->text[col] = wch;
            CHANGED_CELL(line, col);
            end--;
index 692113b597dd272e6eb25689f605200f006bc39b..26d9b834eb2855c8b966634b91b64030af2a7300 100644 (file)
@@ -44,7 +44,7 @@
 
 #include <ctype.h>
 
 
 #include <ctype.h>
 
-MODULE_ID("$Id: make_hash.c,v 1.14 2017/06/23 23:53:13 tom Exp $")
+MODULE_ID("$Id: make_hash.c,v 1.15 2017/10/23 21:19:54 tom Exp $")
 
 /*
  *     _nc_make_hash_table()
 
 /*
  *     _nc_make_hash_table()
@@ -328,7 +328,7 @@ main(int argc, char **argv)
     free(hash_table);
 #if NO_LEAKS
     for (n = 0; (n < CAPTABSIZE); ++n) {
     free(hash_table);
 #if NO_LEAKS
     for (n = 0; (n < CAPTABSIZE); ++n) {
-       free((char *) name_table[n].nte_name);
+       free((void *) name_table[n].nte_name);
     }
     free(name_table);
 #endif
     }
     free(name_table);
 #endif
index 76b1508beb459bea40a11693493b93157214a48c..3443ec6cbcac4f9281a02eec2bd1517533ecc9dc 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
 /****************************************************************************
- * Copyright (c) 2002-2011,2016 Free Software Foundation, Inc.              *
+ * Copyright (c) 2002-2016,2017 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            *
  *                                                                          *
  * 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 @@
 
 #include <curses.priv.h>
 
 
 #include <curses.priv.h>
 
-MODULE_ID("$Id: lib_inwstr.c,v 1.7 2016/05/28 23:36:34 tom Exp $")
+MODULE_ID("$Id: lib_inwstr.c,v 1.8 2017/10/29 00:03:29 tom Exp $")
 
 NCURSES_EXPORT(int)
 winnwstr(WINDOW *win, wchar_t *wstr, int n)
 
 NCURSES_EXPORT(int)
 winnwstr(WINDOW *win, wchar_t *wstr, int n)
@@ -52,11 +52,12 @@ winnwstr(WINDOW *win, wchar_t *wstr, int n)
        if (win) {
            int row, col;
            int last = 0;
        if (win) {
            int row, col;
            int last = 0;
+           bool done = FALSE;
 
            getyx(win, row, col);
 
            text = win->_line[row].text;
 
            getyx(win, row, col);
 
            text = win->_line[row].text;
-           while (count < n && count != ERR) {
+           while (count < n && !done && count != ERR) {
 
                if (!isWidecExt(text[col])) {
                    int inx;
 
                if (!isWidecExt(text[col])) {
                    int inx;
@@ -66,8 +67,11 @@ winnwstr(WINDOW *win, wchar_t *wstr, int n)
                         && ((wch = text[col].chars[inx]) != 0);
                         ++inx) {
                        if (count + 1 > n) {
                         && ((wch = text[col].chars[inx]) != 0);
                         ++inx) {
                        if (count + 1 > n) {
-                           if ((count = last) == 0) {
+                           done = TRUE;
+                           if (last == 0) {
                                count = ERR;    /* error if we store nothing */
                                count = ERR;    /* error if we store nothing */
+                           } else {
+                               count = last;   /* only store complete chars */
                            }
                            break;
                        }
                            }
                            break;
                        }
index 79dd880f1080d02bdc4ebf9d11ba8781c01ff636..5a99b085110fcfa9085c82ffee141dc7ec64743d 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.0+20171021) unstable; urgency=low
+ncurses6 (6.0+20171028) unstable; urgency=low
 
   * latest weekly patch
 
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 15 Oct 2017 10:51:52 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 22 Oct 2017 06:49:45 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index 79dd880f1080d02bdc4ebf9d11ba8781c01ff636..5a99b085110fcfa9085c82ffee141dc7ec64743d 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.0+20171021) unstable; urgency=low
+ncurses6 (6.0+20171028) unstable; urgency=low
 
   * latest weekly patch
 
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 15 Oct 2017 10:51:52 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 22 Oct 2017 06:49:45 -0400
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
 
 ncurses6 (5.9-20131005) unstable; urgency=low
 
index 975ce46d1d610edc94de8dce4dc7950b4854944e..781de02b8c099d629895ea54d6480eee1fd7f435 100644 (file)
@@ -1,8 +1,8 @@
-ncurses6 (6.0+20171021) unstable; urgency=low
+ncurses6 (6.0+20171028) unstable; urgency=low
 
   * latest weekly patch
 
 
   * latest weekly patch
 
- -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 15 Oct 2017 10:51:52 -0400
+ -- Thomas E. Dickey <dickey@invisible-island.net>  Sun, 22 Oct 2017 06:49:45 -0400
 
 ncurses6 (5.9-20120608) unstable; urgency=low
 
 
 ncurses6 (5.9-20120608) unstable; urgency=low
 
index e232786e0952ff3fe24859b44bd2bf506d5d3a16..c77b4b7f5c60e84e1874ddc38f551f998452e047 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: mingw-ncurses.nsi,v 1.236 2017/10/15 14:51:52 tom Exp $\r
+; $Id: mingw-ncurses.nsi,v 1.237 2017/10/22 10:49:45 tom Exp $\r
 \r
 ; TODO add examples\r
 ; TODO bump ABI to 6\r
 \r
 ; TODO add examples\r
 ; TODO bump ABI to 6\r
@@ -10,7 +10,7 @@
 !define VERSION_MAJOR "6"\r
 !define VERSION_MINOR "0"\r
 !define VERSION_YYYY  "2017"\r
 !define VERSION_MAJOR "6"\r
 !define VERSION_MINOR "0"\r
 !define VERSION_YYYY  "2017"\r
-!define VERSION_MMDD  "1021"\r
+!define VERSION_MMDD  "1028"\r
 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
 \r
 !define MY_ABI   "5"\r
 !define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD}\r
 \r
 !define MY_ABI   "5"\r
index e209ad3a0c09d324f42f70eb583235c5a68461f6..ec1d5a5a73598226ffb96aaf85ec8ed702610b50 100644 (file)
@@ -3,7 +3,7 @@
 Summary: shared libraries for terminal handling
 Name: mingw32-ncurses6
 Version: 6.0
 Summary: shared libraries for terminal handling
 Name: mingw32-ncurses6
 Version: 6.0
-Release: 20171021
+Release: 20171028
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index 9f2de5110e745a86a8a0c2b34cf81c21bd00c6c9..aec428bad198d77adbea7d9588ecbc851766825f 100644 (file)
@@ -1,7 +1,7 @@
 Summary: shared libraries for terminal handling
 Name: ncurses6
 Version: 6.0
 Summary: shared libraries for terminal handling
 Name: ncurses6
 Version: 6.0
-Release: 20171021
+Release: 20171028
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
 License: X11
 Group: Development/Libraries
 Source: ncurses-%{version}-%{release}.tgz
index 28223a63a1ef5908683df09cb43d1ce12c5ce584..bcfccf7050439cede54faa763658325494d300d1 100644 (file)
@@ -25,7 +25,7 @@
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
 -- sale, use or other dealings in this Software without prior written        --
 -- authorization.                                                            --
 -------------------------------------------------------------------------------
--- $Id: README,v 1.61 2017/06/24 18:42:23 tom Exp $
+-- $Id: README,v 1.63 2017/10/23 00:00:21 tom Exp $
 -------------------------------------------------------------------------------
 
 The programs in this directory are used to test and demonstrate ncurses.
 -------------------------------------------------------------------------------
 
 The programs in this directory are used to test and demonstrate ncurses.
@@ -231,12 +231,12 @@ unpost_menu                       test: demo_menus ncurses
 libncurses:
 ----------
 BC                             test: demo_termcap
 libncurses:
 ----------
 BC                             test: demo_termcap
-COLORS                         test: demo_new_pair dots_curses echochar ncurses picsmap savescreen xmas
-COLOR_PAIR                     test: background blue bs cardfile clip_printw demo_forms demo_menus demo_panels dots_curses echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
-COLOR_PAIRS                    test: demo_new_pair dots_curses echochar ncurses newdemo savescreen
-COLS                           test: cardfile demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto dots_curses echochar filter firework foldkeys hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm
+COLORS                         test: demo_new_pair dots_curses dots_xcurses echochar ncurses picsmap savescreen xmas
+COLOR_PAIR                     test: background blue bs cardfile clip_printw demo_forms demo_menus demo_panels dots_curses echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
+COLOR_PAIRS                    test: demo_new_pair dots_curses dots_xcurses echochar ncurses newdemo savescreen
+COLS                           test: cardfile demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto dots_curses dots_xcurses echochar filter firework foldkeys hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm
 ESCDELAY                       test: test_opaque
 ESCDELAY                       test: test_opaque
-LINES                          test: cardfile demo_defkey demo_keyok demo_menus demo_panels ditto dots_curses echochar firework hanoi hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
+LINES                          test: cardfile demo_defkey demo_keyok demo_menus demo_panels ditto dots_curses dots_xcurses echochar firework hanoi hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
 PAIR_NUMBER                    test: ncurses
 PC                             test: demo_termcap
 SP                             lib: form
 PAIR_NUMBER                    test: ncurses
 PC                             test: demo_termcap
 SP                             lib: form
@@ -246,29 +246,29 @@ acs_map                           test: background gdc ins_wide inserts knight movewindow ncurses newde
 add_wch                                test: demo_new_pair demo_panels ncurses picsmap test_add_wchstr test_addwstr
 add_wchnstr                    test: test_add_wchstr
 add_wchstr                     test: test_add_wchstr view
 add_wch                                test: demo_new_pair demo_panels ncurses picsmap test_add_wchstr test_addwstr
 add_wchnstr                    test: test_add_wchstr
 add_wchstr                     test: test_add_wchstr view
-addch                          test: background blue bs dots_curses echochar hashtest ncurses picsmap savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_opaque testaddch view worm
+addch                          test: background blue bs dots_curses echochar hashtest ncurses padview picsmap savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_opaque testaddch view worm
 addchnstr                      test: test_addchstr
 addchstr                       test: test_addchstr
 addnstr                                test: test_addstr
 addchnstr                      test: test_addchstr
 addchstr                       test: test_addchstr
 addnstr                                test: test_addstr
-addnwstr                       test: ncurses test_addwstr
+addnwstr                       test: dots_xcurses ncurses test_addwstr
 addstr                         test: blue bs cardfile filter gdc hanoi lrtest ncurses test_addstr
 addwstr                                test: blue test_addwstr
 addstr                         test: blue bs cardfile filter gdc hanoi lrtest ncurses test_addstr
 addwstr                                test: blue test_addwstr
-alloc_pair                     test: demo_new_pair
+alloc_pair                     test: demo_new_pair dots_xcurses
 alloc_pair_sp                  -
 assume_default_colors          test: background ncurses
 assume_default_colors_sp       -
 attr_get                       -
 alloc_pair_sp                  -
 assume_default_colors          test: background ncurses
 assume_default_colors_sp       -
 attr_get                       -
-attr_off                       test: ncurses
-attr_on                                test: ncurses
+attr_off                       test: dots_xcurses ncurses
+attr_on                                test: dots_xcurses ncurses
 attr_set                       test: ncurses
 attroff                                test: blue dots_curses echochar filter gdc ncurses tclock
 attron                         test: blue bs dots_curses echochar filter gdc ncurses
 attrset                                test: bs filter firework gdc hanoi insdelln ncurses picsmap rain tclock testaddch testcurs
 baudrate                       test: ncurses
 baudrate_sp                    test: sp_tinfo
 attr_set                       test: ncurses
 attroff                                test: blue dots_curses echochar filter gdc ncurses tclock
 attron                         test: blue bs dots_curses echochar filter gdc ncurses
 attrset                                test: bs filter firework gdc hanoi insdelln ncurses picsmap rain tclock testaddch testcurs
 baudrate                       test: ncurses
 baudrate_sp                    test: sp_tinfo
-beep                           test: blue bs cardfile chgat clip_printw demo_forms demo_menus demo_new_pair demo_panels edit_field hanoi inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses popup_msg rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas
+beep                           test: blue bs cardfile chgat clip_printw demo_forms demo_menus demo_new_pair demo_panels edit_field firstlast hanoi inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses padview popup_msg rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas
 beep_sp                                lib: ncurses
 beep_sp                                lib: ncurses
-bkgd                           test: background cardfile demo_forms ncurses savescreen tclock view
+bkgd                           test: background cardfile demo_forms ncurses padview savescreen tclock view
 bkgdset                                test: background ncurses testaddch
 bkgrnd                         test: ncurses
 bkgrndset                      test: ncurses
 bkgdset                                test: background ncurses testaddch
 bkgrnd                         test: ncurses
 bkgrndset                      test: ncurses
@@ -281,22 +281,22 @@ box                               test: cardfile chgat clip_printw demo_forms demo_menus demo_panels ditto
 box_set                                test: ncurses
 can_change_color               test: extended_color ncurses
 can_change_color_sp            test: extended_color
 box_set                                test: ncurses
 can_change_color               test: extended_color ncurses
 can_change_color_sp            test: extended_color
-cbreak                         test: background blue bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto extended_color filter firework foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo picsmap savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
+cbreak                         test: background blue bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto extended_color filter firework foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo padview picsmap savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
 cbreak_sp                      test: sp_tinfo
 chgat                          test: chgat
 cbreak_sp                      test: sp_tinfo
 chgat                          test: chgat
-clear                          test: blue bs filter gdc ncurses testcurs xmas
+clear                          test: blue bs filter gdc ncurses padview testcurs xmas
 clearok                                test: bs knight
 clearok                                test: bs knight
-clrtobot                       test: demo_menus ncurses
-clrtoeol                       test: blue bs demo_altkeys filter foldkeys form_driver_w hanoi hashtest movewindow ncurses view
+clrtobot                       test: demo_menus ncurses view
+clrtoeol                       test: blue bs demo_altkeys filter foldkeys form_driver_w hanoi hashtest movewindow ncurses padview view
 color_content                  test: ncurses picsmap
 color_content_sp               -
 color_content                  test: ncurses picsmap
 color_content_sp               -
-color_set                      test: color_set extended_color ncurses
+color_set                      test: color_set dots_xcurses extended_color ncurses
 copywin                                test: ncurses testcurs
 cur_term                       test: demo_termcap demo_terminfo dots dots_mvcur filter list_keys lrtest sp_tinfo test_sgr test_vid_puts test_vidputs progs: clear_cmd reset_cmd tabs tput tset
 copywin                                test: ncurses testcurs
 cur_term                       test: demo_termcap demo_terminfo dots dots_mvcur filter list_keys lrtest sp_tinfo test_sgr test_vid_puts test_vidputs progs: clear_cmd reset_cmd tabs tput tset
-curs_set                       test: demo_new_pair echochar firework gdc hanoi lrtest ncurses newdemo rain savescreen tclock testcurs worm xmas
+curs_set                       test: demo_new_pair echochar firework gdc hanoi lrtest ncurses newdemo picsmap rain savescreen tclock testcurs worm xmas
 curs_set_sp                    test: sp_tinfo
 curs_set_sp                    test: sp_tinfo
-curscr                         test: demo_panels knight lrtest ncurses popup_msg savescreen tclock view
-curses_version                 test: ncurses progs: infocmp tabs tic toe tput tset
+curscr                         test: demo_panels knight lrtest ncurses popup_msg savescreen tclock
+curses_version                 test: ncurses progs: clear infocmp tabs tic toe tput tset
 def_prog_mode                  test: bs ncurses
 def_prog_mode_sp               test: sp_tinfo
 def_shell_mode                 -
 def_prog_mode                  test: bs ncurses
 def_prog_mode_sp               test: sp_tinfo
 def_shell_mode                 -
@@ -310,16 +310,16 @@ delay_output_sp                   test: sp_tinfo
 delch                          -
 deleteln                       test: insdelln
 delscreen                      test: ditto dots_mvcur
 delch                          -
 deleteln                       test: insdelln
 delscreen                      test: ditto dots_mvcur
-delwin                         test: cardfile chgat clip_printw demo_forms demo_panels inch_wide inchs ins_wide insdelln inserts ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
+delwin                         test: cardfile chgat clip_printw demo_forms demo_panels inch_wide inchs ins_wide insdelln inserts ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view
 derwin                         test: cardfile chgat clip_printw demo_forms demo_menus ditto inch_wide inchs ins_wide insdelln inserts movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque
 derwin                         test: cardfile chgat clip_printw demo_forms demo_menus ditto inch_wide inchs ins_wide insdelln inserts movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque
-doupdate                       test: cardfile demo_menus demo_panels ditto ins_wide inserts knight movewindow ncurses popup_msg redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr
+doupdate                       test: cardfile demo_menus demo_panels ditto ins_wide inserts knight movewindow ncurses padview popup_msg redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr
 doupdate_sp                    lib: ncurses
 dupwin                         test: popup_msg
 echo                           test: bs hanoi ncurses test_get_wstr test_getstr testcurs testscanw
 echo_sp                                lib: ncurses
 echo_wchar                     test: ncurses
 echochar                       test: echochar ncurses
 doupdate_sp                    lib: ncurses
 dupwin                         test: popup_msg
 echo                           test: bs hanoi ncurses test_get_wstr test_getstr testcurs testscanw
 echo_sp                                lib: ncurses
 echo_wchar                     test: ncurses
 echochar                       test: echochar ncurses
-endwin                         test: background blue bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto dots_curses dots_mvcur echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses newdemo picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas
+endwin                         test: background blue bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto dots_curses dots_mvcur dots_xcurses echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses newdemo padview picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas
 endwin_sp                      lib: ncurses
 erase                          test: cardfile demo_menus filter firework firstlast hanoi lrtest ncurses picsmap tclock test_opaque testcurs
 erasechar                      test: ncurses
 endwin_sp                      lib: ncurses
 erase                          test: cardfile demo_menus filter firework firstlast hanoi lrtest ncurses picsmap tclock test_opaque testcurs
 erasechar                      test: ncurses
@@ -351,11 +351,11 @@ getbegy                           test: chgat clip_printw demo_menus demo_panels insdelln movewindow nc
 getbkgd                                test: ncurses
 getbkgrnd                      test: ncurses
 getcchar                       test: ncurses savescreen view
 getbkgd                                test: ncurses
 getbkgrnd                      test: ncurses
 getcchar                       test: ncurses savescreen view
-getch                          test: background blue bs chgat color_set demo_altkeys demo_new_pair extended_color filter firework firstlast foldkeys hanoi hashtest insdelln lrtest savescreen tclock test_opaque testaddch testcurs view xmas
-getcurx                                test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels extended_color filter firstlast foldkeys insdelln movewindow ncurses redraw savescreen test_get_wstr test_getstr test_opaque testcurs
-getcury                                test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels extended_color filter firstlast foldkeys insdelln movewindow ncurses popup_msg redraw savescreen test_opaque testcurs
-getmaxx                                test: chgat clip_printw demo_panels inch_wide inchs insdelln movewindow ncurses newdemo popup_msg redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
-getmaxy                                test: chgat clip_printw demo_forms demo_panels inch_wide inchs insdelln movewindow ncurses newdemo popup_msg redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
+getch                          test: background blue bs chgat color_set demo_altkeys demo_new_pair extended_color filter firework firstlast foldkeys hanoi hashtest insdelln lrtest padview picsmap savescreen tclock test_opaque testaddch testcurs view xmas
+getcurx                                test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels extended_color filter firstlast foldkeys insdelln movewindow ncurses redraw savescreen test_get_wstr test_getstr test_opaque testcurs view
+getcury                                test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels extended_color filter firstlast foldkeys insdelln movewindow ncurses popup_msg redraw savescreen test_opaque testcurs view
+getmaxx                                test: chgat clip_printw demo_panels firstlast inch_wide inchs insdelln movewindow ncurses newdemo popup_msg redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
+getmaxy                                test: chgat clip_printw demo_forms demo_panels firstlast inch_wide inchs insdelln movewindow ncurses newdemo popup_msg redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
 getmouse                       test: bs demo_menus knight movewindow ncurses testcurs
 getmouse_sp                    -
 getn_wstr                      test: test_get_wstr
 getmouse                       test: bs demo_menus knight movewindow ncurses testcurs
 getmouse_sp                    -
 getn_wstr                      test: test_get_wstr
@@ -365,9 +365,9 @@ getpary                             test: movewindow
 getstr                         test: test_getstr
 getwin                         test: ncurses
 getwin_sp                      -
 getstr                         test: test_getstr
 getwin                         test: ncurses
 getwin_sp                      -
-halfdelay                      test: view
+halfdelay                      test: padview view
 halfdelay_sp                   test: sp_tinfo
 halfdelay_sp                   test: sp_tinfo
-has_colors                     test: background bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses echochar extended_color filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs view worm xmas
+has_colors                     test: background bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses echochar extended_color filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs view worm xmas
 has_colors_sp                  lib: ncurses
 has_ic                         test: lrtest ncurses
 has_ic_sp                      test: sp_tinfo
 has_colors_sp                  lib: ncurses
 has_ic                         test: lrtest ncurses
 has_ic_sp                      test: sp_tinfo
@@ -380,7 +380,7 @@ has_mouse_sp                        -
 hline                          test: gdc ncurses
 hline_set                      -
 idcok                          test: test_opaque
 hline                          test: gdc ncurses
 hline_set                      -
 idcok                          test: test_opaque
-idlok                          test: ncurses test_opaque testscanw view
+idlok                          test: ncurses padview test_opaque testscanw view
 immedok                                test: test_opaque
 in_wch                         test: inch_wide
 in_wchnstr                     test: inch_wide
 immedok                                test: test_opaque
 in_wch                         test: inch_wide
 in_wchnstr                     test: inch_wide
@@ -394,9 +394,9 @@ init_extended_color         test: extended_color
 init_extended_color_sp         test: extended_color
 init_extended_pair             test: extended_color picsmap
 init_extended_pair_sp          test: extended_color
 init_extended_color_sp         test: extended_color
 init_extended_pair             test: extended_color picsmap
 init_extended_pair_sp          test: extended_color
-init_pair                      test: background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
+init_pair                      test: background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
 init_pair_sp                   -
 init_pair_sp                   -
-initscr                                test: background blue bs cardfile chgat clip_printw color_set demo_defkey demo_forms demo_keyok demo_menus demo_panels dots_curses echochar filter firework firstlast form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas
+initscr                                test: background blue bs cardfile chgat clip_printw color_set demo_defkey demo_forms demo_keyok demo_menus demo_panels dots_curses dots_xcurses echochar filter firework firstlast form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas
 innstr                         test: test_instr
 innwstr                                test: test_inwstr
 ins_nwstr                      test: ins_wide
 innstr                         test: test_instr
 innwstr                                test: test_inwstr
 ins_nwstr                      test: ins_wide
@@ -434,11 +434,11 @@ key_defined_sp                    test: sp_tinfo
 key_name                       test: key_names ncurses
 keybound                       test: demo_altkeys demo_defkey
 keybound_sp                    test: sp_tinfo
 key_name                       test: key_names ncurses
 keybound                       test: demo_altkeys demo_defkey
 keybound_sp                    test: sp_tinfo
-keyname                                test: demo_altkeys demo_defkey demo_keyok demo_menus edit_field foldkeys keynames movewindow ncurses redraw test_getstr testcurs view progs: tic
+keyname                                test: demo_altkeys demo_defkey demo_keyok demo_menus edit_field foldkeys keynames movewindow ncurses padview redraw test_getstr testcurs view progs: tic
 keyname_sp                     test: sp_tinfo
 keyok                          test: demo_keyok foldkeys
 keyok_sp                       test: sp_tinfo
 keyname_sp                     test: sp_tinfo
 keyok                          test: demo_keyok foldkeys
 keyok_sp                       test: sp_tinfo
-keypad                         test: bs cardfile chgat clip_printw demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto filter firework foldkeys form_driver_w hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses popup_msg redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view
+keypad                         test: bs cardfile chgat clip_printw demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto filter firework foldkeys form_driver_w hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses padview popup_msg redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view
 killchar                       test: ncurses
 killchar_sp                    test: sp_tinfo
 killwchar                      test: ncurses
 killchar                       test: ncurses
 killchar_sp                    test: sp_tinfo
 killwchar                      test: ncurses
@@ -453,7 +453,7 @@ mouseinterval                       -
 mouseinterval_sp               -
 mousemask                      test: bs demo_forms demo_menus knight movewindow ncurses testcurs
 mousemask_sp                   -
 mouseinterval_sp               -
 mousemask                      test: bs demo_forms demo_menus knight movewindow ncurses testcurs
 mousemask_sp                   -
-move                           test: blue bs cardfile chgat demo_altkeys demo_menus demo_new_pair dots_curses echochar filter foldkeys gdc hanoi hashtest inch_wide inchs ins_wide inserts knight lrtest movewindow ncurses picsmap savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testscanw view xmas
+move                           test: blue bs cardfile chgat demo_altkeys demo_menus demo_new_pair dots_curses dots_xcurses echochar filter foldkeys gdc hanoi hashtest inch_wide inchs ins_wide inserts knight lrtest movewindow ncurses picsmap savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testscanw view xmas
 mvadd_wch                      test: ncurses test_add_wchstr test_addwstr
 mvadd_wchnstr                  test: test_add_wchstr
 mvadd_wchstr                   test: test_add_wchstr
 mvadd_wch                      test: ncurses test_add_wchstr test_addwstr
 mvadd_wchnstr                  test: test_add_wchstr
 mvadd_wchstr                   test: test_add_wchstr
@@ -471,7 +471,7 @@ mvdelch                             -
 mvderwin                       test: movewindow
 mvget_wch                      -
 mvget_wstr                     test: test_get_wstr
 mvderwin                       test: movewindow
 mvget_wch                      -
 mvget_wstr                     test: test_get_wstr
-mvgetch                                test: picsmap
+mvgetch                                -
 mvgetn_wstr                    test: test_get_wstr
 mvgetnstr                      test: test_getstr
 mvgetstr                       test: test_getstr
 mvgetn_wstr                    test: test_get_wstr
 mvgetnstr                      test: test_getstr
 mvgetstr                       test: test_getstr
@@ -493,7 +493,7 @@ mvinsnstr                   test: inserts
 mvinsstr                       test: inserts
 mvinstr                                test: test_instr
 mvinwstr                       test: test_inwstr
 mvinsstr                       test: inserts
 mvinstr                                test: test_instr
 mvinwstr                       test: test_inwstr
-mvprintw                       test: background bs firework form_driver_w hanoi ncurses savescreen tclock view
+mvprintw                       test: background bs firework form_driver_w hanoi ncurses padview savescreen tclock view
 mvscanw                                -
 mvvline                                test: ncurses
 mvvline_set                    test: ncurses
 mvscanw                                -
 mvvline                                test: ncurses
 mvvline_set                    test: ncurses
@@ -538,26 +538,26 @@ mvwprintw                 test: demo_menus demo_panels inch_wide inchs ncurses test_instr test
 mvwscanw                       test: testcurs
 mvwvline                       test: ins_wide inserts movewindow test_add_wchstr test_addchstr test_addstr test_addwstr
 mvwvline_set                   -
 mvwscanw                       test: testcurs
 mvwvline                       test: ins_wide inserts movewindow test_add_wchstr test_addchstr test_addstr test_addwstr
 mvwvline_set                   -
-napms                          test: demo_panels ditto dots dots_curses dots_mvcur echochar extended_color firework gdc hanoi lrtest ncurses railroad rain tclock test_opaque testcurs view worm xmas progs: tset
+napms                          test: demo_panels ditto dots dots_curses dots_mvcur dots_xcurses echochar extended_color firework firstlast gdc hanoi lrtest ncurses padview picsmap railroad rain tclock test_opaque testcurs view worm xmas progs: tset
 napms_sp                       test: sp_tinfo
 new_prescr                     test: sp_tinfo
 napms_sp                       test: sp_tinfo
 new_prescr                     test: sp_tinfo
-newpad                         test: ncurses popup_msg testcurs
+newpad                         test: ncurses padview popup_msg testcurs
 newpad_sp                      lib: ncurses
 newscr                         lib: ncurses
 newpad_sp                      lib: ncurses
 newscr                         lib: ncurses
-newterm                                test: demo_altkeys demo_new_pair ditto dots_mvcur extended_color filter foldkeys gdc key_names keynames redraw test_termattrs
+newterm                                test: demo_altkeys demo_new_pair ditto dots_mvcur extended_color filter foldkeys gdc key_names keynames redraw test_setupterm test_termattrs
 newterm_sp                     -
 newterm_sp                     -
-newwin                         test: cardfile chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto firstlast inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs xmas
+newwin                         test: cardfile chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto firstlast inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas
 newwin_sp                      lib: ncurses
 nl                             test: demo_forms ncurses rain testcurs
 nl_sp                          lib: ncurses
 nocbreak                       test: testcurs
 nocbreak_sp                    test: sp_tinfo
 newwin_sp                      lib: ncurses
 nl                             test: demo_forms ncurses rain testcurs
 nl_sp                          lib: ncurses
 nocbreak                       test: testcurs
 nocbreak_sp                    test: sp_tinfo
-nodelay                                test: demo_new_pair ditto extended_color firework gdc lrtest ncurses newdemo rain tclock test_opaque view worm xmas
-noecho                         test: background bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto extended_color firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
+nodelay                                test: demo_new_pair ditto extended_color firework gdc lrtest ncurses newdemo padview rain tclock test_opaque view worm xmas
+noecho                         test: background bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto extended_color firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses padview picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas
 noecho_sp                      lib: ncurses
 nofilter                       -
 nofilter_sp                    -
 noecho_sp                      lib: ncurses
 nofilter                       -
 nofilter_sp                    -
-nonl                           test: bs demo_forms hashtest movewindow ncurses view worm xmas
+nonl                           test: bs demo_forms hashtest movewindow ncurses padview view worm xmas
 nonl_sp                                lib: ncurses
 noqiflush                      -
 noqiflush_sp                   test: sp_tinfo
 nonl_sp                                lib: ncurses
 noqiflush                      -
 noqiflush_sp                   test: sp_tinfo
@@ -574,7 +574,7 @@ pair_content                        test: background color_set
 pair_content_sp                        lib: ncurses
 pecho_wchar                    -
 pechochar                      -
 pair_content_sp                        lib: ncurses
 pecho_wchar                    -
 pechochar                      -
-pnoutrefresh                   test: ncurses popup_msg
+pnoutrefresh                   test: ncurses padview popup_msg
 prefresh                       test: testcurs
 printw                         test: background blue bs color_set demo_altkeys demo_defkey demo_keyok extended_color filter foldkeys ncurses savescreen testcurs testscanw view
 putp                           test: filter test_sgr progs: tput
 prefresh                       test: testcurs
 printw                         test: background blue bs color_set demo_altkeys demo_defkey demo_keyok extended_color filter foldkeys ncurses savescreen testcurs testscanw view
 putp                           test: filter test_sgr progs: tput
@@ -584,19 +584,21 @@ qiflush                           -
 qiflush_sp                     test: sp_tinfo
 raw                            test: demo_forms ncurses redraw testcurs
 raw_sp                         test: sp_tinfo
 qiflush_sp                     test: sp_tinfo
 raw                            test: demo_forms ncurses redraw testcurs
 raw_sp                         test: sp_tinfo
-redrawwin                      test: redraw view
-refresh                                test: blue bs demo_defkey demo_forms demo_keyok demo_menus demo_panels dots_curses echochar filter firstlast form_driver_w gdc hanoi hashtest lrtest movewindow ncurses savescreen tclock testcurs view xmas
+redrawwin                      test: padview redraw view
+refresh                                test: blue bs demo_defkey demo_forms demo_keyok demo_menus demo_panels dots_curses dots_mvcur dots_xcurses echochar filter firstlast form_driver_w gdc hanoi hashtest lrtest movewindow ncurses picsmap savescreen tclock testcurs view xmas
+reset_color_pairs              test: picsmap
+reset_color_pairs_sp           -
 reset_prog_mode                        test: filter ncurses
 reset_prog_mode_sp             test: sp_tinfo
 reset_prog_mode                        test: filter ncurses
 reset_prog_mode_sp             test: sp_tinfo
-reset_shell_mode               test: bs filter savescreen
+reset_shell_mode               test: bs filter savescreen test_setupterm
 reset_shell_mode_sp            test: sp_tinfo
 resetty                                -
 resetty_sp                     test: sp_tinfo
 reset_shell_mode_sp            test: sp_tinfo
 resetty                                -
 resetty_sp                     test: sp_tinfo
-resize_term                    test: view
+resize_term                    -
 resize_term_sp                 -
 resizeterm                     -
 resizeterm_sp                  lib: ncurses
 resize_term_sp                 -
 resizeterm                     -
 resizeterm_sp                  lib: ncurses
-restartterm                    -
+restartterm                    test: test_setupterm
 restartterm_sp                 -
 ripoffline                     test: demo_menus ncurses
 ripoffline_sp                  -
 restartterm_sp                 -
 ripoffline                     test: demo_menus ncurses
 ripoffline_sp                  -
@@ -620,7 +622,7 @@ set_escdelay_sp                     lib: ncurses
 set_tabsize                    test: test_opaque
 set_tabsize_sp                 test: sp_tinfo
 set_term                       lib: ncurses
 set_tabsize                    test: test_opaque
 set_tabsize_sp                 test: sp_tinfo
 set_term                       lib: ncurses
-setcchar                       test: demo_new_pair demo_panels ins_wide ncurses picsmap test_add_wchstr test_addwstr view
+setcchar                       test: demo_new_pair demo_panels ins_wide ncurses picsmap test_add_wchstr test_addwstr
 setscrreg                      test: view
 setupterm                      test: demo_terminfo dots list_keys sp_tinfo test_setupterm test_sgr test_termattrs test_vid_puts test_vidputs progs: clear tabs tput tset
 slk_attr                       -
 setscrreg                      test: view
 setupterm                      test: demo_terminfo dots list_keys sp_tinfo test_setupterm test_sgr test_termattrs test_vid_puts test_vidputs progs: clear tabs tput tset
 slk_attr                       -
@@ -656,9 +658,9 @@ slk_touch_sp                        lib: ncurses
 slk_wset                       test: ncurses
 standend                       test: blue gdc ncurses
 standout                       test: blue ncurses
 slk_wset                       test: ncurses
 standend                       test: blue gdc ncurses
 standout                       test: blue ncurses
-start_color                    test: background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses echochar extended_color filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
+start_color                    test: background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses echochar extended_color filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas
 start_color_sp                 -
 start_color_sp                 -
-stdscr                         test: bs chgat clip_printw demo_altkeys demo_forms demo_menus demo_new_pair demo_panels ditto edit_field extended_color filter firework foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view worm xmas
+stdscr                         test: bs chgat clip_printw demo_altkeys demo_forms demo_menus demo_new_pair demo_panels ditto edit_field extended_color filter firework foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses padview picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view worm xmas
 strcodes                       test: demo_termcap test_arrays progs: dump_entry
 strfnames                      test: demo_terminfo list_keys test_arrays progs: dump_entry
 strnames                       test: demo_terminfo foldkeys list_keys test_arrays progs: dump_entry infocmp tic
 strcodes                       test: demo_termcap test_arrays progs: dump_entry
 strfnames                      test: demo_terminfo list_keys test_arrays progs: dump_entry
 strnames                       test: demo_terminfo foldkeys list_keys test_arrays progs: dump_entry infocmp tic
@@ -682,7 +684,7 @@ tgetstr_sp                  test: sp_tinfo
 tgoto                          test: dots_termcap railroad progs: tic
 tigetflag                      test: demo_terminfo progs: tic tput
 tigetflag_sp                   test: sp_tinfo
 tgoto                          test: dots_termcap railroad progs: tic
 tigetflag                      test: demo_terminfo progs: tic tput
 tigetflag_sp                   test: sp_tinfo
-tigetnum                       test: demo_terminfo ncurses progs: tput
+tigetnum                       test: demo_terminfo dots dots_mvcur ncurses progs: tput
 tigetnum_sp                    test: sp_tinfo
 tigetstr                       test: blue demo_defkey demo_new_pair demo_terminfo foldkeys list_keys test_sgr testcurs progs: clear_cmd tput
 tigetstr_sp                    test: sp_tinfo
 tigetnum_sp                    test: sp_tinfo
 tigetstr                       test: blue demo_defkey demo_new_pair demo_terminfo foldkeys list_keys test_sgr testcurs progs: clear_cmd tput
 tigetstr_sp                    test: sp_tinfo
@@ -693,7 +695,7 @@ touchwin                    test: chgat clip_printw demo_menus filter firstlast inch_wide inchs i
 tparm                          test: dots dots_mvcur test_sgr progs: reset_cmd tabs tic tput
 tputs                          test: dots dots_mvcur dots_termcap railroad test_vid_puts test_vidputs progs: clear_cmd reset_cmd tabs
 tputs_sp                       test: sp_tinfo
 tparm                          test: dots dots_mvcur test_sgr progs: reset_cmd tabs tic tput
 tputs                          test: dots dots_mvcur dots_termcap railroad test_vid_puts test_vidputs progs: clear_cmd reset_cmd tabs
 tputs_sp                       test: sp_tinfo
-trace                          test: demo_menus hashtest lrtest ncurses redraw test_sgr test_termattrs test_vid_puts test_vidputs testcurs view worm
+trace                          test: demo_menus hashtest lrtest ncurses padview redraw test_sgr test_termattrs test_vid_puts test_vidputs testcurs view worm
 ttytype                                test: demo_terminfo test_sgr
 typeahead                      test: testcurs
 typeahead_sp                   test: sp_tinfo
 ttytype                                test: demo_terminfo test_sgr
 typeahead                      test: testcurs
 typeahead_sp                   test: sp_tinfo
@@ -706,15 +708,15 @@ ungetch_sp                        lib: ncurses
 ungetmouse                     lib: menu
 ungetmouse_sp                  -
 untouchwin                     lib: form
 ungetmouse                     lib: menu
 ungetmouse_sp                  -
 untouchwin                     lib: form
-use_default_colors             test: background filter firework gdc hanoi knight ncurses rain tclock worm xmas
+use_default_colors             test: background dots_curses dots_xcurses filter firework gdc hanoi knight ncurses rain tclock worm xmas
 use_default_colors_sp          -
 use_default_colors_sp          -
-use_env                                test: ncurses progs: tput
+use_env                                test: dots dots_curses dots_mvcur dots_xcurses ncurses progs: clear tput
 use_env_sp                     test: sp_tinfo
 use_extended_names             test: demo_termcap demo_terminfo list_keys progs: infocmp tic
 use_legacy_coding              -
 use_legacy_coding_sp           -
 use_screen                     test: ditto
 use_env_sp                     test: sp_tinfo
 use_extended_names             test: demo_termcap demo_terminfo list_keys progs: infocmp tic
 use_legacy_coding              -
 use_legacy_coding_sp           -
 use_screen                     test: ditto
-use_tioctl                     test: ncurses
+use_tioctl                     test: ncurses progs: clear tput
 use_tioctl_sp                  test: sp_tinfo
 use_window                     test: rain worm
 vid_attr                       test: test_vid_puts
 use_tioctl_sp                  test: sp_tinfo
 use_window                     test: rain worm
 vid_attr                       test: test_vid_puts
@@ -734,21 +736,21 @@ vwscanw                           lib: ncurses
 wadd_wch                       test: inch_wide ncurses test_add_wchstr test_addwstr
 wadd_wchnstr                   test: savescreen test_add_wchstr
 wadd_wchstr                    test: test_add_wchstr
 wadd_wch                       test: inch_wide ncurses test_add_wchstr test_addwstr
 wadd_wchnstr                   test: savescreen test_add_wchstr
 wadd_wchstr                    test: test_add_wchstr
-waddch                         test: demo_forms demo_panels ditto firstlast inch_wide inchs knight ncurses popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque worm
+waddch                         test: demo_forms demo_panels ditto firstlast inch_wide inchs knight ncurses padview popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque view worm
 waddchnstr                     test: test_addchstr
 waddchstr                      test: test_addchstr
 waddnstr                       test: demo_forms test_addstr
 waddnwstr                      test: ncurses test_addwstr
 waddstr                                test: chgat clip_printw demo_forms demo_panels firstlast ins_wide insdelln knight ncurses popup_msg redraw test_add_wchstr test_addstr test_addwstr testcurs
 waddchnstr                     test: test_addchstr
 waddchstr                      test: test_addchstr
 waddnstr                       test: demo_forms test_addstr
 waddnwstr                      test: ncurses test_addwstr
 waddstr                                test: chgat clip_printw demo_forms demo_panels firstlast ins_wide insdelln knight ncurses popup_msg redraw test_add_wchstr test_addstr test_addwstr testcurs
-waddwstr                       test: ins_wide ncurses test_add_wchstr test_addwstr test_get_wstr
+waddwstr                       test: ins_wide ncurses padview test_add_wchstr test_addwstr test_get_wstr view
 wattr_get                      test: ncurses
 wattr_off                      lib: ncurses
 wattr_on                       lib: ncurses
 wattr_set                      test: ncurses
 wattroff                       test: demo_forms ncurses testcurs xmas
 wattron                                test: testcurs xmas
 wattr_get                      test: ncurses
 wattr_off                      lib: ncurses
 wattr_on                       lib: ncurses
 wattr_set                      test: ncurses
 wattroff                       test: demo_forms ncurses testcurs xmas
 wattron                                test: testcurs xmas
-wattrset                       test: clip_printw demo_forms insdelln ncurses newdemo test_get_wstr test_getstr testcurs xmas
-wbkgd                          test: cardfile demo_forms demo_menus ncurses newdemo testcurs
+wattrset                       test: clip_printw demo_forms insdelln ncurses newdemo padview test_get_wstr test_getstr testcurs xmas
+wbkgd                          test: cardfile demo_forms demo_menus ncurses newdemo padview testcurs
 wbkgdset                       test: demo_panels ins_wide inserts ncurses test_add_wchstr test_addchstr test_addstr test_addwstr
 wbkgrnd                                lib: ncurses
 wbkgrndset                     lib: ncurses
 wbkgdset                       test: demo_panels ins_wide inserts ncurses test_add_wchstr test_addchstr test_addstr test_addwstr
 wbkgrnd                                lib: ncurses
 wbkgrndset                     lib: ncurses
@@ -765,7 +767,7 @@ wdeleteln                   test: insdelln testcurs
 wecho_wchar                    lib: ncurses
 wechochar                      lib: ncurses
 wenclose                       test: ncurses
 wecho_wchar                    lib: ncurses
 wechochar                      lib: ncurses
 wenclose                       test: ncurses
-werase                         test: cardfile demo_forms demo_menus demo_panels firstlast knight ncurses newdemo popup_msg test_get_wstr test_getstr test_opaque testcurs xmas
+werase                         test: cardfile demo_forms demo_menus demo_panels firstlast knight ncurses newdemo popup_msg test_get_wstr test_getstr test_opaque testcurs view xmas
 wget_wch                       test: ins_wide ncurses test_add_wchstr test_addwstr
 wget_wstr                      test: test_get_wstr
 wgetbkgrnd                     lib: ncurses
 wget_wch                       test: ins_wide ncurses test_add_wchstr test_addwstr
 wget_wstr                      test: test_get_wstr
 wgetbkgrnd                     lib: ncurses
@@ -779,7 +781,7 @@ wgetstr                             test: test_getstr
 whline                         test: testcurs
 whline_set                     lib: ncurses
 win_wch                                test: inch_wide savescreen
 whline                         test: testcurs
 whline_set                     lib: ncurses
 win_wch                                test: inch_wide savescreen
-win_wchnstr                    test: inch_wide
+win_wchnstr                    test: inch_wide view
 win_wchstr                     test: inch_wide
 winch                          test: inchs knight testcurs
 winchnstr                      test: inchs
 win_wchstr                     test: inch_wide
 winch                          test: inchs knight testcurs
 winchnstr                      test: inchs
@@ -797,11 +799,11 @@ winsstr                           test: inserts
 winstr                         test: test_instr
 winwstr                                test: test_inwstr
 wmouse_trafo                   test: ncurses
 winstr                         test: test_instr
 winwstr                                test: test_inwstr
 wmouse_trafo                   test: ncurses
-wmove                          test: chgat clip_printw demo_altkeys demo_defkey demo_keyok demo_menus demo_panels extended_color firstlast foldkeys inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs worm
-wnoutrefresh                   test: demo_menus ditto inch_wide inchs ins_wide inserts knight movewindow ncurses popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque
+wmove                          test: chgat clip_printw demo_altkeys demo_defkey demo_keyok demo_menus demo_panels extended_color firstlast foldkeys inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo padview picsmap redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm
+wnoutrefresh                   test: demo_menus ditto inch_wide inchs ins_wide inserts knight movewindow ncurses padview popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque
 wprintw                                test: chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels inch_wide inchs ins_wide insdelln inserts knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
 wredrawln                      test: redraw
 wprintw                                test: chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels inch_wide inchs ins_wide insdelln inserts knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs
 wredrawln                      test: redraw
-wrefresh                       test: chgat clip_printw demo_forms demo_keyok demo_menus demo_panels firstlast ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo popup_msg redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs view worm xmas
+wrefresh                       test: chgat clip_printw demo_forms demo_keyok demo_menus demo_panels firstlast ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo popup_msg redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs worm xmas
 wresize                                test: cardfile demo_menus ncurses
 wscanw                         test: testcurs
 wscrl                          test: ncurses testcurs
 wresize                                test: cardfile demo_menus ncurses
 wscanw                         test: testcurs
 wscrl                          test: ncurses testcurs
@@ -838,4 +840,4 @@ top_panel                   test: cardfile demo_panels ncurses
 update_panels                  test: cardfile demo_panels ncurses
 update_panels_sp               -
 
 update_panels                  test: cardfile demo_panels ncurses
 update_panels_sp               -
 
--- vile:txtmode
+--- vile:txtmode
index 5490bcfba31ec79b41140fa913f9ea3519bed3de..8e5000944397226bea4699f0d9912be11cde1ede 100644 (file)
@@ -29,7 +29,7 @@
 /*
  * Author: Thomas E. Dickey <dickey@clark.net> 1999
  *
 /*
  * Author: Thomas E. Dickey <dickey@clark.net> 1999
  *
- * $Id: dots.c,v 1.31 2017/10/22 00:44:06 tom Exp $
+ * $Id: dots.c,v 1.32 2017/10/22 15:20:57 tom Exp $
  *
  * A simple demo of the terminfo interface.
  */
  *
  * A simple demo of the terminfo interface.
  */
@@ -97,7 +97,7 @@ ranf(void)
 }
 
 static int
 }
 
 static int
-get_number(const char *cap, int map)
+get_number(NCURSES_CONST char *cap, int map)
 {
     int result = map;
     if (cap != 0) {
 {
     int result = map;
     if (cap != 0) {
index b0adfe186e9e3b92cfc92dfb27f5ba43149e85b4..a93fd9bbe537ac3de622698c924d7e59bdad959e 100644 (file)
@@ -29,7 +29,7 @@
 /*
  * Author: Thomas E. Dickey
  *
 /*
  * Author: Thomas E. Dickey
  *
- * $Id: dots_curses.c,v 1.9 2017/10/22 00:44:39 tom Exp $
+ * $Id: dots_curses.c,v 1.10 2017/10/23 08:42:40 tom Exp $
  *
  * A simple demo of the curses interface used for comparison with termcap.
  */
  *
  * A simple demo of the curses interface used for comparison with termcap.
  */
@@ -131,9 +131,11 @@ main(int argc, char *argv[])
            d_option = TRUE;
            break;
 #endif
            d_option = TRUE;
            break;
 #endif
+#if HAVE_USE_ENV
        case 'e':
            use_env(TRUE);
            break;
        case 'e':
            use_env(TRUE);
            break;
+#endif
        case 'm':
            m_option = atoi(optarg);
            break;
        case 'm':
            m_option = atoi(optarg);
            break;
index 2a2cdf5429be709d449ce9a621670c329c18f334..78b54dc7426bff50398fcca37ca7556a7fdcb30c 100644 (file)
@@ -29,7 +29,7 @@
 /*
  * Author: Thomas E. Dickey - 2007
  *
 /*
  * Author: Thomas E. Dickey - 2007
  *
- * $Id: dots_mvcur.c,v 1.17 2017/10/22 00:44:39 tom Exp $
+ * $Id: dots_mvcur.c,v 1.18 2017/10/22 15:22:43 tom Exp $
  *
  * A simple demo of the terminfo interface, and mvcur.
  */
  *
  * A simple demo of the terminfo interface, and mvcur.
  */
@@ -98,7 +98,7 @@ ranf(void)
 }
 
 static int
 }
 
 static int
-get_number(const char *cap, int map)
+get_number(NCURSES_CONST char *cap, int map)
 {
     int result = map;
     if (cap != 0) {
 {
     int result = map;
     if (cap != 0) {
index e9c34bace2da51e42cc374509aa2c40c267877ef..b0b016c8dac40bb3a523d87209d427faf084a099 100644 (file)
@@ -29,7 +29,7 @@
 /*
  * Author: Thomas E. Dickey
  *
 /*
  * Author: Thomas E. Dickey
  *
- * $Id: dots_termcap.c,v 1.15 2017/10/22 00:49:45 tom Exp $
+ * $Id: dots_termcap.c,v 1.16 2017/10/22 15:21:34 tom Exp $
  *
  * A simple demo of the termcap interface.
  */
  *
  * A simple demo of the termcap interface.
  */
@@ -60,7 +60,7 @@ static char *t_ve;
 static char *t_vi;
 
 static struct {
 static char *t_vi;
 
 static struct {
-    const char *name;
+    NCURSES_CONST char *name;
     char **value;
 } my_caps[] = {
 
     char **value;
 } my_caps[] = {
 
@@ -164,7 +164,7 @@ my_napms(int ms)
 }
 
 static int
 }
 
 static int
-get_number(const char *cap, const char *env)
+get_number(NCURSES_CONST char *cap, const char *env)
 {
     int result = tgetnum(cap);
     char *value = env ? getenv(env) : 0;
 {
     int result = tgetnum(cap);
     char *value = env ? getenv(env) : 0;
index 938acf068e85825b9446670bb2fd001a5993154d..7dde8b2ec3660234294d37038044b1d418a38e96 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: modules,v 1.65 2017/10/11 08:08:41 tom Exp $
+# $Id: modules,v 1.66 2017/10/22 16:06:33 tom Exp $
 ##############################################################################
 # Copyright (c) 1998-2016,2017 Free Software Foundation, Inc.                #
 #                                                                            #
 ##############################################################################
 # Copyright (c) 1998-2016,2017 Free Software Foundation, Inc.                #
 #                                                                            #
@@ -78,6 +78,7 @@ lrtest                progs           $(srcdir)       $(HEADER_DEPS)
 movewindow     progs           $(srcdir)       $(HEADER_DEPS)  $(srcdir)/popup_msg.h
 ncurses                progs           $(srcdir)       $(HEADER_DEPS)  ../include/panel.h ../include/menu.h ../include/form.h
 newdemo                progs           $(srcdir)       $(HEADER_DEPS)
 movewindow     progs           $(srcdir)       $(HEADER_DEPS)  $(srcdir)/popup_msg.h
 ncurses                progs           $(srcdir)       $(HEADER_DEPS)  ../include/panel.h ../include/menu.h ../include/form.h
 newdemo                progs           $(srcdir)       $(HEADER_DEPS)
+padview                progs           $(srcdir)       $(HEADER_DEPS)  $(srcdir)/widechars.h   $(srcdir)/popup_msg.h
 picsmap                progs           $(srcdir)       $(HEADER_DEPS)
 popup_msg      progs           $(srcdir)       $(HEADER_DEPS)  $(srcdir)/popup_msg.h
 railroad       progs           $(srcdir)       $(HEADER_DEPS)
 picsmap                progs           $(srcdir)       $(HEADER_DEPS)
 popup_msg      progs           $(srcdir)       $(HEADER_DEPS)  $(srcdir)/popup_msg.h
 railroad       progs           $(srcdir)       $(HEADER_DEPS)
index 12717880514a48691192270ee46aeceb1b5962e8..a01b6facfcce2060c50df37178a9376c11b91c28 100644 (file)
@@ -40,7 +40,7 @@ AUTHOR
    Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
            Thomas E. Dickey (beginning revision 1.27 in 1996).
 
    Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993
            Thomas E. Dickey (beginning revision 1.27 in 1996).
 
-$Id: ncurses.c,v 1.470 2017/10/20 21:20:47 tom Exp $
+$Id: ncurses.c,v 1.487 2017/10/28 00:54:41 tom Exp $
 
 ***************************************************************************/
 
 
 ***************************************************************************/
 
@@ -476,6 +476,7 @@ Cannot(const char *what)
 {
     printw("\nThis %s terminal %s\n\n", getenv("TERM"), what);
     Pause();
 {
     printw("\nThis %s terminal %s\n\n", getenv("TERM"), what);
     Pause();
+    endwin();
 }
 
 static void
 }
 
 static void
@@ -2263,16 +2264,16 @@ color_test(bool recur GCC_UNUSED)
 
     while (!done) {
        int shown = 0;
 
     while (!done) {
        int shown = 0;
+       double colors_max2 = (double) colors_max * (double) colors_max;
 
        pairs_max = PAIR_NUMBER(A_COLOR) + 1;
 
        pairs_max = PAIR_NUMBER(A_COLOR) + 1;
-       if (colors_max * colors_max <= COLOR_PAIRS) {
+       if (colors_max2 <= COLOR_PAIRS) {
            int limit = (colors_max - MinColors) * (colors_max - MinColors);
            if (pairs_max > limit)
                pairs_max = limit;
            int limit = (colors_max - MinColors) * (colors_max - MinColors);
            if (pairs_max > limit)
                pairs_max = limit;
-       } else {
-           if (pairs_max > COLOR_PAIRS)
-               pairs_max = COLOR_PAIRS;
        }
        }
+       if (pairs_max < COLOR_PAIRS)
+           pairs_max = COLOR_PAIRS;
 
        /* this assumes an 80-column line */
        if (opt_wide) {
 
        /* this assumes an 80-column line */
        if (opt_wide) {
@@ -2491,16 +2492,16 @@ x_color_test(bool recur GCC_UNUSED)
 
     while (!done) {
        int shown = 0;
 
     while (!done) {
        int shown = 0;
+       double colors_max2 = (double) colors_max * (double) colors_max;
 
 
-       pairs_max = (unsigned short) (-1);
-       if (colors_max * colors_max <= COLOR_PAIRS) {
+       pairs_max = ((unsigned) (-1)) / 2;
+       if (colors_max2 <= COLOR_PAIRS) {
            int limit = (colors_max - MinColors) * (colors_max - MinColors);
            if (pairs_max > limit)
                pairs_max = limit;
            int limit = (colors_max - MinColors) * (colors_max - MinColors);
            if (pairs_max > limit)
                pairs_max = limit;
-       } else {
-           if (pairs_max > COLOR_PAIRS)
-               pairs_max = COLOR_PAIRS;
        }
        }
+       if (pairs_max > COLOR_PAIRS)
+           pairs_max = COLOR_PAIRS;
 
        if (opt_wide) {
            width = 4;
 
        if (opt_wide) {
            width = 4;
@@ -6656,6 +6657,44 @@ form_test(bool recur GCC_UNUSED)
  ****************************************************************************/
 
 #if HAVE_COPYWIN               /* ...and overlay, overwrite */
  ****************************************************************************/
 
 #if HAVE_COPYWIN               /* ...and overlay, overwrite */
+
+static WINDOW *
+make_overlap(int n)
+{
+    WINDOW *result;
+    int y, x;
+
+    getmaxyx(stdscr, y, x);
+    if (y < 23 || x < 80) {
+       Cannot("The screen is too small for this test");
+       result = 0;
+    } else {
+       const int H_SIZE = 1;   /* header-size */
+       const int F_SIZE = 6;   /* footer-size */
+       int ymax = y - (H_SIZE + F_SIZE);
+       int high = ymax / 5;    /* equal-sized parts for cross */
+       int xmax = x - 2;       /* margin */
+       int wide = (xmax / 5) & ~1;
+       int lmar, tmar;
+
+       if (high > 8)
+           high = 8;
+
+       if (wide > 8)
+           wide = 8;
+
+       tmar = (ymax - (5 * high)) / 2 + H_SIZE;
+       lmar = (xmax - (5 * wide)) / 2;
+
+       if (n == 0) {
+           result = newwin(3 * high, 3 * wide, tmar, lmar);
+       } else {
+           result = newwin(3 * high, 3 * wide, tmar + 2 * high, lmar + 2 * wide);
+       }
+    }
+    return result;
+}
+
 static void
 fillwin(WINDOW *win, char ch)
 {
 static void
 fillwin(WINDOW *win, char ch)
 {
@@ -6670,24 +6709,107 @@ fillwin(WINDOW *win, char ch)
     }
 }
 
     }
 }
 
+#define InCross(x,y, x1,y1) \
+           (((x > (x1 - 1) / 3) && (x <= (2 * (x1 - 1)) / 3)) \
+               || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3))))
+
 static void
 crosswin(WINDOW *win, char ch)
 {
     int y, x;
     int y1, x1;
 static void
 crosswin(WINDOW *win, char ch)
 {
     int y, x;
     int y1, x1;
+    int xw = 1;
 
     getmaxyx(win, y1, x1);
     for (y = 0; y < y1; y++) {
 
     getmaxyx(win, y1, x1);
     for (y = 0; y < y1; y++) {
-       for (x = 0; x < x1; x++)
-           if (((x > (x1 - 1) / 3) && (x <= (2 * (x1 - 1)) / 3))
-               || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3)))) {
+       for (x = 0; x < x1; x += xw) {
+           if (InCross(x, y, x1, y1)) {
                wmove(win, y, x);
                waddch(win, UChar(ch));
            }
                wmove(win, y, x);
                waddch(win, UChar(ch));
            }
+       }
     }
 }
 
     }
 }
 
-#define OVERLAP_FLAVORS 5
+/*
+ * Match "crosswin()", but using line-drawing characters.  This could be done
+ * a little simpler using box(), but the reason for this example is to test
+ * hline/vline and addch with line-drawing vs the copy/overlay functions.
+ */
+static void
+crossbox(WINDOW *win)
+{
+    int y1, x1;
+    int ymax, xmax;
+
+    getmaxyx(win, y1, x1);
+
+    ymax = (y1 + 1);
+    xmax = (x1 + 1);
+
+    mvwhline(win, 0, (xmax / 3), ACS_HLINE, (xmax / 3));
+    mvwhline(win, ymax / 3, 0, ACS_HLINE, xmax);
+    mvwhline(win, ((2 * ymax) / 3) - 1, 0, ACS_HLINE, xmax);
+    mvwhline(win, y1 - 1, (xmax / 3), ACS_HLINE, (xmax / 3));
+
+    mvwvline(win, (ymax / 3), 0, ACS_VLINE, (ymax / 3));
+    mvwvline(win, 0, xmax / 3, ACS_VLINE, ymax);
+    mvwvline(win, 0, ((2 * xmax) / 3) - 1, ACS_VLINE, ymax);
+    mvwvline(win, (ymax / 3), x1 - 1, ACS_VLINE, (ymax / 3));
+
+    mvwaddch(win, 0, (xmax / 3), ACS_ULCORNER);
+    mvwaddch(win, 0, ((2 * xmax) / 3) - 1, ACS_URCORNER);
+    mvwaddch(win, y1 - 1, (xmax / 3), ACS_LLCORNER);
+    mvwaddch(win, y1 - 1, ((2 * xmax) / 3) - 1, ACS_LRCORNER);
+
+    mvwaddch(win, (ymax / 3), 0, ACS_ULCORNER);
+    mvwaddch(win, ((2 * ymax) / 3) - 1, 0, ACS_LLCORNER);
+    mvwaddch(win, (ymax / 3), x1 - 1, ACS_URCORNER);
+    mvwaddch(win, ((2 * ymax) / 3) - 1, x1 - 1, ACS_LRCORNER);
+
+    mvwaddch(win, (ymax / 3), (xmax / 3), ACS_PLUS);
+    mvwaddch(win, (ymax / 3), ((2 * xmax) / 3) - 1, ACS_PLUS);
+    mvwaddch(win, ((2 * ymax) / 3) - 1, ((2 * xmax) / 3) - 1, ACS_PLUS);
+    mvwaddch(win, ((2 * ymax) / 3) - 1, (xmax / 3), ACS_PLUS);
+}
+
+typedef enum {
+    otBASE_refresh = 0
+    ,otBASE_fill
+    ,otBASE_draw
+    ,otBASE_clear
+    ,otBASE_copy
+} otBASE;
+
+#define OVERLAP_FLAVORS 6
+
+typedef enum {
+    otFILL_normal = 0
+    ,otFILL_bold
+    ,otFILL_color
+    ,otFILL_bright
+} otFILL;
+
+#define LimitFILL() UseColors ? 4 : 2
+
+typedef enum {
+    otDRAW_text_cross = 0
+    ,otDRAW_line_box
+    ,otDRAW_line_cross
+    ,otDRAW_set_bg
+    ,otDRAW_reset_bg
+} otDRAW;
+
+#define LimitDRAW() UseColors ? 5 : 3
+
+typedef enum {
+    otCOPY_overwrite = 0
+    ,otCOPY_merge
+    ,otCOPY_force
+    ,otCOPY_overlay
+} otCOPY;
+
+#define LimitCOPY() 4
 
 static void
 overlap_helpitem(int state, int item, char *message)
 
 static void
 overlap_helpitem(int state, int item, char *message)
@@ -6705,18 +6827,18 @@ overlap_test_1_attr(WINDOW *win, int flavor, int col)
 {
     NCURSES_PAIRS_T cpair = (NCURSES_PAIRS_T) (1 + (flavor * 2) + col);
 
 {
     NCURSES_PAIRS_T cpair = (NCURSES_PAIRS_T) (1 + (flavor * 2) + col);
 
-    switch (flavor) {
-    case 0:
+    switch ((otFILL) flavor) {
+    case otFILL_normal:
        (void) wattrset(win, A_NORMAL);
        break;
        (void) wattrset(win, A_NORMAL);
        break;
-    case 1:
+    case otFILL_bold:
        (void) wattrset(win, A_BOLD);
        break;
        (void) wattrset(win, A_BOLD);
        break;
-    case 2:
+    case otFILL_color:
        init_pair(cpair, COLOR_BLUE, COLOR_WHITE);
        (void) wattrset(win, AttrArg(COLOR_PAIR(cpair), A_NORMAL));
        break;
        init_pair(cpair, COLOR_BLUE, COLOR_WHITE);
        (void) wattrset(win, AttrArg(COLOR_PAIR(cpair), A_NORMAL));
        break;
-    case 3:
+    case otFILL_bright:
        init_pair(cpair, COLOR_WHITE, COLOR_BLUE);
        (void) wattrset(win, AttrArg(COLOR_PAIR(cpair), A_BOLD));
        break;
        init_pair(cpair, COLOR_WHITE, COLOR_BLUE);
        (void) wattrset(win, AttrArg(COLOR_PAIR(cpair), A_BOLD));
        break;
@@ -6728,18 +6850,21 @@ overlap_test_2_attr(WINDOW *win, int flavor, int col)
 {
     NCURSES_PAIRS_T cpair = (NCURSES_PAIRS_T) (9 + (flavor * 2) + col);
 
 {
     NCURSES_PAIRS_T cpair = (NCURSES_PAIRS_T) (9 + (flavor * 2) + col);
 
-    switch (flavor) {
-    case 0:
+    switch ((otDRAW) flavor) {
+    case otDRAW_text_cross:
        /* no effect */
        break;
        /* no effect */
        break;
-    case 1:
+    case otDRAW_line_box:
        /* no effect */
        break;
        /* no effect */
        break;
-    case 2:
+    case otDRAW_line_cross:
+       /* no effect */
+       break;
+    case otDRAW_set_bg:
        init_pair(cpair, COLOR_RED, COLOR_GREEN);
        wbkgdset(win, colored_chtype(' ', A_BLINK, cpair));
        break;
        init_pair(cpair, COLOR_RED, COLOR_GREEN);
        wbkgdset(win, colored_chtype(' ', A_BLINK, cpair));
        break;
-    case 3:
+    case otDRAW_reset_bg:
        wbkgdset(win, ' ' | A_NORMAL);
        break;
     }
        wbkgdset(win, ' ' | A_NORMAL);
        break;
     }
@@ -6751,6 +6876,7 @@ overlap_help(int state, int flavors[OVERLAP_FLAVORS])
     int row;
     int col;
     int item;
     int row;
     int col;
     int item;
+    int limit[OVERLAP_FLAVORS];
     const char *ths, *tht;
     char msg[80];
 
     const char *ths, *tht;
     char msg[80];
 
@@ -6765,68 +6891,69 @@ overlap_help(int state, int flavors[OVERLAP_FLAVORS])
        ths = col ? "B" : "A";
        tht = col ? "A" : "B";
 
        ths = col ? "B" : "A";
        tht = col ? "A" : "B";
 
-       switch (row) {
-       case 0:
+       switch ((otBASE) row) {
+       case otBASE_refresh:
+           limit[row] = 1;
            flavors[row] = 0;
            _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                        "refresh %s, then %s, then doupdate.", ths, tht);
            break;
            flavors[row] = 0;
            _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                        "refresh %s, then %s, then doupdate.", ths, tht);
            break;
-       case 1:
-           if (UseColors) {
-               flavors[row] %= 4;
-           } else {
-               flavors[row] %= 2;
-           }
+       case otBASE_fill:
+           limit[row] = LimitFILL();
+           flavors[row] %= limit[row];
            overlap_test_1_attr(stdscr, flavors[row], col);
            _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                        "fill window %s with letter %s.", ths, ths);
            break;
            overlap_test_1_attr(stdscr, flavors[row], col);
            _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                        "fill window %s with letter %s.", ths, ths);
            break;
-       case 2:
-           if (UseColors) {
-               flavors[row] %= 4;
-           } else {
-               flavors[row] %= 2;
-           }
-           switch (flavors[row]) {
-           case 0:
+       case otBASE_draw:
+           limit[row] = LimitDRAW();
+           flavors[row] %= limit[row];
+           switch ((otDRAW) flavors[row]) {
+           case otDRAW_text_cross:
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
-                           "cross pattern in window %s.", ths);
+                           "cross text-pattern in window %s.", ths);
                break;
                break;
-           case 1:
+           case otDRAW_line_box:
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
-                           "draw box in window %s.", ths);
+                           "draw line-box in window %s.", ths);
                break;
                break;
-           case 2:
+           case otDRAW_line_cross:
+               _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
+                           "draw line-cross in window %s.", ths);
+               break;
+           case otDRAW_set_bg:
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "set background of window %s.", ths);
                break;
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "set background of window %s.", ths);
                break;
-           case 3:
+           case otDRAW_reset_bg:
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "reset background of window %s.", ths);
                break;
            }
            break;
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "reset background of window %s.", ths);
                break;
            }
            break;
-       case 3:
+       case otBASE_clear:
+           limit[row] = 1;
            flavors[row] = 0;
            _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                        "clear window %s.", ths);
            break;
            flavors[row] = 0;
            _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                        "clear window %s.", ths);
            break;
-       case 4:
-           flavors[row] %= 4;
-           switch (flavors[row]) {
-           case 0:
+       case otBASE_copy:
+           limit[row] = LimitCOPY();
+           flavors[row] %= limit[row];
+           switch ((otCOPY) flavors[row]) {
+           case otCOPY_overwrite:
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "overwrite %s onto %s.", ths, tht);
                break;
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "overwrite %s onto %s.", ths, tht);
                break;
-           case 1:
+           case otCOPY_merge:
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "copywin(FALSE) %s onto %s.", ths, tht);
                break;
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "copywin(FALSE) %s onto %s.", ths, tht);
                break;
-           case 2:
+           case otCOPY_force:
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "copywin(TRUE) %s onto %s.", ths, tht);
                break;
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "copywin(TRUE) %s onto %s.", ths, tht);
                break;
-           case 3:
+           case otCOPY_overlay:
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "overlay %s onto %s.", ths, tht);
                break;
                _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg))
                            "overlay %s onto %s.", ths, tht);
                break;
@@ -6838,8 +6965,12 @@ overlap_help(int state, int flavors[OVERLAP_FLAVORS])
        wbkgdset(stdscr, ' ' | A_NORMAL);
     }
     move(LINES - 1, 0);
        wbkgdset(stdscr, ' ' | A_NORMAL);
     }
     move(LINES - 1, 0);
-    printw("^Q/ESC = terminate test.  Up/down/space select test variations (%d %d).",
-          state, flavors[state]);
+    printw("^Q/ESC = terminate test.  Up/down/space select tests (row %d",
+          state + 1);
+    if (limit[state] > 1)
+       printw(" test %d:%d", 1 + flavors[state], limit[state]);
+    printw(").");
+    clrtoeol();
 
     return state;
 }
 
     return state;
 }
@@ -6866,17 +6997,20 @@ static void
 overlap_test_2(int flavor, int col, WINDOW *a, char fill)
 {
     overlap_test_2_attr(a, flavor, col);
 overlap_test_2(int flavor, int col, WINDOW *a, char fill)
 {
     overlap_test_2_attr(a, flavor, col);
-    switch (flavor) {
-    case 0:
+    switch ((otDRAW) flavor) {
+    case otDRAW_text_cross:
        crosswin(a, fill);
        break;
        crosswin(a, fill);
        break;
-    case 1:
+    case otDRAW_line_box:
        box(a, 0, 0);
        break;
        box(a, 0, 0);
        break;
-    case 2:
+    case otDRAW_line_cross:
+       crossbox(a);
+       break;
+    case otDRAW_set_bg:
        /* done in overlap_test_2_attr */
        break;
        /* done in overlap_test_2_attr */
        break;
-    case 3:
+    case otDRAW_reset_bg:
        /* done in overlap_test_2_attr */
        break;
     }
        /* done in overlap_test_2_attr */
        break;
     }
@@ -6892,17 +7026,17 @@ overlap_test_3(WINDOW *a)
 static void
 overlap_test_4(int flavor, WINDOW *a, WINDOW *b)
 {
 static void
 overlap_test_4(int flavor, WINDOW *a, WINDOW *b)
 {
-    switch (flavor) {
-    case 0:
+    switch ((otCOPY) flavor) {
+    case otCOPY_overwrite:
        overwrite(a, b);
        break;
        overwrite(a, b);
        break;
-    case 1:
+    case otCOPY_merge:
        copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), FALSE);
        break;
        copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), FALSE);
        break;
-    case 2:
+    case otCOPY_force:
        copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), TRUE);
        break;
        copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), TRUE);
        break;
-    case 3:
+    case otCOPY_overlay:
        overlay(a, b);
        break;
     }
        overlay(a, b);
        break;
     }
@@ -6912,24 +7046,186 @@ overlap_test_4(int flavor, WINDOW *a, WINDOW *b)
 static int
 overlap_test(bool recur GCC_UNUSED)
 {
 static int
 overlap_test(bool recur GCC_UNUSED)
 {
+    WINDOW *win1, *win2;
+    int ch;
+    int state, flavor[OVERLAP_FLAVORS];
+
+    if ((win1 = make_overlap(0)) == 0
+       || (win2 = make_overlap(1)) == 0)
+       return ERR;
+
+    curs_set(0);
+    raw();
+    refresh();
+    move(0, 0);
+    printw("Test wnoutrefresh() for two overlapping windows:");
+
+    memset(flavor, 0, sizeof(flavor));
+    state = overlap_help(0, flavor);
+
+    while (!isQuit(ch = Getchar(), TRUE)) {
+       switch (ch) {
+       case 'a':               /* refresh window A first, then B */
+           overlap_test_0(win1, win2);
+           break;
+
+       case 'b':               /* refresh window B first, then A */
+           overlap_test_0(win2, win1);
+           break;
+
+       case 'c':               /* fill window A so it's visible */
+           overlap_test_1(flavor[otBASE_fill], 0, win1, 'A');
+           break;
+
+       case 'd':               /* fill window B so it's visible */
+           overlap_test_1(flavor[otBASE_fill], 1, win2, 'B');
+           break;
+
+       case 'e':               /* cross test pattern in window A */
+           overlap_test_2(flavor[otBASE_draw], 0, win1, 'A');
+           break;
+
+       case 'f':               /* cross test pattern in window A */
+           overlap_test_2(flavor[otBASE_draw], 1, win2, 'B');
+           break;
+
+       case 'g':               /* clear window A */
+           overlap_test_3(win1);
+           break;
+
+       case 'h':               /* clear window B */
+           overlap_test_3(win2);
+           break;
+
+       case 'i':               /* overwrite A onto B */
+           overlap_test_4(flavor[otBASE_copy], win1, win2);
+           break;
+
+       case 'j':               /* overwrite B onto A */
+           overlap_test_4(flavor[otBASE_copy], win2, win1);
+           break;
+
+       case CTRL('n'):
+       case KEY_DOWN:
+           state = overlap_help(state + 1, flavor);
+           break;
+
+       case CTRL('p'):
+       case KEY_UP:
+           state = overlap_help(state - 1, flavor);
+           break;
+
+       case ' ':
+           flavor[state] += 1;
+           state = overlap_help(state, flavor);
+           break;
+
+       case HELP_KEY_1:
+           state = overlap_help(state, flavor);
+           break;
+
+       default:
+           beep();
+           break;
+       }
+    }
+
+    delwin(win2);
+    delwin(win1);
+    erase();
+    exit_curses();
+    return OK;
+}
+
+#if USE_WIDEC_SUPPORT
+static void
+x_fillwin(WINDOW *win, wchar_t ch)
+{
+    int y, x;
+    int y1, x1;
+
+    getmaxyx(win, y1, x1);
+    x1 /= 2;
+    for (y = 0; y < y1; y++) {
+       wmove(win, y, 0);
+       for (x = 0; x < x1; x++)
+           waddnwstr(win, &ch, 1);
+    }
+}
+
+static void
+x_crosswin(WINDOW *win, wchar_t ch)
+{
+    int y, x;
+    int y1, x1;
+    int xw = 2;
+
+    getmaxyx(win, y1, x1);
+    for (y = 0; y < y1; y++) {
+       for (x = 0; x < x1; x += xw) {
+           if (InCross(x, y, x1, y1)) {
+               wmove(win, y, x);
+               waddnwstr(win, &ch, 1);
+           }
+       }
+    }
+}
+
+static void
+x_overlap_test_1(int flavor, int col, WINDOW *a, wchar_t fill)
+{
+    overlap_test_1_attr(a, flavor, col);
+    x_fillwin(a, fill);
+    (void) wattrset(a, A_NORMAL);
+}
+
+static void
+x_overlap_test_2(int flavor, int col, WINDOW *a, wchar_t fill)
+{
+    overlap_test_2_attr(a, flavor, col);
+    switch ((otDRAW) flavor) {
+    case otDRAW_text_cross:
+       x_crosswin(a, fill);
+       break;
+    case otDRAW_line_box:
+       box(a, 0, 0);
+       break;
+    case otDRAW_line_cross:
+       crossbox(a);
+       break;
+    case otDRAW_set_bg:
+       /* done in overlap_test_2_attr */
+       break;
+    case otDRAW_reset_bg:
+       /* done in overlap_test_2_attr */
+       break;
+    }
+}
+
+/* test effects of overlapping windows */
+static int
+x_overlap_test(bool recur GCC_UNUSED)
+{
+    const wchar_t WIDE_A = 0xff21;
+    const wchar_t WIDE_B = 0xff22;
+    WINDOW *win1, *win2;
     int ch;
     int state, flavor[OVERLAP_FLAVORS];
 
     int ch;
     int state, flavor[OVERLAP_FLAVORS];
 
-    WINDOW *win1 = newwin(9, 20, 3, 3);
-    WINDOW *win2 = newwin(9, 20, 9, 16);
+    if ((win1 = make_overlap(0)) == 0
+       || (win2 = make_overlap(1)) == 0)
+       return ERR;
 
     curs_set(0);
     raw();
     refresh();
     move(0, 0);
 
     curs_set(0);
     raw();
     refresh();
     move(0, 0);
-    printw("This test shows the behavior of wnoutrefresh() with respect to\n");
-    printw("the shared region of two overlapping windows A and B.  The cross\n");
-    printw("pattern in each window does not overlap the other.\n");
+    printw("Test wnoutrefresh() for overlapping windows with double-cell characters:");
 
     memset(flavor, 0, sizeof(flavor));
     state = overlap_help(0, flavor);
 
 
     memset(flavor, 0, sizeof(flavor));
     state = overlap_help(0, flavor);
 
-    while (!isQuit(ch = Getchar(), TRUE))
+    while (!isQuit(ch = Getchar(), TRUE)) {
        switch (ch) {
        case 'a':               /* refresh window A first, then B */
            overlap_test_0(win1, win2);
        switch (ch) {
        case 'a':               /* refresh window A first, then B */
            overlap_test_0(win1, win2);
@@ -6940,19 +7236,19 @@ overlap_test(bool recur GCC_UNUSED)
            break;
 
        case 'c':               /* fill window A so it's visible */
            break;
 
        case 'c':               /* fill window A so it's visible */
-           overlap_test_1(flavor[1], 0, win1, 'A');
+           x_overlap_test_1(flavor[otBASE_fill], 0, win1, WIDE_A);
            break;
 
        case 'd':               /* fill window B so it's visible */
            break;
 
        case 'd':               /* fill window B so it's visible */
-           overlap_test_1(flavor[1], 1, win2, 'B');
+           x_overlap_test_1(flavor[otBASE_fill], 1, win2, WIDE_B);
            break;
 
        case 'e':               /* cross test pattern in window A */
            break;
 
        case 'e':               /* cross test pattern in window A */
-           overlap_test_2(flavor[2], 0, win1, 'A');
+           x_overlap_test_2(flavor[otBASE_draw], 0, win1, WIDE_A);
            break;
 
        case 'f':               /* cross test pattern in window A */
            break;
 
        case 'f':               /* cross test pattern in window A */
-           overlap_test_2(flavor[2], 1, win2, 'B');
+           x_overlap_test_2(flavor[otBASE_draw], 1, win2, WIDE_B);
            break;
 
        case 'g':               /* clear window A */
            break;
 
        case 'g':               /* clear window A */
@@ -6964,11 +7260,11 @@ overlap_test(bool recur GCC_UNUSED)
            break;
 
        case 'i':               /* overwrite A onto B */
            break;
 
        case 'i':               /* overwrite A onto B */
-           overlap_test_4(flavor[4], win1, win2);
+           overlap_test_4(flavor[otBASE_copy], win1, win2);
            break;
 
        case 'j':               /* overwrite B onto A */
            break;
 
        case 'j':               /* overwrite B onto A */
-           overlap_test_4(flavor[4], win2, win1);
+           overlap_test_4(flavor[otBASE_copy], win2, win1);
            break;
 
        case CTRL('n'):
            break;
 
        case CTRL('n'):
@@ -6994,6 +7290,7 @@ overlap_test(bool recur GCC_UNUSED)
            beep();
            break;
        }
            beep();
            break;
        }
+    }
 
     delwin(win2);
     delwin(win1);
 
     delwin(win2);
     delwin(win1);
@@ -7001,6 +7298,7 @@ overlap_test(bool recur GCC_UNUSED)
     exit_curses();
     return OK;
 }
     exit_curses();
     return OK;
 }
+#endif /* USE_WIDEC_SUPPORT */
 
 #endif /* HAVE_COPYWIN */
 
 
 #endif /* HAVE_COPYWIN */
 
@@ -7240,7 +7538,7 @@ main_menu(bool top)
        CMDS(TRUE, ONLY(form_test),     'r', "exercise form library"),
 #endif
 #if HAVE_COPYWIN
        CMDS(TRUE, ONLY(form_test),     'r', "exercise form library"),
 #endif
 #if HAVE_COPYWIN
-       CMDS(TRUE, ONLY(overlap_test),  's', "overlapping-refresh test"),
+       CMDS(TRUE, BOTH(overlap_test),  's', "overlapping-refresh test"),
 #endif
 #if USE_LIBMENU && defined(TRACE)
        CMDS(TRUE, ONLY(trace_set),     't', "set trace level"),
 #endif
 #if USE_LIBMENU && defined(TRACE)
        CMDS(TRUE, ONLY(trace_set),     't', "set trace level"),
diff --git a/test/padview.c b/test/padview.c
new file mode 100644 (file)
index 0000000..3b4e052
--- /dev/null
@@ -0,0 +1,524 @@
+/****************************************************************************
+ * Copyright (c) 2017 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.                                                           *
+ ****************************************************************************/
+/*
+ * clone of view.c, using pads
+ *
+ * $Id: padview.c,v 1.12 2017/10/23 00:37:21 tom Exp $
+ */
+
+#include <test.priv.h>
+#include <widechars.h>
+#include <popup_msg.h>
+
+#include <sys/stat.h>
+#include <time.h>
+
+#if HAVE_NEWPAD
+
+static void finish(int sig) GCC_NORETURN;
+
+#define my_pair 1
+
+static int shift = 0;
+static bool try_color = FALSE;
+
+static char *fname;
+static int num_lines;
+
+#if USE_WIDEC_SUPPORT
+static bool n_option = FALSE;
+#endif
+
+static void usage(void) GCC_NORETURN;
+
+static void
+failed(const char *msg)
+{
+    endwin();
+    fprintf(stderr, "%s\n", msg);
+    ExitProgram(EXIT_FAILURE);
+}
+
+static void
+finish(int sig)
+{
+    endwin();
+    ExitProgram(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS);
+}
+
+static void
+show_all(const char *tag, WINDOW *my_pad, int my_row)
+{
+    int i;
+    int digits;
+    char temp[BUFSIZ];
+    time_t this_time;
+
+    for (digits = 1, i = num_lines; i > 0; i /= 10) {
+       ++digits;
+    }
+
+    wattrset(stdscr, COLOR_PAIR(my_pair));
+    clear();
+
+    _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
+               "view %.*s", (int) strlen(tag), tag);
+    i = (int) strlen(temp);
+    _nc_SPRINTF(temp + i, _nc_SLIMIT(sizeof(temp) - i)
+               " %.*s", (int) sizeof(temp) - i - 2, fname);
+    mvprintw(0, 0, "%.*s", COLS, temp);
+    this_time = time((time_t *) 0);
+    _nc_STRNCPY(temp, ctime(&this_time), (size_t) 30);
+    if ((i = (int) strlen(temp)) != 0) {
+       temp[--i] = 0;
+       mvprintw(0, COLS - i - 2, "  %s", temp);
+    }
+
+    for (i = 1; i < LINES; i++) {
+       int actual = my_row + i;
+       if (actual > num_lines) {
+           break;
+       }
+       mvprintw(i, 0, "%*d:", digits, actual);
+    }
+    wnoutrefresh(stdscr);
+    pnoutrefresh(my_pad, my_row, shift, 1, digits + 1, LINES - 1, COLS - 1);
+    doupdate();
+}
+
+static WINDOW *
+read_file(const char *filename)
+{
+    FILE *fp;
+    int pass;
+    int k;
+    int height, width;
+    size_t j;
+    size_t len;
+    struct stat sb;
+    char *my_blob;
+    char **my_vec = 0;
+    WINDOW *my_pad;
+
+    if (stat(filename, &sb) != 0
+       || (sb.st_mode & S_IFMT) != S_IFREG) {
+       failed("input is not a file");
+    }
+
+    if (sb.st_size == 0) {
+       failed("input is empty");
+    }
+
+    if ((fp = fopen(filename, "r")) == 0) {
+       failed("cannot open input-file");
+    }
+
+    if ((my_blob = malloc((size_t) sb.st_size + 1)) == 0) {
+       failed("cannot allocate memory for input-file");
+    }
+
+    len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp);
+    my_blob[sb.st_size] = '\0';
+    fclose(fp);
+
+    for (pass = 0; pass < 2; ++pass) {
+       char *base = my_blob;
+       k = 0;
+       for (j = 0; j < len; ++j) {
+           if (my_blob[j] == '\n') {
+               if (pass) {
+                   my_vec[k] = base;
+                   my_blob[j] = '\0';
+               }
+               base = my_blob + j + 1;
+               ++k;
+           }
+       }
+       num_lines = k;
+       if (base != (my_blob + j))
+           ++num_lines;
+       if (!pass &&
+           ((my_vec = typeCalloc(char *, (size_t) k + 2)) == 0)) {
+           failed("cannot allocate line-vector #1");
+       }
+    }
+
+#if USE_WIDEC_SUPPORT
+    if (!memcmp("\357\273\277", my_blob, 3)) {
+       char *s = my_blob + 3;
+       char *d = my_blob;
+       Trace(("trim BOM"));
+       do {
+       } while ((*d++ = *s++) != '\0');
+    }
+#endif
+
+    height = num_lines;
+    width = (int) strlen(my_vec[0]);
+    for (k = 1; my_vec[k]; ++k) {
+       int check = (int) (my_vec[k] - my_vec[k - 1]);
+       if (width < check)
+           width = check;
+    }
+    width = (width + 1) * 5;
+    my_pad = newpad(height, width);
+    if (my_pad == 0)
+       failed("cannot allocate pad workspace");
+    if (try_color) {
+       wattrset(my_pad, COLOR_PAIR(my_pair));
+       wbkgd(my_pad, (chtype) COLOR_PAIR(my_pair));
+    }
+
+    /*
+     * Use the curses library for rendering, including tab-conversion.
+     */
+    Trace(("slurp the file"));
+    for (k = 0; my_vec[k]; ++k) {
+       char *s;
+#if USE_WIDEC_SUPPORT
+       char *last = my_vec[k] + (int) strlen(my_vec[k]);
+       wchar_t wch[2];
+       size_t rc;
+#ifndef state_unused
+       mbstate_t state;
+#endif
+#endif /* USE_WIDEC_SUPPORT */
+
+       wmove(my_pad, k, 0);
+#if USE_WIDEC_SUPPORT
+       wch[1] = 0;
+       reset_mbytes(state);
+#endif
+       for (s = my_vec[k]; *s != '\0'; ++s) {
+#if USE_WIDEC_SUPPORT
+           if (!n_option) {
+               rc = (size_t) check_mbytes(wch[0], s, (size_t) (last - s), state);
+               if ((long) rc == -1 || (long) rc == -2) {
+                   break;
+               }
+               s += rc - 1;
+               waddwstr(my_pad, wch);
+           } else
+#endif
+               waddch(my_pad, *s & 0xff);
+       }
+    }
+
+    free(my_vec);
+    free(my_blob);
+
+    return my_pad;
+}
+
+static void
+usage(void)
+{
+    static const char *msg[] =
+    {
+       "Usage: view [options] file"
+       ,""
+       ,"Options:"
+       ," -c       use color if terminal supports it"
+       ," -i       ignore INT, QUIT, TERM signals"
+#if USE_WIDEC_SUPPORT
+       ," -n       use waddch (bytes) rather then wadd_wch (wide-chars)"
+#endif
+       ," -s       start in single-step mode, waiting for input"
+#ifdef TRACE
+       ," -t       trace screen updates"
+       ," -T NUM   specify trace mask"
+#endif
+    };
+    size_t n;
+    for (n = 0; n < SIZEOF(msg); n++)
+       fprintf(stderr, "%s\n", msg[n]);
+    ExitProgram(EXIT_FAILURE);
+}
+
+int
+main(int argc, char *argv[])
+{
+    static const char *help[] =
+    {
+       "Commands:",
+       "  q,^Q,ESC       - quit this program",
+       "",
+       "  p,<Up>         - scroll the viewport up by one row",
+       "  n,<Down>       - scroll the viewport down by one row",
+       "  l,<Left>       - scroll the viewport left by one column",
+       "  r,<Right>      - scroll the viewport right by one column",
+       "  <,>            - scroll the viewport left/right by 8 columns",
+       "",
+       "  h,<Home>       - scroll the viewport to top of file",
+       "  ^F,<PageDn>    - scroll to the next page",
+       "  ^B,<PageUp>    - scroll to the previous page",
+       "  e,<End>        - scroll the viewport to end of file",
+       "",
+       "  ^L             - repaint using redrawwin()",
+       "",
+       "  0 through 9    - enter digits for count",
+       "  s              - use entered count for halfdelay() parameter",
+       "                 - if no entered count, stop nodelay()",
+       "  <space>        - begin nodelay()",
+       0
+    };
+
+    int i;
+    int my_delay = 0;
+    WINDOW *my_pad;
+    int my_row = 0;
+    int value = 0;
+    bool done = FALSE;
+    bool got_number = FALSE;
+    bool ignore_sigs = FALSE;
+    bool single_step = FALSE;
+    const char *my_label = "Input";
+
+    setlocale(LC_ALL, "");
+
+    while ((i = getopt(argc, argv, "cinstT:")) != -1) {
+       switch (i) {
+       case 'c':
+           try_color = TRUE;
+           break;
+       case 'i':
+           ignore_sigs = TRUE;
+           break;
+#if USE_WIDEC_SUPPORT
+       case 'n':
+           n_option = TRUE;
+           break;
+#endif
+       case 's':
+           single_step = TRUE;
+           break;
+#ifdef TRACE
+       case 'T':
+           {
+               char *next = 0;
+               int tvalue = (int) strtol(optarg, &next, 0);
+               if (tvalue < 0 || (next != 0 && *next != 0))
+                   usage();
+               trace((unsigned) tvalue);
+           }
+           break;
+       case 't':
+           trace(TRACE_CALLS);
+           break;
+#endif
+       default:
+           usage();
+       }
+    }
+    if (optind + 1 != argc)
+       usage();
+
+    InitAndCatch(initscr(), ignore_sigs ? SIG_IGN : finish);
+    keypad(stdscr, TRUE);      /* enable keyboard mapping */
+    (void) nonl();             /* tell curses not to do NL->CR/NL on output */
+    (void) cbreak();           /* take input chars one at a time, no wait for \n */
+    (void) noecho();           /* don't echo input */
+    if (!single_step)
+       nodelay(stdscr, TRUE);
+    idlok(stdscr, TRUE);       /* allow use of insert/delete line */
+
+    my_pad = read_file(fname = argv[optind]);
+
+    if (try_color) {
+       if (has_colors()) {
+           start_color();
+           init_pair(my_pair, COLOR_WHITE, COLOR_BLUE);
+           bkgd((chtype) COLOR_PAIR(my_pair));
+       } else {
+           try_color = FALSE;
+       }
+    }
+
+    my_row = 0;
+    while (!done) {
+       int n, c;
+
+       if (!got_number)
+           show_all(my_label, my_pad, my_row);
+
+       for (;;) {
+           c = getch();
+           if ((c < 127) && isdigit(c)) {
+               if (!got_number) {
+                   MvPrintw(0, 0, "Count: ");
+                   clrtoeol();
+               }
+               addch(UChar(c));
+               value = 10 * value + (c - '0');
+               got_number = TRUE;
+           } else
+               break;
+       }
+       if (got_number && value) {
+           n = value;
+       } else {
+           n = 1;
+       }
+
+       if (c != ERR)
+           my_label = keyname(c);
+       switch (c) {
+       case KEY_DOWN:
+       case 'n':
+           for (i = 0; i < n; i++)
+               if (my_row < (num_lines - LINES + 1))
+                   my_row++;
+               else
+                   break;
+           break;
+
+       case KEY_UP:
+       case 'p':
+           for (i = 0; i < n; i++)
+               if (my_row > 0)
+                   my_row--;
+               else
+                   break;
+           break;
+
+       case 'h':
+           /* FALLTHRU */
+       case KEY_HOME:
+           my_row = 0;
+           break;
+
+       case '<':
+           if ((shift -= 8) < 0)
+               shift = 0;
+           break;
+       case '>':
+           shift += 8;
+           break;
+
+       case 'e':
+           /* FALLTHRU */
+       case KEY_END:
+           if (num_lines > LINES)
+               my_row = (num_lines - LINES + 1);
+           else
+               my_row = (num_lines - 2);
+           break;
+
+       case CTRL('F'):
+           /* FALLTHRU */
+       case KEY_NPAGE:
+           for (i = 0; i < n; i++) {
+               if (my_row < (num_lines - 5))
+                   my_row += (LINES - 1);
+               else
+                   my_row = (num_lines - 2);
+           }
+           break;
+
+       case CTRL('B'):
+           /* FALLTHRU */
+       case KEY_PPAGE:
+           for (i = 0; i < n; i++) {
+               if (my_row >= LINES)
+                   my_row -= (LINES - 1);
+               else
+                   my_row = 0;
+           }
+           break;
+
+       case 'r':
+       case KEY_RIGHT:
+           shift += n;
+           break;
+
+       case 'l':
+       case KEY_LEFT:
+           shift -= n;
+           if (shift < 0) {
+               shift = 0;
+               beep();
+           }
+           break;
+
+       case 'q':
+       case QUIT:
+       case ESCAPE:
+           done = TRUE;
+           break;
+
+#ifdef KEY_RESIZE
+       case KEY_RESIZE:        /* ignore this; ncurses will repaint */
+           break;
+#endif
+       case 's':
+#if HAVE_HALFDELAY
+           if (got_number) {
+               halfdelay(my_delay = n);
+           } else {
+               nodelay(stdscr, FALSE);
+               my_delay = -1;
+           }
+#else
+           nodelay(stdscr, FALSE);
+           my_delay = -1;
+#endif
+           break;
+       case ' ':
+           nodelay(stdscr, TRUE);
+           my_delay = 0;
+           break;
+       case CTRL('L'):
+           redrawwin(stdscr);
+           break;
+       case ERR:
+           if (!my_delay)
+               napms(50);
+           break;
+       case HELP_KEY_1:
+           popup_msg(stdscr, help);
+           break;
+       default:
+           beep();
+           break;
+       }
+       if (c >= KEY_MIN || (c > 0 && !isdigit(c))) {
+           got_number = FALSE;
+           value = 0;
+       }
+    }
+
+    finish(0);                 /* we're done */
+}
+#else
+int
+main(void)
+{
+    printf("This program requires the curses pad functions\n");
+    ExitProgram(EXIT_FAILURE);
+}
+#endif
index 76b7c3b31867c2790909a402d17d76ca2e1a7008..4c57ef56dd9f24a7b0e1dfe2219858e235664a9f 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: programs,v 1.40 2017/10/11 08:08:41 tom Exp $
+# $Id: programs,v 1.41 2017/10/22 16:06:57 tom Exp $
 ##############################################################################
 # Copyright (c) 2006-2016,2017 Free Software Foundation, Inc.                #
 #                                                                            #
 ##############################################################################
 # Copyright (c) 2006-2016,2017 Free Software Foundation, Inc.                #
 #                                                                            #
@@ -74,6 +74,7 @@ list_keys     $(LDFLAGS_TINFO)        $(LOCAL_LIBS)   list_keys
 lrtest         $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   lrtest
 movewindow     $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   movewindow popup_msg
 ncurses                $(LDFLAGS_DEFAULT)      $(LOCAL_LIBS)   ncurses
 lrtest         $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   lrtest
 movewindow     $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   movewindow popup_msg
 ncurses                $(LDFLAGS_DEFAULT)      $(LOCAL_LIBS)   ncurses
+padview                $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   padview popup_msg
 picsmap                $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   picsmap
 newdemo                $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   newdemo
 railroad       $(LDFLAGS_TINFO)        $(LOCAL_LIBS)   railroad
 picsmap                $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   picsmap
 newdemo                $(LDFLAGS_CURSES)       $(LOCAL_LIBS)   newdemo
 railroad       $(LDFLAGS_TINFO)        $(LOCAL_LIBS)   railroad
index aa06a3e8d6bd3e3bd1747806acef62d3d9db79bb..bf4377f48e12c505e4f24082a49b236c68e38245 100644 (file)
@@ -51,7 +51,7 @@
  * scroll operation worked, and the refresh() code only had to do a
  * partial repaint.
  *
  * scroll operation worked, and the refresh() code only had to do a
  * partial repaint.
  *
- * $Id: view.c,v 1.129 2017/10/22 00:49:23 tom Exp $
+ * $Id: view.c,v 1.135 2017/10/23 09:18:01 tom Exp $
  */
 
 #include <test.priv.h>
  */
 
 #include <test.priv.h>
 #include <sys/stat.h>
 #include <time.h>
 
 #include <sys/stat.h>
 #include <time.h>
 
-#undef CTRL                    /* conflict on AIX 5.2 with <sys/ioctl.h> */
-
 static void finish(int sig) GCC_NORETURN;
 
 #define my_pair 1
 
 static void finish(int sig) GCC_NORETURN;
 
 #define my_pair 1
 
-#undef CTRL
-#define CTRL(x)        ((x) & 0x1f)
-
 static int shift = 0;
 static bool try_color = FALSE;
 
 static int shift = 0;
 static bool try_color = FALSE;
 
@@ -138,10 +133,15 @@ static void
 show_all(const char *tag)
 {
     int i;
 show_all(const char *tag)
 {
     int i;
+    int digits;
     char temp[BUFSIZ];
     NCURSES_CH_T *s;
     time_t this_time;
 
     char temp[BUFSIZ];
     NCURSES_CH_T *s;
     time_t this_time;
 
+    for (digits = 1, i = num_lines; i > 0; i /= 10) {
+       ++digits;
+    }
+
     _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
                "view %.*s", (int) strlen(tag), tag);
     i = (int) strlen(temp);
     _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp))
                "view %.*s", (int) strlen(tag), tag);
     i = (int) strlen(temp);
@@ -173,7 +173,7 @@ show_all(const char *tag)
            break;
        }
        move(i, 0);
            break;
        }
        move(i, 0);
-       printw("%3d:", actual);
+       printw("%*d:", digits, actual);
        clrtoeol();
        if ((s = lptr[i - 1]) == 0) {
            continue;
        clrtoeol();
        if ((s = lptr[i - 1]) == 0) {
            continue;
@@ -282,7 +282,7 @@ read_file(const char *filename)
     }
 
 #if USE_WIDEC_SUPPORT
     }
 
 #if USE_WIDEC_SUPPORT
-    if (!memcmp("", my_blob, 3)) {
+    if (!memcmp("\357\273\277", my_blob, 3)) {
        char *s = my_blob + 3;
        char *d = my_blob;
        Trace(("trim BOM"));
        char *s = my_blob + 3;
        char *d = my_blob;
        Trace(("trim BOM"));
@@ -347,7 +347,8 @@ read_file(const char *filename)
        if (y)
            x = width - 1;
        wmove(my_win, 0, 0);
        if (y)
            x = width - 1;
        wmove(my_win, 0, 0);
-       if ((vec_lines[k] = typeCalloc(NCURSES_CH_T, (size_t) x + 1)) == 0)
+       /* "x + 1" works with standard curses; some implementations are buggy */
+       if ((vec_lines[k] = typeCalloc(NCURSES_CH_T, x + width + 1)) == 0)
            failed("cannot allocate line-vector #3");
 #if USE_WIDEC_SUPPORT
        win_wchnstr(my_win, vec_lines[k], x);
            failed("cannot allocate line-vector #3");
 #if USE_WIDEC_SUPPORT
        win_wchnstr(my_win, vec_lines[k], x);
@@ -398,6 +399,7 @@ main(int argc, char *argv[])
        "  n,<Down>       - scroll the viewport down by one row",
        "  l,<Left>       - scroll the viewport left by one column",
        "  r,<Right>      - scroll the viewport right by one column",
        "  n,<Down>       - scroll the viewport down by one row",
        "  l,<Left>       - scroll the viewport left by one column",
        "  r,<Right>      - scroll the viewport right by one column",
+       "  <,>            - scroll the viewport left/right by 8 columns",
        "",
        "  h,<Home>       - scroll the viewport to top of file",
        "  ^F,<PageDn>    - scroll to the next page",
        "",
        "  h,<Home>       - scroll the viewport to top of file",
        "  ^F,<PageDn>    - scroll to the next page",
@@ -425,7 +427,7 @@ main(int argc, char *argv[])
 
     setlocale(LC_ALL, "");
 
 
     setlocale(LC_ALL, "");
 
-    while ((i = getopt(argc, argv, "cirstT:")) != -1) {
+    while ((i = getopt(argc, argv, "cinstT:")) != -1) {
        switch (i) {
        case 'c':
            try_color = TRUE;
        switch (i) {
        case 'c':
            try_color = TRUE;
@@ -433,6 +435,11 @@ main(int argc, char *argv[])
        case 'i':
            ignore_sigs = TRUE;
            break;
        case 'i':
            ignore_sigs = TRUE;
            break;
+#if USE_WIDEC_SUPPORT
+       case 'n':
+           n_option = TRUE;
+           break;
+#endif
        case 's':
            single_step = TRUE;
            break;
        case 's':
            single_step = TRUE;
            break;
@@ -529,18 +536,20 @@ main(int argc, char *argv[])
            scrl((int) (lptr - olptr));
            break;
 
            scrl((int) (lptr - olptr));
            break;
 
-       case '<':
-           shift = 0;
-           /* FALLTHRU */
        case 'h':
            /* FALLTHRU */
        case KEY_HOME:
            lptr = vec_lines;
            break;
 
        case 'h':
            /* FALLTHRU */
        case KEY_HOME:
            lptr = vec_lines;
            break;
 
+       case '<':
+           if ((shift -= 8) < 0)
+               shift = 0;
+           break;
        case '>':
        case '>':
-           shift = 0;
-           /* FALLTHRU */
+           shift += 8;
+           break;
+
        case 'e':
            /* FALLTHRU */
        case KEY_END:
        case 'e':
            /* FALLTHRU */
        case KEY_END: