diff --git a/doc/html/man/adacurses-config.1.html b/doc/html/man/adacurses-config.1.html
new file mode 100644
index 0000000..213771c
--- /dev/null
+++ b/doc/html/man/adacurses-config.1.html
@@ -0,0 +1,158 @@
+<!-- 
+  ****************************************************************************
+  * Copyright (c) 2010-2011,2014 Free Software Foundation, Inc.              *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: MKada_config.in,v 1.8 2014/06/07 19:32:52 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>ADACURSES 1   User Commands</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1>ADACURSES 1   User Commands</H1>
+<HR>
+<PRE>
+<STRONG><A HREF="ADACURSES.1.html">ADACURSES(1)</A></STRONG>                 User Commands                 <STRONG><A HREF="ADACURSES.1.html">ADACURSES(1)</A></STRONG>
+
+
+
+
+</PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       adacurses-config - helper script for AdaCurses libraries
+
+
+</PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>adacurses-config</STRONG> [<EM>options</EM>]
+
+
+</PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       This  is  a  shell  script which simplifies configuring an
+       application  to  use  the  AdaCurses  library  binding  to
+       ncurses.
+
+
+</PRE>
+<H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+       <STRONG>--cflags</STRONG>
+              echos  the gnat (Ada compiler) flags needed to com-
+              pile with AdaCurses.
+
+       <STRONG>--libs</STRONG> echos  the  gnat  libraries  needed  to  link  with
+              AdaCurses.
+
+       <STRONG>--version</STRONG>
+              echos  the release+patchdate version of the ncurses
+              libraries used to configure and build AdaCurses.
+
+       <STRONG>--help</STRONG> prints a  list  of  the  <STRONG>adacurses-config</STRONG>  script's
+              options.
+
+       If  no options are given, <STRONG>adacurses-config</STRONG> prints the com-
+       bination of <STRONG>--cflags</STRONG> and <STRONG>--libs</STRONG> that <STRONG>gnatmake</STRONG> expects (see
+       example).
+
+
+</PRE>
+<H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE>
+       For example, supposing that you want to compile the "Hello
+       World!"   program  for  AdaCurses.   Make  a  file   named
+       "hello.adb":
+              with Terminal_Interface.Curses; use Terminal_Interface.Curses;
+
+              procedure Hello is
+
+                 Visibility : Cursor_Visibility := Invisible;
+                 done : Boolean := False;
+                 c : Key_Code;
+
+              begin
+
+                 Init_Screen;
+                 Set_Echo_Mode (False);
+
+                 Set_Cursor_Visibility (Visibility);
+                 Set_Timeout_Mode (Standard_Window, Non_Blocking, 0);
+
+                 Move_Cursor (Line =&gt; Lines / 2, Column =&gt; (Columns - 12) / 2);
+                 Add (Str =&gt; "Hello World!");
+
+                 while not done loop
+
+                    c := Get_Keystroke (Standard_Window);
+                    case c is
+                    when Character'Pos ('q') =&gt; done := True;
+                    when others =&gt; null;
+                    end case;
+
+                    Nap_Milli_Seconds (50);
+
+                 end loop;
+
+                 End_Windows;
+
+              end Hello;
+
+       Then, using
+              gnatmake  `adacurses-config  --cflags` hello -largs
+              `adacurses-config --libs`
+
+       or (simpler):
+              gnatmake hello `adacurses-config`
+
+       you will compile and link the program.
+
+
+</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 5.9 (patch 20150215).
+
+
+
+                                                           <STRONG><A HREF="ADACURSES.1.html">ADACURSES(1)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
+<li><a href="#h2-EXAMPLE">EXAMPLE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/captoinfo.1m.html b/doc/html/man/captoinfo.1m.html
index 91b3150..c0cdbf9 100644
--- a/doc/html/man/captoinfo.1m.html
+++ b/doc/html/man/captoinfo.1m.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -28,56 +27,58 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: captoinfo.1m,v 1.22 2007/06/02 20:40:07 tom Exp @
+  * @Id: captoinfo.1m,v 1.25 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>captoinfo 1m</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>captoinfo 1m</H1>
-<HR>
+<H1 class="no-header">captoinfo 1m</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>                                             <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>captoinfo</STRONG>  - convert a <EM>termcap</EM> description into a <EM>terminfo</EM>
        description
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>captoinfo</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>]  [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> . . .
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       <STRONG>captoinfo</STRONG> looks in <EM>file</EM>  for  <STRONG>termcap</STRONG>  descriptions.   For
-       each  one  found,  an  equivalent  <STRONG>terminfo</STRONG> description is
-       written to standard output.  Termcap <STRONG>tc</STRONG>  capabilities  are
-       translated directly to terminfo <STRONG>use</STRONG> capabilities.
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       <STRONG>captoinfo</STRONG> looks  in  each  given  text  <EM>file</EM>  for  <STRONG>termcap</STRONG>
+       descriptions.   For each one found, an equivalent <STRONG>terminfo</STRONG>
+       description is written to  standard  output.   Termcap  <STRONG>tc</STRONG>
+       capabilities are translated directly to terminfo <STRONG>use</STRONG> capa-
+       bilities.
 
        If no <EM>file</EM> is given, then the environment variable <STRONG>TERMCAP</STRONG>
-       is used for the filename or entry.  If <STRONG>TERMCAP</STRONG> is  a  full
+       is  used  for the filename or entry.  If <STRONG>TERMCAP</STRONG> is a full
        pathname to a file, only the terminal whose name is speci-
-       fied in the environment variable <STRONG>TERM</STRONG>  is  extracted  from
-       that  file.   If  the  environment variable <STRONG>TERMCAP</STRONG> is not
+       fied  in  the  environment variable <STRONG>TERM</STRONG> is extracted from
+       that file.  If the environment  variable  <STRONG>TERMCAP</STRONG>  is  not
        set, then the file <STRONG>/usr/share/terminfo</STRONG> is read.
 
-       <STRONG>-v</STRONG>   print out tracing information on  standard  error  as
+       <STRONG>-v</STRONG>   print  out  tracing  information on standard error as
             the program runs.
 
-       <STRONG>-V</STRONG>   print  out the version of the program in use on stan-
+       <STRONG>-V</STRONG>   print out the version of the program in use on  stan-
             dard error and exit.
 
-       <STRONG>-1</STRONG>   cause the fields to print out one to a line.   Other-
+       <STRONG>-1</STRONG>   cause  the fields to print out one to a line.  Other-
             wise, the fields will be printed several to a line to
             a maximum width of 60 characters.
 
@@ -85,22 +86,21 @@
 
 
 </PRE>
-<H2>FILES</H2><PRE>
-       /usr/share/terminfo Compiled     terminal      description
-                           database.
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
+       /usr/share/terminfo Compiled  terminal  description  data-
+                           base.
 
 
 </PRE>
-<H2>TRANSLATIONS FROM NONSTANDARD CAPABILITIES</H2><PRE>
-       Some  obsolete nonstandard capabilities will automatically
-       be translated into  standard  (SVr4/XSI  Curses)  terminfo
-       capabilities  by  <STRONG>captoinfo</STRONG>.   Whenever one of these auto-
-       matic translations is done,  the  program  will  issue  an
+<H2><a name="h2-TRANSLATIONS-FROM-NONSTANDARD-CAPABILITIES">TRANSLATIONS FROM NONSTANDARD CAPABILITIES</a></H2><PRE>
+       Some obsolete nonstandard capabilities will  automatically
+       be  translated  into  standard  (SVr4/XSI Curses) terminfo
+       capabilities by <STRONG>captoinfo</STRONG>.  Whenever one  of  these  auto-
+       matic  translations  is  done,  the  program will issue an
        notification to stderr, inviting the user to check that it
-       has not mistakenly translated  a  completely  unknown  and
+       has  not  mistakenly  translated  a completely unknown and
        random capability and/or syntax error.
 
-
        Nonstd   Std    From           Terminfo
         name    name                 capability
        -----------------------------------------------
@@ -134,11 +134,10 @@
        FC       Sf     Tek     set_foreground
        HS       mh     Iris    enter_dim_mode
 
-       XENIX  termcap  also used to have a set of extension capa-
-       bilities for forms drawing, designed to take advantage  of
+       XENIX termcap also used to have a set of  extension  capa-
+       bilities  for forms drawing, designed to take advantage of
        the IBM PC high-half graphics.  They were as follows:
 
-
        Cap          Graphic
        -----------------------------
        G2    upper left
@@ -165,14 +164,14 @@
        Gc    intersection
        GG    acs magic cookie count
 
-       If  the  single-line  capabilities occur in an entry, they
-       will automatically be composed into an <EM>acsc</EM>  string.   The
+       If the single-line capabilities occur in  an  entry,  they
+       will  automatically  be composed into an <EM>acsc</EM> string.  The
        double-line capabilities and <STRONG>GG</STRONG> are discarded with a warn-
        ing message.
 
        IBM's AIX has a terminfo facility descended from SVr1 ter-
-       minfo but incompatible with the SVr4 format. The following
-       AIX extensions are automatically translated:
+       minfo but incompatible with the SVr4 format.  The  follow-
+       ing AIX extensions are automatically translated:
 
         IBM    XSI
        -------------
@@ -183,44 +182,52 @@
        font2   s2ds
        font3   s3ds
 
-       Additionally, the AIX <EM>box1</EM> capability  will  be  automati-
+       Additionally,  the  AIX  <EM>box1</EM> capability will be automati-
        cally translated to an <EM>acsc</EM> string.
 
-       Hewlett-Packard's  terminfo  library supports two nonstan-
-       dard terminfo capabilities <EM>meml</EM>  (memory  lock)  and  <EM>memu</EM>
-       (memory  unlock).   These will be discarded with a warning
+       Hewlett-Packard's terminfo library supports  two  nonstan-
+       dard  terminfo  capabilities  <EM>meml</EM>  (memory lock) and <EM>memu</EM>
+       (memory unlock).  These will be discarded with  a  warning
        message.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       This utility is actually a link to <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, running in  <EM>-I</EM>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       This  utility is actually a link to <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, running in <EM>-I</EM>
        mode.  You can use other <STRONG>tic</STRONG> options such as <STRONG>-f</STRONG> and  <STRONG>-x</STRONG>.
 
-       The  trace option is not identical to SVr4's.  Under SVr4,
-       instead of following the <STRONG>-v</STRONG> with  a  trace  level  n,  you
+       The trace option is not identical to SVr4's.  Under  SVr4,
+       instead  of  following  the  <STRONG>-v</STRONG>  with a trace level n, you
        repeat it n times.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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 5.6 (patch 20081011).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
-       Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+       Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
+       Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
 
 
 
                                                           <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-TRANSLATIONS-FROM-NONSTANDARD-CAPABILITIES">TRANSLATIONS FROM NONSTANDARD CAPABILITIES</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/clear.1.html b/doc/html/man/clear.1.html
index 22661b5..6215331 100644
--- a/doc/html/man/clear.1.html
+++ b/doc/html/man/clear.1.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2000,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -27,58 +26,64 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: clear.1,v 1.6 2006/12/24 18:07:53 tom Exp @
+  * @Id: clear.1,v 1.10 2013/06/22 22:22:11 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>clear 1</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>clear 1</H1>
-<HR>
+<H1 class="no-header">clear 1</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>                                                       <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>clear</STRONG> - clear the terminal screen
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>clear</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       <STRONG>clear</STRONG> clears your screen if this is possible.  It looks in
-       the environment for the terminal type and then in the <STRONG>ter-</STRONG>
-       <STRONG>minfo</STRONG> database to figure out how to clear the screen.
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       <STRONG>clear</STRONG>  clears  your  screen if this is possible, including
+       its scrollback buffer (if the extended "E3" capability  is
+       defined).  <STRONG>clear</STRONG> looks in the environment for the terminal
+       type and then in the <STRONG>terminfo</STRONG> database to determine how to
+       clear the screen.
 
        <STRONG>clear</STRONG>  ignores  any  command-line  parameters  that may be
        present.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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 5.6 (patch 20081011).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
 
 
 
                                                                <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_add_wch.3x.html b/doc/html/man/curs_add_wch.3x.html
index af7c895..f227fd3 100644
--- a/doc/html/man/curs_add_wch.3x.html
+++ b/doc/html/man/curs_add_wch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2001-2002,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 2001-2012,2015 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_add_wch.3x,v 1.6 2006/12/24 15:22:22 tom Exp @
+  * @Id: curs_add_wch.3x,v 1.16 2015/07/20 23:44:56 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_add_wch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_add_wch 3x</H1>
-<HR>
+<H1 class="no-header">curs_add_wch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>                                       <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>add_wch</STRONG>,   <STRONG>wadd_wch</STRONG>,  <STRONG>mvadd_wch</STRONG>,  <STRONG>mvwadd_wch</STRONG>,  <STRONG>echo_wchar</STRONG>,
        <STRONG>wecho_wchar</STRONG> - add a complex character and rendition  to  a
        <STRONG>curses</STRONG> window, then advance the cursor
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>add_wch(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG>
@@ -66,29 +66,35 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-add_wch">add_wch</a></H3><PRE>
        The <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, and <STRONG>mvwadd_wch</STRONG> functions
        put the complex character <EM>wch</EM> into the given window at its
        current position, which is then advanced.  These functions
        perform  wrapping and special-character processing as fol-
        lows:
 
-       -    If <EM>wch</EM> refers to a spacing character, then any previ-
-            ous  character  at  that  location is removed.  A new
-            character specified by <EM>wch</EM> is placed at that location
-            with  rendition  specified  by  <EM>wch</EM>.  The cursor then
-            advances to the next spacing character on the screen.
+       <STRONG>o</STRONG>   If <EM>wch</EM> refers to a spacing character, then any  previ-
+           ous  character  at  that  location  is removed.  A new
+           character specified by <EM>wch</EM> is placed at that  location
+           with  rendition  specified  by  <EM>wch</EM>.   The cursor then
+           advances to the next spacing character on the screen.
 
-       -    If  <EM>wch</EM> refers to a non-spacing character, all previ-
-            ous characters at that location are  preserved.   The
-            non-spacing  characters of <EM>wch</EM> are added to the spac-
-            ing complex character, and the rendition specified by
-            <EM>wch</EM> is ignored.
+       <STRONG>o</STRONG>   If <EM>wch</EM> refers to a non-spacing character, all previous
+           characters  at  that location are preserved.  The non-
+           spacing characters of <EM>wch</EM> are  added  to  the  spacing
+           complex  character, and the rendition specified by <EM>wch</EM>
+           is ignored.
 
-       -    If  the  character  part  of  <EM>wch</EM>  is a tab, newline,
-            backspace or other control character, the  window  is
-            updated and the cursor moves as if <STRONG>addch</STRONG> were called.
+       <STRONG>o</STRONG>   If the character  part  of  <EM>wch</EM>  is  a  tab,  newline,
+           backspace  or  other  control character, the window is
+           updated and the cursor moves as if <STRONG>addch</STRONG> were called.
 
+
+</PRE>
+<H3><a name="h3-echo_wchar">echo_wchar</a></H3><PRE>
        The <STRONG>echo_wchar</STRONG> function is functionally  equivalent  to  a
        call to <STRONG>add_wch</STRONG> followed by a call to <STRONG>refresh</STRONG>.  Similarly,
        the <STRONG>wecho_wchar</STRONG> is functionally equivalent to  a  call  to
@@ -100,41 +106,145 @@
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
-       success.
+<H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
+       Like  <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>,  <STRONG>addch_wch</STRONG>  accepts symbols which make it
+       simple to draw lines and  other  frequently  used  special
+       characters.   These  symbols  correspond to the same VT100
+       line-drawing set as <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
+
+       <EM>Name</EM>              <EM>Unicode</EM>    <EM>Default</EM>   <EM>Description</EM>
+       ----------------------------------------------------------------
+       WACS_BLOCK        0x25ae     #         solid square block
+       WACS_BOARD        0x2592     #         board of squares
+       WACS_BTEE         0x2534     +         bottom tee
+
+       WACS_BULLET       0x00b7     o         bullet
+       WACS_CKBOARD      0x2592     :         checker board (stipple)
+       WACS_DARROW       0x2193     v         arrow pointing down
+       WACS_DEGREE       0x00b0     '         degree symbol
+       WACS_DIAMOND      0x25c6     +         diamond
+       WACS_GEQUAL       0x2265     &gt;         greater-than-or-equal-to
+       WACS_HLINE        0x2500     -         horizontal line
+       WACS_LANTERN      0x2603     #         lantern symbol
+       WACS_LARROW       0x2190     &lt;         arrow pointing left
+       WACS_LEQUAL       0x2264     &lt;         less-than-or-equal-to
+       WACS_LLCORNER     0x2514     +         lower left-hand corner
+       WACS_LRCORNER     0x2518     +         lower right-hand corner
+       WACS_LTEE         0x2524     +         left tee
+       WACS_NEQUAL       0x2260     !         not-equal
+       WACS_PI           0x03c0     *         greek pi
+       WACS_PLMINUS      0x00b1     #         plus/minus
+       WACS_PLUS         0x253c     +         plus
+       WACS_RARROW       0x2192     &gt;         arrow pointing right
+       WACS_RTEE         0x251c     +         right tee
+       WACS_S1           0x23ba     -         scan line 1
+       WACS_S3           0x23bb     -         scan line 3
+       WACS_S7           0x23bc     -         scan line 7
+       WACS_S9           0x23bd     _         scan line 9
+       WACS_STERLING     0x00a3     f         pound-sterling symbol
+       WACS_TTEE         0x252c     +         top tee
+       WACS_UARROW       0x2191     ^         arrow pointing up
+       WACS_ULCORNER     0x250c     +         upper left-hand corner
+       WACS_URCORNER     0x2510     +         upper right-hand corner
+       WACS_VLINE        0x2502     |         vertical line
+
+       The wide-character configuration of ncurses  also  defines
+       symbols for thick- and double-lines:
+
+       <EM>Name</EM>              <EM>Unicode</EM>   <EM>Default</EM>   <EM>Description</EM>
+       ---------------------------------------------------------------------
+       WACS_T_ULCORNER   0x250f    +         thick upper left corner
+       WACS_T_LLCORNER   0x2517    +         thick lower left corner
+       WACS_T_URCORNER   0x2513    +         thick upper right corner
+       WACS_T_LRCORNER   0x251b    +         thick lower right corner
+       WACS_T_LTEE       0x252b    +         thick tee pointing right
+       WACS_T_RTEE       0x2523    +         thick tee pointing left
+       WACS_T_BTEE       0x253b    +         thick tee pointing up
+       WACS_T_TTEE       0x2533    +         thick tee pointing down
+       WACS_T_HLINE      0x2501    -         thick horizontal line
+       WACS_T_VLINE      0x2503    |         thick vertical line
+       WACS_T_PLUS       0x254b    +         thick large plus or crossover
+       WACS_D_ULCORNER   0x2554    +         double upper left corner
+       WACS_D_LLCORNER   0x255a    +         double lower left corner
+       WACS_D_URCORNER   0x2557    +         double upper right corner
+       WACS_D_LRCORNER   0x255d    +         double lower right corner
+       WACS_D_RTEE       0x2563    +         double tee pointing left
+       WACS_D_LTEE       0x2560    +         double tee pointing right
+       WACS_D_BTEE       0x2569    +         double tee pointing up
+       WACS_D_TTEE       0x2566    +         double tee pointing down
+       WACS_D_HLINE      0x2550    -         double horizontal line
+       WACS_D_VLINE      0x2551    |         double vertical line
+       WACS_D_PLUS       0x256c    +         double large plus or crossover
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
+       success.
+
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
+
+</PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>add_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>,  and  <STRONG>echo_wchar</STRONG>
        may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       All  these functions are described in the XSI Curses stan-
-       dard, Issue 4.  The defaults specified  for  forms-drawing
-       characters apply in the POSIX locale.
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       All  of  these  functions  are described in the XSI Curses
+       standard, Issue 4.  The defaults specified for  line-draw-
+       ing characters apply in the POSIX locale.
 
-       XSI  documents  constants  beginning  with <STRONG>WACS_</STRONG> which are
-       used for line-drawing.  Those  are  not  currently  imple-
-       mented in <STRONG>ncurses</STRONG>.
+       X/Open Curses makes it clear that the WACS_ symbols should
+       be defined as a pointer to <STRONG>cchar_t</STRONG> data, e.g., in the dis-
+       cussion of <STRONG>border_set</STRONG>.  A few implementations are problem-
+       atic:
+
+       <STRONG>o</STRONG>   NetBSD curses defines the symbols as a <STRONG>wchar_t</STRONG>  within
+           a <STRONG>cchar_t</STRONG>.
+
+       <STRONG>o</STRONG>   HPUX  curses  equates  some of the <EM>ACS</EM><STRONG>_</STRONG> symbols to the
+           analogous <EM>WACS</EM><STRONG>_</STRONG> symbols as if the  <EM>ACS</EM><STRONG>_</STRONG>  symbols  were
+           wide  characters.   The  misdefined  symbols  are  the
+           arrows and other symbols which are not used for  line-
+           drawing.
+
+       X/Open  Curses  does not define symbols for thick- or dou-
+       ble-lines.   SVr4  curses  implementations  defined  their
+       line-drawing  symbols  in  terms  of intermediate symbols.
+       This implementation extends those symbols,  providing  new
+       definitions which are not in the SVr4 implementations.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="putwc.3.html">putwc(3)</A></STRONG>
+       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG>putwc(3)</STRONG>
 
 
 
                                                        <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-add_wch">add_wch</a></li>
+<li><a href="#h3-echo_wchar">echo_wchar</a></li>
+<li><a href="#h3-Line-Graphics">Line Graphics</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_add_wchstr.3x.html b/doc/html/man/curs_add_wchstr.3x.html
index 11d93b1..7ee0cf1 100644
--- a/doc/html/man/curs_add_wchstr.3x.html
+++ b/doc/html/man/curs_add_wchstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002-2004,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 2002-2010,2012 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            *
@@ -27,34 +26,35 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_add_wchstr.3x,v 1.6 2005/01/02 01:28:49 tom Exp @
+  * @Id: curs_add_wchstr.3x,v 1.10 2012/11/03 22:54:43 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_add_wchstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_add_wchstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_add_wchstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>                                 <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
-       <STRONG>add_wchstr</STRONG>,    <STRONG>add_wchnstr</STRONG>,   <STRONG>wadd_wchstr</STRONG>,   <STRONG>wadd_wchnstr</STRONG>,
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>add_wchstr</STRONG>, <STRONG>add_wchnstr</STRONG>, <STRONG>wadd_wchstr</STRONG>, <STRONG>wadd_wchnstr</STRONG>,
        <STRONG>mvadd_wchstr</STRONG>, <STRONG>mvadd_wchnstr</STRONG>, <STRONG>mvwadd_wchstr</STRONG>, <STRONG>mvwadd_wchnstr</STRONG>
        - add an array of complex characters (and attributes) to a
        curses window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>add_wchstr(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
@@ -68,60 +68,81 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines copy the array of complex characters <EM>wchstr</EM>
-       into  the  window image structure at and after the current
-       cursor position.  The four routines with  <EM>n</EM>  as  the  last
-       argument  copy  at  most <EM>n</EM> elements, but no more than will
-       fit on the line.  If <STRONG>n</STRONG>=<STRONG>-1</STRONG> then the whole array is  copied,
-       to  the  maximum number of characters that will fit on the
-       line.
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       These functions copy the (null-terminated) array  of  com-
+       plex  characters  <EM>wchstr</EM>  into  the window image structure
+       starting at the current cursor position.  The  four  func-
+       tions with <EM>n</EM> as the last argument copy at most <EM>n</EM> elements,
+       but no more than will fit on the line.  If <STRONG>n</STRONG>=<STRONG>-1</STRONG>  then  the
+       whole array is copied, to the maximum number of characters
+       that will fit on the line.
 
-       The window cursor is <EM>not</EM> advanced.   These  routines  work
-       faster than <STRONG>waddnstr</STRONG>.  On the other hand, they do not per-
-       form checking (such as for the newline, backspace, or car-
-       riage  return characters), they do not advance the current
-       cursor position, they do not expand other control  charac-
-       ters  to  ^-escapes,  and  they  truncate the string if it
-       crosses the right margin, rather than wrapping  it  around
-       to the new line.
+       The window cursor is <EM>not</EM> advanced.  These  functions  work
+       faster than <STRONG>waddnstr</STRONG>.  On the other hand:
 
-       These  routines  end  successfully  on encountering a null
-       <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>, or when they have filled the current line.  If  a
-       complex  character cannot completely fit at the end of the
-       current line, the remaining columns are  filled  with  the
+       <STRONG>o</STRONG>   they do not perform checking (such as for the newline,
+           backspace, or carriage return characters),
+
+       <STRONG>o</STRONG>   they do not advance the current cursor position,
+
+       <STRONG>o</STRONG>   they do not expand other control characters  to  ^-es-
+           capes, and
+
+       <STRONG>o</STRONG>   they  truncate the string if it crosses the right mar-
+           gin, rather than wrapping it around to the new line.
+
+       These functions end successfully on  encountering  a  null
+       <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>,  or when they have filled the current line.  If a
+       complex character cannot completely fit at the end of  the
+       current  line,  the  remaining columns are filled with the
        background character and rendition.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All functions return the integer <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>
+       on success.
+
+       X/Open  does not define any error conditions.  This imple-
+       mentation returns an error if the window pointer is null.
+
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
+
+</PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        All functions except <STRONG>wadd_wchnstr</STRONG> may be macros.
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
-       success.
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These entry points are described in the XSI  Curses  stan-
+       dard, Issue 4.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       All these entry points are described  in  the  XSI  Curses
-       standard, Issue 4.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
 
-
-</PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>, <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
+       Comparable functions in the narrow-character (ncurses) li-
+       brary are described in <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>.
 
 
 
                                                     <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_addch.3x.html b/doc/html/man/curs_addch.3x.html
index 162532c..04b15af 100644
--- a/doc/html/man/curs_addch.3x.html
+++ b/doc/html/man/curs_addch.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2014,2015 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            *
@@ -28,33 +27,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_addch.3x,v 1.27 2007/06/02 20:40:07 tom Exp @
+  * @Id: curs_addch.3x,v 1.36 2015/07/16 09:14:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_addch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_addch 3x</H1>
-<HR>
+<H1 class="no-header">curs_addch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>                                           <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>addch</STRONG>,  <STRONG>waddch</STRONG>,  <STRONG>mvaddch</STRONG>,  <STRONG>mvwaddch</STRONG>, <STRONG>echochar</STRONG>, <STRONG>wechochar</STRONG> -
        add a character (with attributes) to a <STRONG>curses</STRONG> window, then
        advance the cursor
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>addch(const</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
@@ -66,30 +66,49 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-Adding-characters">Adding characters</a></H3><PRE>
        The  <STRONG>addch</STRONG>,  <STRONG>waddch</STRONG>, <STRONG>mvaddch</STRONG> and <STRONG>mvwaddch</STRONG> routines put the
        character <EM>ch</EM> into the given window at its  current  window
        position,  which  is then advanced.  They are analogous to
-       <STRONG>putchar</STRONG> in <STRONG><A HREF="stdio.3.html">stdio(3)</A></STRONG>.  If the advance is at the right  mar-
-       gin,  the  cursor  automatically wraps to the beginning of
-       the next line.  At the bottom  of  the  current  scrolling
-       region,  if  <STRONG>scrollok</STRONG>  is enabled, the scrolling region is
-       scrolled up one line.
+       <STRONG>putchar</STRONG> in <STRONG>stdio(3)</STRONG>.  If the advance is at the right  mar-
+       gin:
 
-       If <EM>ch</EM> is a tab, newline, or backspace, the cursor is moved
-       appropriately within the window.  Backspace moves the cur-
-       sor one character left; at the left edge of  a  window  it
-       does  nothing.   Newline  does  a <STRONG>clrtoeol</STRONG>, then moves the
-       cursor to  the  window  left  margin  on  the  next  line,
-       scrolling  the  window if on the last line.  Tabs are con-
-       sidered to be at every eighth column.   The  tab  interval
-       may be altered by setting the <STRONG>TABSIZE</STRONG> variable.
+       <STRONG>o</STRONG>   The cursor automatically wraps to the beginning of the
+           next line.
 
-       If <EM>ch</EM> is any control character other than tab, newline, or
-       backspace, it is drawn  in  <STRONG>^</STRONG><EM>X</EM>  notation.   Calling  <STRONG>winch</STRONG>
-       after adding a control character does not return the char-
-       acter itself, but instead returns the ^-representation  of
-       the control character.
+       <STRONG>o</STRONG>   At the bottom of the current scrolling region, and  if
+           <STRONG>scrollok</STRONG>  is enabled, the scrolling region is scrolled
+           up one line.
+
+       <STRONG>o</STRONG>   If <STRONG>scrollok</STRONG> is not enabled, writing a character at the
+           lower  right  margin  succeeds.   However, an error is
+           returned because it is not possible to wrap to  a  new
+           line
+
+       If <EM>ch</EM> is a tab, newline, carriage return or backspace, the
+       cursor is moved appropriately within the window:
+
+       <STRONG>o</STRONG>   Backspace moves the cursor one character left; at  the
+           left edge of a window it does nothing.
+
+       <STRONG>o</STRONG>   Carriage  return  moves  the cursor to the window left
+           margin on the current line.
+
+       <STRONG>o</STRONG>   Newline does a <STRONG>clrtoeol</STRONG>, then moves the cursor to  the
+           window  left  margin  on  the next line, scrolling the
+           window if on the last line.
+
+       <STRONG>o</STRONG>   Tabs are considered to be at every eighth column.  The
+           tab  interval  may  be  altered by setting the <STRONG>TABSIZE</STRONG>
+           variable.
+
+       If <EM>ch</EM> is any other control character, it is  drawn  in  <STRONG>^</STRONG><EM>X</EM>
+       notation.   Calling <STRONG>winch</STRONG> after adding a control character
+       does not return the character itself, but instead  returns
+       the ^-representation of the control character.
 
        Video attributes can be combined with a character argument
        passed to <STRONG>addch</STRONG> or related functions by logical-ORing them
@@ -99,6 +118,9 @@
        fined video attribute constants that can be usefully OR'ed
        into characters.
 
+
+</PRE>
+<H3><a name="h3-Echoing-characters">Echoing characters</a></H3><PRE>
        The  <STRONG>echochar</STRONG>  and  <STRONG>wechochar</STRONG> routines are equivalent to a
        call to <STRONG>addch</STRONG> followed by a call to <STRONG>refresh</STRONG>, or a call  to
        <STRONG>waddch</STRONG> followed by a call to <STRONG>wrefresh</STRONG>.  The knowledge that
@@ -107,14 +129,15 @@
        may be seen by  using  these  routines  instead  of  their
        equivalents.
 
-   <STRONG>Line</STRONG> <STRONG>Graphics</STRONG>
+
+</PRE>
+<H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
        The  following  variables  may be used to add line drawing
        characters to the screen with routines of the  <STRONG>addch</STRONG>  fam-
        ily.   The  default  character listed below is used if the
        <STRONG>acsc</STRONG>  capability  does  not  define  a   terminal-specific
-       replacement  for  it.   The  names  are  taken  from VT100
-       nomenclature.
-
+       replacement for it.  The names are taken from VT100 nomen-
+       clature.
 
        <EM>Name</EM>           <EM>Default</EM>   <EM>Description</EM>
        --------------------------------------------------
@@ -153,46 +176,56 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
        success  (the  SVr4 manuals specify only "an integer value
        other than <STRONG>ERR</STRONG>") upon successful completion, unless other-
        wise noted in the preceding routine descriptions.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note  that  <STRONG>addch</STRONG>,  <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and <STRONG>echochar</STRONG> may be
        macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        All these functions are described in the XSI Curses  stan-
        dard,  Issue  4.  The defaults specified for forms-drawing
        characters apply in the POSIX locale.
 
-       Some ACS symbols (ACS_S3, ACS_S7, ACS_LEQUAL,  ACS_GEQUAL,
-       ACS_PI,  ACS_NEQUAL,  ACS_STERLING) were not documented in
-       any publicly released System V.   However,  many  publicly
-       available  terminfos  include  <STRONG>acsc</STRONG> strings in which their
-       key characters (pryz{|}) are embedded, and  a  second-hand
-       list  of  their  character descriptions has come to light.
-       The  ACS-prefixed  names  for  them  were   invented   for
+       X/Open Curses states that the <EM>ACS</EM><STRONG>_</STRONG>  definitions  are  <STRONG>char</STRONG>
+       constants.   For  the  wide-character  implementation (see
+       <STRONG>curs_add_wch</STRONG>), there are analogous <EM>WACS</EM><STRONG>_</STRONG> definitions which
+       are <STRONG>cchar_t</STRONG> constants.
+
+       Some  ACS symbols (ACS_S3, ACS_S7, ACS_LEQUAL, ACS_GEQUAL,
+       ACS_PI, ACS_NEQUAL, ACS_STERLING) were not  documented  in
+       any  publicly  released  System V.  However, many publicly
+       available terminfos include <STRONG>acsc</STRONG> strings  in  which  their
+       key  characters  (pryz{|}) are embedded, and a second-hand
+       list of their character descriptions has  come  to  light.
+       The   ACS-prefixed   names  for  them  were  invented  for
        <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
 
-       The  <STRONG>TABSIZE</STRONG>  variable  is implemented in some versions of
+       The <STRONG>TABSIZE</STRONG> variable is implemented in  some  versions  of
        curses, but is not part of X/Open curses.
 
-       If <EM>ch</EM> is a carriage return, the cursor  is  moved  to  the
-       beginning  of the current row of the window.  This is true
+       If  <EM>ch</EM>  is  a  carriage return, the cursor is moved to the
+       beginning of the current row of the window.  This is  true
        of other implementations, but is not documented.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,  <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="putc.3.html">putc(3)</A></STRONG>.
+<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_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>,  <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,   <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,
+       <STRONG>putc(3)</STRONG>.
 
        Comparable  functions  in  the  wide-character  (ncursesw)
        library are described in <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>.
@@ -201,10 +234,22 @@
 
                                                          <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Adding-characters">Adding characters</a></li>
+<li><a href="#h3-Echoing-characters">Echoing characters</a></li>
+<li><a href="#h3-Line-Graphics">Line Graphics</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_addchstr.3x.html b/doc/html/man/curs_addchstr.3x.html
index 2d342f5..ce3cd02 100644
--- a/doc/html/man/curs_addchstr.3x.html
+++ b/doc/html/man/curs_addchstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2012 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_addchstr.3x,v 1.12 2006/12/02 17:02:45 tom Exp @
+  * @Id: curs_addchstr.3x,v 1.16 2012/11/03 22:54:43 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_addchstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_addchstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_addchstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>                                     <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>addchstr</STRONG>, <STRONG>addchnstr</STRONG>, <STRONG>waddchstr</STRONG>, <STRONG>waddchnstr</STRONG>, <STRONG>mvaddchstr</STRONG>,
        <STRONG>mvaddchnstr</STRONG>, <STRONG>mvwaddchstr</STRONG>, <STRONG>mvwaddchnstr</STRONG> - add a string of
        characters (and attributes) to a <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>addchstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
@@ -62,68 +62,79 @@
        <STRONG>int</STRONG> <STRONG>waddchnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvaddchstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvaddchnstr(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwaddchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG>  <STRONG>x,</STRONG>  <STRONG>const</STRONG>  <STRONG>chtype</STRONG>
-       <STRONG>*chstr);</STRONG>
-       <STRONG>int</STRONG>  <STRONG>mvwaddchnstr(WINDOW</STRONG>  <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG>
-       <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwaddchstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwaddchnstr(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*chstr,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines copy <EM>chstr</EM> into the window image  structure
-       at  and  after the current cursor position.  The four rou-
-       tines with <EM>n</EM> as the last argument copy at most <EM>n</EM> elements,
-       but  no  more than will fit on the line.  If <STRONG>n</STRONG>=<STRONG>-1</STRONG> then the
-       whole string is copied, to the maximum number  of  charac-
-       ters that will fit on the line.
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       These functions copy the (null-terminated) <EM>chstr</EM> array in-
+       to the window image structure starting at the current cur-
+       sor position.  The four functions with <EM>n</EM> as the last argu-
+       ment copy at most <EM>n</EM> elements, but no more than will fit on
+       the  line.  If <STRONG>n</STRONG>=<STRONG>-1</STRONG> then the whole array is copied, to the
+       maximum number of characters that will fit on the line.
 
-       The window cursor is <EM>not</EM> advanced, and these routines work
-       faster than <STRONG>waddnstr</STRONG>.  On the other hand, they do not per-
-       form  any  kind  of  checking  (such  as  for the newline,
-       backspace, or carriage return characters), they do not ad-
-       vance the current cursor position, they do not expand oth-
-       er control characters to ^-escapes, and they truncate  the
-       string  if  it crosses the right margin, rather than wrap-
-       ping it around to the new line.
+       The window cursor is <EM>not</EM> advanced.  These  functions  work
+       faster than <STRONG>waddnstr</STRONG>.  On the other hand:
+
+       <STRONG>o</STRONG>   they do not perform checking (such as for the newline,
+           backspace, or carriage return characters),
+
+       <STRONG>o</STRONG>   they do not advance the current cursor position,
+
+       <STRONG>o</STRONG>   they do not expand other control characters  to  ^-es-
+           capes, and
+
+       <STRONG>o</STRONG>   they  truncate the string if it crosses the right mar-
+           gin, rather than wrapping it around to the new line.
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
-       success  (the  SVr4 manuals specify only "an integer value
-       other than <STRONG>ERR</STRONG>") upon successful completion, unless other-
-       wise noted in the preceding routine descriptions.
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All functions return the integer <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>
+       on success.
 
        X/Open  does not define any error conditions.  This imple-
-       mentation returns an error if the window pointer is  null.
+       mentation returns an error if the window pointer is null.
+
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       Note that all routines except <STRONG>waddchnstr</STRONG> may be macros.
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       All functions except <STRONG>waddchnstr</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  entry  points are described in the XSI Curses stan-
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These entry points are described in the XSI  Curses  stan-
        dard, Issue 4.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
 
-       Comparable functions in the wide-character (ncursesw)  li-
+       Comparable  functions in the wide-character (ncursesw) li-
        brary are described in <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>.
 
 
 
                                                       <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_addstr.3x.html b/doc/html/man/curs_addstr.3x.html
index ccc93a3..34b7150 100644
--- a/doc/html/man/curs_addstr.3x.html
+++ b/doc/html/man/curs_addstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2012 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_addstr.3x,v 1.13 2005/05/15 16:17:14 tom Exp @
+  * @Id: curs_addstr.3x,v 1.17 2012/11/03 22:57:31 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_addstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_addstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_addstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>                                         <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>addstr</STRONG>, <STRONG>addnstr</STRONG>, <STRONG>waddstr</STRONG>, <STRONG>waddnstr</STRONG>, <STRONG>mvaddstr</STRONG>, <STRONG>mvaddnstr</STRONG>,
        <STRONG>mvwaddstr</STRONG>, <STRONG>mvwaddnstr</STRONG> - add a string of characters to a
        <STRONG>curses</STRONG> window and advance cursor
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>addstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
@@ -67,55 +67,68 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines write the characters of the (null-terminat-
-       ed) character string <EM>str</EM> on the given window.  It is simi-
-       lar  to  calling  <STRONG>waddch</STRONG>  once  for  each character in the
-       string.  The four routines with <EM>n</EM>  as  the  last  argument
-       write  at  most <EM>n</EM> characters.  If <EM>n</EM> is -1, then the entire
-       string will be added, up to the maximum number of  charac-
-       ters  that  will  fit  on the line, or until a terminating
-       null is reached.
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       These  functions  write  the  (null-terminated)  character
+       string <EM>str</EM> on the given window.  It is similar to  calling
+       <STRONG>waddch</STRONG> once for each character in the string.
+
+       The  <EM>mv</EM>  functions  perform  cursor  movement once, before
+       writing any characters.  Thereafter,  the  cursor  is  ad-
+       vanced as a side-effect of writing to the window.
+
+       The  four  functions  with <EM>n</EM> as the last argument write at
+       most <EM>n</EM> characters, or until a terminating null is reached.
+       If <EM>n</EM> is -1, then the entire string will be added.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
-       success  (the  SVr4 manuals specify only "an integer value
-       other than <STRONG>ERR</STRONG>") upon successful completion.
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All  functions  return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
+       on success.
 
        X/Open does not define any error conditions.  This  imple-
-       mentation  returns  an error if the window pointer is null
-       or if the string pointer is null or if  the  corresponding
-       calls to <STRONG>waddch</STRONG> return an error.
+       mentation returns an error
+
+       <STRONG>o</STRONG>   if the window pointer is null or
+
+       <STRONG>o</STRONG>   if the string pointer is null or
+
+       <STRONG>o</STRONG>   if the corresponding calls to <STRONG>waddch</STRONG> return an error.
+
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       Note  that  all  of  these  routines  except  <STRONG>waddstr</STRONG>  and
-       <STRONG>waddnstr</STRONG> may be macros.
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       All of these functions except <STRONG>waddnstr</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       All these entry points are described  in  the  XSI  Curses
-       standard,  Issue  4.  The XSI errors EILSEQ and EOVERFLOW,
-       associated with extended-level conformance,  are  not  yet
-       detected.
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_addch.3x.html">curs_addch(3x)</A></STRONG>.
 
 
 
                                                         <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_addwstr.3x.html b/doc/html/man/curs_addwstr.3x.html
index e0bd724..c24cfa2 100644
--- a/doc/html/man/curs_addwstr.3x.html
+++ b/doc/html/man/curs_addwstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 2002-2010,2012 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_addwstr.3x,v 1.7 2006/02/25 20:59:08 tom Exp @
+  * @Id: curs_addwstr.3x,v 1.11 2012/11/03 22:57:31 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_addwstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_addwstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_addwstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>                                       <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>addwstr</STRONG>, <STRONG>addnwstr</STRONG>, <STRONG>waddwstr</STRONG>, <STRONG>waddnwstr</STRONG>, <STRONG>mvaddwstr</STRONG>,
        <STRONG>mvaddnwstr</STRONG>, <STRONG>mvwaddwstr</STRONG>, <STRONG>mvwaddnwstr</STRONG> - add a string of wide
        characters to a <STRONG>curses</STRONG> window and advance cursor
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>addwstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
@@ -67,54 +67,72 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines write the characters of the (null-terminat-
-       ed) <STRONG>wchar_t</STRONG> character string <EM>wstr</EM> on the given window.  It
-       is  similar  to constructing a <STRONG>cchar_t</STRONG> for each wchar_t in
-       the  string,  then  calling  <STRONG>wadd_wch</STRONG>  for  the  resulting
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       These  functions  write the characters of the (null-termi-
+       nated) <STRONG>wchar_t</STRONG> character string <EM>wstr</EM> on the given  window.
+       It  is  similar to constructing a <STRONG>cchar_t</STRONG> for each wchar_t
+       in the string, then calling  <STRONG>wadd_wch</STRONG>  for  the  resulting
        <STRONG>cchar_t</STRONG>.
 
-       The <EM>mv</EM> routines perform cursor movement once, before writ-
-       ing any characters.  Thereafter, the cursor is advanced as
-       a side-effect of writing to the window.
+       The  <EM>mv</EM>  functions  perform  cursor  movement once, before
+       writing any characters.  Thereafter,  the  cursor  is  ad-
+       vanced as a side-effect of writing to the window.
 
-       The  four  routines  with  <EM>n</EM> as the last argument write at
-       most <EM>n</EM> <STRONG>wchar_t</STRONG> characters.  If <EM>n</EM> is -1,  then  the  entire
-       string  will be added, up to the maximum number of charac-
-       ters that will fit on the line,  or  until  a  terminating
-       null is reached.
+       The  four  functions  with <EM>n</EM> as the last argument write at
+       most <EM>n</EM> <STRONG>wchar_t</STRONG> characters, or until a terminating null  is
+       reached.   If  <EM>n</EM>  is  -1,  then  the entire string will be
+       added.
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on
-       success.
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All functions return the integer <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>
+       on success.
+
+       X/Open  does not define any error conditions.  This imple-
+       mentation returns an error
+
+       <STRONG>o</STRONG>   if the window pointer is null or
+
+       <STRONG>o</STRONG>   if the string pointer is null or
+
+       <STRONG>o</STRONG>   if the corresponding calls to <STRONG>wadd_wch</STRONG> return  an  er-
+           ror.
+
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       Note that all of these routines except  <STRONG>waddnwstr</STRONG>  may  be
-       macros.
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       All of these functions except <STRONG>waddnwstr</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       All  these  entry  points  are described in the XSI Curses
-       standard, Issue 4.
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
 
 
 
                                                        <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_attr.3x.html b/doc/html/man/curs_attr.3x.html
index 9a7b2a4..6ea78f9 100644
--- a/doc/html/man/curs_attr.3x.html
+++ b/doc/html/man/curs_attr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2013,2015 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            *
@@ -28,26 +27,27 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_attr.3x,v 1.31 2007/03/17 20:30:33 tom Exp @
+  * @Id: curs_attr.3x,v 1.40 2015/07/20 23:35:38 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_attr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_attr 3x</H1>
-<HR>
+<H1 class="no-header">curs_attr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>                                             <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>attroff</STRONG>, <STRONG>wattroff</STRONG>, <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>wattrset</STRONG>,
        <STRONG>color_set</STRONG>, <STRONG>wcolor_set</STRONG>, <STRONG>standend</STRONG>, <STRONG>wstandend</STRONG>, <STRONG>standout</STRONG>,
        <STRONG>wstandout</STRONG>, <STRONG>attr_get</STRONG>, <STRONG>wattr_get</STRONG>, <STRONG>attr_off</STRONG>, <STRONG>wattr_off</STRONG>,
@@ -57,43 +57,43 @@
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
-       <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattroff(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>attron(int</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattron(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>attrset(int</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattrset(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>attrs);</STRONG>
-       <STRONG>int</STRONG> <STRONG>color_set(short</STRONG> <STRONG>color_pair_number,</STRONG> <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>short</STRONG> <STRONG>color_pair_number,</STRONG>
-             <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <EM>attrs);</EM>
+       <STRONG>int</STRONG> <STRONG>wattroff(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attron(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattron(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attrset(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattrset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>color_set(short</STRONG> <EM>color</EM><STRONG>_</STRONG><EM>pair</EM><STRONG>_</STRONG><EM>number</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>color</EM><STRONG>_</STRONG><EM>pair</EM><STRONG>_</STRONG><EM>number</EM><STRONG>,</STRONG>
+             <STRONG>void*</STRONG> <EM>opts);</EM>
        <STRONG>int</STRONG> <STRONG>standend(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*win);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>standout(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wstandout(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>attr_get(attr_t</STRONG> <STRONG>*attrs,</STRONG> <STRONG>short</STRONG> <STRONG>*pair,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattr_get(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>*attrs,</STRONG> <STRONG>short</STRONG> <STRONG>*pair,</STRONG>
-              <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>attr_off(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattr_off(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>attr_set(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>short</STRONG> <STRONG>pair,</STRONG> <STRONG>void</STRONG> <STRONG>*opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wattr_set(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>short</STRONG> <STRONG>pair,</STRONG>  <STRONG>void</STRONG>
-       <STRONG>*opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>chgat(int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG> <STRONG>short</STRONG> <STRONG>color,</STRONG>
-             <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
-       <STRONG>int</STRONG> <STRONG>wchgat(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
-             <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvchgat(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG> <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG>
-             <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>int</STRONG> <STRONG>n,</STRONG>
-             <STRONG>attr_t</STRONG> <STRONG>attr,</STRONG> <STRONG>short</STRONG> <STRONG>color,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*opts)</STRONG>
+       <STRONG>int</STRONG> <STRONG>wstandout(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attr_get(attr_t</STRONG> <STRONG>*</STRONG><EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattr_get(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <STRONG>*</STRONG><EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>pair</EM><STRONG>,</STRONG>
+              <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attr_off(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattr_off(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>attr_set(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wattr_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG>  <STRONG>void</STRONG>
+       <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>chgat(int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>color</EM><STRONG>,</STRONG>
+             <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG>
+             <STRONG>short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvchgat(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG>
+             <STRONG>short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>int</EM> <EM>y,</EM> <EM>int</EM> <EM>x,</EM> <EM>int</EM> <EM>n,</EM>
+             <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These  routines  manipulate  the current attributes of the
        named window.  The current attributes of a window apply to
        all characters that are written into the window with <STRONG>wadd-</STRONG>
@@ -104,6 +104,9 @@
        modifications to the graphic rendition of  characters  put
        on the screen.
 
+
+</PRE>
+<H3><a name="h3-attrset">attrset</a></H3><PRE>
        The  routine  <STRONG>attrset</STRONG>  sets  the current attributes of the
        given window to <EM>attrs</EM>.  The routine <STRONG>attroff</STRONG> turns off  the
        named  attributes  without turning any other attributes on
@@ -118,18 +121,40 @@
        <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> for functions which  modify  the  attributes
        used for erasing and clearing.
 
-       The  routine <STRONG>color_set</STRONG> sets the current color of the given
-       window to the foreground/background combination  described
-       by  the  color_pair_number. The parameter opts is reserved
+
+</PRE>
+<H3><a name="h3-attr_set">attr_set</a></H3><PRE>
+       The <STRONG>attrset</STRONG> routine is actually a legacy feature predating
+       SVr4 curses but kept in X/Open Curses for the same  reason
+       that  SVr4  curses kept it: compatbility.  The routine <STRONG>at-</STRONG>
+       <STRONG>tr_set</STRONG> provides for passing a color-pair parameter.
+
+       The remaining <STRONG>attr_</STRONG>* functions operate  exactly  like  the
+       corresponding <STRONG>attr</STRONG>* functions, except that they take argu-
+       ments of type <STRONG>attr_t</STRONG> rather than <STRONG>int</STRONG>.
+
+
+</PRE>
+<H3><a name="h3-color_set">color_set</a></H3><PRE>
+       The routine <STRONG>color_set</STRONG> sets the current color of the  given
+       window  to the foreground/background combination described
+       by the color_pair_number.  The parameter opts is  reserved
        for future use, applications must supply a null pointer.
 
-       The routine <STRONG>wattr_get</STRONG> returns the  current  attribute  and
-       color pair for the given window; <STRONG>attr_get</STRONG> returns the cur-
-       rent attribute and color pair for <STRONG>stdscr</STRONG>.   The  remaining
-       <STRONG>attr_</STRONG>*  functions  operate  exactly like the corresponding
-       <STRONG>attr</STRONG>* functions, except that they take arguments  of  type
-       <STRONG>attr_t</STRONG> rather than <STRONG>int</STRONG>.
 
+</PRE>
+<H3><a name="h3-attr_get">attr_get</a></H3><PRE>
+       The  routine  <STRONG>wattr_get</STRONG>  returns the current attribute and
+       color pair for the given window; <STRONG>attr_get</STRONG> returns the cur-
+       rent attribute and color pair for <STRONG>stdscr</STRONG>.
+
+       There  is  no  corresponding  <STRONG>attrget</STRONG>  function as such in
+       X/Open Curses, although  ncurses  provides  <STRONG>getattrs</STRONG>  (see
+       <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>).
+
+
+</PRE>
+<H3><a name="h3-chgat">chgat</a></H3><PRE>
        The routine <STRONG>chgat</STRONG> changes the attributes of a given number
        of characters starting at the current cursor  location  of
        <STRONG>stdscr</STRONG>.   It  does not update the cursor and does not per-
@@ -143,83 +168,114 @@
        ment is not presently used, but is reserved for the future
        (leave it <STRONG>NULL</STRONG>).
 
-   <STRONG>Attributes</STRONG>
+
+</PRE>
+<H3><a name="h3-Attributes">Attributes</a></H3><PRE>
        The following video attributes, defined in <STRONG>&lt;curses.h&gt;</STRONG>, can
        be passed to the routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or
-       OR'd with the characters passed to <STRONG>addch</STRONG>.
+       OR'd with the characters passed to  <STRONG>addch</STRONG>  (see  curs_add-
+       <STRONG><A HREF="ch.3x.html">ch(3x)</A></STRONG>).
 
+              <EM>Name</EM>            <EM>Description</EM>
+              ------------------------------------------------------------
+              <STRONG>A_NORMAL</STRONG>        Normal display (no highlight)
+              <STRONG>A_STANDOUT</STRONG>      Best highlighting mode of the terminal.
+              <STRONG>A_UNDERLINE</STRONG>     Underlining
+              <STRONG>A_REVERSE</STRONG>       Reverse video
+              <STRONG>A_BLINK</STRONG>         Blinking
+              <STRONG>A_DIM</STRONG>           Half bright
+              <STRONG>A_BOLD</STRONG>          Extra bright or bold
+              <STRONG>A_PROTECT</STRONG>       Protected mode
+              <STRONG>A_INVIS</STRONG>         Invisible or blank mode
+              <STRONG>A_ALTCHARSET</STRONG>    Alternate character set
+              <STRONG>A_ITALIC</STRONG>        Italics (non-X/Open extension)
+              <STRONG>A_CHARTEXT</STRONG>      Bit-mask to extract a character
 
-        <STRONG>A_NORMAL</STRONG>        Normal display (no highlight)
-        <STRONG>A_STANDOUT</STRONG>      Best highlighting mode of the terminal.
-        <STRONG>A_UNDERLINE</STRONG>     Underlining
-        <STRONG>A_REVERSE</STRONG>       Reverse video
-        <STRONG>A_BLINK</STRONG>         Blinking
-        <STRONG>A_DIM</STRONG>           Half bright
-        <STRONG>A_BOLD</STRONG>          Extra bright or bold
-        <STRONG>A_PROTECT</STRONG>       Protected mode
-        <STRONG>A_INVIS</STRONG>         Invisible or blank mode
-        <STRONG>A_ALTCHARSET</STRONG>    Alternate character set
-        <STRONG>A_CHARTEXT</STRONG>      Bit-mask to extract a character
-        <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG>   Color-pair number <EM>n</EM>
+              <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG>   Color-pair number <EM>n</EM>
+
+       These video attributes are supported by <STRONG>attr_on</STRONG> and relat-
+       ed functions (which also support the attributes recognized
+       by <STRONG>attron</STRONG>, etc.):
+
+              <EM>Name</EM>            <EM>Description</EM>
+              -----------------------------------------
+              <STRONG>WA_HORIZONTAL</STRONG>   Horizontal highlight
+              <STRONG>WA_LEFT</STRONG>         Left highlight
+              <STRONG>WA_LOW</STRONG>          Low highlight
+              <STRONG>WA_RIGHT</STRONG>        Right highlight
+              <STRONG>WA_TOP</STRONG>          Top highlight
+              <STRONG>WA_VERTICAL</STRONG>     Vertical highlight
+
+       For consistency
 
        The following macro is the reverse of <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG>:
 
        <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM>) Returns the pair number associated
                           with the <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> attribute.
 
-       The return values of many of these routines are not  mean-
+       The  return values of many of these routines are not mean-
        ingful (they are implemented as macro-expanded assignments
-       and simply return their argument).  The SVr4  manual  page
+       and  simply  return their argument).  The SVr4 manual page
        claims (falsely) that these routines always return <STRONG>1</STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       Note  that  <STRONG>attroff</STRONG>,  <STRONG>wattroff</STRONG>,  <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>,
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       Note that <STRONG>attroff</STRONG>,  <STRONG>wattroff</STRONG>,  <STRONG>attron</STRONG>,  <STRONG>wattron</STRONG>,  <STRONG>attrset</STRONG>,
        <STRONG>wattrset</STRONG>, <STRONG>standend</STRONG> and <STRONG>standout</STRONG> may be macros.
 
-       <STRONG>COLOR_PAIR</STRONG> values can only be OR'd with attributes if  the
-       pair  number  is  less  than 256.  The alternate functions
-       such as <STRONG>color_set</STRONG> can pass a color  pair  value  directly.
-       However,  ncurses  ABI 4 and 5 simply OR this value within
-       the alternate functions.  You must use ncurses  ABI  6  to
+       <STRONG>COLOR_PAIR</STRONG>  values can only be OR'd with attributes if the
+       pair number is less than  256.   The  alternate  functions
+       such  as  <STRONG>color_set</STRONG>  can pass a color pair value directly.
+       However, ncurses ABI 4 and 5 simply OR this  value  within
+       the  alternate  functions.   You must use ncurses ABI 6 to
        support more than 256 color pairs.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  functions are supported in the XSI Curses standard,
-       Issue 4.  The standard  defined  the  dedicated  type  for
-       highlights,  <STRONG>attr_t</STRONG>,  which is not defined in SVr4 curses.
-       The functions taking <STRONG>attr_t</STRONG> arguments  are  not  supported
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These functions are supported in the XSI Curses  standard,
+       Issue  4.   The  standard  defined  the dedicated type for
+       highlights, <STRONG>attr_t</STRONG>, which is not defined in  SVr4  curses.
+       The  functions  taking  <STRONG>attr_t</STRONG> arguments are not supported
        under SVr4.
 
        The XSI Curses standard states that whether the tradition-
-       al functions  <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG>  can  manipulate  at-
-       tributes  other  than  <STRONG>A_BLINK</STRONG>,  <STRONG>A_BOLD</STRONG>, <STRONG>A_DIM</STRONG>, <STRONG>A_REVERSE</STRONG>,
-       <STRONG>A_STANDOUT</STRONG>, or <STRONG>A_UNDERLINE</STRONG> is "unspecified".   Under  this
-       implementation  as  well  as  SVr4 curses, these functions
-       correctly manipulate all other  highlights  (specifically,
+       al  functions  <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG>  can  manipulate at-
+       tributes other than  <STRONG>A_BLINK</STRONG>,  <STRONG>A_BOLD</STRONG>,  <STRONG>A_DIM</STRONG>,  <STRONG>A_REVERSE</STRONG>,
+       <STRONG>A_STANDOUT</STRONG>,  or  <STRONG>A_UNDERLINE</STRONG> is "unspecified".  Under this
+       implementation as well as  SVr4  curses,  these  functions
+       correctly  manipulate  all other highlights (specifically,
        <STRONG>A_ALTCHARSET</STRONG>, <STRONG>A_PROTECT</STRONG>, and <STRONG>A_INVIS</STRONG>).
 
-       XSI  Curses added the new entry points, <STRONG>attr_get</STRONG>, <STRONG>attr_on</STRONG>,
-       <STRONG>attr_off</STRONG>, <STRONG>attr_set</STRONG>, <STRONG>wattr_on</STRONG>, <STRONG>wattr_off</STRONG>,  <STRONG>wattr_get</STRONG>,  <STRONG>wat-</STRONG>
-       <STRONG>tr_set</STRONG>.   These  are intended to work with a new series of
-       highlight macros prefixed with <STRONG>WA_</STRONG>.
+       This implementation provides the  <STRONG>A_ITALIC</STRONG>  attribute  for
+       terminals which have the <EM>enter</EM><STRONG>_</STRONG><EM>italics</EM><STRONG>_</STRONG><EM>mode</EM> (sitm) and <EM>ex-</EM>
+       <EM>it</EM><STRONG>_</STRONG><EM>italics</EM><STRONG>_</STRONG><EM>mode</EM> (ritm) capabilities.  Italics are not men-
+       tioned  in  X/Open  Curses.   Unlike  the  other video at-
+       tributes, <STRONG>I_ITALIC</STRONG> is unrelated to the <EM>set</EM><STRONG>_</STRONG><EM>attributes</EM>  ca-
+       pabilities.  This implementation makes the assumption that
+       <EM>exit</EM><STRONG>_</STRONG><EM>attribute</EM><STRONG>_</STRONG><EM>mode</EM> may also reset italics.
 
-       Older versions of this library did not force an update  of
-       the  screen when changing the attributes.  Use <STRONG>touchwin</STRONG> to
-       force the screen to match the updated attributes.
+       XSI Curses added the new entry points, <STRONG>attr_get</STRONG>,  <STRONG>attr_on</STRONG>,
+       <STRONG>attr_off</STRONG>,  <STRONG>attr_set</STRONG>,  <STRONG>wattr_on</STRONG>, <STRONG>wattr_off</STRONG>, <STRONG>wattr_get</STRONG>, <STRONG>wat-</STRONG>
+       <STRONG>tr_set</STRONG>.  These are intended to work with a new  series  of
+       highlight macros prefixed with <STRONG>WA_</STRONG>.  The older macros have
+       direct counterparts in the newer set of names:
 
+              <EM>Name</EM>            <EM>Description</EM>
+              ------------------------------------------------------------
+              <STRONG>WA_NORMAL</STRONG>       Normal display (no highlight)
+              <STRONG>WA_STANDOUT</STRONG>     Best highlighting mode of the terminal.
+              <STRONG>WA_UNDERLINE</STRONG>    Underlining
+              <STRONG>WA_REVERSE</STRONG>      Reverse video
+              <STRONG>WA_BLINK</STRONG>        Blinking
+              <STRONG>WA_DIM</STRONG>          Half bright
+              <STRONG>WA_BOLD</STRONG>         Extra bright or bold
+              <STRONG>WA_ALTCHARSET</STRONG>   Alternate character set
 
-        <STRONG>WA_NORMAL</STRONG>       Normal display (no highlight)
-        <STRONG>WA_STANDOUT</STRONG>     Best highlighting mode of the terminal.
-        <STRONG>WA_UNDERLINE</STRONG>    Underlining
-        <STRONG>WA_REVERSE</STRONG>      Reverse video
-        <STRONG>WA_BLINK</STRONG>        Blinking
-        <STRONG>WA_DIM</STRONG>          Half bright
-        <STRONG>WA_BOLD</STRONG>         Extra bright or bold
-        <STRONG>WA_ALTCHARSET</STRONG>   Alternate character set
+       Very old versions of this library did not force an  update
+       of  the screen when changing the attributes.  Use <STRONG>touchwin</STRONG>
+       to force the screen to match the updated attributes.
 
        The XSI curses standard specifies that each pair of corre-
        sponding  <STRONG>A_</STRONG>  and <STRONG>WA_</STRONG>-using functions operates on the same
@@ -227,37 +283,57 @@
 
        The XSI standard extended conformance level adds new high-
        lights <STRONG>A_HORIZONTAL</STRONG>, <STRONG>A_LEFT</STRONG>, <STRONG>A_LOW</STRONG>, <STRONG>A_RIGHT</STRONG>, <STRONG>A_TOP</STRONG>, <STRONG>A_VER-</STRONG>
-       <STRONG>TICAL</STRONG> (and corresponding <STRONG>WA_</STRONG> macros for each)  which  this
-       implementation does not yet support.
+       <STRONG>TICAL</STRONG> (and corresponding <STRONG>WA_</STRONG> macros for each).  As of  Au-
+       gust  2013,  no  known  terminal provides these highlights
+       (i.e., via the <STRONG>sgr1</STRONG> capability).
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines  return the integer <STRONG>OK</STRONG> on success, or <STRONG>ERR</STRONG> on
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All routines return the integer <STRONG>OK</STRONG> on success, or  <STRONG>ERR</STRONG>  on
        failure.
 
        X/Open does not define any error conditions.
 
        This implementation returns an error if the window pointer
-       is  null.  The <STRONG>wcolor_set</STRONG> function returns an error if the
-       color  pair  parameter  is  outside  the   range   0..COL-
-       OR_PAIRS-1.   This  implementation  also provides <STRONG>getattrs</STRONG>
+       is null.  The <STRONG>wcolor_set</STRONG> function returns an error if  the
+       color   pair   parameter  is  outside  the  range  0..COL-
+       OR_PAIRS-1.  This implementation  also  provides  <STRONG>getattrs</STRONG>
        for compatibility with older versions of curses.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,        <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>,        <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>, <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
+<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_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>, <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
                                                           <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-attrset">attrset</a></li>
+<li><a href="#h3-attr_set">attr_set</a></li>
+<li><a href="#h3-color_set">color_set</a></li>
+<li><a href="#h3-attr_get">attr_get</a></li>
+<li><a href="#h3-chgat">chgat</a></li>
+<li><a href="#h3-Attributes">Attributes</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_beep.3x.html b/doc/html/man/curs_beep.3x.html
index 271acc1..b2ce7d2 100644
--- a/doc/html/man/curs_beep.3x.html
+++ b/doc/html/man/curs_beep.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2005,2010 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            *
@@ -27,31 +26,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_beep.3x,v 1.10 2005/01/08 17:55:51 tom Exp @
+  * @Id: curs_beep.3x,v 1.12 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_beep 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_beep 3x</H1>
-<HR>
+<H1 class="no-header">curs_beep 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>                                             <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>beep</STRONG>, <STRONG>flash</STRONG> - <STRONG>curses</STRONG> bell and screen flash routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>beep(void);</STRONG>
@@ -59,7 +59,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>beep</STRONG> and <STRONG>flash</STRONG> routines are used to alert the terminal
        user.  The routine <STRONG>beep</STRONG> sounds an  audible  alarm  on  the
        terminal,  if  possible;  otherwise  it flashes the screen
@@ -71,36 +71,42 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return <STRONG>OK</STRONG> if they  succeed  in  beeping  or
        flashing, <STRONG>ERR</STRONG> otherwise.
 
 
 </PRE>
-<H2>EXTENSIONS</H2><PRE>
+<H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
        SVr4's  beep  and flash routines always returned <STRONG>OK</STRONG>, so it
        was not possible to tell when the beep or flash failed.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These functions are described in the XSI Curses  standard,
        Issue  4.  Like SVr4, it specifies that they always return
        <STRONG>OK</STRONG>.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_beep.3x.html">curs_beep(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_bkgd.3x.html b/doc/html/man/curs_bkgd.3x.html
index e73f90f..59db83f 100644
--- a/doc/html/man/curs_bkgd.3x.html
+++ b/doc/html/man/curs_bkgd.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2015 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            *
@@ -27,43 +26,47 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_bkgd.3x,v 1.19 2003/12/27 18:50:40 tom Exp @
+  * @Id: curs_bkgd.3x,v 1.23 2015/07/21 00:11:05 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_bkgd 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_bkgd 3x</H1>
-<HR>
+<H1 class="no-header">curs_bkgd 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>                                             <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>bkgdset</STRONG>,  <STRONG>wbkgdset</STRONG>,  <STRONG>bkgd</STRONG>,  <STRONG>wbkgd</STRONG>, <STRONG>getbkgd</STRONG> - <STRONG>curses</STRONG> window
        background manipulation routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>void</STRONG> <STRONG>bkgdset(chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wbkgdset(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>bkgd(chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wbkgd(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>chtype</STRONG> <STRONG>getbkgd(WINDOW</STRONG> <STRONG>*win);</STRONG>
+       <STRONG>void</STRONG> <STRONG>bkgdset(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>wbkgdset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>chtype</EM> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>bkgd(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wbkgd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>chtype</STRONG> <STRONG>getbkgd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-bkgdset">bkgdset</a></H3><PRE>
        The <STRONG>bkgdset</STRONG> and <STRONG>wbkgdset</STRONG>  routines  manipulate  the  back-
        ground  of  the  named window.  The window background is a
        <STRONG>chtype</STRONG> consisting of any combination of attributes  (i.e.,
@@ -80,52 +83,70 @@
        attribute  part  of  the  background  is  displayed as the
        graphic rendition of the character put on the screen.
 
+
+</PRE>
+<H3><a name="h3-bkgd">bkgd</a></H3><PRE>
        The <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> functions set the  background  property
        of  the  current  or  specified window and then apply this
        setting to every character position in that window:
 
-              The rendition of every character on the  screen  is
-              changed to the new background rendition.
+       <STRONG>o</STRONG>   The rendition of every  character  on  the  screen  is
+           changed to the new background rendition.
 
-              Wherever  the  former background character appears,
-              it is changed to the new background character.
+       <STRONG>o</STRONG>   Wherever  the  former background character appears, it
+           is changed to the new background character.
 
+
+</PRE>
+<H3><a name="h3-getbkgd">getbkgd</a></H3><PRE>
        The <STRONG>getbkgd</STRONG> function returns the  given  window's  current
        background character/attribute pair.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The  routines  <STRONG>bkgd</STRONG>  and <STRONG>wbkgd</STRONG> return the integer <STRONG>OK</STRONG>.  The
        SVr4.0 manual says "or a non-negative integer  if  <STRONG>immedok</STRONG>
        is set", but this appears to be an error.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>bkgdset</STRONG> and <STRONG>bkgd</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  functions are described in the XSI Curses standard,
        Issue 4.  It specifies that <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> return  <STRONG>ERR</STRONG>  on
-       failure.  but gives no failure conditions.
+       failure, but gives no failure conditions.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>,   <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,   <STRONG>curs_out-</STRONG>
+<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_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG>curs_out-</STRONG>
        <STRONG><A HREF="curs_outopts.3x.html">opts(3x)</A></STRONG>
 
 
 
                                                           <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-bkgdset">bkgdset</a></li>
+<li><a href="#h3-bkgd">bkgd</a></li>
+<li><a href="#h3-getbkgd">getbkgd</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_bkgrnd.3x.html b/doc/html/man/curs_bkgrnd.3x.html
index dd761b7..c2b1063 100644
--- a/doc/html/man/curs_bkgrnd.3x.html
+++ b/doc/html/man/curs_bkgrnd.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002-2004,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 2002-2012,2015 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_bkgrnd.3x,v 1.3 2006/02/25 21:49:19 tom Exp @
+  * @Id: curs_bkgrnd.3x,v 1.6 2015/07/21 00:18:42 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_bkgrnd 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_bkgrnd 3x</H1>
-<HR>
+<H1 class="no-header">curs_bkgrnd 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>                                         <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>bkgrnd</STRONG>,  <STRONG>wbkgrnd</STRONG>,  <STRONG>bkgrndset</STRONG>, <STRONG>wbkgrndset</STRONG>, <STRONG>getbkgrnd</STRONG>, <STRONG>wget-</STRONG>
        <STRONG>bkgrnd</STRONG> - <STRONG>curses</STRONG>  window  complex  background  manipulation
        routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>bkgrnd(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
@@ -65,7 +65,10 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-bkgrndset">bkgrndset</a></H3><PRE>
        The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> routines manipulate the back-
        ground of the named window.  The window  background  is  a
        <STRONG>cchar_t</STRONG> consisting of any combination of attributes (i.e.,
@@ -82,47 +85,64 @@
        attribute part of  the  background  is  displayed  as  the
        graphic rendition of the character put on the screen.
 
+
+</PRE>
+<H3><a name="h3-bkgrnd">bkgrnd</a></H3><PRE>
        The  <STRONG>bkgrnd</STRONG> and <STRONG>wbkgrnd</STRONG> functions set the background prop-
        erty of the current or specified  window  and  then  apply
        this setting to every character position in that window:
 
-              The  rendition  of every character on the screen is
-              changed to the new background rendition.
+       <STRONG>o</STRONG>   The  rendition  of  every  character  on the screen is
+           changed to the new background rendition.
 
-              Wherever the former background  character  appears,
-              it is changed to the new background character.
+       <STRONG>o</STRONG>   Wherever the former background character  appears,  it
+           is changed to the new background character.
 
+
+</PRE>
+<H3><a name="h3-getbkgrnd">getbkgrnd</a></H3><PRE>
        The  <STRONG>getbkgrnd</STRONG> function returns the given window's current
        background character/attribute pair via the <STRONG>wch</STRONG> pointer.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>bkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, and <STRONG>getbkgrnd</STRONG> may be  macros.
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       Note that <STRONG>bkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, and <STRONG>getbkgrnd</STRONG> may be macros.
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
-       The  <STRONG>bkgrndset</STRONG>  and  <STRONG>wbkgrndset</STRONG>  routines  do not return a
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG>  routines  do  not  return  a
        value.
 
        Upon successful completion, the other functions return <STRONG>OK</STRONG>.
-       Otherwise,  they  return  <STRONG>ERR</STRONG>.   A  null window pointer is
+       Otherwise, they return <STRONG>ERR</STRONG>.   A  null  window  pointer  is
        treated as an error.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>
 
 
 
                                                         <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-bkgrndset">bkgrndset</a></li>
+<li><a href="#h3-bkgrnd">bkgrnd</a></li>
+<li><a href="#h3-getbkgrnd">getbkgrnd</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_border.3x.html b/doc/html/man/curs_border.3x.html
index e084827..f21be36 100644
--- a/doc/html/man/curs_border.3x.html
+++ b/doc/html/man/curs_border.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_border.3x,v 1.19 2007/02/24 16:15:38 tom Exp @
+  * @Id: curs_border.3x,v 1.22 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_border 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_border 3x</H1>
-<HR>
+<H1 class="no-header">curs_border 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>                                         <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>border</STRONG>, <STRONG>wborder</STRONG>, <STRONG>box</STRONG>, <STRONG>hline</STRONG>, <STRONG>whline</STRONG>, <STRONG>vline</STRONG>, <STRONG>wvline</STRONG>,
        <STRONG>mvhline</STRONG>, <STRONG>mvwhline</STRONG>, <STRONG>mvvline</STRONG>, <STRONG>mvwvline</STRONG> - create <STRONG>curses</STRONG>
        borders, horizontal and vertical lines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
        <STRONG>int</STRONG> <STRONG>border(chtype</STRONG> <STRONG>ls,</STRONG> <STRONG>chtype</STRONG> <STRONG>rs,</STRONG> <STRONG>chtype</STRONG> <STRONG>ts,</STRONG> <STRONG>chtype</STRONG> <STRONG>bs,</STRONG>
           <STRONG>chtype</STRONG> <STRONG>tl,</STRONG> <STRONG>chtype</STRONG> <STRONG>tr,</STRONG> <STRONG>chtype</STRONG> <STRONG>bl,</STRONG> <STRONG>chtype</STRONG> <STRONG>br);</STRONG>
@@ -72,7 +72,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>border</STRONG>, <STRONG>wborder</STRONG> and <STRONG>box</STRONG> routines draw a box around the
        edges of a window.  Other than the window,  each  argument
        is a character with attributes:
@@ -116,18 +116,22 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All routines return the integer  <STRONG>OK</STRONG>.   The  SVr4.0  manual
        says  "or  a  non-negative integer if <STRONG>immedok</STRONG> is set", but
        this appears to be an error.
 
        X/Open does not define any error conditions.  This  imple-
-       mentation  returns an error if the window pointer is null.
+       mentation returns an error if the window pointer is null.
+
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       The borders generated by these functions are  <EM>inside</EM>  bor-
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       The  borders  generated by these functions are <EM>inside</EM> bor-
        ders (this is also true of SVr4 curses, though the fact is
        not documented).
 
@@ -135,24 +139,30 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are described in the XSI Curses  standard,
-       Issue  4.   The standard specifies that they return <STRONG>ERR</STRONG> on
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.  The standard specifies that they return  <STRONG>ERR</STRONG>  on
        failure, but specifies no error conditions.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_outopts.3x.html">curs_outopts(3x)</A></STRONG>.
 
 
 
                                                         <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_border_set.3x.html b/doc/html/man/curs_border_set.3x.html
index 415e810..b7dfbc6 100644
--- a/doc/html/man/curs_border_set.3x.html
+++ b/doc/html/man/curs_border_set.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002-2004,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 2002-2011,2012 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            *
@@ -27,26 +26,27 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_border_set.3x,v 1.6 2005/05/15 16:17:37 tom Exp @
+  * @Id: curs_border_set.3x,v 1.11 2012/11/03 23:03:59 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_border_set 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_border_set 3x</H1>
-<HR>
+<H1 class="no-header">curs_border_set 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>                                 <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>border_set</STRONG>, <STRONG>wborder_set</STRONG>, <STRONG>box_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>whline_set</STRONG>,
        <STRONG>mvhline_set</STRONG>, <STRONG>mvwhline_set</STRONG>, <STRONG>vline_set</STRONG>, <STRONG>wvline_set</STRONG>,
        <STRONG>mvvline_set</STRONG>, <STRONG>mvwvline_set</STRONG> - create <STRONG>curses</STRONG> borders or lines
@@ -54,7 +54,7 @@
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>border_set(</STRONG>
@@ -99,7 +99,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>border_set</STRONG> and <STRONG>wborder_set</STRONG>  functions  draw  a  border
        around  the  edges  of  the  current  or specified window.
        These functions do not change the cursor position, and  do
@@ -148,32 +148,42 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>border_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>mvhline_set</STRONG>, <STRONG>mvvline_set</STRONG>,
        <STRONG>mvwhline_set</STRONG>, <STRONG>mvwvline_set</STRONG>, and <STRONG>vline_set</STRONG> may be macros.
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Upon successful completion,  these  functions  return  <STRONG>OK</STRONG>.
        Otherwise, they return <STRONG>ERR</STRONG>.
 
        Functions  using  a window parameter return an error if it
        is null.
 
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>,  <STRONG>curs_out-</STRONG>
+       <STRONG><A HREF="curs_outopts.3x.html">opts(3x)</A></STRONG>
 
 
 
                                                     <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_clear.3x.html b/doc/html/man/curs_clear.3x.html
index 86bb486..a805cfb 100644
--- a/doc/html/man/curs_clear.3x.html
+++ b/doc/html/man/curs_clear.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_clear.3x,v 1.11 2007/12/29 15:58:38 tom Exp @
+  * @Id: curs_clear.3x,v 1.14 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_clear 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_clear 3x</H1>
-<HR>
+<H1 class="no-header">curs_clear 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>                                           <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, <STRONG>wclrtobot</STRONG>,
        <STRONG>clrtoeol</STRONG>, <STRONG>wclrtoeol</STRONG> - clear all or part of a <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>erase(void);</STRONG>
@@ -66,22 +66,22 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  <STRONG>erase</STRONG>  and <STRONG>werase</STRONG> routines copy blanks to every posi-
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       The <STRONG>erase</STRONG> and <STRONG>werase</STRONG> routines copy blanks to  every  posi-
        tion in the window, clearing the screen.
 
-       The <STRONG>clear</STRONG> and <STRONG>wclear</STRONG> routines are like <STRONG>erase</STRONG>  and  <STRONG>werase</STRONG>,
-       but  they also call <STRONG>clearok</STRONG>, so that the screen is cleared
-       completely on the next call to <STRONG>wrefresh</STRONG>  for  that  window
+       The  <STRONG>clear</STRONG>  and <STRONG>wclear</STRONG> routines are like <STRONG>erase</STRONG> and <STRONG>werase</STRONG>,
+       but they also call <STRONG>clearok</STRONG>, so that the screen is  cleared
+       completely  on  the  next call to <STRONG>wrefresh</STRONG> for that window
        and repainted from scratch.
 
-       The  <STRONG>clrtobot</STRONG> and <STRONG>wclrtobot</STRONG> routines erase from the cursor
+       The <STRONG>clrtobot</STRONG> and <STRONG>wclrtobot</STRONG> routines erase from the  cursor
        to the end of screen.  That is, they erase all lines below
-       the  cursor  in the window.  Also, the current line to the
+       the cursor in the window.  Also, the current line  to  the
        right of the cursor, inclusive, is erased.
 
        The <STRONG>clrtoeol</STRONG> and <STRONG>wclrtoeol</STRONG> routines erase the current line
-       to  the  right of the cursor, inclusive, to the end of the
+       to the right of the cursor, inclusive, to the end  of  the
        current line.
 
        Blanks created by erasure have the current background ren-
@@ -89,57 +89,64 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines  return the integer <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on
-       failure.  The SVr4.0 manual says "or a non-negative  inte-
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All routines return the integer <STRONG>OK</STRONG> on success and  <STRONG>ERR</STRONG>  on
+       failure.   The SVr4.0 manual says "or a non-negative inte-
        ger if <STRONG>immedok</STRONG> is set", but this appears to be an error.
 
-       X/Open  defines  no error conditions.  In this implementa-
+       X/Open defines no error conditions.  In  this  implementa-
        tion, functions using a window pointer parameter return an
        error if it is null.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, and <STRONG>clr-</STRONG>
        <STRONG>toeol</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are described in the XSI Curses  standard,
-       Issue  4.   The standard specifies that they return <STRONG>ERR</STRONG> on
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  functions are described in the XSI Curses standard,
+       Issue 4.  The standard specifies that they return  <STRONG>ERR</STRONG>  on
        failure, but specifies no error conditions.
 
-       Some historic curses implementations had,  as  an  undocu-
-       mented  feature,  the  ability  to  do  the  equivalent of
-       <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG> by saying <STRONG>touchwin(stdscr)</STRONG>  or  <STRONG>clear(std-</STRONG>
+       Some  historic  curses  implementations had, as an undocu-
+       mented feature,  the  ability  to  do  the  equivalent  of
+       <STRONG>clearok(...,</STRONG>  <STRONG>1)</STRONG>  by saying <STRONG>touchwin(stdscr)</STRONG> or <STRONG>clear(std-</STRONG>
        <STRONG>scr)</STRONG>.  This will not work under ncurses.
 
-       This  implementation, and others such as Solaris, sets the
-       current position to 0,0 after  erasing  via  <STRONG>werase()</STRONG>  and
-       <STRONG>wclear()</STRONG>.   That fact is not documented in other implemen-
+       This implementation, and others such as Solaris, sets  the
+       current  position  to  0,0  after erasing via <STRONG>werase()</STRONG> and
+       <STRONG>wclear()</STRONG>.  That fact is not documented in other  implemen-
        tations, and may not be true of implementations which were
        not derived from SVr4 source.
 
-       Not  obvious  from  the  description, most implementations
-       clear the screen after <STRONG>wclear</STRONG> even for a subwindow or  de-
+       Not obvious from  the  description,  most  implementations
+       clear  the screen after <STRONG>wclear</STRONG> even for a subwindow or de-
        rived window.  If you do not want to clear the screen dur-
        ing the next <STRONG>wrefresh</STRONG>, use <STRONG>werase</STRONG> instead.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+<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_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG>
+       <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>
 
 
 
                                                          <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_color.3x.html b/doc/html/man/curs_color.3x.html
index 684605f..8d0f00c 100644
--- a/doc/html/man/curs_color.3x.html
+++ b/doc/html/man/curs_color.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2015 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            *
@@ -27,34 +26,36 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_color.3x,v 1.28 2005/12/18 00:00:37 tom Exp @
+  * @Id: curs_color.3x,v 1.39 2015/06/06 23:29:02 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_color 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_color 3x</H1>
-<HR>
+<H1 class="no-header">curs_color 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>                                           <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>start_color</STRONG>, <STRONG>init_pair</STRONG>, <STRONG>init_color</STRONG>, <STRONG>has_colors</STRONG>,
        <STRONG>can_change_color</STRONG>, <STRONG>color_content</STRONG>, <STRONG>pair_content</STRONG>, <STRONG>COLOR_PAIR</STRONG>
        - <STRONG>curses</STRONG> color manipulation routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#</STRONG> <STRONG>include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+
        <STRONG>int</STRONG> <STRONG>start_color(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_pair(short</STRONG> <STRONG>pair,</STRONG> <STRONG>short</STRONG> <STRONG>f,</STRONG> <STRONG>short</STRONG> <STRONG>b);</STRONG>
        <STRONG>int</STRONG> <STRONG>init_color(short</STRONG> <STRONG>color,</STRONG> <STRONG>short</STRONG> <STRONG>r,</STRONG> <STRONG>short</STRONG> <STRONG>g,</STRONG> <STRONG>short</STRONG> <STRONG>b);</STRONG>
@@ -66,10 +67,12 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-   <STRONG>Overview</STRONG>
-       <STRONG>curses</STRONG> support color attributes on terminals with that ca-
-       pability.   To  use  these  routines  <STRONG>start_color</STRONG>  must be
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-Overview">Overview</a></H3><PRE>
+       <STRONG>curses</STRONG> supports color attributes on  terminals  with  that
+       capability.   To  use  these  routines <STRONG>start_color</STRONG> must be
        called, usually right after <STRONG>initscr</STRONG>.   Colors  are  always
        used  in pairs (referred to as color-pairs).  A color-pair
        consists of a foreground  color  (for  characters)  and  a
@@ -90,51 +93,152 @@
        The  routine  <STRONG>pair_content</STRONG> allows a programmer to find out
        how a given color-pair is currently defined.
 
-   <STRONG>Routine</STRONG> <STRONG>Descriptions</STRONG>
-       The <STRONG>start_color</STRONG> routine requires no arguments.  It must be
-       called  if  the programmer wants to use colors, and before
-       any other color manipulation routine  is  called.   It  is
-       good  practice  to  call this routine right after <STRONG>initscr</STRONG>.
-       <STRONG>start_color</STRONG> initializes eight basic  colors  (black,  red,
-       green,  yellow,  blue,  magenta, cyan, and white), and two
-       global variables,  <STRONG>COLORS</STRONG>  and  <STRONG>COLOR_PAIRS</STRONG>  (respectively
-       defining  the maximum number of colors and color-pairs the
-       terminal can support).  It also restores the colors on the
-       terminal to the values they had when the terminal was just
-       turned on.
 
-       The <STRONG>init_pair</STRONG> routine changes the definition of  a  color-
-       pair.   It takes three arguments: the number of the color-
-       pair to be changed, the foreground color number,  and  the
+</PRE>
+<H3><a name="h3-Color-Rendering">Color Rendering</a></H3><PRE>
+       The <STRONG>curses</STRONG> library combines these inputs  to  produce  the
+       actual  foreground  and  background  colors  shown  on the
+       screen:
+
+       <STRONG>o</STRONG>   per-character video attributes (e.g., via <STRONG>waddch</STRONG>),
+
+       <STRONG>o</STRONG>   the window attribute (e.g., by <STRONG>wattrset</STRONG>), and
+
+       <STRONG>o</STRONG>   the background character (e.g., <STRONG>wbkgdset</STRONG>).
+
+       Per-character and window attributes are usually set  by  a
+       parameter  containing  video  attributes  including a <STRONG>COL-</STRONG>
+       <STRONG>OR_PAIR</STRONG> value.  Some functions such  as  <STRONG>wattr_set</STRONG>  use  a
+       separate parameter which is the color pair number.
+
+       The  background character is a special case: it includes a
+       character value, just as if it were passed to <STRONG>waddch</STRONG>.
+
+       The <STRONG>curses</STRONG> library does the actual work of combining these
+       color pairs in an internal function called from <STRONG>waddch</STRONG>:
+
+       <STRONG>o</STRONG>   If the parameter passed to <STRONG>waddch</STRONG> is <EM>blank</EM>, and it us-
+           es the special color pair 0,
+
+           <STRONG>o</STRONG>   <STRONG>curses</STRONG> next checks the window attribute.
+
+           <STRONG>o</STRONG>   If the window attribute does not use color pair 0,
+               <STRONG>curses</STRONG>  uses  the  color  pair from the window at-
+               tribute.
+
+           <STRONG>o</STRONG>   Otherwise, <STRONG>curses</STRONG> uses the background character.
+
+       <STRONG>o</STRONG>   If the parameter passed to <STRONG>waddch</STRONG> is <EM>not</EM> <EM>blank</EM>, or  it
+           does  not use the special color pair 0, <STRONG>curses</STRONG> prefers
+           the color pair from the parameter, if it  is  nonzero.
+           Otherwise, it tries the window attribute next, and fi-
+           nally the background character.
+
+       Some <STRONG>curses</STRONG> functions such as <STRONG>wprintw</STRONG> call <STRONG>waddch</STRONG>.   Those
+       do  not  combine  its parameter with a color pair.  Conse-
+       quently those calls use only the window attribute  or  the
+       background character.
+
+
+</PRE>
+<H3><a name="h3-Routine-Descriptions">Routine Descriptions</a></H3><PRE>
+       The <STRONG>start_color</STRONG> routine requires no arguments.  It must be
+       called if the programmer wants to use colors,  and  before
+       any  other  color  manipulation  routine is called.  It is
+       good practice to call this routine  right  after  <STRONG>initscr</STRONG>.
+       <STRONG>start_color</STRONG> does this:
+
+       <STRONG>o</STRONG>   It  initializes  two global variables, <STRONG>COLORS</STRONG> and <STRONG>COL-</STRONG>
+           <STRONG>OR_PAIRS</STRONG> (respectively defining the maximum number  of
+           colors and color-pairs the terminal can support).
+
+       <STRONG>o</STRONG>   It initializes the special color pair <STRONG>0</STRONG> to the default
+           foreground and  background  colors.   No  other  color
+           pairs are initialized.
+
+       <STRONG>o</STRONG>   It  restores  the colors on the terminal to the values
+           they had when the terminal was just turned on.
+
+       <STRONG>o</STRONG>   If the terminal supports the <STRONG>initc</STRONG>  (<STRONG>initialize_color</STRONG>)
+           capability, <STRONG>start_color</STRONG> initializes its internal table
+           representing the red, green and blue components of the
+           color palette.
+
+           The components depend on whether the terminal uses CGA
+           (aka "ANSI") or HLS (i.e., the <STRONG>hls</STRONG> (<STRONG>hue_lightness_sat-</STRONG>
+           <STRONG>uration</STRONG>) capability is set).  The table is initialized
+           first for eight basic colors (black, red, green,  yel-
+           low,  blue,  magenta, cyan, and white), and after that
+           (if the terminal supports more than eight colors)  the
+           components are initialized to <STRONG>1000</STRONG>.
+
+           <STRONG>start_color</STRONG>  does  not  attempt  to set the terminal's
+           color palette to match its built-in table.  An  appli-
+           cation  may use <STRONG>init_color</STRONG> to alter the internal table
+           along with the terminal's color.
+
+       These limits apply to color values and color pairs.   Val-
+       ues  outside these limits are not legal, and may result in
+       a runtime error:
+
+       <STRONG>o</STRONG>   <STRONG>COLORS</STRONG> corresponds to the terminal database's <STRONG>max_col-</STRONG>
+           <STRONG>ors</STRONG> capability, which is typically a signed 16-bit in-
+           teger (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
+
+       <STRONG>o</STRONG>   color values are expected to be in the range <STRONG>0</STRONG> to <STRONG>COL-</STRONG>
+           <STRONG>ORS-1</STRONG>, inclusive (including <STRONG>0</STRONG> and <STRONG>COLORS-1</STRONG>).
+
+       <STRONG>o</STRONG>   a  special  color value <STRONG>-1</STRONG> is used in certain extended
+           functions to denote the  <EM>default</EM>  <EM>color</EM>  (see  <STRONG>use_de-</STRONG>
+           <STRONG>fault_colors</STRONG>).
+
+       <STRONG>o</STRONG>   <STRONG>COLOR_PAIRS</STRONG>  corresponds  to  the  terminal database's
+           <STRONG>max_pairs</STRONG> capability,  which  is  typically  a  signed
+           16-bit integer (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>).
+
+       <STRONG>o</STRONG>   legal  color  pair  values  are in the range <STRONG>1</STRONG> to <STRONG>COL-</STRONG>
+           <STRONG>OR_PAIRS-1</STRONG>, inclusive.
+
+       <STRONG>o</STRONG>   color pair <STRONG>0</STRONG> is special; it denotes "no color".
+
+           Color pair <STRONG>0</STRONG> is assumed to be white on black,  but  is
+           actually whatever the terminal implements before color
+           is initialized.  It cannot be modified by the applica-
+           tion.
+
+       The  <STRONG>init_pair</STRONG>  routine changes the definition of a color-
+       pair.  It takes three arguments: the number of the  color-
+       pair  to  be changed, the foreground color number, and the
        background color number.  For portable applications:
 
-       -    The value of the first argument must be between <STRONG>1</STRONG> and
-            <STRONG>COLOR_PAIRS-1</STRONG>.
+       <STRONG>o</STRONG>   The first argument must be a legal color  pair  value.
+           If  default  colors  are used (see <STRONG>use_default_colors</STRONG>)
+           the upper limit is adjusted to allow for  extra  pairs
+           which  use  a default color in foreground and/or back-
+           ground.
 
-       -    The value of the second and third arguments  must  be
-            between  0 and <STRONG>COLORS</STRONG>.  Color pair 0 is assumed to be
-            white on black, but is actually whatever the terminal
-            implements before color is initialized.  It cannot be
-            modified by the application.
+       <STRONG>o</STRONG>   The second and third arguments  must  be  legal  color
+           values.
 
-       If the color-pair was previously initialized,  the  screen
-       is  refreshed  and  all occurrences of that color-pair are
+       If  the  color-pair was previously initialized, the screen
+       is refreshed and all occurrences of  that  color-pair  are
        changed to the new definition.
 
-       As an extension, ncurses allows you to set  color  pair  0
-       via  the  <STRONG>assume_default_colors</STRONG> routine, or to specify the
-       use of default colors (color number <STRONG>-1</STRONG>) if you  first  in-
+       As  an  extension,  ncurses allows you to set color pair <STRONG>0</STRONG>
+       via the <STRONG>assume_default_colors</STRONG> routine, or to  specify  the
+       use  of  default colors (color number <STRONG>-1</STRONG>) if you first in-
        voke the <STRONG>use_default_colors</STRONG> routine.
 
-       The  <STRONG>init_color</STRONG> routine changes the definition of a color.
-       It takes four arguments: the number of  the  color  to  be
-       changed  followed  by three RGB values (for the amounts of
-       red, green, and blue components).  The value of the  first
-       argument  must  be between <STRONG>0</STRONG> and <STRONG>COLORS</STRONG>.  (See the section
-       <STRONG>Colors</STRONG> for the default color index.)   Each  of  the  last
-       three  arguments must be a value between 0 and 1000.  When
-       <STRONG>init_color</STRONG> is used, all occurrences of that color  on  the
-       screen immediately change to the new definition.
+       The <STRONG>init_color</STRONG> routine changes the definition of a  color.
+       It  takes  four  arguments:  the number of the color to be
+       changed followed by three RGB values (for the  amounts  of
+       red, green, and blue components).  The first argument must
+       be a legal color value; default  colors  are  not  allowed
+       here.   (See  the section <STRONG>Colors</STRONG> for the default color in-
+       dex.)  Each of the last three arguments must be a value in
+       the  range  <STRONG>0</STRONG>  through <STRONG>1000</STRONG>.  When <STRONG>init_color</STRONG> is used, all
+       occurrences of that color on the screen immediately change
+       to the new definition.
 
        The  <STRONG>has_colors</STRONG> routine requires no arguments.  It returns
        <STRONG>TRUE</STRONG> if the terminal can manipulate colors; otherwise,  it
@@ -148,30 +252,34 @@
        change their definitions; other, it returns  <STRONG>FALSE</STRONG>.   This
        routine facilitates writing terminal-independent programs.
 
-       The <STRONG>color_content</STRONG> routine gives programmers a way to  find
+       The  <STRONG>color_content</STRONG> routine gives programmers a way to find
        the intensity of the red, green, and blue (RGB) components
        in a color.  It requires four arguments: the color number,
-       and  three addresses of <STRONG>short</STRONG>s for storing the information
-       about the amounts of red, green, and  blue  components  in
-       the  given color.  The value of the first argument must be
-       between 0 and <STRONG>COLORS</STRONG>.  The values that are stored  at  the
-       addresses  pointed  to by the last three arguments are be-
-       tween 0 (no component) and 1000 (maximum amount of  compo-
-       nent).
+       and three addresses of <STRONG>short</STRONG>s for storing the  information
+       about  the  amounts  of red, green, and blue components in
+       the given color.  The first argument must be a legal color
+       value,  i.e.,  <STRONG>0</STRONG>  through <STRONG>COLORS-1</STRONG>, inclusive.  The values
+       that are stored at the addresses pointed to  by  the  last
+       three  arguments are in the range <STRONG>0</STRONG> (no component) through
+       <STRONG>1000</STRONG> (maximum amount of component), inclusive.
 
-       The  <STRONG>pair_content</STRONG>  routine  allows programmers to find out
-       what colors a given color-pair consists of.   It  requires
-       three  arguments: the color-pair number, and two addresses
-       of <STRONG>short</STRONG>s for storing the foreground  and  the  background
-       color  numbers.   The  value of the first argument must be
-       between 1 and <STRONG>COLOR_PAIRS-1</STRONG>.  The values that  are  stored
-       at  the addresses pointed to by the second and third argu-
-       ments are between 0 and <STRONG>COLORS</STRONG>.
+       The <STRONG>pair_content</STRONG> routine allows programmers  to  find  out
+       what  colors  a given color-pair consists of.  It requires
+       three arguments: the color-pair number, and two  addresses
+       of  <STRONG>short</STRONG>s  for  storing the foreground and the background
+       color numbers.  The first argument must be a  legal  color
+       value,  i.e., in the range <STRONG>1</STRONG> through <STRONG>COLOR_PAIRS-1</STRONG>, inclu-
+       sive.  The values that are stored at the addresses pointed
+       to  by  the  second and third arguments are in the range <STRONG>0</STRONG>
+       through <STRONG>COLORS</STRONG>, inclusive.
 
-   <STRONG>Colors</STRONG>
+
+</PRE>
+<H3><a name="h3-Colors">Colors</a></H3><PRE>
        In <STRONG>&lt;curses.h&gt;</STRONG> the following macros are defined.  These are
-       the  default colors.  <STRONG>curses</STRONG> also assumes that <STRONG>COLOR_BLACK</STRONG>
-       is the default background color for all terminals.
+       the  standard colors (ISO-6429).  <STRONG>curses</STRONG> also assumes that
+       <STRONG>COLOR_BLACK</STRONG> is the default background color for all termi-
+       nals.
 
              <STRONG>COLOR_BLACK</STRONG>
              <STRONG>COLOR_RED</STRONG>
@@ -184,37 +292,36 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The routines <STRONG>can_change_color()</STRONG>  and  <STRONG>has_colors()</STRONG>  return
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       The  routines  <STRONG>can_change_color()</STRONG>  and <STRONG>has_colors()</STRONG> return
        <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
 
        All other routines return the integer <STRONG>ERR</STRONG> upon failure and
-       an <STRONG>OK</STRONG> (SVr4 specifies only "an integer  value  other  than
+       an  <STRONG>OK</STRONG>  (SVr4  specifies only "an integer value other than
        <STRONG>ERR</STRONG>") upon successful completion.
 
-       X/Open  defines  no error conditions.  This implementation
-       will return <STRONG>ERR</STRONG> on attempts to use  color  values  outside
-       the range 0 to COLORS-1 (except for the default colors ex-
-       tension), or use color pairs outside the range 0  to  COL-
-       OR_PAIR-1.  Color values used in <STRONG>init_color</STRONG> must be in the
-       range 0 to 1000.  An error is returned from all  functions
-       if the terminal has not been initialized.  An error is re-
-       turned from  secondary  functions  such  as  <STRONG>init_pair</STRONG>  if
+       X/Open defines no error conditions.   This  implementation
+       will  return  <STRONG>ERR</STRONG>  on attempts to use color values outside
+       the range <STRONG>0</STRONG> to COLORS-1 (except for the default colors ex-
+       tension),  or  use color pairs outside the range <STRONG>0</STRONG> to <STRONG>COL-</STRONG>
+       <STRONG>OR_PAIRS-1</STRONG>.  Color values used in <STRONG>init_color</STRONG>  must  be  in
+       the  range <STRONG>0</STRONG> to <STRONG>1000</STRONG>.  An error is returned from all func-
+       tions if the terminal has not been initialized.  An  error
+       is  returned from secondary functions such as <STRONG>init_pair</STRONG> if
        <STRONG>start_color</STRONG> was not called.
 
-              <STRONG>init_color</STRONG>
-                   returns an error if the terminal does not sup-
-                   port  this  feature,  e.g.,  if  the  <EM>initial-</EM>
-                   <EM>ize</EM><STRONG>_</STRONG><EM>color</EM> capability is absent from the termi-
-                   nal description.
+          <STRONG>init_color</STRONG>
+               returns an error if the terminal does not  support
+               this  feature, e.g., if the <EM>initialize</EM><STRONG>_</STRONG><EM>color</EM> capa-
+               bility is absent from the terminal description.
 
-              <STRONG>start_color</STRONG>
-                   returns an error If the color table cannot  be
-                   allocated.
+          <STRONG>start_color</STRONG>
+               returns an error if the color table cannot be  al-
+               located.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        In  the  <EM>ncurses</EM> implementation, there is a separate color
        activation flag, color palette, color pairs table, and as-
        sociated  COLORS  and  COLOR_PAIRS counts for each screen;
@@ -232,21 +339,21 @@
        Several  caveats  apply  on 386 and 486 machines with VGA-
        compatible graphics:
 
-       -    COLOR_YELLOW is actually brown.  To get  yellow,  use
-            COLOR_YELLOW combined with the <STRONG>A_BOLD</STRONG> attribute.
+       <STRONG>o</STRONG>   COLOR_YELLOW is actually brown.  To  get  yellow,  use
+           COLOR_YELLOW combined with the <STRONG>A_BOLD</STRONG> attribute.
 
-       -    The  A_BLINK  attribute  should  in  theory cause the
-            background to go bright.  This often fails  to  work,
-            and  even  some cards for which it mostly works (such
-            as the Paradise and compatibles) do the  wrong  thing
-            when you try to set a bright "yellow" background (you
-            get a blinking yellow foreground instead).
+       <STRONG>o</STRONG>   The A_BLINK attribute should in theory cause the back-
+           ground to go bright.  This often fails  to  work,  and
+           even some cards for which it mostly works (such as the
+           Paradise and compatibles) do the wrong thing when  you
+           try  to  set  a  bright "yellow" background (you get a
+           blinking yellow foreground instead).
 
-       -    Color RGB values are not settable.
+       <STRONG>o</STRONG>   Color RGB values are not settable.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        This implementation satisfies XSI Curses's  minimum  maxi-
        mums for <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG>.
 
@@ -265,18 +372,31 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,  <STRONG>default_col-</STRONG>
-       <STRONG><A HREF="default_colors.3x.html">ors(3x)</A></STRONG>
+<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_initscr.3x.html">curs_initscr(3x)</A></STRONG>,  <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,  <STRONG>curs_vari-</STRONG>
+       <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>, <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
 
 
 
                                                          <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Overview">Overview</a></li>
+<li><a href="#h3-Color-Rendering">Color Rendering</a></li>
+<li><a href="#h3-Routine-Descriptions">Routine Descriptions</a></li>
+<li><a href="#h3-Colors">Colors</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_delch.3x.html b/doc/html/man/curs_delch.3x.html
index 3b6562a..b0eb0b8 100644
--- a/doc/html/man/curs_delch.3x.html
+++ b/doc/html/man/curs_delch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2000,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_delch.3x,v 1.8 2006/02/25 21:42:57 tom Exp @
+  * @Id: curs_delch.3x,v 1.11 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_delch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_delch 3x</H1>
-<HR>
+<H1 class="no-header">curs_delch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>                                           <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>delch</STRONG>,  <STRONG>wdelch</STRONG>, <STRONG>mvdelch</STRONG>, <STRONG>mvwdelch</STRONG> - delete character under
        the cursor in a <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>delch(void);</STRONG>
@@ -62,7 +62,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines delete the character under the cursor;  all
        characters to the right of the cursor on the same line are
        moved to the left one position and the last  character  on
@@ -73,36 +73,46 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG>
        (SVr4  specifies  only  "an integer value other than <STRONG>ERR</STRONG>")
        upon successful completion.
 
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>delch</STRONG>, <STRONG>mvdelch</STRONG>, and <STRONG>mvwdelch</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These functions are described in the XSI Curses  standard,
        Issue  4.   The standard specifies that they return <STRONG>ERR</STRONG> on
        failure, but specifies no error conditions.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_delch.3x.html">curs_delch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_deleteln.3x.html b/doc/html/man/curs_deleteln.3x.html
index 8e73ce5..567dfad 100644
--- a/doc/html/man/curs_deleteln.3x.html
+++ b/doc/html/man/curs_deleteln.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_deleteln.3x,v 1.11 2007/06/02 20:40:07 tom Exp @
+  * @Id: curs_deleteln.3x,v 1.13 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_deleteln 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_deleteln 3x</H1>
-<HR>
+<H1 class="no-header">curs_deleteln 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>                                     <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>deleteln</STRONG>,  <STRONG>wdeleteln</STRONG>,  <STRONG>insdelln</STRONG>, <STRONG>winsdelln</STRONG>, <STRONG>insertln</STRONG>, <STRONG>win-</STRONG>
        <STRONG>sertln</STRONG> - delete and insert lines in a <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>deleteln(void);</STRONG>
@@ -64,7 +64,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>deleteln</STRONG> and <STRONG>wdeleteln</STRONG> routines delete the line  under
        the cursor in the window; all lines below the current line
        are moved up one line.  The bottom line of the  window  is
@@ -82,7 +82,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG>
        (SVr4 specifies only "an integer value  other  than  <STRONG>ERR</STRONG>")
        upon successful completion.
@@ -93,14 +93,14 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  functions are described in the XSI Curses standard,
        Issue 4.  The standard specifies that they return  <STRONG>ERR</STRONG>  on
        failure, but specifies no error conditions.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all but <STRONG>winsdelln</STRONG> may be macros.
 
        These  routines  do  not require a hardware line delete or
@@ -110,17 +110,23 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_deleteln.3x.html">curs_deleteln(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_extend.3x.html b/doc/html/man/curs_extend.3x.html
index 483003c..26a0897 100644
--- a/doc/html/man/curs_extend.3x.html
+++ b/doc/html/man/curs_extend.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1999-2004,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1999-2006,2010 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            *
@@ -28,32 +27,33 @@
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1999-on
-  * @Id: curs_extend.3x,v 1.17 2006/12/24 18:01:48 tom Exp @
+  * @Id: curs_extend.3x,v 1.19 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_extend 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_extend 3x</H1>
-<HR>
+<H1 class="no-header">curs_extend 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>                                         <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>curses_version</STRONG>,  <STRONG>use_extended_names</STRONG> - miscellaneous curses
        extensions
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>curses_version(void);</STRONG>
@@ -61,7 +61,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These functions are extensions to the curses library which
        do not fit easily into other categories.
 
@@ -80,7 +80,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines are specific to  ncurses.   They  were  not
        supported  on  Version 7, BSD or System V implementations.
        It is recommended that any code depending on them be  con-
@@ -88,24 +88,29 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>,       <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>,      <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>,
        <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>,  <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>,  <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>,  <STRONG>key-</STRONG>
        <STRONG><A HREF="keybound.3x.html">bound(3x)</A></STRONG>, <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>, <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Thomas Dickey.
 
 
 
                                                         <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_get_wch.3x.html b/doc/html/man/curs_get_wch.3x.html
index 40a77c7..50332c1 100644
--- a/doc/html/man/curs_get_wch.3x.html
+++ b/doc/html/man/curs_get_wch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 2002-2010,2012 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_get_wch.3x,v 1.6 2006/02/25 21:47:06 tom Exp @
+  * @Id: curs_get_wch.3x,v 1.8 2012/11/03 23:03:59 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_get_wch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_get_wch 3x</H1>
-<HR>
+<H1 class="no-header">curs_get_wch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>                                       <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>get_wch</STRONG>,  <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, <STRONG>mvwget_wch</STRONG>, <STRONG>unget_wch</STRONG> - get
        (or push back) a wide character from curses terminal  key-
        board
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>get_wch(wint_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
@@ -64,7 +64,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> functions
        read a character from the  terminal  associated  with  the
        current  or  specified  window.   In  no-delay mode, if no
@@ -105,7 +105,7 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The  header  file  <STRONG>&lt;curses.h&gt;</STRONG>  automatically  includes the
        header file <STRONG>&lt;stdio.h&gt;</STRONG>.
 
@@ -122,30 +122,39 @@
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
-       When <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>,  and  <STRONG>mvwget_wch</STRONG>  func-
-       tions  successfully report the pressing of a function key,
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       When  <STRONG>get_wch</STRONG>,  <STRONG>wget_wch</STRONG>,  <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> func-
+       tions successfully report the pressing of a function  key,
        they return <STRONG>KEY_CODE_YES</STRONG>.  When they successfully report a
-       wide  character,  they  return <STRONG>OK</STRONG>.  Otherwise, they return
+       wide character, they return <STRONG>OK</STRONG>.   Otherwise,  they  return
        <STRONG>ERR</STRONG>.
 
-       Upon successful completion, <STRONG>unget_wch</STRONG> returns <STRONG>OK</STRONG>.   Other-
+       Upon  successful completion, <STRONG>unget_wch</STRONG> returns <STRONG>OK</STRONG>.  Other-
        wise, the function returns <STRONG>ERR</STRONG>.
 
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,        <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>,       <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>,
+<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_getch.3x.html">curs_getch(3x)</A></STRONG>,        <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>,
        <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>, <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
 
 
 
                                                        <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_get_wstr.3x.html b/doc/html/man/curs_get_wstr.3x.html
index 159cebe..4d628a8 100644
--- a/doc/html/man/curs_get_wstr.3x.html
+++ b/doc/html/man/curs_get_wstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 2002-2010,2012 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_get_wstr.3x,v 1.6 2006/02/25 21:49:19 tom Exp @
+  * @Id: curs_get_wstr.3x,v 1.9 2012/11/03 23:03:59 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_get_wstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_get_wstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_get_wstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>                                     <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>get_wstr</STRONG>, <STRONG>getn_wstr</STRONG>, <STRONG>wget_wstr</STRONG>, <STRONG>wgetn_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>,
        <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG> - get an array of
        wide characters from a curses terminal keyboard
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>get_wstr(wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG>
@@ -67,7 +67,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  effect  of <STRONG>get_wstr</STRONG> is as though a series of calls to
        <STRONG>get_wch</STRONG> were made, until a newline, other end-of-line,  or
        end-of-file condition is processed.  An end-of-file condi-
@@ -103,7 +103,7 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Using <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, or  <STRONG>wget_wstr</STRONG>  to
        read  a  line  that overflows the array pointed to by <STRONG>wstr</STRONG>
        causes  undefined  results.    The   use   of   <STRONG>getn_wstr</STRONG>,
@@ -118,7 +118,7 @@
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All of these functions return <STRONG>OK</STRONG> upon  successful  comple-
        tion.  Otherwise, they return <STRONG>ERR</STRONG>.
 
@@ -129,9 +129,13 @@
                    returns an error if  the  associated  call  to
                    <STRONG>wget_wch</STRONG> failed.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  functions are described in The Single Unix Specifi-
        cation, Version 2.  No error conditions are defined.  This
        implementation  returns ERR if the window pointer is null,
@@ -146,17 +150,23 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       Functions:  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       Functions: <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>.
 
 
 
                                                       <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_getcchar.3x.html b/doc/html/man/curs_getcchar.3x.html
index b55ce1d..967c347 100644
--- a/doc/html/man/curs_getcchar.3x.html
+++ b/doc/html/man/curs_getcchar.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2001-2006,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 2001-2012,2015 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getcchar.3x,v 1.11 2008/05/17 19:37:05 tom Exp @
+  * @Id: curs_getcchar.3x,v 1.17 2015/07/21 09:30:38 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_getcchar 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_getcchar 3x</H1>
-<HR>
+<H1 class="no-header">curs_getcchar 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>                                     <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>getcchar</STRONG>,  <STRONG>setcchar</STRONG> - Get a wide character string and ren-
        dition from a <STRONG>cchar_t</STRONG> or set a <STRONG>cchar_t</STRONG> from a wide-charac-
        ter string
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>getcchar(</STRONG>
@@ -72,52 +72,58 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-getcchar">getcchar</a></H3><PRE>
        The  <STRONG>getcchar</STRONG>  function  gets  a wide-character string and
        rendition from a <STRONG>cchar_t</STRONG> argument.  When <EM>wch</EM> is not a null
        pointer, the <STRONG>getcchar</STRONG> function does the following:
 
-       -    Extracts information from a <STRONG>cchar_t</STRONG> value <EM>wcval</EM>
+       <STRONG>o</STRONG>   Extracts information from a <STRONG>cchar_t</STRONG> value <EM>wcval</EM>
 
-       -    Stores  the  character  attributes  in  the  location
-            pointed to by <EM>attrs</EM>
+       <STRONG>o</STRONG>   Stores   the  character  attributes  in  the  location
+           pointed to by <EM>attrs</EM>
 
-       -    Stores the color-pair in the location pointed  to  by
-            <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
+       <STRONG>o</STRONG>   Stores the color-pair in the location  pointed  to  by
+           <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
 
-       -    Stores  the  wide-character string, characters refer-
-            enced by <EM>wcval</EM>, into the array pointed to by <EM>wch</EM>.
+       <STRONG>o</STRONG>   Stores  the  wide-character  string, characters refer-
+           enced by <EM>wcval</EM>, into the array pointed to by <EM>wch</EM>.
 
        When <EM>wch</EM> is a null pointer, the <STRONG>getcchar</STRONG> function does the
        following:
 
-       -    Obtains  the  number of wide characters pointed to by
-            <EM>wcval</EM>
+       <STRONG>o</STRONG>   Obtains  the  number  of wide characters pointed to by
+           <EM>wcval</EM>
 
-       -    Does not change  the  data  referenced  by  <EM>attrs</EM>  or
-            <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
-
-       The  <STRONG>setcchar</STRONG> function initializes the location pointed to
-       by <EM>wcval</EM> by using:
-
-       -    The character attributes in <EM>attrs</EM>
-
-       -    The color pair in <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
-
-       -    The wide-character string pointed  to  by  <EM>wch</EM>.   The
-            string  must be L'\0' terminated, contain at most one
-            spacing character, which must be the first.
-
-            Up to <STRONG>CCHARW_MAX</STRONG>-1 nonspacing characters may  follow.
-            Additional nonspacing characters are ignored.
-
-            The  string  may  contain  a single control character
-            instead.  In that case, no nonspacing characters  are
-            allowed.
+       <STRONG>o</STRONG>   Does not  change  the  data  referenced  by  <EM>attrs</EM>  or
+           <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H3><a name="h3-setcchar">setcchar</a></H3><PRE>
+       The  <STRONG>setcchar</STRONG> function initializes the location pointed to
+       by <EM>wcval</EM> by using:
+
+       <STRONG>o</STRONG>   The character attributes in <EM>attrs</EM>
+
+       <STRONG>o</STRONG>   The color pair in <EM>color</EM><STRONG>_</STRONG><EM>pair</EM>
+
+       <STRONG>o</STRONG>   The wide-character string  pointed  to  by  <EM>wch</EM>.   The
+           string  must  be L'\0' terminated, contain at most one
+           spacing character, which must be the first.
+
+           Up to <STRONG>CCHARW_MAX</STRONG>-1 nonspacing characters  may  follow.
+           Additional nonspacing characters are ignored.
+
+           The  string  may  contain  a  single control character
+           instead.  In that case, no nonspacing  characters  are
+           allowed.
+
+
+</PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The  <EM>opts</EM> argument is reserved for future use.  Currently,
        an application must provide a null pointer as <EM>opts</EM>.
 
@@ -128,30 +134,41 @@
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        When <EM>wch</EM> is a null pointer, <STRONG>getcchar</STRONG> returns the number of
-       wide characters referenced by <EM>wcval</EM>.
+       wide characters referenced by <EM>wcval</EM>, including one  for  a
+       trailing null.
 
-       When <EM>wch</EM> is not a null pointer, <STRONG>getcchar</STRONG> returns  <STRONG>OK</STRONG>  upon
+       When  <EM>wch</EM>  is not a null pointer, <STRONG>getcchar</STRONG> returns <STRONG>OK</STRONG> upon
        successful completion, and <STRONG>ERR</STRONG> otherwise.
 
-       Upon  successful  completion, <STRONG>setcchar</STRONG> returns <STRONG>OK</STRONG>.  Other-
+       Upon successful completion, <STRONG>setcchar</STRONG> returns  <STRONG>OK</STRONG>.   Other-
        wise, it returns <STRONG>ERR</STRONG>.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       Functions:  <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,   <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>,   <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
-       <STRONG><A HREF="wcwidth.3.html">wcwidth(3)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       Functions:   <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,   <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>,  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,
+       <STRONG>wcwidth(3)</STRONG>.
 
 
 
                                                       <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-getcchar">getcchar</a></li>
+<li><a href="#h3-setcchar">setcchar</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_getch.3x.html b/doc/html/man/curs_getch.3x.html
index e7df663..9b3bdc4 100644
--- a/doc/html/man/curs_getch.3x.html
+++ b/doc/html/man/curs_getch.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2014,2015 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            *
@@ -28,44 +27,48 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getch.3x,v 1.30 2006/12/02 17:02:53 tom Exp @
+  * @Id: curs_getch.3x,v 1.42 2015/07/21 08:44:04 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_getch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_getch 3x</H1>
-<HR>
+<H1 class="no-header">curs_getch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>                                           <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, <STRONG>mvwgetch</STRONG>, <STRONG>ungetch</STRONG>, <STRONG>has_key</STRONG> - get
        (or push back) characters from <STRONG>curses</STRONG> terminal keyboard
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>getch(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvgetch(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwgetch(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>ungetch(int</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <STRONG>ch);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win);</EM>
+       <STRONG>int</STRONG> <STRONG>mvgetch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwgetch(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>int</STRONG> <STRONG>ungetch(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-Reading-characters">Reading characters</a></H3><PRE>
        The <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG> and <STRONG>mvwgetch</STRONG>, routines  read  a
        character  from the window.  In no-delay mode, if no input
        is waiting, the value <STRONG>ERR</STRONG> is returned.  In delay mode, the
@@ -76,24 +79,37 @@
        waits  until a character is typed or the specified timeout
        has been reached.
 
-       Unless <STRONG>noecho</STRONG> has been set, then the character  will  also
-       be echoed into the designated window according to the fol-
-       lowing rules: If the character is the current erase  char-
-       acter,  left  arrow, or backspace, the cursor is moved one
-       space to the left and that screen position is erased as if
-       <STRONG>delch</STRONG> had been called.  If the character value is any oth-
-       er <STRONG>KEY_</STRONG> define, the user is  alerted  with  a  <STRONG>beep</STRONG>  call.
-       Otherwise the character is simply output to the screen.
+       If <STRONG>echo</STRONG> is enabled, and the window is not a pad, then  the
+       character  will  also be echoed into the designated window
+       according to the following rules:
+
+       <STRONG>o</STRONG>   If the character is the current erase character,  left
+           arrow,  or backspace, the cursor is moved one space to
+           the left and that screen  position  is  erased  as  if
+           <STRONG>delch</STRONG> had been called.
+
+       <STRONG>o</STRONG>   If  the  character value is any other <STRONG>KEY_</STRONG> define, the
+           user is alerted with a <STRONG>beep</STRONG> call.
+
+       <STRONG>o</STRONG>   If the character is a carriage-return, and  if  <STRONG>nl</STRONG>  is
+           enabled,  it  is translated to a line-feed after echo-
+           ing.
+
+       <STRONG>o</STRONG>   Otherwise  the  character  is  simply  output  to  the
+           screen.
 
        If the window is not a pad, and it has been moved or modi-
        fied since the last call to  <STRONG>wrefresh</STRONG>,  <STRONG>wrefresh</STRONG>  will  be
        called before another character is read.
 
+
+</PRE>
+<H3><a name="h3-Keypad-mode">Keypad mode</a></H3><PRE>
        If  <STRONG>keypad</STRONG> is <STRONG>TRUE</STRONG>, and a function key is pressed, the to-
        ken for that function key is returned instead of  the  raw
        characters.   Possible function keys are defined in <STRONG>&lt;curs-</STRONG>
        <STRONG>es.h&gt;</STRONG> as macros with values outside  the  range  of  8-bit
-       characters  whose  names begin with <STRONG>KEY_</STRONG>. Thus, a variable
+       characters  whose names begin with <STRONG>KEY_</STRONG>.  Thus, a variable
        intended to hold the return value of a function  key  must
        be of short size or larger.
 
@@ -106,19 +122,23 @@
        experience a delay between the time a user presses the es-
        cape key and the escape is returned to the program.
 
+
+</PRE>
+<H3><a name="h3-Ungetting-characters">Ungetting characters</a></H3><PRE>
        The <STRONG>ungetch</STRONG> routine places <EM>ch</EM> back onto the input queue to
        be returned by the next call to <STRONG>wgetch</STRONG>.  There is just one
        input queue for all windows.
 
 
-   <STRONG>Function</STRONG> <STRONG>Keys</STRONG>
-       The following function keys, defined in <STRONG>&lt;curses.h&gt;</STRONG>,  might
-       be  returned  by  <STRONG>getch</STRONG>  if <STRONG>keypad</STRONG> has been enabled.  Note
-       that not all of these are  necessarily  supported  on  any
-       particular terminal.
-
+</PRE>
+<H3><a name="h3-Predefined-key-codes">Predefined key-codes</a></H3><PRE>
+       The following special keys, defined in <STRONG>&lt;curses.h&gt;</STRONG>, may  be
+       returned  by <STRONG>getch</STRONG> if <STRONG>keypad</STRONG> has been enabled.  Not all of
+       these are necessarily supported on any  particular  termi-
+       nal.
 
             <EM>Name</EM>            <EM>Key</EM> <EM>name</EM>
+            -------------------------------------------------
             KEY_BREAK       Break key
             KEY_DOWN        The four arrow keys ...
             KEY_UP
@@ -166,6 +186,7 @@
             KEY_FIND        Find key
             KEY_HELP        Help key
             KEY_MARK        Mark key
+
             KEY_MESSAGE     Message key
             KEY_MOUSE       Mouse event read
             KEY_MOVE        Move key
@@ -180,7 +201,6 @@
             KEY_RESIZE      Screen resized
             KEY_RESTART     Restart key
             KEY_RESUME      Resume key
-
             KEY_SAVE        Save key
             KEY_SBEG        Shifted beginning key
             KEY_SCANCEL     Shifted cancel key
@@ -216,7 +236,6 @@
 
        Keypad is arranged like this:
 
-
                          +-----+------+-------+
                          | <STRONG>A1</STRONG>  |  <STRONG>up</STRONG>  |  <STRONG>A3</STRONG>   |
                          +-----+------+-------+
@@ -224,103 +243,139 @@
                          +-----+------+-------+
                          | <STRONG>C1</STRONG>  | <STRONG>down</STRONG> |  <STRONG>C3</STRONG>   |
                          +-----+------+-------+
-       The <STRONG>has_key</STRONG> routine takes a key value from the above list,
-       and returns TRUE or FALSE according to whether the current
-       terminal type recognizes a key with that value.  Note that
-       a  few  values  do  not  correspond  to  a real key, e.g.,
-       <STRONG>KEY_RESIZE</STRONG> and <STRONG>KEY_MOUSE</STRONG>.  See <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> for more de-
-       tails  about  <STRONG>KEY_RESIZE</STRONG>, and <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> for a discus-
-       sion of <STRONG>KEY_MOUSE</STRONG>.
+       A few of these predefined values do <EM>not</EM>  correspond  to  a
+       real key:
 
+       <STRONG>o</STRONG>   <STRONG>KEY_RESIZE</STRONG>  is  returned  when the <STRONG>SIGWINCH</STRONG> signal has
+           been detected (see <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> and <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>).
+
+       <STRONG>o</STRONG>   <STRONG>KEY_MOUSE</STRONG>   is   returned   for   mouse-events    (see
+           <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>).
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon  failure  and  an
+<H3><a name="h3-Testing-key-codes">Testing key-codes</a></H3><PRE>
+       The  <STRONG>has_key</STRONG> routine takes a key-code value from the above
+       list, and returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG> according to  whether  the
+       current terminal type recognizes a key with that value.
+
+       The library also supports these extensions:
+
+          <STRONG>define_key</STRONG>
+               defines  a  key-code  for  a given string (see <STRONG>de-</STRONG>
+               <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG>).
+
+          <STRONG>key_defined</STRONG>
+               checks if there is a key-code defined for a  given
+               string (see <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>).
+
+
+</PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All  routines  return  the integer <STRONG>ERR</STRONG> upon failure and an
        integer value other than <STRONG>ERR</STRONG> (<STRONG>OK</STRONG> in the case of ungetch())
        upon successful completion.
 
-              <STRONG>ungetch</STRONG>
-                   returns an error if there is no more  room  in
-                   the FIFO.
+          <STRONG>ungetch</STRONG>
+               returns ERR if there is no more room in the FIFO.
 
-              <STRONG>wgetch</STRONG>
-                   returns  an  error  if  the  window pointer is
-                   null, or if its timeout expires without having
-                   any data.
+          <STRONG>wgetch</STRONG>
+               returns  ERR  if the window pointer is null, or if
+               its timeout expires without having any data.
+
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Use of the escape key by a programmer for a single charac-
-       ter function is discouraged, as it will cause a  delay  of
+       ter  function  is discouraged, as it will cause a delay of
        up to one second while the keypad code looks for a follow-
        ing function-key sequence.
 
-       Note that some keys may be the same as commonly used  con-
-       trol keys, e.g., <STRONG>KEY_ENTER</STRONG> versus control/M, <STRONG>KEY_BACKSPACE</STRONG>
-       versus control/H.  Some curses implementations may  differ
-       according  to  whether  they treat these control keys spe-
-       cially (and ignore the terminfo), or use the terminfo def-
-       initions.   <STRONG>Ncurses</STRONG>  uses  the terminfo definition.  If it
-       says  that  <STRONG>KEY_ENTER</STRONG>  is  control/M,  <STRONG>getch</STRONG>  will  return
-       <STRONG>KEY_ENTER</STRONG> when you press control/M.
+       Some  keys  may be the same as commonly used control keys,
+       e.g., <STRONG>KEY_ENTER</STRONG>  versus  control/M,  <STRONG>KEY_BACKSPACE</STRONG>  versus
+       control/H.  Some curses implementations may differ accord-
+       ing to whether they treat  these  control  keys  specially
+       (and  ignore  the  terminfo),  or use the terminfo defini-
+       tions.  <STRONG>Ncurses</STRONG> uses the terminfo definition.  If it  says
+       that  <STRONG>KEY_ENTER</STRONG>  is control/M, <STRONG>getch</STRONG> will return <STRONG>KEY_ENTER</STRONG>
+       when you press control/M.
 
-       When  using  <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, or <STRONG>mvwgetch</STRONG>, nocbreak
+       Generally, <STRONG>KEY_ENTER</STRONG> denotes the character(s) sent by  the
+       <EM>Enter</EM> key on the numeric keypad:
+
+       <STRONG>o</STRONG>   the terminal description lists the most useful keys,
+
+       <STRONG>o</STRONG>   the  <EM>Enter</EM> key on the regular keyboard is already han-
+           dled by the standard ASCII characters for carriage-re-
+           turn and line-feed,
+
+       <STRONG>o</STRONG>   depending  on  whether <STRONG>nl</STRONG> or <STRONG>nonl</STRONG> was called, pressing
+           "Enter" on the regular keyboard may  return  either  a
+           carriage-return or line-feed, and finally
+
+       <STRONG>o</STRONG>   "Enter  or  send" is the standard description for this
+           key.
+
+       When using <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, or  <STRONG>mvwgetch</STRONG>,  nocbreak
        mode (<STRONG>nocbreak</STRONG>) and echo mode (<STRONG>echo</STRONG>) should not be used at
-       the  same  time.  Depending on the state of the tty driver
-       when each character is typed, the program may produce  un-
+       the same time.  Depending on the state of the  tty  driver
+       when  each character is typed, the program may produce un-
        desirable results.
 
        Note that <STRONG>getch</STRONG>, <STRONG>mvgetch</STRONG>, and <STRONG>mvwgetch</STRONG> may be macros.
 
        Historically, the set of keypad macros was largely defined
-       by the extremely function-key-rich keyboard  of  the  AT&amp;T
-       7300,  aka  3B1,  aka Safari 4.  Modern personal computers
-       usually have only a small subset of these.   IBM  PC-style
-       consoles   typically  support  little  more  than  <STRONG>KEY_UP</STRONG>,
-       <STRONG>KEY_DOWN</STRONG>,   <STRONG>KEY_LEFT</STRONG>,   <STRONG>KEY_RIGHT</STRONG>,   <STRONG>KEY_HOME</STRONG>,    <STRONG>KEY_END</STRONG>,
+       by  the  extremely  function-key-rich keyboard of the AT&amp;T
+       7300, aka 3B1, aka Safari 4.   Modern  personal  computers
+       usually  have  only a small subset of these.  IBM PC-style
+       consoles  typically  support  little  more  than   <STRONG>KEY_UP</STRONG>,
+       <STRONG>KEY_DOWN</STRONG>,    <STRONG>KEY_LEFT</STRONG>,   <STRONG>KEY_RIGHT</STRONG>,   <STRONG>KEY_HOME</STRONG>,   <STRONG>KEY_END</STRONG>,
        <STRONG>KEY_NPAGE</STRONG>, <STRONG>KEY_PPAGE</STRONG>, and function keys 1 through 12.  The
        Ins key is usually mapped to <STRONG>KEY_IC</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       The *get* functions are described in the XSI Curses  stan-
-       dard,  Issue  4.   They  read single-byte characters only.
-       The standard specifies that they return  <STRONG>ERR</STRONG>  on  failure,
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       The  *get* functions are described in the XSI Curses stan-
+       dard, Issue 4.  They  read  single-byte  characters  only.
+       The  standard  specifies  that they return <STRONG>ERR</STRONG> on failure,
        but specifies no error conditions.
 
-       The  echo  behavior of these functions on input of <STRONG>KEY_</STRONG> or
-       backspace characters was not specified in the  SVr4  docu-
+       The echo behavior of these functions on input of  <STRONG>KEY_</STRONG>  or
+       backspace  characters  was not specified in the SVr4 docu-
        mentation.  This description is adopted from the XSI Curs-
        es standard.
 
-       The behavior of <STRONG>getch</STRONG> and friends in the presence of  han-
-       dled  signals  is  unspecified  in the SVr4 and XSI Curses
-       documentation.  Under historical  curses  implementations,
-       it  varied depending on whether the operating system's im-
-       plementation  of  handled  signal  receipt  interrupts   a
-       <STRONG><A HREF="read.2.html">read(2)</A></STRONG>  call in progress or not, and also (in some imple-
-       mentations) depending on whether an input timeout or  non-
+       The  behavior of <STRONG>getch</STRONG> and friends in the presence of han-
+       dled signals is unspecified in the  SVr4  and  XSI  Curses
+       documentation.   Under  historical curses implementations,
+       it varied depending on whether the operating system's  im-
+       plementation   of  handled  signal  receipt  interrupts  a
+       <STRONG>read(2)</STRONG> call in progress or not, and also (in some  imple-
+       mentations)  depending on whether an input timeout or non-
        blocking mode has been set.
 
        Programmers concerned about portability should be prepared
-       for either of two cases: (a) signal receipt does  not  in-
-       terrupt  <STRONG>getch</STRONG>;  (b)  signal  receipt interrupts <STRONG>getch</STRONG> and
-       causes it to return ERR with <STRONG>errno</STRONG> set  to  <STRONG>EINTR</STRONG>.   Under
-       the  <STRONG>ncurses</STRONG>  implementation, handled signals never inter-
+       for  either  of two cases: (a) signal receipt does not in-
+       terrupt <STRONG>getch</STRONG>; (b) signal  receipt  interrupts  <STRONG>getch</STRONG>  and
+       causes  it  to  return ERR with <STRONG>errno</STRONG> set to <STRONG>EINTR</STRONG>.  Under
+       the <STRONG>ncurses</STRONG> implementation, handled signals  never  inter-
        rupt <STRONG>getch</STRONG>.
 
-       The <STRONG>has_key</STRONG> function is unique to <STRONG>ncurses</STRONG>.   We  recommend
-       that  any  code  using it be conditionalized on the <STRONG>NCURS-</STRONG>
+       The  <STRONG>has_key</STRONG>  function is unique to <STRONG>ncurses</STRONG>.  We recommend
+       that any code using it be conditionalized  on  the  <STRONG>NCURS-</STRONG>
        <STRONG>ES_VERSION</STRONG> feature macro.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,        <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,        <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>.
+<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_inopts.3x.html">curs_inopts(3x)</A></STRONG>,       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>,   <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>,   <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,   <STRONG>re-</STRONG>
+       <STRONG><A HREF="resizeterm.3x.html">sizeterm(3x)</A></STRONG>.
 
        Comparable  functions in the wide-character (ncursesw) li-
        brary are described in <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>.
@@ -329,10 +384,24 @@
 
                                                          <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Reading-characters">Reading characters</a></li>
+<li><a href="#h3-Keypad-mode">Keypad mode</a></li>
+<li><a href="#h3-Ungetting-characters">Ungetting characters</a></li>
+<li><a href="#h3-Predefined-key-codes">Predefined key-codes</a></li>
+<li><a href="#h3-Testing-key-codes">Testing key-codes</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_getstr.3x.html b/doc/html/man/curs_getstr.3x.html
index f5f9d07..206b64e 100644
--- a/doc/html/man/curs_getstr.3x.html
+++ b/doc/html/man/curs_getstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2005,2010 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getstr.3x,v 1.15 2006/01/12 00:30:58 tom Exp @
+  * @Id: curs_getstr.3x,v 1.19 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_getstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_getstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_getstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>                                         <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>getstr</STRONG>, <STRONG>getnstr</STRONG>, <STRONG>wgetstr</STRONG>, <STRONG>wgetnstr</STRONG>, <STRONG>mvgetstr</STRONG>, <STRONG>mvgetnstr</STRONG>,
        <STRONG>mvwgetstr</STRONG>, <STRONG>mvwgetnstr</STRONG> - accept character strings from
        <STRONG>curses</STRONG> terminal keyboard
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>getstr(char</STRONG> <STRONG>*str);</STRONG>
@@ -67,7 +67,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function <STRONG>getstr</STRONG> is equivalent to a series of calls to
        <STRONG>getch</STRONG>, until a newline or carriage return is received (the
        terminating  character  is  not  included  in the returned
@@ -92,7 +92,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG>
        (SVr4 specifies only "an integer value  other  than  <STRONG>ERR</STRONG>")
        upon successful completion.
@@ -107,14 +107,18 @@
        SIGWINCH interrupts the function, it will  return  <STRONG>KEY_RE-</STRONG>
        <STRONG>SIZE</STRONG> rather than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>getstr</STRONG>, <STRONG>mvgetstr</STRONG>, and <STRONG>mvwgetstr</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  functions are described in the XSI Curses standard,
        Issue 4.  They  read  single-byte  characters  only.   The
        standard  does  not define any error conditions.  This im-
@@ -135,17 +139,23 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>.
+<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_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
 
 
 
                                                         <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_getyx.3x.html b/doc/html/man/curs_getyx.3x.html
index 22b3aec..03d88a0 100644
--- a/doc/html/man/curs_getyx.3x.html
+++ b/doc/html/man/curs_getyx.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_getyx.3x,v 1.16 2007/05/12 16:34:49 tom Exp @
+  * @Id: curs_getyx.3x,v 1.18 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_getyx 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_getyx 3x</H1>
-<HR>
+<H1 class="no-header">curs_getyx 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>                                           <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>getyx</STRONG>,  <STRONG>getparyx</STRONG>,  <STRONG>getbegyx</STRONG>,  <STRONG>getmaxyx</STRONG> - get <STRONG>curses</STRONG> cursor
        and window coordinates
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>void</STRONG> <STRONG>getyx(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
@@ -62,7 +62,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>getyx</STRONG> macro places the current cursor position of  the
        given window in the two integer variables <EM>y</EM> and <EM>x</EM>.
 
@@ -77,20 +77,20 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The return values of these  macros  are  undefined  (i.e.,
        they  should not be used as the right-hand side of assign-
        ment statements).
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        All of these interfaces are macros.  A "<STRONG>&amp;</STRONG>" is  not  neces-
        sary before the variables <EM>y</EM> and <EM>x</EM>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  <STRONG>getyx</STRONG>,  <STRONG>getparyx</STRONG>,  <STRONG>getbegyx</STRONG>  and  <STRONG>getmaxyx</STRONG> macros are
        described in the XSI Curses standard, Issue 4.
 
@@ -115,17 +115,23 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_legacy.3x.html">curs_legacy(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
 
 
 
                                                          <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_in_wch.3x.html b/doc/html/man/curs_in_wch.3x.html
index ab4083b..9629734 100644
--- a/doc/html/man/curs_in_wch.3x.html
+++ b/doc/html/man/curs_in_wch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 2002-2006,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_in_wch.3x,v 1.2 2006/02/25 21:42:22 tom Exp @
+  * @Id: curs_in_wch.3x,v 1.5 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_in_wch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_in_wch 3x</H1>
-<HR>
+<H1 class="no-header">curs_in_wch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>                                         <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>in_wch</STRONG>,  <STRONG>mvin_wch</STRONG>,  <STRONG>mvwin_wch</STRONG>, <STRONG>win_wch</STRONG> - extract a complex
        character and rendition from a window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>in_wch(cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG>
@@ -62,44 +62,54 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These functions extract the complex character  and  rendi-
        tion  from  the  current position in the named window into
        the <STRONG>cchar_t</STRONG> object referenced by wcval.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        No errors are defined in the XSI  Curses  standard.   This
        implementation  checks  for  null pointers, returns ERR in
        that case.  Also, the <EM>mv</EM> routines check for  error  moving
        the  cursor,  returning  ERR in that case.  Otherwise they
        return OK
 
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all of these routines may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These functions are described in the XSI Curses  standard,
        Issue 4.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_inch.3x.html">curs_inch(3x)</A></STRONG>.
 
 
 
                                                         <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_in_wchstr.3x.html b/doc/html/man/curs_in_wchstr.3x.html
index f576286..cfb7ef6 100644
--- a/doc/html/man/curs_in_wchstr.3x.html
+++ b/doc/html/man/curs_in_wchstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 2002-2010,2012 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            *
@@ -27,26 +26,27 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_in_wchstr.3x,v 1.6 2006/12/02 17:03:07 tom Exp @
+  * @Id: curs_in_wchstr.3x,v 1.9 2012/11/03 23:03:59 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_in_wchstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_in_wchstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_in_wchstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>                                   <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>in_wchstr</STRONG>, <STRONG>in_wchnstr</STRONG>, <STRONG>win_wchstr</STRONG>, <STRONG>win_wchnstr</STRONG>,
        <STRONG>mvin_wchstr</STRONG>, <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG> -
        get an array of complex characters and renditions from a
@@ -54,7 +54,7 @@
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>in_wchstr(cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG>
@@ -68,7 +68,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These functions return an array of complex  characters  in
        <EM>wchstr</EM>,  starting  at  the  current cursor position in the
        named window.  Attributes (rendition) are stored with  the
@@ -79,7 +79,7 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all routines except <STRONG>win_wchnstr</STRONG> may be macros.
 
        Reading a line that overflows the array pointed to by <EM>wch-</EM>
@@ -90,20 +90,24 @@
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Upon successful completion,  these  functions  return  <STRONG>OK</STRONG>.
        Otherwise, they return <STRONG>ERR</STRONG>.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  XSI  Curses defines no error conditions.  This imple-
        mentation checks for null pointers, returning ERR in  that
        case.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        Functions:  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>,  <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>,
        <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
 
@@ -111,10 +115,16 @@
 
                                                      <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_inch.3x.html b/doc/html/man/curs_inch.3x.html
index d601804..ec1e2c7 100644
--- a/doc/html/man/curs_inch.3x.html
+++ b/doc/html/man/curs_inch.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,32 +27,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inch.3x,v 1.13 2006/12/02 16:58:55 tom Exp @
+  * @Id: curs_inch.3x,v 1.17 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_inch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_inch 3x</H1>
-<HR>
+<H1 class="no-header">curs_inch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>                                             <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>inch</STRONG>,  <STRONG>winch</STRONG>,  <STRONG>mvinch</STRONG>,  <STRONG>mvwinch</STRONG>  -  get  a  character  and
        attributes from a <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>chtype</STRONG> <STRONG>inch(void);</STRONG>
@@ -63,7 +63,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines return the character, of  type  <STRONG>chtype</STRONG>,  at
        the   current  position  in  the  named  window.   If  any
        attributes are set for that  position,  their  values  are
@@ -71,7 +71,9 @@
        <STRONG>&lt;curses.h&gt;</STRONG> can be used with the <STRONG>&amp;</STRONG> (logical  AND)  operator
        to extract the character or attributes alone.
 
-   <STRONG>Attributes</STRONG>
+
+</PRE>
+<H3><a name="h3-Attributes">Attributes</a></H3><PRE>
        The  following  bit-masks  may  be  AND-ed with characters
        returned by <STRONG>winch</STRONG>.
 
@@ -81,18 +83,25 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
+
+</PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all of these routines may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These functions are described in the XSI Curses  standard,
        Issue 4.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
 
        Comparable  functions  in  the  wide-character  (ncursesw)
@@ -102,10 +111,20 @@
 
                                                           <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Attributes">Attributes</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_inchstr.3x.html b/doc/html/man/curs_inchstr.3x.html
index 1b73cc3..b231595 100644
--- a/doc/html/man/curs_inchstr.3x.html
+++ b/doc/html/man/curs_inchstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inchstr.3x,v 1.12 2006/12/02 17:00:58 tom Exp @
+  * @Id: curs_inchstr.3x,v 1.15 2010/12/04 18:36:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_inchstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_inchstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_inchstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>                                       <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>inchstr</STRONG>, <STRONG>inchnstr</STRONG>, <STRONG>winchstr</STRONG>, <STRONG>winchnstr</STRONG>, <STRONG>mvinchstr</STRONG>,
        <STRONG>mvinchnstr</STRONG>, <STRONG>mvwinchstr</STRONG>, <STRONG>mvwinchnstr</STRONG> - get a string of
        characters (and attributes) from a <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>inchstr(chtype</STRONG> <STRONG>*chstr);</STRONG>
@@ -68,7 +68,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines return a NULL-terminated  array  of  <STRONG>chtype</STRONG>
        quantities, starting at the current cursor position in the
        named window and ending at the right margin of the window.
@@ -81,7 +81,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All routines return the integer <STRONG>ERR</STRONG> upon  failure  and  an
        integer  value  other  than <STRONG>ERR</STRONG> upon successful completion
        (the number of  characters  retrieved,  exclusive  of  the
@@ -91,18 +91,22 @@
        is null, no data is returned, and the return value is  ze-
        ro.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note  that  all  routines  except <STRONG>winchnstr</STRONG> may be macros.
-       SVr4 does not document whether the result string is 0-ter-
-       minated; it does not document whether a length limit argu-
-       ment includes any trailing 0; and it does not document the
-       meaning of the return value.
+       SVr4 does not document whether the result string is  zero-
+       terminated;  it  does  not document whether a length limit
+       argument includes any trailing 0; and it does not document
+       the meaning of the return value.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  functions are described in the XSI Curses standard,
        Issue 4.  It is no more specific than the SVr4  documenta-
        tion on the trailing 0.  It does specify that the success-
@@ -110,7 +114,7 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_inch.3x.html">curs_inch(3x)</A></STRONG>.
 
        Comparable functions in the wide-character (ncursesw)  li-
@@ -120,10 +124,16 @@
 
                                                        <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_initscr.3x.html b/doc/html/man/curs_initscr.3x.html
index f5fd544..3c47ac6 100644
--- a/doc/html/man/curs_initscr.3x.html
+++ b/doc/html/man/curs_initscr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2014,2015 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            *
@@ -27,44 +26,48 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_initscr.3x,v 1.14 2005/05/15 16:18:01 tom Exp @
+  * @Id: curs_initscr.3x,v 1.24 2015/07/21 23:01:38 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_initscr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_initscr 3x</H1>
-<HR>
+<H1 class="no-header">curs_initscr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>                                       <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>initscr</STRONG>, <STRONG>newterm</STRONG>, <STRONG>endwin</STRONG>, <STRONG>isendwin</STRONG>, <STRONG>set_term</STRONG>, <STRONG>delscreen</STRONG> -
        <STRONG>curses</STRONG> screen initialization and manipulation routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>WINDOW</STRONG> <STRONG>*initscr(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>endwin(void);</STRONG>
        <STRONG>bool</STRONG> <STRONG>isendwin(void);</STRONG>
-       <STRONG>SCREEN</STRONG> <STRONG>*newterm(char</STRONG> <STRONG>*type,</STRONG> <STRONG>FILE</STRONG> <STRONG>*outfd,</STRONG> <STRONG>FILE</STRONG> <STRONG>*infd);</STRONG>
-       <STRONG>SCREEN</STRONG> <STRONG>*set_term(SCREEN</STRONG> <STRONG>*new);</STRONG>
-       <STRONG>void</STRONG> <STRONG>delscreen(SCREEN*</STRONG> <STRONG>sp);</STRONG>
+       <STRONG>SCREEN</STRONG> <STRONG>*newterm(char</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>outfd</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>infd</EM><STRONG>);</STRONG>
+       <STRONG>SCREEN</STRONG> <STRONG>*set_term(SCREEN</STRONG> <STRONG>*</STRONG><EM>new</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>delscreen(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-initscr">initscr</a></H3><PRE>
        <STRONG>initscr</STRONG> is normally the first <STRONG>curses</STRONG> routine to call  when
        initializing  a program.  A few special routines sometimes
        need to be called before it; these are  <STRONG>slk_init</STRONG>,  <STRONG>filter</STRONG>,
@@ -78,6 +81,9 @@
        dard error and exits; otherwise, a pointer is returned  to
        <STRONG>stdscr</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-newterm">newterm</a></H3><PRE>
        A  program  that  outputs to more than one terminal should
        use the <STRONG>newterm</STRONG>  routine  for  each  terminal  instead  of
        <STRONG>initscr</STRONG>.  A program that needs to inspect capabilities, so
@@ -86,27 +92,48 @@
        use <STRONG>newterm</STRONG>.  The routine <STRONG>newterm</STRONG> should  be  called  once
        for each terminal.  It returns a variable of type <STRONG>SCREEN</STRONG> <STRONG>*</STRONG>
        which should be saved as a  reference  to  that  terminal.
-       The  arguments  are the <EM>type</EM> of the terminal to be used in
-       place of <STRONG>$TERM</STRONG>, a file pointer for output to the terminal,
-       and  another  file pointer for input from the terminal (if
-       <EM>type</EM> is <STRONG>NULL</STRONG>, <STRONG>$TERM</STRONG> will be used).  The program must  also
-       call  <STRONG>endwin</STRONG>  for  each terminal being used before exiting
-       from <STRONG>curses</STRONG>.  If <STRONG>newterm</STRONG> is called more than once for  the
-       same  terminal, the first terminal referred to must be the
-       last one for which <STRONG>endwin</STRONG> is called.
+       <STRONG>newterm</STRONG>'s arguments are
 
-       A program should always call <STRONG>endwin</STRONG> before exiting or  es-
-       caping  from  <STRONG>curses</STRONG>  mode  temporarily.  This routine re-
-       stores tty modes, moves the cursor to the lower  left-hand
-       corner  of  the  screen  and  resets the terminal into the
-       proper non-visual mode.  Calling <STRONG>refresh</STRONG> or <STRONG>doupdate</STRONG> after
-       a  temporary  escape  causes  the program to resume visual
-       mode.
+       <STRONG>o</STRONG>   the <EM>type</EM> of the terminal to be used in place of <STRONG>$TERM</STRONG>,
 
+       <STRONG>o</STRONG>   a file pointer for output to the terminal, and
+
+       <STRONG>o</STRONG>   another file pointer for input from the terminal
+
+       If the <EM>type</EM> parameter is <STRONG>NULL</STRONG>, <STRONG>$TERM</STRONG> will be used.
+
+
+</PRE>
+<H3><a name="h3-endwin">endwin</a></H3><PRE>
+       The  program must also call <STRONG>endwin</STRONG> for each terminal being
+       used before exiting from <STRONG>curses</STRONG>.   If  <STRONG>newterm</STRONG>  is  called
+       more  than  once for the same terminal, the first terminal
+       referred to must be the  last  one  for  which  <STRONG>endwin</STRONG>  is
+       called.
+
+       A  program should always call <STRONG>endwin</STRONG> before exiting or es-
+       caping from <STRONG>curses</STRONG> mode temporarily.  This routine
+
+       <STRONG>o</STRONG>   restores tty modes,
+
+       <STRONG>o</STRONG>   moves the cursor to the lower left-hand corner of  the
+           screen and
+
+       <STRONG>o</STRONG>   resets the terminal into the proper non-visual mode.
+
+       Calling <STRONG>refresh</STRONG> or <STRONG>doupdate</STRONG> after a temporary escape caus-
+       es the program to resume visual mode.
+
+
+</PRE>
+<H3><a name="h3-isendwin">isendwin</a></H3><PRE>
        The <STRONG>isendwin</STRONG> routine  returns  <STRONG>TRUE</STRONG>  if  <STRONG>endwin</STRONG>  has  been
        called without any subsequent calls to <STRONG>wrefresh</STRONG>, and <STRONG>FALSE</STRONG>
        otherwise.
 
+
+</PRE>
+<H3><a name="h3-set_term">set_term</a></H3><PRE>
        The <STRONG>set_term</STRONG> routine is used to switch  between  different
        terminals.   The screen reference <STRONG>new</STRONG> becomes the new cur-
        rent terminal.  The previous terminal is returned  by  the
@@ -114,6 +141,9 @@
        <STRONG>SCREEN</STRONG> pointers; all other routines affect only  the  cur-
        rent terminal.
 
+
+</PRE>
+<H3><a name="h3-delscreen">delscreen</a></H3><PRE>
        The  <STRONG>delscreen</STRONG>  routine  frees storage associated with the
        <STRONG>SCREEN</STRONG> data structure.  The <STRONG>endwin</STRONG>  routine  does  not  do
        this, so <STRONG>delscreen</STRONG> should be called after <STRONG>endwin</STRONG> if a par-
@@ -121,47 +151,164 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        <STRONG>endwin</STRONG> returns the integer <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>  upon
        successful completion.
 
        Routines that return pointers always return <STRONG>NULL</STRONG> on error.
 
-       X/Open defines no error conditions.  In  this  implementa-
-       tion  <STRONG>endwin</STRONG> returns an error if the terminal was not ini-
-       tialized.
+       X/Open  defines  no error conditions.  In this implementa-
+       tion
+
+       <STRONG>o</STRONG>   <STRONG>endwin</STRONG> returns an error if the terminal was  not  ini-
+           tialized.
+
+       <STRONG>o</STRONG>   <STRONG>newterm</STRONG> returns an error if it cannot allocate the da-
+           ta structures for the screen,  or  for  the  top-level
+           windows  within  the  screen, i.e., <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>, or
+           <STRONG>stdscr</STRONG>.
+
+       <STRONG>o</STRONG>   <STRONG>set_term</STRONG> returns no error.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are described in the XSI Curses  standard,
-       Issue 4.  It specifies that portable applications must not
-       call <STRONG>initscr</STRONG> more than once.
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These functions were described in the XSI Curses standard,
+       Issue 4.  As of 2015, the current document is X/Open Curs-
+       es, Issue 7.
+
+
+</PRE>
+<H3><a name="h3-Differences">Differences</a></H3><PRE>
+       X/Open specifies that portable applications must not  call
+       <STRONG>initscr</STRONG> more than once:
+
+       <STRONG>o</STRONG>   The  portable  way  to use <STRONG>initscr</STRONG> is once only, using
+           <STRONG>refresh</STRONG> (see <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>) to restore  the  screen
+           after <STRONG>endwin</STRONG>.
+
+       <STRONG>o</STRONG>   This implementation allows using <STRONG>initscr</STRONG> after <STRONG>endwin</STRONG>.
 
        Old versions of curses, e.g., BSD 4.4, may have returned a
-       null  pointer  from  <STRONG>initscr</STRONG>  when  an  error is detected,
-       rather than exiting.  It is safe but  redundant  to  check
+       null pointer from  <STRONG>initscr</STRONG>  when  an  error  is  detected,
+       rather  than  exiting.   It is safe but redundant to check
        the return value of <STRONG>initscr</STRONG> in XSI Curses.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H3><a name="h3-Unset-TERM-Variable">Unset TERM Variable</a></H3><PRE>
+       If the TERM variable is missing or empty, <STRONG>initscr</STRONG> uses the
+       value  "unknown", which normally corresponds to a terminal
+       entry with the <EM>generic</EM> (<EM>gn</EM>) capability.   Generic  entries
+       are detected by <STRONG>setupterm</STRONG> (see <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>) and can-
+       not be used for full-screen operation.  Other  implementa-
+       tions  may handle a missing/empty TERM variable different-
+       ly.
+
+
+</PRE>
+<H3><a name="h3-Signal-Handlers">Signal Handlers</a></H3><PRE>
+       Quoting from X/Open Curses, section 3.1.1:
+
+            <EM>Curses</EM> <EM>implementations</EM> <EM>may</EM> <EM>provide</EM> <EM>for</EM>  <EM>special</EM>  <EM>han-</EM>
+            <EM>dling</EM>  <EM>of</EM>  <EM>the</EM> <EM>SIGINT,</EM> <EM>SIGQUIT</EM> <EM>and</EM> <EM>SIGTSTP</EM> <EM>signals</EM> <EM>if</EM>
+            <EM>their</EM> <EM>disposition</EM> <EM>is</EM> <EM>SIG</EM><STRONG>_</STRONG><EM>DFL</EM> <EM>at</EM> <EM>the</EM> <EM>time</EM> <STRONG>initscr()</STRONG> <EM>is</EM>
+            <EM>called</EM> <STRONG>...</STRONG>
+
+            <EM>Any</EM>  <EM>special</EM> <EM>handling</EM> <EM>for</EM> <EM>these</EM> <EM>signals</EM> <EM>may</EM> <EM>remain</EM> <EM>in</EM>
+            <EM>effect</EM> <EM>for</EM> <EM>the</EM> <EM>life</EM>  <EM>of</EM>  <EM>the</EM>  <EM>process</EM>  <EM>or</EM>  <EM>until</EM>  <EM>the</EM>
+            <EM>process</EM> <EM>changes</EM> <EM>the</EM> <EM>disposition</EM> <EM>of</EM> <EM>the</EM> <EM>signal.</EM>
+
+            <EM>None</EM>  <EM>of</EM> <EM>the</EM> <EM>Curses</EM> <EM>functions</EM> <EM>are</EM> <EM>required</EM> <EM>to</EM> <EM>be</EM> <EM>safe</EM>
+            <EM>with</EM> <EM>respect</EM> <EM>to</EM> <EM>signals</EM> ...
+
+       This implementation  establishes  signal  handlers  during
+       initialization,  e.g.,  <STRONG>initscr</STRONG>  or <STRONG>newterm</STRONG>.  Applications
+       which must handle these signals should set up  the  corre-
+       sponding handlers <EM>after</EM> initializing the library:
+
+       <STRONG>SIGINT</STRONG>
+            The  handler  <EM>attempts</EM> to cleanup the screen on exit.
+            Although it <EM>usually</EM> works as expected, there are lim-
+            itations:
+
+            <STRONG>o</STRONG>   Walking the <STRONG>SCREEN</STRONG> list is unsafe, since all list
+                management is done without any signal blocking.
+
+            <STRONG>o</STRONG>   On  systems  which  have  <STRONG>REENTRANT</STRONG>  turned   on,
+                <STRONG>set_term</STRONG>  uses  functions which could deadlock or
+                misbehave in other ways.
+
+            <STRONG>o</STRONG>   <STRONG>endwin</STRONG> calls other functions, many of  which  use
+                stdio or other library functions which are clear-
+                ly unsafe.
+
+       <STRONG>SIGTERM</STRONG>
+            This uses the same handler as <STRONG>SIGINT</STRONG>, with  the  same
+            limitations.   It  is not mentioned in X/Open Curses,
+            but is more suitable for this  purpose  than  <STRONG>SIGQUIT</STRONG>
+            (which is used in debugging).
+
+       <STRONG>SIGTSTP</STRONG>
+            This  handles  the  <EM>stop</EM> signal, used in job control.
+            When resuming the process, this  implementation  dis-
+            cards    pending    input    with   <STRONG>flushinput</STRONG>   (see
+            <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>), and repaints the screen assuming that
+            it  has been completely altered.  It also updates the
+            saved  terminal  modes   with   <STRONG>def_shell_mode</STRONG>   (see
+            <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>).
+
+       <STRONG>SIGWINCH</STRONG>
+            This  handles the window-size changes which were ini-
+            tially ignored in the standardization  efforts.   The
+            handler  sets a (signal-safe) variable which is later
+            tested in <STRONG>wgetch</STRONG> (see <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>).  If <STRONG>keypad</STRONG> has
+            been enabled for the corresponding window, <STRONG>wgetch</STRONG> re-
+            turns the key symbol <STRONG>KEY_RESIZE</STRONG>.  At the  same  time,
+            <STRONG>wgetch</STRONG> calls <STRONG>resizeterm</STRONG> to adjust the standard screen
+            <STRONG>stdscr</STRONG>, and update other data such as <STRONG>LINES</STRONG> and <STRONG>COLS</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_kernel.3x.html">curs_kernel(3x)</A></STRONG>,       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
+       <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG>curs_vari-</STRONG>
+       <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>.
 
 
 
                                                        <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-initscr">initscr</a></li>
+<li><a href="#h3-newterm">newterm</a></li>
+<li><a href="#h3-endwin">endwin</a></li>
+<li><a href="#h3-isendwin">isendwin</a></li>
+<li><a href="#h3-set_term">set_term</a></li>
+<li><a href="#h3-delscreen">delscreen</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-Differences">Differences</a></li>
+<li><a href="#h3-Unset-TERM-Variable">Unset TERM Variable</a></li>
+<li><a href="#h3-Signal-Handlers">Signal Handlers</a></li>
+</ul>
+</li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_inopts.3x.html b/doc/html/man/curs_inopts.3x.html
index 7eec3ed..b8d94dd 100644
--- a/doc/html/man/curs_inopts.3x.html
+++ b/doc/html/man/curs_inopts.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2013,2015 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            *
@@ -27,26 +26,27 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inopts.3x,v 1.13 2005/05/15 16:18:07 tom Exp @
+  * @Id: curs_inopts.3x,v 1.19 2015/04/11 10:21:38 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_inopts 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_inopts 3x</H1>
-<HR>
+<H1 class="no-header">curs_inopts 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>                                         <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>,
        <STRONG>keypad</STRONG>, <STRONG>meta</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>notimeout</STRONG>, <STRONG>raw</STRONG>, <STRONG>noraw</STRONG>, <STRONG>noqiflush</STRONG>,
        <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, <STRONG>wtimeout</STRONG>, <STRONG>typeahead</STRONG> - <STRONG>curses</STRONG> input
@@ -54,7 +54,7 @@
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>cbreak(void);</STRONG>
@@ -77,7 +77,18 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       The <STRONG>ncurses</STRONG> library provides several functions  which  let
+       an  application change way input from the terminal is han-
+       dled.  Some are global, applying to all  windows.   Others
+       apply only to a specific window.  Window-specific settings
+       are not automatically applied to new or  derived  windows.
+       An  application  must  apply  these to each window, if the
+       same behavior is needed.
+
+
+</PRE>
+<H3><a name="h3-cbreak">cbreak</a></H3><PRE>
        Normally, the tty driver buffers typed characters until  a
        newline  or  carriage return is typed.  The <STRONG>cbreak</STRONG> routine
        disables line buffering and erase/kill  character-process-
@@ -93,6 +104,9 @@
        rides <STRONG>raw</STRONG>.  [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a  discussion  of  how
        these routines interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.]
 
+
+</PRE>
+<H3><a name="h3-echo_noecho">echo/noecho</a></H3><PRE>
        The  <STRONG>echo</STRONG>  and  <STRONG>noecho</STRONG> routines control whether characters
        typed by the user are echoed by <STRONG>getch</STRONG> as they  are  typed.
        Echoing by the tty driver is always disabled, but initial-
@@ -103,6 +117,9 @@
        [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion of how these routines
        interact with <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.]
 
+
+</PRE>
+<H3><a name="h3-halfdelay">halfdelay</a></H3><PRE>
        The  <STRONG>halfdelay</STRONG>  routine is used for half-delay mode, which
        is similar to <STRONG>cbreak</STRONG> mode in that characters typed by  the
        user  are  immediately available to the program.  However,
@@ -111,6 +128,9 @@
        must be a number between 1 and 255.  Use <STRONG>nocbreak</STRONG> to leave
        half-delay mode.
 
+
+</PRE>
+<H3><a name="h3-intrflush">intrflush</a></H3><PRE>
        If  the <STRONG>intrflush</STRONG> option is enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), when an
        interrupt key  is  pressed  on  the  keyboard  (interrupt,
        break,  quit)  all  output in the tty driver queue will be
@@ -121,6 +141,9 @@
        ited from the tty driver settings.  The window argument is
        ignored.
 
+
+</PRE>
+<H3><a name="h3-keypad">keypad</a></H3><PRE>
        The  <STRONG>keypad</STRONG> option enables the keypad of the user's termi-
        nal.  If enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a  func-
        tion  key (such as an arrow key) and <STRONG>wgetch</STRONG> returns a sin-
@@ -131,11 +154,14 @@
        turned on (made to transmit) and off (made to work  local-
        ly),  turning on this option causes the terminal keypad to
        be turned on when <STRONG>wgetch</STRONG> is called.  The default value for
-       keypad is false.
+       keypad is <STRONG>FALSE</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-meta">meta</a></H3><PRE>
        Initially, whether the terminal returns 7 or 8 significant
        bits on input depends on the control mode of the tty driv-
-       er  [see  <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>].  To force 8 bits to be returned, in-
+       er  [see  <STRONG>termio(7)</STRONG>].  To force 8 bits to be returned, in-
        voke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>); this is equivalent, under POSIX,  to
        setting  the CS8 flag on the terminal.  To force 7 bits to
        be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>); this is  equivalent,
@@ -146,6 +172,9 @@
        <STRONG>meta</STRONG>(<EM>win</EM>,  <STRONG>TRUE</STRONG>)  is called and <STRONG>rmm</STRONG> is sent when <STRONG>meta</STRONG>(<EM>win</EM>,
        <STRONG>FALSE</STRONG>) is called.
 
+
+</PRE>
+<H3><a name="h3-nodelay">nodelay</a></H3><PRE>
        The <STRONG>nodelay</STRONG> option causes <STRONG>getch</STRONG> to be a non-blocking call.
        If  no input is ready, <STRONG>getch</STRONG> returns <STRONG>ERR</STRONG>.  If disabled (<EM>bf</EM>
        is <STRONG>FALSE</STRONG>), <STRONG>getch</STRONG> waits until a key is pressed.
@@ -157,6 +186,9 @@
        tween sequences received from a  function  key  and  those
        typed by a user.
 
+
+</PRE>
+<H3><a name="h3-raw_noraw">raw/noraw</a></H3><PRE>
        The  <STRONG>raw</STRONG> and <STRONG>noraw</STRONG> routines place the terminal into or out
        of raw mode.  Raw mode is similar to <STRONG>cbreak</STRONG> mode, in  that
        characters typed are immediately passed through to the us-
@@ -166,14 +198,20 @@
        signal.   The  behavior  of the BREAK key depends on other
        bits in the tty driver that are not set by <STRONG>curses</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-noqiflush">noqiflush</a></H3><PRE>
        When the <STRONG>noqiflush</STRONG> routine is used, normal flush of  input
        and  output queues associated with the <STRONG>INTR</STRONG>, <STRONG>QUIT</STRONG> and <STRONG>SUSP</STRONG>
-       characters will not be done [see <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>].  When <STRONG>qiflush</STRONG>
+       characters will not be done [see <STRONG>termio(7)</STRONG>].  When <STRONG>qiflush</STRONG>
        is  called,  the queues will be flushed when these control
        characters are read.  You may want to call <STRONG>noqiflush()</STRONG>  in
        a  signal handler if you want output to continue as though
        the interrupt had not occurred, after the handler exits.
 
+
+</PRE>
+<H3><a name="h3-timeout_wtimeout">timeout/wtimeout</a></H3><PRE>
        The <STRONG>timeout</STRONG> and <STRONG>wtimeout</STRONG> routines  set  blocking  or  non-
        blocking  read  for a given window.  If <EM>delay</EM> is negative,
        blocking read is used (i.e., waits  indefinitely  for  in-
@@ -185,7 +223,10 @@
        additional capability of being able to block for only  <EM>de-</EM>
        <EM>lay</EM> milliseconds (where <EM>delay</EM> is positive).
 
-       The  <STRONG>curses</STRONG> library does ``line-breakout optimization'' by
+
+</PRE>
+<H3><a name="h3-typeahead">typeahead</a></H3><PRE>
+       The  <STRONG>curses</STRONG>  library  does "line-breakout optimization" by
        looking for  typeahead  periodically  while  updating  the
        screen.   If  input is found, and it is coming from a tty,
        the current update is postponed until <STRONG>refresh</STRONG> or  <STRONG>doupdate</STRONG>
@@ -199,7 +240,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All  routines that return an integer return <STRONG>ERR</STRONG> upon fail-
        ure and OK (SVr4 specifies only "an  integer  value  other
        than  <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise
@@ -216,7 +257,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These functions are described in the XSI Curses  standard,
        Issue 4.
 
@@ -229,33 +270,87 @@
        ty,  set  echo or noecho explicitly just after initializa-
        tion, even if your program remains in cooked mode.
 
+       When <STRONG>keypad</STRONG> is first enabled, ncurses loads the  key-defi-
+       nitions for the current terminal description.  If the ter-
+       minal description includes extended  string  capabilities,
+       e.g.,  from  using the <STRONG>-x</STRONG> option of tic, then ncurses also
+       defines keys for the capabilities whose names  begin  with
+       "k".   The  corresponding  keycodes are generated and (de-
+       pending on previous loads of  terminal  descriptions)  may
+       differ  from  one execution of a program to the next.  The
+       generated keycodes are recognized by the <STRONG>keyname</STRONG>  function
+       (which will then return a name beginning with "k" denoting
+       the terminfo capability name rather  than  "K",  used  for
+       curses  key-names).  On the other hand, an application can
+       use <STRONG>define_key</STRONG> to establish a specific keycode for a given
+       string.   This  makes  it  possible  for an application to
+       check for an extended capability's presence with <EM>tigetstr</EM>,
+       and reassign the keycode to match its own needs.
+
+       Low-level applications can use <STRONG>tigetstr</STRONG> to obtain the def-
+       inition of any particular string capability.  Higher-level
+       applications which use the curses <STRONG>wgetch</STRONG> and similar func-
+       tions to return keycodes rely upon the order in which  the
+       strings  are  loaded.  If more than one key definition has
+       the same string value, then <STRONG>wgetch</STRONG>  can  return  only  one
+       keycode.   Most curses implementations (including ncurses)
+       load key definitions in the order defined by the array  of
+       string capability names.  The last key to be loaded deter-
+       mines the keycode which will be returned.  In ncurses, you
+       may  also  have  extended  capabilities interpreted as key
+       definitions.  These are loaded after the predefined  keys,
+       and  if  a capability's value is the same as a previously-
+       loaded key definition, the later  definition  is  the  one
+       used.
+
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       Note that <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>,  <STRONG>node-</STRONG>
-       <STRONG>lay</STRONG>,  <STRONG>notimeout</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and <STRONG>wtimeout</STRONG>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       Note  that <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>, <STRONG>node-</STRONG>
+       <STRONG>lay</STRONG>, <STRONG>notimeout</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and  <STRONG>wtimeout</STRONG>
        may be macros.
 
        The <STRONG>noraw</STRONG> and <STRONG>nocbreak</STRONG> calls follow historical practice in
-       that  they  attempt  to  restore to normal (`cooked') mode
-       from raw and cbreak modes respectively.  Mixing  raw/noraw
-       and  cbreak/nocbreak  calls  leads  to  tty driver control
-       states that are hard to predict or understand; it  is  not
+       that they attempt to restore  to  normal  (`cooked')  mode
+       from  raw and cbreak modes respectively.  Mixing raw/noraw
+       and cbreak/nocbreak calls  leads  to  tty  driver  control
+       states  that  are hard to predict or understand; it is not
        recommended.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="termio.7.html">termio(7)</A></STRONG>
+<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_getch.3x.html">curs_getch(3x)</A></STRONG>,        <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG>termio(7)</STRONG>
 
 
 
                                                         <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-cbreak">cbreak</a></li>
+<li><a href="#h3-echo_noecho">echo/noecho</a></li>
+<li><a href="#h3-halfdelay">halfdelay</a></li>
+<li><a href="#h3-intrflush">intrflush</a></li>
+<li><a href="#h3-keypad">keypad</a></li>
+<li><a href="#h3-meta">meta</a></li>
+<li><a href="#h3-nodelay">nodelay</a></li>
+<li><a href="#h3-raw_noraw">raw/noraw</a></li>
+<li><a href="#h3-noqiflush">noqiflush</a></li>
+<li><a href="#h3-timeout_wtimeout">timeout/wtimeout</a></li>
+<li><a href="#h3-typeahead">typeahead</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_ins_wch.3x.html b/doc/html/man/curs_ins_wch.3x.html
index 6e69d8f..27f87ca 100644
--- a/doc/html/man/curs_ins_wch.3x.html
+++ b/doc/html/man/curs_ins_wch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 2002-2006,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_ins_wch.3x,v 1.3 2006/02/25 21:42:22 tom Exp @
+  * @Id: curs_ins_wch.3x,v 1.5 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_ins_wch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_ins_wch 3x</H1>
-<HR>
+<H1 class="no-header">curs_ins_wch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>                                       <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>ins_wch</STRONG>,  <STRONG>mvins_wch</STRONG>,  <STRONG>mvwins_wch</STRONG>, <STRONG>wins_wch</STRONG> - insert a com-
        plex character and rendition into a window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        #include &lt;curses.h&gt;
 
        <STRONG>int</STRONG> <STRONG>ins_wch(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
@@ -63,7 +63,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines, insert the complex character <EM>wch</EM> with ren-
        dition before the character under the cursor.  All charac-
        ters to the right of the cursor are moved one space to the
@@ -73,28 +73,37 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        If successful, these functions return OK.   If  not,  they
        return ERR.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>ERRORS</H2><PRE>
+<H2><a name="h2-ERRORS">ERRORS</a></H2><PRE>
        No errors are defined.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_insch.3x.html">curs_insch(3x)</A></STRONG>.
 
 
 
                                                        <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-ERRORS">ERRORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_ins_wstr.3x.html b/doc/html/man/curs_ins_wstr.3x.html
index 3d81870..289df51 100644
--- a/doc/html/man/curs_ins_wstr.3x.html
+++ b/doc/html/man/curs_ins_wstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002,2005 Free Software Foundation, Inc.                   *
+  * Copyright (c) 2002-2010,2012 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_ins_wstr.3x,v 1.4 2005/05/15 17:02:54 tom Exp @
+  * @Id: curs_ins_wstr.3x,v 1.7 2012/11/03 23:03:59 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_ins_wstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_ins_wstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_ins_wstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>                                     <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>ins_wstr</STRONG>, <STRONG>ins_nwstr</STRONG>, <STRONG>wins_wstr</STRONG>, <STRONG>wins_nwstr</STRONG>, <STRONG>mvins_wstr</STRONG>,
        <STRONG>mvins_nwstr</STRONG>, <STRONG>mvwins_wstr</STRONG>, <STRONG>mvwins_nwstr</STRONG> - insert a wide-
        character string into a curses window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>ins_wstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr);</EM>
@@ -67,7 +67,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These  routines insert a <STRONG>wchar_t</STRONG> character string (as many
        characters as will fit on the line) before  the  character
        under the cursor.  All characters to the right of the cur-
@@ -92,7 +92,7 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all but wins_nwstr may be macros.
 
        If the first character in the string is a nonspacing char-
@@ -102,13 +102,17 @@
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Upon successful completion,  these  functions  return  OK.
        Otherwise, they return ERR.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>SEE ALSO</H2><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_insstr.3x.html">curs_insstr(3x)</A></STRONG>,       <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>,
        <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>.
 
@@ -116,10 +120,15 @@
 
                                                       <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_insch.3x.html b/doc/html/man/curs_insch.3x.html
index 1ffe0ac..e337392 100644
--- a/doc/html/man/curs_insch.3x.html
+++ b/doc/html/man/curs_insch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_insch.3x,v 1.10 2006/12/02 17:01:50 tom Exp @
+  * @Id: curs_insch.3x,v 1.13 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_insch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_insch 3x</H1>
-<HR>
+<H1 class="no-header">curs_insch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>                                           <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>insch</STRONG>,  <STRONG>winsch</STRONG>,  <STRONG>mvinsch</STRONG>,  <STRONG>mvwinsch</STRONG>  -  insert a character
        before cursor in a <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>insch(chtype</STRONG> <STRONG>ch);</STRONG>
@@ -62,7 +62,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines insert the character <EM>ch</EM> before the  charac-
        ter  under the cursor.  All characters to the right of the
        cursor are moved one space to the right, with  the  possi-
@@ -72,15 +72,19 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All  routines that return an integer return <STRONG>ERR</STRONG> upon fail-
        ure and OK (SVr4 specifies only "an  integer  value  other
        than  <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise
        noted in the preceding routine descriptions.
 
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        These routines do not necessarily imply use of a  hardware
        insert character feature.
 
@@ -88,13 +92,13 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  functions are described in the XSI Curses standard,
        Issue 4.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
 
        Comparable  functions  in  the  wide-character  (ncursesw)
@@ -104,10 +108,16 @@
 
                                                          <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_insstr.3x.html b/doc/html/man/curs_insstr.3x.html
index 4a43951..fc2428f 100644
--- a/doc/html/man/curs_insstr.3x.html
+++ b/doc/html/man/curs_insstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_insstr.3x,v 1.18 2006/12/24 14:59:30 tom Exp @
+  * @Id: curs_insstr.3x,v 1.21 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_insstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_insstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_insstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>                                         <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>insstr</STRONG>,  <STRONG>insnstr</STRONG>,  <STRONG>winsstr</STRONG>, <STRONG>winsnstr</STRONG>, <STRONG>mvinsstr</STRONG>, <STRONG>mvinsnstr</STRONG>,
        <STRONG>mvwinsstr</STRONG>, <STRONG>mvwinsnstr</STRONG> - insert string before cursor  in  a
        <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
        <STRONG>int</STRONG> <STRONG>insstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str);</STRONG>
        <STRONG>int</STRONG> <STRONG>insnstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*str,</STRONG> <STRONG>int</STRONG> <STRONG>n);</STRONG>
@@ -67,61 +67,71 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These  routines insert a character string (as many charac-
-       ters as will fit on the line) before the  character  under
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       These routines insert a character string (as many  charac-
+       ters  as  will fit on the line) before the character under
        the cursor.  All characters to the right of the cursor are
-       shifted right with the possibility of the rightmost  char-
-       acters  on  the line being lost.  The cursor position does
-       not change (after moving to  <EM>y</EM>,  <EM>x</EM>,  if  specified).   The
-       functions  with  <EM>n</EM>  as  the last argument insert a leading
-       substring of at most <EM>n</EM>  characters.   If  <EM>n</EM>&lt;=0,  then  the
+       shifted  right with the possibility of the rightmost char-
+       acters on the line being lost.  The cursor  position  does
+       not  change  (after  moving  to  <EM>y</EM>, <EM>x</EM>, if specified).  The
+       functions with <EM>n</EM> as the last  argument  insert  a  leading
+       substring  of  at  most  <EM>n</EM>  characters.  If <EM>n</EM>&lt;=0, then the
        entire string is inserted.
 
        Special characters are handled as in <STRONG>addch</STRONG>.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All  routines that return an integer return <STRONG>ERR</STRONG> upon fail-
-       ure and OK (SVr4 specifies only "an  integer  value  other
-       than  <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All routines that return an integer return <STRONG>ERR</STRONG> upon  fail-
+       ure  and  OK  (SVr4 specifies only "an integer value other
+       than <STRONG>ERR</STRONG>") upon successful  completion,  unless  otherwise
        noted in the preceding routine descriptions.
 
-       X/Open defines no error conditions.  In  this  implementa-
+       X/Open  defines  no error conditions.  In this implementa-
        tion, if the window parameter is null or the str parameter
        is null, an error is returned.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all but <STRONG>winsnstr</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are described in the XSI Curses  standard,
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  functions are described in the XSI Curses standard,
        Issue 4, which adds const qualifiers to the arguments.
 
-       The  Single  Unix  Specification,  Version  2  states that
-       <STRONG>insnstr</STRONG> and <STRONG>winsnstr</STRONG> perform wrapping.  This  is  probably
+       The Single  Unix  Specification,  Version  2  states  that
+       <STRONG>insnstr</STRONG>  and  <STRONG>winsnstr</STRONG> perform wrapping.  This is probably
        an error, since it makes this group of functions inconsis-
-       tent.  Also, no implementation of  curses  documents  this
+       tent.   Also,  no  implementation of curses documents this
        inconsistency.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>.
+<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_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>.
 
 
 
                                                         <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_instr.3x.html b/doc/html/man/curs_instr.3x.html
index 98ae39e..16c40de 100644
--- a/doc/html/man/curs_instr.3x.html
+++ b/doc/html/man/curs_instr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_instr.3x,v 1.13 2006/02/25 21:49:19 tom Exp @
+  * @Id: curs_instr.3x,v 1.16 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_instr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_instr 3x</H1>
-<HR>
+<H1 class="no-header">curs_instr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>                                           <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>instr</STRONG>,  <STRONG>innstr</STRONG>, <STRONG>winstr</STRONG>, <STRONG>winnstr</STRONG>, <STRONG>mvinstr</STRONG>, <STRONG>mvinnstr</STRONG>, <STRONG>mvwin-</STRONG>
        <STRONG>str</STRONG>, <STRONG>mvwinnstr</STRONG> - get a string of characters from a  <STRONG>curses</STRONG>
        window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>instr(char</STRONG> <STRONG>*str);</STRONG>
@@ -68,7 +68,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines return  a  string  of  characters  in  <EM>str</EM>,
        extracted  starting  at the current cursor position in the
        named window.  Attributes are stripped  from  the  charac-
@@ -78,7 +78,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All  of the functions return <STRONG>ERR</STRONG> upon failure, or the num-
        ber of characters actually read into the string.
 
@@ -86,14 +86,18 @@
        tion, if the window parameter is null or the str parameter
        is null, a zero is returned.
 
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all routines except <STRONG>winnstr</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        SVr4 does not document whether a length limit includes  or
        excludes the trailing NUL.
 
@@ -103,17 +107,23 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_instr.3x.html">curs_instr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_inwstr.3x.html b/doc/html/man/curs_inwstr.3x.html
index 17e13b0..8f5c3ca 100644
--- a/doc/html/man/curs_inwstr.3x.html
+++ b/doc/html/man/curs_inwstr.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2002-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 2002-2010,2012 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_inwstr.3x,v 1.5 2006/02/25 21:20:20 tom Exp @
+  * @Id: curs_inwstr.3x,v 1.8 2012/11/03 23:03:59 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_inwstr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_inwstr 3x</H1>
-<HR>
+<H1 class="no-header">curs_inwstr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>                                         <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>inwstr</STRONG>,  <STRONG>innwstr</STRONG>,  <STRONG>winwstr</STRONG>, <STRONG>winnwstr</STRONG>, <STRONG>mvinwstr</STRONG>, <STRONG>mvinnwstr</STRONG>,
        <STRONG>mvwinwstr</STRONG>, <STRONG>mvwinnwstr</STRONG> - get a string of <STRONG>wchar_t</STRONG> characters
        from a curses window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><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>
@@ -67,7 +67,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><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 char-
@@ -82,30 +82,39 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all routines except <STRONG>winnwstr</STRONG> may be macros.
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All routines return <STRONG>ERR</STRONG> upon failure. Upon successful com-
        pletion, the *<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  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>SEE ALSO</H2><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_instr.3x.html">curs_instr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
 
 
 
                                                         <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_kernel.3x.html b/doc/html/man/curs_kernel.3x.html
index 11f41d3..57e6408 100644
--- a/doc/html/man/curs_kernel.3x.html
+++ b/doc/html/man/curs_kernel.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2001,2005 Free Software Foundation, Inc.                        *
+  * Copyright (c) 1998-2010,2015 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_kernel.3x,v 1.15 2005/05/15 16:18:13 tom Exp @
+  * @Id: curs_kernel.3x,v 1.20 2015/07/21 01:10:11 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_kernel 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_kernel 3x</H1>
-<HR>
+<H1 class="no-header">curs_kernel 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>                                         <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>def_prog_mode</STRONG>, <STRONG>def_shell_mode</STRONG>, <STRONG>reset_prog_mode</STRONG>,
        <STRONG>reset_shell_mode</STRONG>, <STRONG>resetty</STRONG>, <STRONG>savetty</STRONG>, <STRONG>getsyx</STRONG>, <STRONG>setsyx</STRONG>,
        <STRONG>ripoffline</STRONG>, <STRONG>curs_set</STRONG>, <STRONG>napms</STRONG> - low-level <STRONG>curses</STRONG> routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>def_prog_mode(void);</STRONG>
@@ -62,19 +62,22 @@
        <STRONG>int</STRONG> <STRONG>reset_shell_mode(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>resetty(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>savetty(void);</STRONG>
-       <STRONG>void</STRONG> <STRONG>getsyx(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>void</STRONG> <STRONG>setsyx(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>ripoffline(int</STRONG> <STRONG>line,</STRONG> <STRONG>int</STRONG> <STRONG>(*init)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int));</STRONG>
-       <STRONG>int</STRONG> <STRONG>curs_set(int</STRONG> <STRONG>visibility);</STRONG>
-       <STRONG>int</STRONG> <STRONG>napms(int</STRONG> <STRONG>ms);</STRONG>
+       <STRONG>void</STRONG> <STRONG>getsyx(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>setsyx(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ripoffline(int</STRONG> <EM>line</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>init</EM><STRONG>)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int));</STRONG>
+       <STRONG>int</STRONG> <STRONG>curs_set(int</STRONG> <EM>visibility</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>napms(int</STRONG> <EM>ms</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  following  routines  give low-level access to various
-       <STRONG>curses</STRONG> capabilities.  Theses routines typically  are  used
+       <STRONG>curses</STRONG> capabilities.  These routines  typically  are  used
        inside library routines.
 
+
+</PRE>
+<H3><a name="h3-def_prog_mode_-def_shell_mode">def_prog_mode, def_shell_mode</a></H3><PRE>
        The  <STRONG>def_prog_mode</STRONG>  and  <STRONG>def_shell_mode</STRONG>  routines save the
        current terminal modes as the  "program"  (in  <STRONG>curses</STRONG>)  or
        "shell"   (not  in  <STRONG>curses</STRONG>)  state  for  use  by  the  <STRONG>re-</STRONG>
@@ -82,17 +85,26 @@
        automatically by <STRONG>initscr</STRONG>.  There is one such save area for
        each screen context allocated by <STRONG>newterm()</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-reset_prog_mode_-reset_shell_mode">reset_prog_mode, reset_shell_mode</a></H3><PRE>
        The <STRONG>reset_prog_mode</STRONG> and <STRONG>reset_shell_mode</STRONG> routines  restore
        the  terminal  to "program" (in <STRONG>curses</STRONG>) or "shell" (out of
        <STRONG>curses</STRONG>) state.  These are  done  automatically  by  <STRONG>endwin</STRONG>
        and,  after  an  <STRONG>endwin</STRONG>, by <STRONG>doupdate</STRONG>, so they normally are
        not called.
 
+
+</PRE>
+<H3><a name="h3-resetty_-savetty">resetty, savetty</a></H3><PRE>
        The <STRONG>resetty</STRONG> and <STRONG>savetty</STRONG>  routines  save  and  restore  the
        state  of  the  terminal modes.  <STRONG>savetty</STRONG> saves the current
        state in a buffer and <STRONG>resetty</STRONG> restores the state  to  what
        it was at the last call to <STRONG>savetty</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-getsyx">getsyx</a></H3><PRE>
        The  <STRONG>getsyx</STRONG> routine returns the current coordinates of the
        virtual screen cursor in <EM>y</EM> and <EM>x</EM>.  If <STRONG>leaveok</STRONG> is currently
        <STRONG>TRUE</STRONG>,  then <STRONG>-1</STRONG>,<STRONG>-1</STRONG> is returned.  If lines have been removed
@@ -100,6 +112,9 @@
        clude  these lines; therefore, <EM>y</EM> and <EM>x</EM> should be used only
        as arguments for <STRONG>setsyx</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-setsyx">setsyx</a></H3><PRE>
        The <STRONG>setsyx</STRONG> routine sets the virtual screen cursor to <EM>y</EM>, <EM>x</EM>.
        If <EM>y</EM> and <EM>x</EM> are both <STRONG>-1</STRONG>, then <STRONG>leaveok</STRONG> is set.  The two rou-
        tines <STRONG>getsyx</STRONG> and <STRONG>setsyx</STRONG> are designed to be used by  a  li-
@@ -110,35 +125,56 @@
        <STRONG>wnoutrefresh</STRONG>  on  its  windows, call <STRONG>setsyx</STRONG>, and then call
        <STRONG>doupdate</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-ripoffline">ripoffline</a></H3><PRE>
        The <STRONG>ripoffline</STRONG> routine provides access to the same facili-
        ty  that  <STRONG>slk_init</STRONG>  [see  <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>] uses to reduce the
        size of the screen.   <STRONG>ripoffline</STRONG>  must  be  called  before
-       <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> is called.  If <EM>line</EM> is positive, a line
-       is removed from the top of <STRONG>stdscr</STRONG>; if <EM>line</EM> is negative,  a
-       line is removed from the bottom.  When this is done inside
-       <STRONG>initscr</STRONG>, the routine <STRONG>init</STRONG> (supplied by the user) is called
-       with  two arguments: a window pointer to the one-line win-
-       dow that has been allocated and an integer with the number
-       of columns in the window.  Inside this initialization rou-
-       tine, the integer variables <STRONG>LINES</STRONG>  and  <STRONG>COLS</STRONG>  (defined  in
-       <STRONG>&lt;curses.h&gt;</STRONG>) are not guaranteed to be accurate and <STRONG>wrefresh</STRONG>
-       or <STRONG>doupdate</STRONG> must not be called.  It is allowable  to  call
-       <STRONG>wnoutrefresh</STRONG> during the initialization routine.
+       <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> is called, to prepare these initial ac-
+       tions:
+
+       <STRONG>o</STRONG>   If <EM>line</EM> is positive, a line is removed from the top of
+           <STRONG>stdscr</STRONG>.
+
+       <STRONG>o</STRONG>   if  <EM>line</EM>  is negative, a line is removed from the bot-
+           tom.
+
+       When the resulting initialization is done inside  <STRONG>initscr</STRONG>,
+       the routine <STRONG>init</STRONG> (supplied by the user) is called with two
+       arguments:
+
+       <STRONG>o</STRONG>   a window pointer to the one-line window that has  been
+           allocated and
+
+       <STRONG>o</STRONG>   an integer with the number of columns in the window.
+
+       Inside  this initialization routine, the integer variables
+       <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> (defined in <STRONG>&lt;curses.h&gt;</STRONG>) are not  guaranteed
+       to  be  accurate  and  <STRONG>wrefresh</STRONG>  or  <STRONG>doupdate</STRONG>  must not be
+       called.  It is allowable to call <STRONG>wnoutrefresh</STRONG>  during  the
+       initialization routine.
 
        <STRONG>ripoffline</STRONG>  can  be called up to five times before calling
        <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.
 
-       The <STRONG>curs_set</STRONG> routine sets the cursor state is set  to  in-
-       visible,  normal,  or very visible for <STRONG>visibility</STRONG> equal to
-       <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG> respectively.  If  the  terminal  supports  the
-       <EM>visibility</EM>  requested,  the  previous  <EM>cursor</EM> state is re-
-       turned; otherwise, <STRONG>ERR</STRONG> is returned.
 
+</PRE>
+<H3><a name="h3-curs_set">curs_set</a></H3><PRE>
+       The <STRONG>curs_set</STRONG> routine sets the cursor state  to  invisible,
+       normal, or very visible for <STRONG>visibility</STRONG> equal to <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG>
+       respectively.  If the terminal supports the <EM>visibility</EM> re-
+       quested, the previous <EM>cursor</EM> state is returned; otherwise,
+       <STRONG>ERR</STRONG> is returned.
+
+
+</PRE>
+<H3><a name="h3-napms">napms</a></H3><PRE>
        The <STRONG>napms</STRONG> routine is used to sleep for <EM>ms</EM> milliseconds.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Except for <STRONG>curs_set</STRONG>, these routines always return <STRONG>OK</STRONG>.
 
        <STRONG>curs_set</STRONG> returns the previous cursor state, or <STRONG>ERR</STRONG> if  the
@@ -147,20 +183,19 @@
        X/Open  defines  no error conditions.  In this implementa-
        tion
 
-              <STRONG>def_prog_mode</STRONG>, <STRONG>def_shell_mode</STRONG>, <STRONG>reset_prog_mode</STRONG>, <STRONG>re-</STRONG>
-              <STRONG>set_shell_mode</STRONG>
-                   return an error if the terminal was  not  ini-
-                   tialized,  or  if  the  I/O call to obtain the
-                   terminal settings fails.
+       <STRONG>def_prog_mode</STRONG>, <STRONG>def_shell_mode</STRONG>, <STRONG>reset_prog_mode</STRONG>,
+       <STRONG>reset_shell_mode</STRONG>
+            return  an error if the terminal was not initialized,
+            or if the I/O call to obtain  the  terminal  settings
+            fails.
 
-              <STRONG>ripoffline</STRONG>
-                   returns an error  if  the  maximum  number  of
-                   ripped-off  lines exceeds the maximum (NRIPS =
-                   5).
+       <STRONG>ripoffline</STRONG>
+            returns  an error if the maximum number of ripped-off
+            lines exceeds the maximum (NRIPS = 5).
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>getsyx</STRONG> is a macro, so <STRONG>&amp;</STRONG> is not necessary  before
        the variables <EM>y</EM> and <EM>x</EM>.
 
@@ -177,29 +212,47 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The functions <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG> are not described  in  the
        XSI  Curses standard, Issue 4.  All other functions are as
        described in XSI Curses.
 
        The SVr4 documentation describes <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG> as hav-
        ing  return  type  int.  This  is  misleading, as they are
-       macros with no documented semantics for the return  value.
+       macros with no documented semantics for the return value.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,  <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG>curs_re-</STRONG>
-       <STRONG><A HREF="curs_refresh.3x.html">fresh(3x)</A></STRONG>, <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
+<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_initscr.3x.html">curs_initscr(3x)</A></STRONG>,  <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>,  <STRONG>curs_re-</STRONG>
+       <STRONG><A HREF="curs_refresh.3x.html">fresh(3x)</A></STRONG>,   <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>,  <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>,  <STRONG>curs_vari-</STRONG>
+       <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>.
 
 
 
                                                         <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-def_prog_mode_-def_shell_mode">def_prog_mode, def_shell_mode</a></li>
+<li><a href="#h3-reset_prog_mode_-reset_shell_mode">reset_prog_mode, reset_shell_mode</a></li>
+<li><a href="#h3-resetty_-savetty">resetty, savetty</a></li>
+<li><a href="#h3-getsyx">getsyx</a></li>
+<li><a href="#h3-setsyx">setsyx</a></li>
+<li><a href="#h3-ripoffline">ripoffline</a></li>
+<li><a href="#h3-curs_set">curs_set</a></li>
+<li><a href="#h3-napms">napms</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_legacy.3x.html b/doc/html/man/curs_legacy.3x.html
index d1de590..36db4bf 100644
--- a/doc/html/man/curs_legacy.3x.html
+++ b/doc/html/man/curs_legacy.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2007 Free Software Foundation, Inc.                        *
+  * Copyright (c) 2007,2010 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            *
@@ -27,34 +26,36 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_legacy.3x,v 1.1 2007/04/07 23:54:29 tom Exp @
+  * @Id: curs_legacy.3x,v 1.5 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_legacy 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_legacy 3x</H1>
-<HR>
+<H1 class="no-header">curs_legacy 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>                                         <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
-       <STRONG>getbegx</STRONG>, <STRONG>getbegy</STRONG>, <STRONG>getcurx</STRONG>, <STRONG>getcury</STRONG>, <STRONG>getmaxx</STRONG>, <STRONG>getmaxy</STRONG>, <STRONG>get-</STRONG>
-       <STRONG>parx</STRONG>, <STRONG>getpary</STRONG> - get <STRONG>curses</STRONG> cursor and window coordinates
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       getattrs  -  get  <STRONG>curses</STRONG>  cursor  and  window coordinates,
+       attributes
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
+       <STRONG>int</STRONG> <STRONG>getattrs(WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>int</STRONG> <STRONG>getbegx(WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>int</STRONG> <STRONG>getbegy(WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>int</STRONG> <STRONG>getcurx(WINDOW</STRONG> <STRONG>*win);</STRONG>
@@ -66,7 +67,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>getbegy</STRONG> and <STRONG>getbegx</STRONG> functions return the same data  as
        <STRONG>getbegyx</STRONG>.
 
@@ -81,13 +82,13 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These functions return an integer, or ERR  if  the  window
        parameter is null.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        All  of  these interfaces are provided as macros and func-
        tions.  The macros are suppressed (and only the  functions
        provided)  when  <STRONG>NCURSES_OPAQUE</STRONG>  is defined.  The standard
@@ -98,23 +99,29 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These functions were supported on Version 7, BSD or System
        V implementations.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_getyx.3x.html">curs_getyx(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
 
 
 
                                                         <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_memleaks.3x.html b/doc/html/man/curs_memleaks.3x.html
new file mode 100644
index 0000000..b36442c
--- /dev/null
+++ b/doc/html/man/curs_memleaks.3x.html
@@ -0,0 +1,116 @@
+<!-- 
+  ****************************************************************************
+  * Copyright (c) 2008,2010 Free Software Foundation, Inc.                   *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: curs_memleaks.3x,v 1.3 2010/12/04 18:40:45 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>curs_memleaks 3x</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">curs_memleaks 3x</H1>
+<PRE>
+<STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>                                     <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
+
+
+
+
+</PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>_nc_freeall</STRONG> <STRONG>_nc_free_and_exit</STRONG> - <STRONG>curses</STRONG> memory-leak
+       checking
+
+
+</PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+
+       <STRONG>void</STRONG> <STRONG>_nc_freeall(void);</STRONG>
+       <STRONG>void</STRONG> <STRONG>_nc_free_and_exit(int);</STRONG>
+
+
+</PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       These functions are used to simplify  analysis  of  memory
+       leaks  in  the  ncurses  library.   They  are normally not
+       available; they must be configured  into  the  library  at
+       build  time  using  the <STRONG>--disable-leaks</STRONG> option.  That com-
+       piles-in code that frees memory that normally would not be
+       freed.
+
+       Any  implementation of curses must not free the memory as-
+       sociated with a screen, since (even after calling <STRONG>endwin</STRONG>),
+       it  must be available for use in the next call to <STRONG>refresh</STRONG>.
+       There are also chunks of memory held for performance  rea-
+       sons.   That  makes it hard to analyze curses applications
+       for memory leaks.  To work around this, one  can  build  a
+       debugging version of the ncurses library which frees those
+       chunks which it can, and provides these functions to  free
+       all of the memory allocated by the ncurses library.
+
+       The  _nc_free_and_exit function is the preferred one since
+       some of the memory which is freed may be required for  the
+       application  to  continue  running.   Its parameter is the
+       code to pass to the exit routine.
+
+
+</PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       These functions do not return a value.
+
+
+</PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These functions are not part of the XSI interface.
+
+
+</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_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_mouse.3x.html b/doc/html/man/curs_mouse.3x.html
index 2309482..f4951c1 100644
--- a/doc/html/man/curs_mouse.3x.html
+++ b/doc/html/man/curs_mouse.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2014,2015 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            *
@@ -28,60 +27,64 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_mouse.3x,v 1.30 2006/12/30 23:43:34 tom Exp @
+  * @Id: curs_mouse.3x,v 1.42 2015/07/21 09:27:39 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_mouse 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_mouse 3x</H1>
-<HR>
+<H1 class="no-header">curs_mouse 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>                                           <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
-       <STRONG>getmouse</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>wenclose</STRONG>, <STRONG>mouse_trafo</STRONG>,
-       <STRONG>wmouse_trafo</STRONG>, <STRONG>mouseinterval</STRONG> - mouse interface through
-       curses
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>has_mouse</STRONG>, <STRONG>getmouse</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>wenclose</STRONG>,
+       <STRONG>mouse_trafo</STRONG>, <STRONG>wmouse_trafo</STRONG>, <STRONG>mouseinterval</STRONG> - mouse interface
+       through curses
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>typedef</STRONG> <STRONG>unsigned</STRONG> <STRONG>long</STRONG> <STRONG>mmask_t;</STRONG>
 
-       typedef struct
-       {
-           short id;         <EM>/*</EM> <EM>ID</EM> <EM>to</EM> <EM>distinguish</EM> <EM>multiple</EM> <EM>devices</EM> <EM>*/</EM>
+       <STRONG>typedef</STRONG> <STRONG>struct</STRONG> <STRONG>{</STRONG>
+           <STRONG>short</STRONG> <STRONG>id;</STRONG>         <EM>/*</EM> <EM>ID</EM> <EM>to</EM> <EM>distinguish</EM> <EM>multiple</EM> <EM>devices</EM> <EM>*/</EM>
            <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>y,</STRONG> <STRONG>z;</STRONG>      <EM>/*</EM> <EM>event</EM> <EM>coordinates</EM> <EM>*/</EM>
            <STRONG>mmask_t</STRONG> <STRONG>bstate;</STRONG>   <EM>/*</EM> <EM>button</EM> <EM>state</EM> <EM>bits</EM> <EM>*/</EM>
-       <STRONG>}</STRONG>
-       <STRONG>MEVENT;</STRONG>
-       <STRONG>int</STRONG> <STRONG>getmouse(MEVENT</STRONG> <STRONG>*event);</STRONG>
-       <STRONG>int</STRONG> <STRONG>ungetmouse(MEVENT</STRONG> <STRONG>*event);</STRONG>
-       <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <STRONG>newmask,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*oldmask);</STRONG>
-       <STRONG>bool</STRONG> <STRONG>wenclose(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>bool</STRONG> <STRONG>mouse_trafo(int*</STRONG> <STRONG>pY,</STRONG> <STRONG>int*</STRONG> <STRONG>pX,</STRONG> <STRONG>bool</STRONG> <STRONG>to_screen);</STRONG>
-       <STRONG>bool</STRONG> <STRONG>wmouse_trafo(const</STRONG> <STRONG>WINDOW*</STRONG> <STRONG>win,</STRONG> <STRONG>int*</STRONG> <STRONG>pY,</STRONG> <STRONG>int*</STRONG> <STRONG>pX,</STRONG>
-            <STRONG>bool</STRONG> <STRONG>to_screen);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mouseinterval(int</STRONG> <STRONG>erval);</STRONG>
+       <STRONG>}</STRONG> <STRONG>MEVENT;</STRONG>
+
+       <STRONG>bool</STRONG> <STRONG>has_mouse(void);</STRONG>
+       <STRONG>int</STRONG> <STRONG>getmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ungetmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
+       <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <EM>newmask</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*</STRONG><EM>oldmask</EM><STRONG>);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>wenclose(const</STRONG> <STRONG>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>bool</STRONG> <STRONG>mouse_trafo(int*</STRONG> <EM>pY</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pX</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>to</EM><STRONG>_</STRONG><EM>screen</EM><STRONG>);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>wmouse_trafo(const</STRONG> <STRONG>WINDOW*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pY</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pX</EM><STRONG>,</STRONG>
+            <STRONG>bool</STRONG> <EM>to</EM><STRONG>_</STRONG><EM>screen</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mouseinterval(int</STRONG> <EM>erval</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These  functions provide an interface to mouse events from
        <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.  Mouse events are  represented  by  <STRONG>KEY_MOUSE</STRONG>
        pseudo-key values in the <STRONG>wgetch</STRONG> input stream.
 
+
+</PRE>
+<H3><a name="h3-mousemask">mousemask</a></H3><PRE>
        To  make mouse events visible, use the <STRONG>mousemask</STRONG> function.
        This will set the mouse events to  be  reported.   By  de-
        fault,  no  mouse  events are reported.  The function will
@@ -95,8 +98,10 @@
        the  mouse pointer; setting a nonzero mask may turn it on.
        Whether this happens is device-dependent.
 
-       Here are the mouse event type masks which may be defined:
 
+</PRE>
+<H3><a name="h3-Mouse-events">Mouse events</a></H3><PRE>
+       Here are the mouse event type masks which may be defined:
 
        <EM>Name</EM>                     <EM>Description</EM>
        ---------------------------------------------------------------------
@@ -110,9 +115,10 @@
        BUTTON2_RELEASED         mouse button 2 up
        BUTTON2_CLICKED          mouse button 2 clicked
        BUTTON2_DOUBLE_CLICKED   mouse button 2 double clicked
+
+
        BUTTON2_TRIPLE_CLICKED   mouse button 2 triple clicked
        ---------------------------------------------------------------------
-
        BUTTON3_PRESSED          mouse button 3 down
        BUTTON3_RELEASED         mouse button 3 up
        BUTTON3_CLICKED          mouse button 3 clicked
@@ -138,7 +144,10 @@
        REPORT_MOUSE_POSITION    report mouse movement
        ---------------------------------------------------------------------
 
-       Once a class of mouse events have been made visible  in  a
+
+</PRE>
+<H3><a name="h3-getmouse">getmouse</a></H3><PRE>
+       Once a class of mouse events has been made  visible  in  a
        window, calling the <STRONG>wgetch</STRONG> function on that window may re-
        turn <STRONG>KEY_MOUSE</STRONG> as an indicator that a mouse event has been
        queued.   To read the event data and pop the event off the
@@ -148,45 +157,68 @@
        as  y  and  x  in  the event structure coordinates will be
        screen-relative character-cell coordinates.  The  returned
        state  mask  will have exactly one bit set to indicate the
-       event type.
+       event type.  The corresponding data in the queue is marked
+       invalid.   A subsequent call to <STRONG>getmouse</STRONG> will retrieve the
+       next older item from the queue.
 
+
+</PRE>
+<H3><a name="h3-ungetmouse">ungetmouse</a></H3><PRE>
        The <STRONG>ungetmouse</STRONG> function behaves  analogously  to  <STRONG>ungetch</STRONG>.
        It  pushes a <STRONG>KEY_MOUSE</STRONG> event onto the input queue, and as-
        sociates with that event the given state data and  screen-
        relative character-cell coordinates.
 
+
+</PRE>
+<H3><a name="h3-wenclose">wenclose</a></H3><PRE>
        The  <STRONG>wenclose</STRONG>  function  tests  whether  a  given  pair of
        screen-relative character-cell coordinates is enclosed  by
-       a  given  window, returning TRUE if it is and FALSE other-
+       a  given  window, returning <STRONG>TRUE</STRONG> if it is and <STRONG>FALSE</STRONG> other-
        wise.  It is useful for determining  what  subset  of  the
        screen windows enclose the location of a mouse event.
 
+
+</PRE>
+<H3><a name="h3-wmouse_trafo">wmouse_trafo</a></H3><PRE>
        The <STRONG>wmouse_trafo</STRONG> function transforms a given pair of coor-
        dinates from stdscr-relative  coordinates  to  coordinates
-       relative to the given window or vice versa.  Please remem-
-       ber, that stdscr-relative coordinates are not always iden-
-       tical  to window-relative coordinates due to the mechanism
-       to reserve lines on top or bottom of the screen for  other
-       purposes (see the <STRONG>ripoffline()</STRONG> and <STRONG>slk_init</STRONG> calls, for ex-
-       ample).  If the parameter <STRONG>to_screen</STRONG> is <STRONG>TRUE</STRONG>, the  pointers
-       <STRONG>pY,</STRONG> <STRONG>pX</STRONG> must reference the coordinates of a location inside
-       the window <STRONG>win</STRONG>.  They are converted to window-relative co-
-       ordinates  and returned through the pointers.  If the con-
-       version was successful, the function returns <STRONG>TRUE</STRONG>.  If one
-       of  the  parameters was NULL or the location is not inside
-       the window, <STRONG>FALSE</STRONG> is returned.  If <STRONG>to_screen</STRONG> is <STRONG>FALSE</STRONG>, the
-       pointers  <STRONG>pY,</STRONG>  <STRONG>pX</STRONG>  must  reference window-relative coordi-
-       nates.  They are converted to stdscr-relative  coordinates
-       if  the  window <STRONG>win</STRONG> encloses this point.  In this case the
-       function returns <STRONG>TRUE</STRONG>.  If one of the parameters  is  NULL
-       or  the point is not inside the window, <STRONG>FALSE</STRONG> is returned.
-       Please notice, that the referenced  coordinates  are  only
-       replaced  by  the converted coordinates if the transforma-
-       tion was successful.
+       relative to the given window or vice versa.  The resulting
+       stdscr-relative coordinates are not  always  identical  to
+       window-relative  coordinates  due  to the mechanism to re-
+       serve lines on top or bottom of the screen for other  pur-
+       poses  (see  the  <STRONG>ripoffline</STRONG> and <STRONG>slk_init</STRONG> calls, for exam-
+       ple).
 
+       <STRONG>o</STRONG>   If the parameter <STRONG>to_screen</STRONG> is <STRONG>TRUE</STRONG>, the  pointers  <STRONG>pY,</STRONG>
+           <STRONG>pX</STRONG> must reference the coordinates of a location inside
+           the window <STRONG>win</STRONG>.  They are converted to window-relative
+           coordinates and returned through the pointers.  If the
+           conversion was successful, the function returns <STRONG>TRUE</STRONG>.
+
+       <STRONG>o</STRONG>   If one of the parameters was NULL or the  location  is
+           not inside the window, <STRONG>FALSE</STRONG> is returned.
+
+       <STRONG>o</STRONG>   If <STRONG>to_screen</STRONG> is <STRONG>FALSE</STRONG>, the pointers <STRONG>pY,</STRONG> <STRONG>pX</STRONG> must refer-
+           ence window-relative coordinates.  They are  converted
+           to  stdscr-relative  coordinates if the window <STRONG>win</STRONG> en-
+           closes this point.  In this case the function  returns
+           <STRONG>TRUE</STRONG>.
+
+       <STRONG>o</STRONG>   If  one  of the parameters is NULL or the point is not
+           inside the window, <STRONG>FALSE</STRONG> is returned.  The  referenced
+           coordinates are only replaced by the converted coordi-
+           nates if the transformation was successful.
+
+
+</PRE>
+<H3><a name="h3-mouse_trafo">mouse_trafo</a></H3><PRE>
        The <STRONG>mouse_trafo</STRONG> function performs the same translation  as
        <STRONG>wmouse_trafo</STRONG>, using stdscr for <STRONG>win</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-mouseinterval">mouseinterval</a></H3><PRE>
        The <STRONG>mouseinterval</STRONG> function sets the maximum time (in thou-
        sands of a second) that can elapse between press  and  re-
        lease  events  for  them to be recognized as a click.  Use
@@ -195,23 +227,34 @@
        <STRONG>val(-1)</STRONG> to obtain the interval without altering  it.   The
        default is one sixth of a second.
 
-       Note  that  mouse  events will be ignored when input is in
+
+</PRE>
+<H3><a name="h3-has_mouse">has_mouse</a></H3><PRE>
+       The  <STRONG>has_mouse</STRONG>  function  returns <STRONG>TRUE</STRONG> if the mouse driver
+       has been successfully initialized.
+
+       Note that mouse events will be ignored when  input  is  in
        cooked mode, and will cause an error beep when cooked mode
-       is  being simulated in a window by a function such as <STRONG>get-</STRONG>
+       is being simulated in a window by a function such as  <STRONG>get-</STRONG>
        <STRONG>str</STRONG> that expects a linefeed for input-loop termination.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       <STRONG>getmouse</STRONG> and <STRONG>ungetmouse</STRONG> return the integer <STRONG>ERR</STRONG> upon  fail-
-       ure or <STRONG>OK</STRONG> upon successful completion.
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       <STRONG>getmouse</STRONG>  and <STRONG>ungetmouse</STRONG> return the integer <STRONG>ERR</STRONG> upon fail-
+       ure or <STRONG>OK</STRONG> upon successful completion:
 
-              <STRONG>getmouse</STRONG>
-                   returns an error.  If no mouse driver was ini-
-                   tialized, or if the mask parameter is zero,
+          <STRONG>getmouse</STRONG>
+               returns an error.
 
-              <STRONG>ungetmouse</STRONG>
-                   returns an error if the FIFO is full.
+          <STRONG>o</STRONG>   If no mouse driver was initialized, or if the  mask
+              parameter is zero,
+
+          <STRONG>o</STRONG>   It  also  returns an error if no more events remain
+              in the queue.
+
+          <STRONG>ungetmouse</STRONG>
+               returns an error if the FIFO is full.
 
        <STRONG>mousemask</STRONG> returns the mask of reportable events.
 
@@ -224,7 +267,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  calls  were  designed  for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and are not
        found in SVr4 curses, 4.4BSD curses, or any other previous
        version of curses.
@@ -236,73 +279,103 @@
        for  <STRONG>NCURSES_MOUSE_VERSION</STRONG> may be specified when configur-
        ing ncurses:
 
-              1  has definitions for reserved events.   The  mask
-                 uses 28 bits.
+          1  has definitions for reserved events.  The mask  uses
+             28 bits.
 
-              2  adds definitions for button 5, removes the defi-
-                 nitions for reserved events.  The mask  uses  29
-                 bits.
+          2  adds  definitions  for button 5, removes the defini-
+             tions for reserved events.  The mask uses 29 bits.
 
-       The  order  of the <STRONG>MEVENT</STRONG> structure members is not guaran-
-       teed.  Additional fields may be added to the structure  in
+       The order of the <STRONG>MEVENT</STRONG> structure members is  not  guaran-
+       teed.   Additional fields may be added to the structure in
        the future.
 
-       Under  <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>,  these calls are implemented using ei-
-       ther xterm's built-in mouse-tracking API or  platform-spe-
+       Under <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, these calls are implemented  using  ei-
+       ther  xterm's built-in mouse-tracking API or platform-spe-
        cific drivers including
-              Alessandro Rubini's gpm server.
-              FreeBSD sysmouse
-              OS/2 EMX
-       If  you  are  using  an  unsupported  configuration, mouse
-       events will not be visible to <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> (and the  <STRONG>mouse-</STRONG>
+
+          <STRONG>o</STRONG>   Alessandro Rubini's gpm server
+
+          <STRONG>o</STRONG>   FreeBSD sysmouse
+
+          <STRONG>o</STRONG>   OS/2 EMX
+
+       If you  are  using  an  unsupported  configuration,  mouse
+       events  will not be visible to <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> (and the <STRONG>mouse-</STRONG>
        <STRONG>mask</STRONG> function will always return <STRONG>0</STRONG>).
 
-       If  the  terminfo entry contains a <STRONG>XM</STRONG> string, this is used
-       in the xterm mouse driver to control the way the  terminal
+       If the terminfo entry contains a <STRONG>XM</STRONG> string, this  is  used
+       in  the xterm mouse driver to control the way the terminal
        is initialized for mouse operation.  The default, if <STRONG>XM</STRONG> is
        not found, corresponds to private mode 1000 of xterm:
-              \E[?1000%?%p1%{1}%=%th%el%;
-       The z member in the event structure is not presently used.
-       It  is  intended  for use with touch screens (which may be
+
+          \E[?1000%?%p1%{1}%=%th%el%;
+
+       The <EM>z</EM> member in the event structure is not presently used.
+       It is intended for use with touch screens  (which  may  be
        pressure-sensitive)   or   with   3D-mice/trackballs/power
        gloves.
 
+       The  <STRONG>ALL_MOUSE_EVENTS</STRONG>   class   does   not   include   <STRONG>RE-</STRONG>
+       <STRONG>PORT_MOUSE_POSITION</STRONG>.   They are distinct.  For example, in
+       xterm, wheel/scrolling mice send position reports as a se-
+       quence  of presses of buttons 4 or 5 without matching but-
+       ton-releases.
+
 
 </PRE>
-<H2>BUGS</H2><PRE>
-       Mouse  events under xterm will not in fact be ignored dur-
-       ing cooked mode, if they have been enabled  by  <STRONG>mousemask</STRONG>.
-       Instead,  the  xterm  mouse report sequence will appear in
+<H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+       Mouse events under xterm will not in fact be ignored  dur-
+       ing  cooked  mode, if they have been enabled by <STRONG>mousemask</STRONG>.
+       Instead, the xterm mouse report sequence  will  appear  in
        the string read.
 
        Mouse events under xterm will not be detected correctly in
-       a  window  with  its keypad bit off, since they are inter-
-       preted as a variety of function key.   Your  terminfo  de-
-       scription  should  have <STRONG>kmous</STRONG> set to "\E[M" (the beginning
-       of the response from xterm for mouse clicks).  Other  val-
-       ues  for  <STRONG>kmous</STRONG>  are permitted, but under the same assump-
+       a window with its keypad bit off, since  they  are  inter-
+       preted  as  a  variety of function key.  Your terminfo de-
+       scription should have <STRONG>kmous</STRONG> set to "\E[M"  (the  beginning
+       of  the response from xterm for mouse clicks).  Other val-
+       ues for <STRONG>kmous</STRONG> are permitted, but under  the  same  assump-
        tion, i.e., it is the beginning of the response.
 
-       Because there are  no  standard  terminal  responses  that
-       would  serve to identify terminals which support the xterm
-       mouse protocol, <STRONG>ncurses</STRONG> assumes that if your  $TERM  envi-
-       ronment  variable contains "xterm", or <STRONG>kmous</STRONG> is defined in
+       Because  there  are  no  standard  terminal responses that
+       would serve to identify terminals which support the  xterm
+       mouse  protocol,  <STRONG>ncurses</STRONG> assumes that if your $TERM envi-
+       ronment variable contains "xterm", or <STRONG>kmous</STRONG> is defined  in
        the terminal description, then the terminal may send mouse
        events.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>.
+<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_kernel.3x.html">curs_kernel(3x)</A></STRONG>,   <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>,   <STRONG>curs_vari-</STRONG>
+       <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>.
 
 
 
                                                          <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-mousemask">mousemask</a></li>
+<li><a href="#h3-Mouse-events">Mouse events</a></li>
+<li><a href="#h3-getmouse">getmouse</a></li>
+<li><a href="#h3-ungetmouse">ungetmouse</a></li>
+<li><a href="#h3-wenclose">wenclose</a></li>
+<li><a href="#h3-wmouse_trafo">wmouse_trafo</a></li>
+<li><a href="#h3-mouse_trafo">mouse_trafo</a></li>
+<li><a href="#h3-mouseinterval">mouseinterval</a></li>
+<li><a href="#h3-has_mouse">has_mouse</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_move.3x.html b/doc/html/man/curs_move.3x.html
index 25c52b4..3a49426 100644
--- a/doc/html/man/curs_move.3x.html
+++ b/doc/html/man/curs_move.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,31 +26,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_move.3x,v 1.12 2006/02/25 21:49:19 tom Exp @
+  * @Id: curs_move.3x,v 1.14 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_move 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_move 3x</H1>
-<HR>
+<H1 class="no-header">curs_move 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>                                             <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>move</STRONG>, <STRONG>wmove</STRONG> - move <STRONG>curses</STRONG> window cursor
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>move(int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
@@ -59,7 +59,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These  routines move the cursor associated with the window
        to line <EM>y</EM> and column <EM>x</EM>.  This routine does  not  move  the
        physical  cursor  of the terminal until <STRONG>refresh</STRONG> is called.
@@ -68,7 +68,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return <STRONG>ERR</STRONG> upon failure and OK (SVr4 speci-
        fies only "an integer value other than <STRONG>ERR</STRONG>") upon success-
        ful completion.
@@ -78,28 +78,34 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>move</STRONG> may be a macro.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These functions are described in the XSI Curses  standard,
        Issue 4.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_refresh.3x.html">curs_refresh(3x)</A></STRONG>
 
 
 
                                                           <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_opaque.3x.html b/doc/html/man/curs_opaque.3x.html
index 3e0f1ae..9caec6c 100644
--- a/doc/html/man/curs_opaque.3x.html
+++ b/doc/html/man/curs_opaque.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2007 Free Software Foundation, Inc.                        *
+  * Copyright (c) 2007-2014,2015 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_opaque.3x,v 1.6 2007/09/08 18:49:13 tom Exp @
+  * @Id: curs_opaque.3x,v 1.12 2015/04/11 10:23:49 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_opaque 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_opaque 3x</H1>
-<HR>
+<H1 class="no-header">curs_opaque 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>                                         <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>is_cleared</STRONG>, <STRONG>is_idlok</STRONG>, <STRONG>is_idcok</STRONG>, <STRONG>is_immedok</STRONG>, <STRONG>is_keypad</STRONG>,
-       <STRONG>is_leaveok</STRONG>, <STRONG>is_nodelay</STRONG>, <STRONG>is_timeout</STRONG>, <STRONG>is_scrollok</STRONG>, <STRONG>is_syncok</STRONG>
-       - <STRONG>curses</STRONG> window properties
+       <STRONG>is_leaveok</STRONG>, <STRONG>is_nodelay</STRONG>, <STRONG>is_notimeout</STRONG>, <STRONG>is_pad</STRONG>, <STRONG>is_scrollok</STRONG>,
+       <STRONG>is_subwin</STRONG>, <STRONG>is_syncok</STRONG> - <STRONG>curses</STRONG> window properties
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>bool</STRONG> <STRONG>is_cleared(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
@@ -64,17 +64,20 @@
        <STRONG>bool</STRONG> <STRONG>is_leaveok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>bool</STRONG> <STRONG>is_nodelay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>bool</STRONG> <STRONG>is_notimeout(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>is_pad(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>bool</STRONG> <STRONG>is_scrollok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>is_subwin(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>bool</STRONG> <STRONG>is_syncok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>wgetparent(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wgetdelay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>int</STRONG> <STRONG>wgetscrreg(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>*top,</STRONG> <STRONG>int</STRONG> <STRONG>*bottom);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        This  implementation provides functions which return prop-
        erties set in the WINDOW  structure,  allowing  it  to  be
-       ``opaque'' if the symbol <STRONG>NCURSES_OPAQUE</STRONG> is defined:
+       "opaque" if the symbol <STRONG>NCURSES_OPAQUE</STRONG> is defined:
 
        <STRONG>is_cleared</STRONG>
             returns the value set in <STRONG>clearok</STRONG>
@@ -100,12 +103,23 @@
        <STRONG>is_notimeout</STRONG>
             returns the value set in <STRONG>notimeout</STRONG>
 
+       <STRONG>is_pad</STRONG>
+            returns  <STRONG>TRUE</STRONG> if the window is a pad i.e., created by
+            <STRONG>newpad</STRONG>
+
        <STRONG>is_scrollok</STRONG>
             returns the value set in <STRONG>scrollok</STRONG>
 
+       <STRONG>is_subwin</STRONG>
+            returns <STRONG>TRUE</STRONG> if the window is a subwindow, i.e., cre-
+            ated by <STRONG>subwin</STRONG> or <STRONG>derwin</STRONG>
+
        <STRONG>is_syncok</STRONG>
             returns the value set in <STRONG>syncok</STRONG>
 
+       <STRONG>wgetdelay</STRONG>
+            returns the delay timeout as set in <STRONG>wtimeout</STRONG>.
+
        <STRONG>wgetparent</STRONG>
             returns  the parent WINDOW pointer for subwindows, or
             NULL for windows having no parent.
@@ -116,36 +130,42 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These functions all return TRUE or FALSE, except as noted.
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Both a macro and a function are provided for each name.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines are specific to  ncurses.   They  were  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on  ncurses  ex-
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  are  specific  to ncurses.  They were not
+       supported on Version 7, BSD or System  V  implementations.
+       It  is  recommended that any code depending on ncurses ex-
        tensions be conditioned using NCURSES_VERSION.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>,  <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG>curs_win-</STRONG>
+<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_inopts.3x.html">curs_inopts(3x)</A></STRONG>,  <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>,  <STRONG>curs_win-</STRONG>
        <STRONG><A HREF="curs_window.3x.html">dow(3x)</A></STRONG>
 
 
 
                                                         <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_outopts.3x.html b/doc/html/man/curs_outopts.3x.html
index c8d4a06..d6f6b7d 100644
--- a/doc/html/man/curs_outopts.3x.html
+++ b/doc/html/man/curs_outopts.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2015 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            *
@@ -27,53 +26,57 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_outopts.3x,v 1.21 2007/06/02 20:40:07 tom Exp @
+  * @Id: curs_outopts.3x,v 1.26 2015/07/21 00:23:43 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_outopts 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_outopts 3x</H1>
-<HR>
+<H1 class="no-header">curs_outopts 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>                                       <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>clearok</STRONG>, <STRONG>idlok</STRONG>, <STRONG>idcok</STRONG>, <STRONG>immedok</STRONG>, <STRONG>leaveok</STRONG>, <STRONG>setscrreg</STRONG>,
        <STRONG>wsetscrreg</STRONG>, <STRONG>scrollok</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG> - <STRONG>curses</STRONG> output options
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>clearok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>idlok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>void</STRONG> <STRONG>idcok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>void</STRONG> <STRONG>immedok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>leaveok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>int</STRONG> <STRONG>setscrreg(int</STRONG> <STRONG>top,</STRONG> <STRONG>int</STRONG> <STRONG>bot);</STRONG>
-       <STRONG>int</STRONG> <STRONG>wsetscrreg(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>top,</STRONG> <STRONG>int</STRONG> <STRONG>bot);</STRONG>
-       <STRONG>int</STRONG> <STRONG>scrollok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
+       <STRONG>int</STRONG> <STRONG>clearok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>idlok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>idcok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>immedok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>leaveok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>setscrreg(int</STRONG> <EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bot</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>wsetscrreg(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bot</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>scrollok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>nl(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>nonl(void);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These routines set options that change the style of output
        within  <STRONG>curses</STRONG>.   All  options are initially <STRONG>FALSE</STRONG>, unless
        otherwise stated.  It is not necessary to turn  these  op-
        tions off before calling <STRONG>endwin</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-clearok">clearok</a></H3><PRE>
        If  <STRONG>clearok</STRONG> is called with <STRONG>TRUE</STRONG> as argument, the next call
        to <STRONG>wrefresh</STRONG> with this window will clear  the  screen  com-
        pletely  and  redraw the entire screen from scratch.  This
@@ -83,6 +86,9 @@
        the  next  call  to  <STRONG>wrefresh</STRONG>  with  any window causes the
        screen to be cleared and repainted from scratch.
 
+
+</PRE>
+<H3><a name="h3-idlok">idlok</a></H3><PRE>
        If <STRONG>idlok</STRONG> is called with <STRONG>TRUE</STRONG> as  second  argument,  <STRONG>curses</STRONG>
        considers using the hardware insert/delete line feature of
        terminals so equipped.  Calling <STRONG>idlok</STRONG> with <STRONG>FALSE</STRONG> as second
@@ -95,6 +101,9 @@
        not  be  used,  <STRONG>curses</STRONG> redraws the changed portions of all
        lines.
 
+
+</PRE>
+<H3><a name="h3-idcok">idcok</a></H3><PRE>
        If <STRONG>idcok</STRONG> is called with <STRONG>FALSE</STRONG> as second  argument,  <STRONG>curses</STRONG>
        no longer considers using the hardware insert/delete char-
        acter feature of terminals so equipped.  Use of  character
@@ -102,6 +111,9 @@
        <STRONG>TRUE</STRONG> as second argument re-enables use of character inser-
        tion and deletion.
 
+
+</PRE>
+<H3><a name="h3-immedok">immedok</a></H3><PRE>
        If  <STRONG>immedok</STRONG> is called with <STRONG>TRUE</STRONG> <STRONG>as</STRONG> <STRONG>argument</STRONG>, any change in
        the window image, such as the ones caused by <STRONG>waddch,</STRONG> <STRONG>wclr-</STRONG>
        <STRONG>tobot,</STRONG>  <STRONG>wscrl</STRONG>,  etc.,  automatically  cause a call to <STRONG>wre-</STRONG>
@@ -109,75 +121,87 @@
        due  to repeated calls to <STRONG>wrefresh</STRONG>.  It is disabled by de-
        fault.
 
+
+</PRE>
+<H3><a name="h3-leaveok">leaveok</a></H3><PRE>
        Normally, the hardware cursor is left at the  location  of
        the window cursor being refreshed.  The <STRONG>leaveok</STRONG> option al-
        lows the cursor to be left wherever the update happens  to
        leave  it.  It is useful for applications where the cursor
        is not used, since it reduces the need for cursor motions.
 
-       The  <STRONG>setscrreg</STRONG>  and <STRONG>wsetscrreg</STRONG> routines allow the applica-
-       tion programmer to set a software scrolling  region  in  a
-       window.   <EM>top</EM>  and <EM>bot</EM> are the line numbers of the top and
-       bottom margin of the scrolling region.  (Line 0 is the top
-       line  of the window.)  If this option and <STRONG>scrollok</STRONG> are en-
-       abled, an attempt to move off the bottom margin line caus-
-       es all lines in the scrolling region to scroll one line in
-       the direction of the first line.  Only  the  text  of  the
-       window  is  scrolled.   (Note  that this has nothing to do
-       with the use of a physical scrolling region capability  in
-       the terminal, like that in the VT100.  If <STRONG>idlok</STRONG> is enabled
-       and the terminal has either  a  scrolling  region  or  in-
-       sert/delete line capability, they will probably be used by
-       the output routines.)
 
-       The <STRONG>scrollok</STRONG> option controls what happens when the  cursor
-       of  a  window  is  moved  off  the  edge  of the window or
-       scrolling region, either as a result of a  newline  action
-       on  the  bottom  line, or typing the last character of the
+</PRE>
+<H3><a name="h3-setscrreg">setscrreg</a></H3><PRE>
+       The <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> routines allow  the  applica-
+       tion  programmer  to  set a software scrolling region in a
+       window.  The <EM>top</EM> and <EM>bot</EM> parameters are the  line  numbers
+       of  the  top  and  bottom  margin of the scrolling region.
+       (Line 0 is the top line of the window.)   If  this  option
+       and  <STRONG>scrollok</STRONG> are enabled, an attempt to move off the bot-
+       tom margin line causes all lines in the  scrolling  region
+       to  scroll  one  line  in the direction of the first line.
+       Only the text of the window is scrolled.  (Note that  this
+       has nothing to do with the use of a physical scrolling re-
+       gion capability in the terminal, like that in  the  VT100.
+       If  <STRONG>idlok</STRONG>  is  enabled  and  the  terminal  has  either  a
+       scrolling region or insert/delete  line  capability,  they
+       will probably be used by the output routines.)
+
+
+</PRE>
+<H3><a name="h3-scrollok">scrollok</a></H3><PRE>
+       The  <STRONG>scrollok</STRONG> option controls what happens when the cursor
+       of a window is  moved  off  the  edge  of  the  window  or
+       scrolling  region,  either as a result of a newline action
+       on the bottom line, or typing the last  character  of  the
        last line.  If disabled, (<EM>bf</EM> is <STRONG>FALSE</STRONG>), the cursor is left
-       on  the bottom line.  If enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the window
-       is scrolled up one line (Note that  to  get  the  physical
-       scrolling  effect on the terminal, it is also necessary to
+       on the bottom line.  If enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the  window
+       is  scrolled  up  one  line (Note that to get the physical
+       scrolling effect on the terminal, it is also necessary  to
        call <STRONG>idlok</STRONG>).
 
-       The <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> routines control  whether  the  underlying
-       display  device  translates the return key into newline on
-       input, and whether it translates newline into  return  and
-       line-feed  on output (in either case, the call <STRONG>addch('\n')</STRONG>
+
+</PRE>
+<H3><a name="h3-nl_-nonl">nl, nonl</a></H3><PRE>
+       The  <STRONG>nl</STRONG>  and  <STRONG>nonl</STRONG> routines control whether the underlying
+       display device translates the return key into  newline  on
+       input,  and  whether it translates newline into return and
+       line-feed on output (in either case, the call  <STRONG>addch('\n')</STRONG>
        does the equivalent of return and line feed on the virtual
-       screen).   Initially, these translations do occur.  If you
-       disable them using <STRONG>nonl</STRONG>, <STRONG>curses</STRONG> will be able to make  bet-
-       ter  use  of the line-feed capability, resulting in faster
-       cursor motion.  Also, <STRONG>curses</STRONG> will then be able  to  detect
+       screen).  Initially, these translations do occur.  If  you
+       disable  them using <STRONG>nonl</STRONG>, <STRONG>curses</STRONG> will be able to make bet-
+       ter use of the line-feed capability, resulting  in  faster
+       cursor  motion.   Also, <STRONG>curses</STRONG> will then be able to detect
        the return key.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The functions <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> return <STRONG>OK</STRONG> upon suc-
        cess and <STRONG>ERR</STRONG> upon failure.  All other routines that return
        an integer always return <STRONG>OK</STRONG>.
 
-       X/Open does not define any error conditions.
+       X/Open Curses does not define any error conditions.
 
        In this implementation, those functions that have a window
-       pointer will return an error  if  the  window  pointer  is
+       pointer  will  return  an  error  if the window pointer is
        null.
 
               <STRONG>wclrtoeol</STRONG>
-                   returns  an  error  if  the cursor position is
+                   returns an error if  the  cursor  position  is
                    about to wrap.
 
               <STRONG>wsetscrreg</STRONG>
-                   returns an error if the scrolling region  lim-
+                   returns  an error if the scrolling region lim-
                    its extend outside the window.
 
-       X/Open  does not define any error conditions.  This imple-
-       mentation returns an error if the window pointer is  null.
+       X/Open does not define any error conditions.  This  imple-
+       mentation returns an error if the window pointer is null.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  functions are described in the XSI Curses standard,
        Issue 4.
 
@@ -207,7 +231,7 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>clearok</STRONG>, <STRONG>leaveok</STRONG>, <STRONG>scrollok</STRONG>, <STRONG>idcok</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG>  and
        <STRONG>setscrreg</STRONG> may be macros.
 
@@ -216,18 +240,36 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,        <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>,         <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+<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_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
 
 
 
                                                        <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-clearok">clearok</a></li>
+<li><a href="#h3-idlok">idlok</a></li>
+<li><a href="#h3-idcok">idcok</a></li>
+<li><a href="#h3-immedok">immedok</a></li>
+<li><a href="#h3-leaveok">leaveok</a></li>
+<li><a href="#h3-setscrreg">setscrreg</a></li>
+<li><a href="#h3-scrollok">scrollok</a></li>
+<li><a href="#h3-nl_-nonl">nl, nonl</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_overlay.3x.html b/doc/html/man/curs_overlay.3x.html
index 967186c..c10da1a 100644
--- a/doc/html/man/curs_overlay.3x.html
+++ b/doc/html/man/curs_overlay.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2013,2015 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            *
@@ -27,78 +26,85 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_overlay.3x,v 1.14 2006/02/25 21:49:19 tom Exp @
+  * @Id: curs_overlay.3x,v 1.18 2015/07/21 00:51:31 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_overlay 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_overlay 3x</H1>
-<HR>
+<H1 class="no-header">curs_overlay 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>                                       <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>overlay</STRONG>, <STRONG>overwrite</STRONG>, <STRONG>copywin</STRONG> - overlay and manipulate
        overlapped <STRONG>curses</STRONG> windows
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>int</STRONG> <STRONG>overlay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*srcwin,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*dstwin);</STRONG>
-       <STRONG>int</STRONG> <STRONG>overwrite(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*srcwin,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*dstwin);</STRONG>
-       <STRONG>int</STRONG> <STRONG>copywin(const</STRONG>  <STRONG>WINDOW</STRONG>  <STRONG>*srcwin,</STRONG>  <STRONG>WINDOW</STRONG>  <STRONG>*dstwin,</STRONG>  <STRONG>int</STRONG>
-       <STRONG>sminrow,</STRONG>
-             <STRONG>int</STRONG> <STRONG>smincol,</STRONG> <STRONG>int</STRONG> <STRONG>dminrow,</STRONG> <STRONG>int</STRONG> <STRONG>dmincol,</STRONG> <STRONG>int</STRONG> <STRONG>dmaxrow,</STRONG>
-             <STRONG>int</STRONG> <STRONG>dmaxcol,</STRONG> <STRONG>int</STRONG> <STRONG>overlay);</STRONG>
+       <STRONG>int</STRONG> <STRONG>overlay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>srcwin</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>dstwin</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>overwrite(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>srcwin</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>dstwin</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>copywin(const</STRONG>  <STRONG>WINDOW</STRONG>  <STRONG>*</STRONG><EM>srcwin</EM><STRONG>,</STRONG>  <STRONG>WINDOW</STRONG>  <STRONG>*</STRONG><EM>dstwin</EM><STRONG>,</STRONG>  <STRONG>int</STRONG>
+       <EM>sminrow</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>dminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>dmincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>dmaxrow</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>dmaxcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>overlay</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-overlay_-overwrite">overlay, overwrite</a></H3><PRE>
        The  <STRONG>overlay</STRONG>  and <STRONG>overwrite</STRONG> routines overlay <EM>srcwin</EM> on top
        of <EM>dstwin</EM>.  <EM>scrwin</EM> and <EM>dstwin</EM> are not required to  be  the
        same  size;  only  text  where  the two windows overlap is
        copied.  The difference is that <STRONG>overlay</STRONG> is non-destructive
-       (blanks  are not copied) whereas <STRONG>overwrite</STRONG> is destructive.
+       (blanks are not copied) whereas <STRONG>overwrite</STRONG> is destructive.
 
-       The <STRONG>copywin</STRONG> routine provides a finer granularity  of  con-
-       trol over the <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> routines.  Like in the
+
+</PRE>
+<H3><a name="h3-copywin">copywin</a></H3><PRE>
+       The  <STRONG>copywin</STRONG>  routine provides a finer granularity of con-
+       trol over the <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> routines.  As  in  the
        <STRONG>prefresh</STRONG> routine, a rectangle is specified in the destina-
-       tion  window,  (<EM>dminrow</EM>,  <EM>dmincol</EM>) and (<EM>dmaxrow</EM>, <EM>dmaxcol</EM>),
-       and the upper-left-corner coordinates of the  source  win-
+       tion window, (<EM>dminrow</EM>, <EM>dmincol</EM>)  and  (<EM>dmaxrow</EM>,  <EM>dmaxcol</EM>),
+       and  the  upper-left-corner coordinates of the source win-
        dow, (<EM>sminrow</EM>, <EM>smincol</EM>).  If the argument <EM>overlay</EM> is <STRONG>true</STRONG>,
        then copying is non-destructive, as in <STRONG>overlay</STRONG>.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Routines that return an integer return <STRONG>ERR</STRONG>  upon  failure,
-       and  <STRONG>OK</STRONG>  (SVr4 only specifies "an integer value other than
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Routines  that  return an integer return <STRONG>ERR</STRONG> upon failure,
+       and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value  other  than
        <STRONG>ERR</STRONG>") upon successful completion.
 
-       X/Open defines no error conditions.  In  this  implementa-
-       tion,  <STRONG>copywin</STRONG>,  <STRONG>overlay</STRONG>  and <STRONG>overwrite</STRONG> return an error if
+       X/Open  defines  no error conditions.  In this implementa-
+       tion, <STRONG>copywin</STRONG>, <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> return  an  error  if
        either of the window pointers are null, or if some part of
        the window would be placed off-screen.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The XSI Curses standard, Issue 4 describes these functions
        (adding the const qualifiers).  It further specifies their
        behavior in the presence of characters with multibyte ren-
@@ -106,17 +112,28 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_pad.3x.html">curs_pad(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
 
 
 
                                                        <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-overlay_-overwrite">overlay, overwrite</a></li>
+<li><a href="#h3-copywin">copywin</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_pad.3x.html b/doc/html/man/curs_pad.3x.html
index e497181..b5aee87 100644
--- a/doc/html/man/curs_pad.3x.html
+++ b/doc/html/man/curs_pad.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2015 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            *
@@ -27,47 +26,51 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_pad.3x,v 1.14 2005/05/15 16:18:43 tom Exp @
+  * @Id: curs_pad.3x,v 1.18 2015/07/21 08:58:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_pad 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_pad 3x</H1>
-<HR>
+<H1 class="no-header">curs_pad 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>                                               <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>newpad</STRONG>, <STRONG>subpad</STRONG>, <STRONG>prefresh</STRONG>, <STRONG>pnoutrefresh</STRONG>, <STRONG>pechochar</STRONG>,
        <STRONG>pecho_wchar</STRONG> - create and display <STRONG>curses</STRONG> pads
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>WINDOW</STRONG> <STRONG>*newpad(int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols);</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*subpad(WINDOW</STRONG> <STRONG>*orig,</STRONG> <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
-             <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>prefresh(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>int</STRONG> <STRONG>pminrow,</STRONG> <STRONG>int</STRONG> <STRONG>pmincol,</STRONG>
-             <STRONG>int</STRONG> <STRONG>sminrow,</STRONG> <STRONG>int</STRONG> <STRONG>smincol,</STRONG> <STRONG>int</STRONG> <STRONG>smaxrow,</STRONG> <STRONG>int</STRONG> <STRONG>smaxcol);</STRONG>
-       <STRONG>int</STRONG> <STRONG>pnoutrefresh(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>int</STRONG> <STRONG>pminrow,</STRONG> <STRONG>int</STRONG> <STRONG>pmincol,</STRONG>
-             <STRONG>int</STRONG> <STRONG>sminrow,</STRONG> <STRONG>int</STRONG> <STRONG>smincol,</STRONG> <STRONG>int</STRONG> <STRONG>smaxrow,</STRONG> <STRONG>int</STRONG> <STRONG>smaxcol);</STRONG>
-       <STRONG>int</STRONG> <STRONG>pechochar(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>int</STRONG> <STRONG>pecho_wchar(WINDOW</STRONG> <STRONG>*pad,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*wch);</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*newpad(int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>);</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*subpad(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>prefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pmincol</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxcol</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>pnoutrefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pmincol</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxcol</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>pechochar(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>pecho_wchar(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-newpad">newpad</a></H3><PRE>
        The <STRONG>newpad</STRONG> routine creates and returns a pointer to a  new
        pad data structure with the given number of lines, <EM>nlines</EM>,
        and columns, <EM>ncols</EM>.  A pad is like a window,  except  that
@@ -83,6 +86,9 @@
        of the pad to be displayed and the location on the  screen
        to be used for the display.
 
+
+</PRE>
+<H3><a name="h3-subpad">subpad</a></H3><PRE>
        The <STRONG>subpad</STRONG> routine creates and returns a pointer to a sub-
        window within a  pad  with  the  given  number  of  lines,
        <EM>nlines</EM>,  and  columns,  <EM>ncols</EM>.   Unlike <STRONG>subwin</STRONG>, which uses
@@ -93,21 +99,27 @@
        ten be necessary to call <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> be-
        fore calling <STRONG>prefresh</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-prefresh_-pnoutrefresh">prefresh, pnoutrefresh</a></H3><PRE>
        The  <STRONG>prefresh</STRONG>  and  <STRONG>pnoutrefresh</STRONG> routines are analogous to
        <STRONG>wrefresh</STRONG> and <STRONG>wnoutrefresh</STRONG> except that they relate to  pads
        instead  of windows.  The additional parameters are needed
        to indicate what part of the pad and screen are  involved.
-       <EM>pminrow</EM>  and <EM>pmincol</EM> specify the upper left-hand corner of
-       the rectangle to be displayed in the pad.  <EM>sminrow</EM>,  <EM>smin-</EM>
-       <EM>col</EM>, <EM>smaxrow</EM>, and <EM>smaxcol</EM> specify the edges of the rectan-
-       gle to be displayed on the screen.  The  lower  right-hand
-       corner of the rectangle to be displayed in the pad is cal-
-       culated from the screen coordinates, since the  rectangles
-       must  be  the same size.  Both rectangles must be entirely
-       contained within their  respective  structures.   Negative
-       values of <EM>pminrow</EM>, <EM>pmincol</EM>, <EM>sminrow</EM>, or <EM>smincol</EM> are treat-
-       ed as if they were zero.
+       The <EM>pminrow</EM> and <EM>pmincol</EM> parameters specify the upper left-
+       hand corner of the rectangle to be displayed in  the  pad.
+       The  <EM>sminrow</EM>,  <EM>smincol</EM>,  <EM>smaxrow</EM>,  and  <EM>smaxcol</EM> parameters
+       specify the edges of the rectangle to be displayed on  the
+       screen.   The  lower right-hand corner of the rectangle to
+       be displayed in the pad is calculated from the screen  co-
+       ordinates,  since  the  rectangles  must be the same size.
+       Both rectangles must be entirely  contained  within  their
+       respective  structures.  Negative values of <EM>pminrow</EM>, <EM>pmin-</EM>
+       <EM>col</EM>, <EM>sminrow</EM>, or <EM>smincol</EM> are treated as if they were zero.
 
+
+</PRE>
+<H3><a name="h3-pechochar">pechochar</a></H3><PRE>
        The <STRONG>pechochar</STRONG> routine is functionally equivalent to a call
        to  <STRONG>addch</STRONG>  followed by a call to <STRONG>refresh</STRONG>, a call to <STRONG>waddch</STRONG>
        followed by a call to <STRONG>wrefresh</STRONG>, or a call to  <STRONG>waddch</STRONG>  fol-
@@ -119,6 +131,9 @@
        last location of the pad on the screen is reused  for  the
        arguments to <STRONG>prefresh</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-pecho_wchar">pecho_wchar</a></H3><PRE>
        The  <STRONG>pecho_wchar</STRONG>  function is the analogous wide-character
        form of <STRONG>pechochar</STRONG>.  It outputs one character to a pad  and
        immediately  refreshes the pad.  It does this by a call to
@@ -126,7 +141,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure
        and  <STRONG>OK</STRONG>  (SVr4 only specifies "an integer value other than
        <STRONG>ERR</STRONG>") upon successful completion.
@@ -137,37 +152,36 @@
        X/Open  does not define any error conditions.  In this im-
        plementation
 
-              <STRONG>prefresh</STRONG> and <STRONG>pnoutrefresh</STRONG>
-                   return an error if the window pointer is null,
-                   or if the window is not really a pad or if the
-                   area to refresh extends off-screen or  if  the
-                   minimum coordinates are greater than the maxi-
-                   mum.
+          <STRONG>prefresh</STRONG> and <STRONG>pnoutrefresh</STRONG>
+               return an error if the window pointer is null,  or
+               if  the  window is not really a pad or if the area
+               to refresh extends off-screen or  if  the  minimum
+               coordinates are greater than the maximum.
 
-              <STRONG>pechochar</STRONG>
-                   returns an error if the window is not really a
-                   pad,  and the associated call to <STRONG>wechochar</STRONG> re-
-                   turns an error.
+          <STRONG>pechochar</STRONG>
+               returns  an  error  if  the window is not really a
+               pad, and the associated call to <STRONG>wechochar</STRONG>  returns
+               an error.
 
-              <STRONG>pecho_wchar</STRONG>
-                   returns an error if the window is not really a
-                   pad,  and  the  associated call to <STRONG>wecho_wchar</STRONG>
-                   returns an error.
+          <STRONG>pecho_wchar</STRONG>
+               returns  an  error  if  the window is not really a
+               pad, and the associated call  to  <STRONG>wecho_wchar</STRONG>  re-
+               turns an error.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>pechochar</STRONG> may be a macro.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       The XSI Curses standard, Issue  4  describes  these  func-
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       The  XSI  Curses  standard,  Issue 4 describes these func-
        tions.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_refresh.3x.html">curs_refresh(3x)</A></STRONG>,  <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>,  <STRONG>curs_add-</STRONG>
        <STRONG><A HREF="curs_addch.3x.html">ch(3x)</A></STRONG>.
 
@@ -175,10 +189,24 @@
 
                                                            <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-newpad">newpad</a></li>
+<li><a href="#h3-subpad">subpad</a></li>
+<li><a href="#h3-prefresh_-pnoutrefresh">prefresh, pnoutrefresh</a></li>
+<li><a href="#h3-pechochar">pechochar</a></li>
+<li><a href="#h3-pecho_wchar">pecho_wchar</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_print.3x.html b/doc/html/man/curs_print.3x.html
index 15f76f9..508f964 100644
--- a/doc/html/man/curs_print.3x.html
+++ b/doc/html/man/curs_print.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,38 +26,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_print.3x,v 1.8 2006/02/25 21:49:19 tom Exp @
+  * @Id: curs_print.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_print 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_print 3x</H1>
-<HR>
+<H1 class="no-header">curs_print 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>                                           <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>mcprint</STRONG> - ship binary data to printer
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>mcprint(char</STRONG> <STRONG>*data,</STRONG> <STRONG>int</STRONG> <STRONG>len);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        This  function  uses the <STRONG>mc5p</STRONG> or <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities,
        if they are present, to  ship  given  data  to  a  printer
        attached to the terminal.
@@ -70,21 +70,21 @@
        (typically  about  half  of its nominal cps rating).  Dot-
        matrix printers and 6-page-per-minute lasers can typically
        handle  80cps,  so a good conservative rule of thumb is to
-       sleep for a second after shipping each 80-character  line.
+       sleep for a second after shipping each 80-character line.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The  <STRONG>mcprint</STRONG>  function  returns <STRONG>ERR</STRONG> if the write operation
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       The <STRONG>mcprint</STRONG> function returns <STRONG>ERR</STRONG> if  the  write  operation
        aborted for some reason.  In this case, errno will contain
-       either  an  error  associated  with <STRONG>write(2)</STRONG> or one of the
+       either an error associated with <STRONG>write(2)</STRONG>  or  one  of  the
        following:
 
        ENODEV
             Capabilities for printer redirection do not exist.
 
        ENOMEM
-            Couldn't allocate sufficient  memory  to  buffer  the
+            Couldn't  allocate  sufficient  memory  to buffer the
             printer write.
 
        When <STRONG>mcprint</STRONG> succeeds, it returns the number of characters
@@ -92,30 +92,36 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       The <STRONG>mcprint</STRONG> call was designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and is  not
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       The  <STRONG>mcprint</STRONG> call was designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and is not
        found in SVr4 curses, 4.4BSD curses, or any other previous
        version of curses.
 
 
 </PRE>
-<H2>BUGS</H2><PRE>
-       Padding in the <STRONG>mc5p</STRONG>, <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities will not  be
+<H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+       Padding  in the <STRONG>mc5p</STRONG>, <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities will not be
        interpreted.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_print.3x.html">curs_print(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_printw.3x.html b/doc/html/man/curs_printw.3x.html
index 5e88d60..ae9aead 100644
--- a/doc/html/man/curs_printw.3x.html
+++ b/doc/html/man/curs_printw.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_printw.3x,v 1.17 2006/12/24 16:05:17 tom Exp @
+  * @Id: curs_printw.3x,v 1.20 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_printw 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_printw 3x</H1>
-<HR>
+<H1 class="no-header">curs_printw 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>                                         <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG>, <STRONG>mvwprintw</STRONG>, <STRONG>vwprintw</STRONG>, <STRONG>vw_printw</STRONG>
        - print formatted output in <STRONG>curses</STRONG> windows
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>printw(const</STRONG> <STRONG>char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>...);</STRONG>
@@ -67,21 +67,21 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  <STRONG>printw</STRONG>,  <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG> and <STRONG>mvwprintw</STRONG> routines are
-       analogous to  <STRONG>printf</STRONG>  [see  <STRONG><A HREF="printf.3.html">printf(3)</A></STRONG>].   In  effect,  the
+       analogous to  <STRONG>printf</STRONG>  [see  <STRONG>printf(3)</STRONG>].   In  effect,  the
        string that would be output by <STRONG>printf</STRONG> is output instead as
        though <STRONG>waddstr</STRONG> were used on the given window.
 
        The <STRONG>vwprintw</STRONG>  and  <STRONG>wv_printw</STRONG>  routines  are  analogous  to
-       <STRONG>vprintf</STRONG>  [see  <STRONG><A HREF="printf.3.html">printf(3)</A></STRONG>]  and  perform  a <STRONG>wprintw</STRONG> using a
+       <STRONG>vprintf</STRONG>  [see  <STRONG>printf(3)</STRONG>]  and  perform  a <STRONG>wprintw</STRONG> using a
        variable argument list.  The third argument is a  <STRONG>va_list</STRONG>,
        a   pointer   to  a  list  of  arguments,  as  defined  in
        <STRONG>&lt;stdarg.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure
        and  <STRONG>OK</STRONG>  (SVr4 only specifies "an integer value other than
        <STRONG>ERR</STRONG>") upon successful completion.
@@ -91,9 +91,13 @@
        enough memory for the buffer used to format  the  results.
        It will return an error if the window pointer is null.
 
+       Functions  with a "mv" prefix first perform a cursor move-
+       ment using <STRONG>wmove</STRONG>, and return an error if the  position  is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  XSI  Curses  standard,  Issue 4 describes these func-
        tions.  The function <STRONG>vwprintw</STRONG> is marked TO  BE  WITHDRAWN,
        and  is  to  be replaced by a function <STRONG>vw_printw</STRONG> using the
@@ -106,17 +110,22 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="printf.3.html">printf(3)</A></STRONG>, <STRONG>vprintf(3)</STRONG>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG>vprintf(3)</STRONG>
 
 
 
                                                         <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_refresh.3x.html b/doc/html/man/curs_refresh.3x.html
index e169d95..b739e07 100644
--- a/doc/html/man/curs_refresh.3x.html
+++ b/doc/html/man/curs_refresh.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2001,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2005,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_refresh.3x,v 1.12 2005/05/15 16:18:49 tom Exp @
+  * @Id: curs_refresh.3x,v 1.15 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_refresh 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_refresh 3x</H1>
-<HR>
+<H1 class="no-header">curs_refresh 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>                                       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>doupdate</STRONG>, <STRONG>redrawwin</STRONG>, <STRONG>refresh</STRONG>, <STRONG>wnoutrefresh</STRONG>, <STRONG>wredrawln</STRONG>,
        <STRONG>wrefresh</STRONG> - refresh <STRONG>curses</STRONG> windows and lines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>refresh(void);</STRONG>
@@ -64,7 +64,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>refresh</STRONG> and <STRONG>wrefresh</STRONG>  routines  (or  <STRONG>wnoutrefresh</STRONG>  and
        <STRONG>doupdate</STRONG>)  must be called to get actual output to the ter-
        minal, as other routines  merely  manipulate  data  struc-
@@ -116,7 +116,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines  that  return an integer return <STRONG>ERR</STRONG> upon failure,
        and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value  other  than
        <STRONG>ERR</STRONG>") upon successful completion.
@@ -134,12 +134,12 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>refresh</STRONG> and <STRONG>redrawwin</STRONG> may be macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The XSI Curses standard, Issue  4  describes  these  func-
        tions.
 
@@ -154,17 +154,23 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
+<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_outopts.3x.html">curs_outopts(3x)</A></STRONG> <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
 
 
 
                                                        <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_scanw.3x.html b/doc/html/man/curs_scanw.3x.html
index 56618ff..ca8fe63 100644
--- a/doc/html/man/curs_scanw.3x.html
+++ b/doc/html/man/curs_scanw.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2000,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_scanw.3x,v 1.14 2006/12/24 16:05:49 tom Exp @
+  * @Id: curs_scanw.3x,v 1.17 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_scanw 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_scanw 3x</H1>
-<HR>
+<H1 class="no-header">curs_scanw 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>                                           <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG>, <STRONG>mvscanw</STRONG>, <STRONG>mvwscanw</STRONG>, <STRONG>vwscanw</STRONG>, <STRONG>vw_scanw</STRONG> - con-
        vert formatted input from a <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>scanw(char</STRONG> <STRONG>*fmt,</STRONG> <STRONG>...);</STRONG>
@@ -64,11 +64,11 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG> and <STRONG>mvscanw</STRONG> routines  are  analogous  to
-       <STRONG>scanf</STRONG>  [see <STRONG><A HREF="scanf.3.html">scanf(3)</A></STRONG>].  The effect of these routines is as
+       <STRONG>scanf</STRONG>  [see <STRONG>scanf(3)</STRONG>].  The effect of these routines is as
        though <STRONG>wgetstr</STRONG> were called on the window, and the  result-
-       ing line used as input for <STRONG><A HREF="sscanf.3.html">sscanf(3)</A></STRONG>.  Fields which do not
+       ing line used as input for <STRONG>sscanf(3)</STRONG>.  Fields which do not
        map to a variable in the <EM>fmt</EM> field are lost.
 
        The <STRONG>vwscanw</STRONG> and <STRONG>vw_scanw</STRONG> routines are analogous to <STRONG>vscanf</STRONG>.
@@ -78,7 +78,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        <STRONG>vwscanw</STRONG> returns <STRONG>ERR</STRONG> on failure and an integer equal to the
        number of fields scanned on success.
 
@@ -86,9 +86,13 @@
        <STRONG>wscanw</STRONG>,  <STRONG>mvscanw</STRONG>  and  <STRONG>mvwscanw</STRONG>  routines to determine the
        number of fields which were mapped in the call.
 
+       Functions with a "mv" prefix first perform a cursor  move-
+       ment  using  <STRONG>wmove</STRONG>, and return an error if the position is
+       outside the window, or if the window pointer is null.
+
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The XSI Curses standard, Issue  4  describes  these  func-
        tions.   The  function  <STRONG>vwscanw</STRONG> is marked TO BE WITHDRAWN,
        and is to be replaced by a  function  <STRONG>vw_scanw</STRONG>  using  the
@@ -113,17 +117,22 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>, <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG><A HREF="scanf.3.html">scanf(3)</A></STRONG>
+<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_getstr.3x.html">curs_getstr(3x)</A></STRONG>, <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG>scanf(3)</STRONG>
 
 
 
                                                          <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_scr_dump.3x.html b/doc/html/man/curs_scr_dump.3x.html
index 8dd6321..799cba9 100644
--- a/doc/html/man/curs_scr_dump.3x.html
+++ b/doc/html/man/curs_scr_dump.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_scr_dump.3x,v 1.7 2006/12/24 16:05:49 tom Exp @
+  * @Id: curs_scr_dump.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_scr_dump 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_scr_dump 3x</H1>
-<HR>
+<H1 class="no-header">curs_scr_dump 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>                                     <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>scr_dump</STRONG>, <STRONG>scr_restore</STRONG>, <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG> - read (write) a
        <STRONG>curses</STRONG> screen from (to) a file
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>scr_dump(const</STRONG> <STRONG>char</STRONG> <STRONG>*filename);</STRONG>
@@ -62,7 +62,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>scr_dump</STRONG> routine dumps the  current  contents  of  the
        virtual screen to the file <EM>filename</EM>.
 
@@ -94,7 +94,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        All  routines  return  the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
        upon success.
 
@@ -104,13 +104,13 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note  that  <STRONG>scr_init</STRONG>,  <STRONG>scr_set</STRONG>,  and  <STRONG>scr_restore</STRONG>  may  be
        macros.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  XSI  Curses  standard, Issue 4, describes these func-
        tions (adding the const qualifiers).
 
@@ -120,18 +120,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_initscr.3x.html">curs_initscr(3x)</A></STRONG>,       <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,
-       <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="system.3.html">system(3)</A></STRONG>
+       <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG>system(3)</STRONG>
 
 
 
                                                       <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_scroll.3x.html b/doc/html/man/curs_scroll.3x.html
index 7f41572..bef6212 100644
--- a/doc/html/man/curs_scroll.3x.html
+++ b/doc/html/man/curs_scroll.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,31 +26,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_scroll.3x,v 1.13 2006/02/25 21:49:19 tom Exp @
+  * @Id: curs_scroll.3x,v 1.15 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_scroll 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_scroll 3x</H1>
-<HR>
+<H1 class="no-header">curs_scroll 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>                                         <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>scroll</STRONG>, <STRONG>scrl</STRONG>, <STRONG>wscrl</STRONG> - scroll a <STRONG>curses</STRONG> window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>scroll(WINDOW</STRONG> <STRONG>*win);</STRONG>
@@ -60,7 +60,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  <STRONG>scroll</STRONG>  routine scrolls the window up one line.  This
        involves moving the lines in the  window  data  structure.
        As  an optimization, if the scrolling region of the window
@@ -78,7 +78,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return <STRONG>ERR</STRONG> upon failure, and <STRONG>OK</STRONG> (SVr4  only
        specifies "an integer value other than <STRONG>ERR</STRONG>") upon success-
        ful completion.
@@ -91,7 +91,7 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>scrl</STRONG> and <STRONG>scroll</STRONG> may be macros.
 
        The SVr4 documentation says that the optimization of phys-
@@ -109,23 +109,29 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  XSI  Curses  standard,  Issue 4 describes these func-
        tions.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_outopts.3x.html">curs_outopts(3x)</A></STRONG>
 
 
 
                                                         <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_slk.3x.html b/doc/html/man/curs_slk.3x.html
index e76dcc7..cb77f43 100644
--- a/doc/html/man/curs_slk.3x.html
+++ b/doc/html/man/curs_slk.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -27,27 +26,28 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_slk.3x,v 1.16 2007/06/02 20:40:07 tom Exp @
+  * @Id: curs_slk.3x,v 1.22 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_slk 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_slk 3x</H1>
-<HR>
+<H1 class="no-header">curs_slk 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>                                               <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
-       <STRONG>slk_init</STRONG>, <STRONG>slk_set</STRONG>, <STRONG>slk_refresh</STRONG>, <STRONG>slk_noutrefresh</STRONG>,
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>slk_init</STRONG>, <STRONG>slk_set</STRONG>, <STRONG>slk_wset</STRONG>, <STRONG>slk_refresh</STRONG>, <STRONG>slk_noutrefresh</STRONG>,
        <STRONG>slk_label</STRONG>, <STRONG>slk_clear</STRONG>, <STRONG>slk_restore</STRONG>, <STRONG>slk_touch</STRONG>, <STRONG>slk_attron</STRONG>,
        <STRONG>slk_attrset</STRONG>, <STRONG>slk_attroff</STRONG>, <STRONG>slk_attr_on</STRONG>, <STRONG>slk_attr_set</STRONG>,
        <STRONG>slk_attr_off</STRONG>, <STRONG>slk_attr</STRONG>, <STRONG>slk_color</STRONG> - <STRONG>curses</STRONG> soft label
@@ -55,7 +55,7 @@
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>slk_init(int</STRONG> <STRONG>fmt);</STRONG>
@@ -71,149 +71,171 @@
        <STRONG>int</STRONG> <STRONG>slk_attrset(const</STRONG> <STRONG>chtype</STRONG> <STRONG>attrs);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_attr_on(attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
        <STRONG>int</STRONG> <STRONG>slk_attr_off(const</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG> <STRONG>opts);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_attr_set(const</STRONG> <STRONG>attr_t</STRONG> <STRONG>attrs,</STRONG>
-            <STRONG>short</STRONG> <STRONG>color_pair_number,</STRONG> <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
+       <STRONG>int</STRONG>  <STRONG>slk_attr_set(const</STRONG>  <STRONG>attr_t</STRONG>  <STRONG>attrs,</STRONG>  <STRONG>short</STRONG> <STRONG>color_pair,</STRONG>
+       <STRONG>void*</STRONG> <STRONG>opts);</STRONG>
        <STRONG>attr_t</STRONG> <STRONG>slk_attr(void);</STRONG>
-       <STRONG>int</STRONG> <STRONG>slk_color(short</STRONG> <STRONG>color_pair_number);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_color(short</STRONG> <STRONG>color_pair);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_wset(int</STRONG> <STRONG>labnum,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*label,</STRONG> <STRONG>int</STRONG> <STRONG>fmt);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The slk* functions manipulate the set of soft function-key
-       labels that exist on many terminals.  For those  terminals
+       labels  that exist on many terminals.  For those terminals
        that do not have soft labels, <STRONG>curses</STRONG> takes over the bottom
-       line of <STRONG>stdscr</STRONG>, reducing the size of <STRONG>stdscr</STRONG> and the  vari-
-       able  <STRONG>LINES</STRONG>.  <STRONG>curses</STRONG> standardizes on eight labels of up to
-       eight characters each. In addition to  this,  the  ncurses
-       implementation  supports  a mode where it simulates 12 la-
-       bels of up to five characters each. This  is  most  common
-       for  todays  PC  like  enduser  devices.  Please note that
-       ncurses simulates this mode by taking over up to two lines
-       at  the  bottom  of the screen, it does not try to use any
-       hardware support for this mode.
+       line  of <STRONG>stdscr</STRONG>, reducing the size of <STRONG>stdscr</STRONG> and the vari-
+       able <STRONG>LINES</STRONG>.  <STRONG>curses</STRONG> standardizes on eight labels of up  to
+       eight  characters  each.  In addition to this, the ncurses
+       implementation supports a mode where it simulates  12  la-
+       bels  of  up  to five characters each.  This is useful for
+       today's PC-like enduser devices.  ncurses  simulates  this
+       mode  by  taking over up to two lines at the bottom of the
+       screen; it does not try to use any  hardware  support  for
+       this mode.
 
-       The <STRONG>slk_init</STRONG> routine must  be  called  before  <STRONG>initscr</STRONG>  or
+       The  <STRONG>slk_init</STRONG>  routine  must  be  called before <STRONG>initscr</STRONG> or
        <STRONG>newterm</STRONG> is called.  If <STRONG>initscr</STRONG> eventually uses a line from
        <STRONG>stdscr</STRONG> to emulate the soft labels, then <EM>fmt</EM> determines how
-       the  labels  are arranged on the screen.  Setting <EM>fmt</EM> to <STRONG>0</STRONG>
-       indicates a 3-2-3 arrangement of the labels, <STRONG>1</STRONG> indicates a
-       4-4 arrangement and <STRONG>2</STRONG> indicates the PC like 4-4-4 mode. If
-       <STRONG>fmt</STRONG> is set to <STRONG>3</STRONG>, it is again the PC like 4-4-4  mode,  but
-       in  addition  an index line is generated, helping the user
-       to identify the key numbers easily.
+       the labels are arranged on the screen:
 
-       The <STRONG>slk_set</STRONG> routine requires <EM>labnum</EM> to be a label  number,
-       from <STRONG>1</STRONG> to <STRONG>8</STRONG> (resp. <STRONG>12</STRONG>); <EM>label</EM> must be the string to be put
-       on the label, up  to  eight  (resp.  five)  characters  in
-       length.   A  null string or a null pointer sets up a blank
-       label. <EM>fmt</EM> is either <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG>,  indicating  whether  the
-       label  is  to be left-justified, centered, or right-justi-
-       fied, respectively, within the label.
+              <STRONG>0</STRONG>  indicates a 3-2-3 arrangement of the labels.
+
+              <STRONG>1</STRONG>  indicates a 4-4 arrangement
+
+              <STRONG>2</STRONG>  indicates the PC-like 4-4-4 mode.
+
+              <STRONG>3</STRONG>  is again the PC-like 4-4-4 mode, but in addition
+                 an  index line is generated, helping the user to
+                 identify the key numbers easily.
+
+       The <STRONG>slk_set</STRONG> routine (and  the  <STRONG>slk_wset</STRONG>  routine  for  the
+       wide-character library) has three parameters:
+
+              <EM>labnum</EM>
+                   is  the  label number, from <STRONG>1</STRONG> to <STRONG>8</STRONG> (12 for <EM>fmt</EM>
+                   in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or <STRONG>3</STRONG>);
+
+              <EM>label</EM>
+                   is be the string to put on the  label,  up  to
+                   eight  (five  for  <EM>fmt</EM>  in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or <STRONG>3</STRONG>)
+                   characters in length.  A null string or a null
+                   pointer sets up a blank label.
+
+              <EM>fmt</EM>  is  either  <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG>, indicating whether the
+                   label is to be  left-justified,  centered,  or
+                   right-justified,  respectively, within the la-
+                   bel.
 
        The <STRONG>slk_refresh</STRONG> and <STRONG>slk_noutrefresh</STRONG> routines correspond to
        the <STRONG>wrefresh</STRONG> and <STRONG>wnoutrefresh</STRONG> routines.
 
        The  <STRONG>slk_label</STRONG> routine returns the current label for label
-       number <EM>labnum</EM>, with leading and trailing blanks  stripped.
+       number <EM>labnum</EM>, with leading and trailing blanks stripped.
 
-       The  <STRONG>slk_clear</STRONG>  routine  clears  the  soft labels from the
+       The <STRONG>slk_clear</STRONG> routine clears  the  soft  labels  from  the
        screen.
 
-       The <STRONG>slk_restore</STRONG> routine restores the soft  labels  to  the
+       The  <STRONG>slk_restore</STRONG>  routine  restores the soft labels to the
        screen after a <STRONG>slk_clear</STRONG> has been performed.
 
-       The  <STRONG>slk_touch</STRONG>  routine  forces  all the soft labels to be
+       The <STRONG>slk_touch</STRONG> routine forces all the  soft  labels  to  be
        output the next time a <STRONG>slk_noutrefresh</STRONG> is performed.
 
        The <STRONG>slk_attron</STRONG>, <STRONG>slk_attrset</STRONG>, <STRONG>slk_attroff</STRONG> and <STRONG>slk_attr</STRONG> rou-
        tines correspond to <STRONG>attron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>attroff</STRONG> and <STRONG>attr_get</STRONG>.
-       They have an effect only if soft labels are  simulated  on
-       the  bottom line of the screen.  The default highlight for
+       They  have  an effect only if soft labels are simulated on
+       the bottom line of the screen.  The default highlight  for
        soft keys is A_STANDOUT (as in System V curses, which does
        not document this fact).
 
-       The  <STRONG>slk_color</STRONG> routine corresponds to <STRONG>color_set</STRONG>. It has an
-       effect only if soft labels are  simulated  on  the  bottom
+       The <STRONG>slk_color</STRONG> routine corresponds to <STRONG>color_set</STRONG>.  It has an
+       effect  only  if  soft  labels are simulated on the bottom
        line of the screen.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return <STRONG>ERR</STRONG> upon failure and OK (SVr4 speci-
        fies only "an integer value other than <STRONG>ERR</STRONG>") upon success-
        ful completion.
 
-       X/Open  defines  no error conditions.  In this implementa-
+       X/Open defines no error conditions.  In  this  implementa-
        tion
 
               <STRONG>slk_attr</STRONG>
-                   returns the attribute used for the soft  keys.
+                   returns the attribute used for the soft keys.
 
               <STRONG>slk_attroff</STRONG>, <STRONG>slk_attron</STRONG>, <STRONG>slk_clear</STRONG>,
               <STRONG>slk_noutrefresh</STRONG>, <STRONG>slk_refresh</STRONG>, <STRONG>slk_touch</STRONG>
-                   return  an  error if the terminal or the soft-
+                   return an error if the terminal or  the  soft-
                    keys were not initialized.
 
               <STRONG>slk_attrset</STRONG>
-                   returns an error if the terminal or the  soft-
+                   returns  an error if the terminal or the soft-
                    keys were not initialized.
 
               <STRONG>slk_attr_set</STRONG>
-                   returns  an error if the terminal or the soft-
-                   keys were not initialized, or the  color  pair
+                   returns an error if the terminal or the  soft-
+                   keys  were  not initialized, or the color pair
                    is outside the range 0..COLOR_PAIRS-1, or opts
                    is not null.
 
               <STRONG>slk_color</STRONG>
-                   returns an error if the terminal or the  soft-
-                   keys  were  not initialized, or the color pair
+                   returns  an error if the terminal or the soft-
+                   keys were not initialized, or the  color  pair
                    is outside the range 0..COLOR_PAIRS-1.
 
               <STRONG>slk_init</STRONG>
-                   returns an error if the  format  parameter  is
+                   returns  an  error  if the format parameter is
                    outside the range 0..3.
 
               <STRONG>slk_label</STRONG>
                    returns <STRONG>NULL</STRONG> on error.
 
               <STRONG>slk_set</STRONG>
-                   returns  an error if the terminal or the soft-
-                   keys were not initialized, or the  <EM>labnum</EM>  pa-
-                   rameter  is outside the range of label counts,
-                   or if the  format  parameter  is  outside  the
+                   returns an error if the terminal or the  soft-
+                   keys  were  not initialized, or the <EM>labnum</EM> pa-
+                   rameter is outside the range of label  counts,
+                   or  if  the  format  parameter  is outside the
                    range 0..2, or if memory for the labels cannot
                    be allocated.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Most applications would use <STRONG>slk_noutrefresh</STRONG> because a <STRONG>wre-</STRONG>
        <STRONG>fresh</STRONG> is likely to follow soon.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       The  XSI  Curses  standard, Issue 4, describes these func-
-       tions.  It changes the argument type of the  attribute-ma-
-       nipulation  functions <STRONG>slk_attron</STRONG>, <STRONG>slk_attroff</STRONG>, <STRONG>slk_attrset</STRONG>
-       to be <STRONG>attr_t</STRONG>, and adds <STRONG>const</STRONG> qualifiers. The format  codes
-       <STRONG>2</STRONG>  and <STRONG>3</STRONG> for <STRONG>slk_init()</STRONG> and the function <STRONG>slk_attr</STRONG> are spe-
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       The XSI Curses standard, Issue 4,  describes  these  func-
+       tions.   It changes the argument type of the attribute-ma-
+       nipulation functions <STRONG>slk_attron</STRONG>, <STRONG>slk_attroff</STRONG>,  <STRONG>slk_attrset</STRONG>
+       to be <STRONG>attr_t</STRONG>, and adds <STRONG>const</STRONG> qualifiers.  The format codes
+       <STRONG>2</STRONG> and <STRONG>3</STRONG> for <STRONG>slk_init()</STRONG> and the function <STRONG>slk_attr</STRONG> are  spe-
        cific to ncurses.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,   <STRONG>curs_re-</STRONG>
-       <STRONG><A HREF="curs_refresh.3x.html">fresh(3x)</A></STRONG>
+<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_attr.3x.html">curs_attr(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,  <STRONG>curs_re-</STRONG>
+       <STRONG><A HREF="curs_refresh.3x.html">fresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
 
 
 
                                                            <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_sp_funcs.3x.html b/doc/html/man/curs_sp_funcs.3x.html
new file mode 100644
index 0000000..6fc3240
--- /dev/null
+++ b/doc/html/man/curs_sp_funcs.3x.html
@@ -0,0 +1,297 @@
+<!-- 
+  ****************************************************************************
+  * Copyright (c) 2010,2013 Free Software Foundation, Inc.                   *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: curs_sp_funcs.3x,v 1.6 2013/06/22 17:53:59 tom Exp @
+  * ***************************************************************************
+  * ***************************************************************************
+  * ***************************************************************************
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>curs_sp_funcs 3x</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">curs_sp_funcs 3x</H1>
+<PRE>
+<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>                                     <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
+
+
+
+
+</PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       new_prescr - <STRONG>curses</STRONG> screen-pointer extension
+
+
+</PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>assume_default_colors_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>baudrate_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>beep_sp(SCREEN*);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>can_change_color_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>cbreak_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>color_content_sp(SCREEN*,</STRONG> <STRONG>short,</STRONG> <STRONG>short*,</STRONG> <STRONG>short*,</STRONG> <STRONG>short*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>curs_set_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>define_key_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>def_prog_mode_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>def_shell_mode_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>delay_output_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>doupdate_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>echo_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>endwin_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>erasechar_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>filter_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>flash_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>flushinp_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>get_escdelay_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>getmouse_sp(SCREEN*,</STRONG> <STRONG>MEVENT*);</STRONG>
+       <STRONG>WINDOW*</STRONG> <STRONG>getwin_sp(SCREEN*,</STRONG> <STRONG>FILE*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>halfdelay_sp(SCREEN*);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>has_colors_sp(SCREEN*);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>has_ic_sp(SCREEN*);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>has_il_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>has_key_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>has_mouse_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>init_color_sp(SCREEN*,</STRONG> <STRONG>short,</STRONG> <STRONG>short,</STRONG> <STRONG>short,</STRONG> <STRONG>short);</STRONG>
+       <STRONG>int</STRONG> <STRONG>init_pair_sp(SCREEN*,</STRONG> <STRONG>short,</STRONG> <STRONG>short,</STRONG> <STRONG>short);</STRONG>
+       <STRONG>int</STRONG> <STRONG>intrflush_sp(SCREEN*,</STRONG> <STRONG>WINDOW*,</STRONG> <STRONG>bool);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>isendwin_sp(SCREEN*);</STRONG>
+       <STRONG>bool</STRONG> <STRONG>is_term_resized_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>char*</STRONG> <STRONG>keybound_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>key_defined_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>keyname_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>keyok_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>bool);</STRONG>
+       <STRONG>char</STRONG> <STRONG>killchar_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mcprint_sp(SCREEN*,</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mouseinterval_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>mmask_t</STRONG> <STRONG>mousemask_sp(SCREEN*,</STRONG> <STRONG>mmask_t,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvcur_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>napms_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>WINDOW*</STRONG> <STRONG>newpad_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>SCREEN*</STRONG> <STRONG>new_prescr(void);</STRONG>
+       <STRONG>SCREEN*</STRONG> <STRONG>newterm_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>FILE</STRONG> <STRONG>*,</STRONG> <STRONG>FILE</STRONG> <STRONG>*);</STRONG>
+       <STRONG>WINDOW*</STRONG> <STRONG>newwin_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>nl_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>nocbreak_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>noecho_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>nofilter_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>nonl_sp(SCREEN*);</STRONG>
+       <STRONG>void</STRONG> <STRONG>noqiflush_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>noraw_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>pair_content_sp(SCREEN*,</STRONG> <STRONG>short,</STRONG> <STRONG>short*,</STRONG> <STRONG>short*);</STRONG>
+       <STRONG>void</STRONG> <STRONG>qiflush_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>raw_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>reset_prog_mode_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>reset_shell_mode_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>resetty_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>resize_term_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>resizeterm_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>restartterm_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char*,</STRONG> <STRONG>int,</STRONG> <STRONG>int</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ripoffline_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>int</STRONG> <STRONG>(*)(WINDOW*,</STRONG> <STRONG>int));</STRONG>
+       <STRONG>int</STRONG> <STRONG>savetty_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>scr_init_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>scr_restore_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>scr_set_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>TERMINAL*</STRONG> <STRONG>set_curterm_sp(SCREEN*,</STRONG> <STRONG>TERMINAL*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>set_escdelay_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>set_tabsize_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attroff_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>chtype);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attron_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>chtype);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attr_set_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>attr_t,</STRONG> <STRONG>short,</STRONG> <STRONG>void*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attrset_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>chtype);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_attr_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_clear_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_color_sp(SCREEN*,</STRONG> <STRONG>short);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_init_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_label_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_noutrefresh_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_refresh_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_restore_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_set_sp(SCREEN*,</STRONG> <STRONG>int,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>slk_touch_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>start_color_sp(SCREEN*);</STRONG>
+       <STRONG>attr_t</STRONG> <STRONG>term_attrs_sp(SCREEN*);</STRONG>
+       <STRONG>chtype</STRONG> <STRONG>termattrs_sp(SCREEN*);</STRONG>
+       <STRONG>char*</STRONG> <STRONG>termname_sp(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>typeahead_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char*</STRONG> <STRONG>unctrl_sp(SCREEN*,</STRONG> <STRONG>chtype);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ungetch_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>ungetmouse_sp(SCREEN*,MEVENT</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>unget_wch_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t);</STRONG>
+       <STRONG>int</STRONG> <STRONG>use_default_colors_sp(SCREEN*);</STRONG>
+       <STRONG>void</STRONG> <STRONG>use_env_sp(SCREEN*,</STRONG> <STRONG>bool);</STRONG>
+       <STRONG>int</STRONG> <STRONG>use_legacy_coding_sp(SCREEN*,</STRONG> <STRONG>int);</STRONG>
+       <STRONG>int</STRONG> <STRONG>vid_attr_sp(SCREEN*,</STRONG> <STRONG>attr_t,</STRONG> <STRONG>short,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>vidattr_sp(SCREEN*,</STRONG> <STRONG>chtype);</STRONG>
+       <STRONG>int</STRONG> <STRONG>vid_puts_sp(SCREEN*,</STRONG> <STRONG>attr_t,</STRONG> <STRONG>short,</STRONG> <STRONG>void</STRONG> <STRONG>*,</STRONG> <STRONG>NCURSES_SP_OUTC);</STRONG>
+       <STRONG>int</STRONG> <STRONG>vidputs_sp(SCREEN*,</STRONG> <STRONG>chtype,</STRONG> <STRONG>NCURSES_SP_OUTC);</STRONG>
+       <STRONG>wchar_t*</STRONG> <STRONG>wunctrl_sp(SCREEN*,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*);</STRONG>
+
+       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>new_form_sp(SCREEN*,</STRONG> <STRONG>FIELD</STRONG> <STRONG>**);</STRONG>
+
+       <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>new_menu_sp(SCREEN*,</STRONG> <STRONG>ITEM</STRONG> <STRONG>**);</STRONG>
+
+       <STRONG>#include</STRONG> <STRONG>&lt;panel.h&gt;</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>ceiling_panel(SCREEN*);</STRONG>
+       <STRONG>PANEL*</STRONG> <STRONG>ground_panel(SCREEN*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>update_panels_sp(SCREEN*);</STRONG>
+
+       <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>del_curterm_sp(SCREEN*,</STRONG> <STRONG>TERMINAL</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>putp_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>tgetflag_sp(SCREEN*,</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>tgetent_sp(SCREEN*,</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>tgetnum_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>char*</STRONG> <STRONG>tgetstr_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>char</STRONG> <STRONG>**);</STRONG>
+       <STRONG>int</STRONG> <STRONG>tigetflag_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>tigetnum_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>char*</STRONG> <STRONG>tigetstr_sp(SCREEN*,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>tputs_sp(SCREEN*,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*,</STRONG> <STRONG>int,</STRONG> <STRONG>NCURSES_SP_OUTC);</STRONG>
+
+
+</PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       This  implementation can be configured to provide a set of
+       functions which improve the  ability  to  manage  multiple
+       screens.  This feature can be added to any of the configu-
+       rations supported by  ncurses;  it  adds  new  entrypoints
+       without changing the meaning of any of the existing ones.
+
+
+</PRE>
+<H3><a name="h3-IMPROVED-FUNCTIONS">IMPROVED FUNCTIONS</a></H3><PRE>
+       Most  of  the functions are new versions of existing func-
+       tions.  A parameter is added at the front of the parameter
+       list.  It is a SCREEN pointer.
+
+       The  existing  functions all use the current screen, which
+       is a static variable.   The  extended  functions  use  the
+       specified screen, thereby reducing the number of variables
+       which must be modified to update multiple screens.
+
+
+</PRE>
+<H3><a name="h3-NEW-FUNCTIONS">NEW FUNCTIONS</a></H3><PRE>
+       Here are the new functions:
+
+       ceiling_panel
+            this returns a pointer to the topmost  panel  in  the
+            given screen.
+
+       ground_panel
+            this  returns  a  pointer  to the lowest panel in the
+            given screen.
+
+       new_prescr
+            when creating a new screen, the library  uses  static
+            variables   which   have   been   preset,   e.g.,  by
+            <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, etc.  With the screen-point-
+            er extension, there are situations where it must cre-
+            ate a current screen before  the  unextended  library
+            does.   The <STRONG>new_prescr</STRONG> function is used internally to
+            handle these cases.  It is also provided as an entry-
+            point  to allow applications to customize the library
+            initialization.
+
+
+</PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       This extension introduces some new names:
+
+       NCURSES_SP_FUNCS
+            This is set to the library  patch-level  number.   In
+            the  unextended library, this is zero (0), to make it
+            useful for checking if the extension is provided.
+
+       NCURSES_SP_NAME
+            The new functions are named using  the  macro  <EM>NCURS-</EM>
+            <EM>ES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>NAME</EM>,  which  hides  the actual implementation.
+            Currently this adds a "_sp" suffix to the name of the
+            unextended  function.   This  manual page indexes the
+            extensions showing the full name.  However the proper
+            usage  of  these functions uses the macro, to provide
+            for the possibility of changing the naming convention
+            for specific library configurations.
+
+       NCURSES_SP_OUTC
+            This  is  a  new  function-pointer type to use in the
+            screen-pointer functions  where  an  <EM>NCURSES</EM><STRONG>_</STRONG><EM>OUTC</EM>  is
+            used in the unextended library.
+
+       NCURSES_OUTC
+            This  is  a  function-pointer type used for the cases
+            where a function  passes  characters  to  the  output
+            stream, e.g., <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>.
+
+
+</PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  are  specific  to ncurses.  They were not
+       supported on Version 7, BSD or System  V  implementations.
+       It  is  recommended that any code depending on ncurses ex-
+       tensions be conditioned using <EM>NCURSES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>FUNCS</EM>.
+
+
+</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_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>.
+
+
+
+                                                      <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-IMPROVED-FUNCTIONS">IMPROVED FUNCTIONS</a></li>
+<li><a href="#h3-NEW-FUNCTIONS">NEW FUNCTIONS</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_termattrs.3x.html b/doc/html/man/curs_termattrs.3x.html
index daf3a76..37d2c98 100644
--- a/doc/html/man/curs_termattrs.3x.html
+++ b/doc/html/man/curs_termattrs.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2015 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_termattrs.3x,v 1.10 2007/06/02 20:40:07 tom Exp @
+  * @Id: curs_termattrs.3x,v 1.13 2015/07/21 00:03:34 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_termattrs 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_termattrs 3x</H1>
-<HR>
+<H1 class="no-header">curs_termattrs 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>                                   <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>baudrate</STRONG>, <STRONG>erasechar</STRONG>, <STRONG>erasewchar</STRONG>, <STRONG>has_ic</STRONG>, <STRONG>has_il</STRONG>, <STRONG>killchar</STRONG>,
        <STRONG>killwchar</STRONG>, <STRONG>longname</STRONG>,  <STRONG>term_attrs</STRONG>,  <STRONG>termattrs</STRONG>,  <STRONG>termname</STRONG>  -
        <STRONG>curses</STRONG> environment query routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>baudrate(void);</STRONG>
@@ -70,11 +70,17 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-baudrate">baudrate</a></H3><PRE>
        The  <STRONG>baudrate</STRONG> routine returns the output speed of the ter-
        minal.  The number returned is in  bits  per  second,  for
        example <STRONG>9600</STRONG>, and is an integer.
 
+
+</PRE>
+<H3><a name="h3-erasechar_-erasewchar">erasechar, erasewchar</a></H3><PRE>
        The  <STRONG>erasechar</STRONG>  routine  returns  the user's current erase
        character.
 
@@ -83,6 +89,9 @@
        has been defined, the routine fails and the location  ref-
        erenced by <EM>ch</EM> is not changed.
 
+
+</PRE>
+<H3><a name="h3-has_is_-has_il">has_is, has_il</a></H3><PRE>
        The <STRONG>has_ic</STRONG> routine is true if the terminal has insert- and
        delete- character capabilities.
 
@@ -92,6 +101,9 @@
        would  be  appropriate to turn on physical scrolling using
        <STRONG>scrollok</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-killchar_-killwchar">killchar, killwchar</a></H3><PRE>
        The <STRONG>killchar</STRONG> routine returns the user's current line  kill
        character.
 
@@ -100,6 +112,9 @@
        character  has  been  defined,  the  routine fails and the
        location referenced by <EM>ch</EM> is not changed.
 
+
+</PRE>
+<H3><a name="h3-longname">longname</a></H3><PRE>
        The <STRONG>longname</STRONG> routine returns a pointer to  a  static  area
        containing  a verbose description of the current terminal.
        The maximum length of a verbose description is 128 charac-
@@ -109,21 +124,27 @@
        saved between calls to <STRONG>newterm</STRONG> if <STRONG>longname</STRONG> is going to  be
        used with multiple terminals.
 
+
+</PRE>
+<H3><a name="h3-termattrs_-term_attrs">termattrs, term_attrs</a></H3><PRE>
        If  a  given  terminal  does not support a video attribute
        that an application program is trying to use,  <STRONG>curses</STRONG>  may
-       substitute  a  different  video  attribute  for  it.   The
-       <STRONG>termattrs</STRONG> and <STRONG>term_attrs</STRONG> functions return a logical <STRONG>OR</STRONG>  of
-       all  video  attributes  supported by the terminal using <EM>A</EM><STRONG>_</STRONG>
-       and <EM>WA</EM><STRONG>_</STRONG> constants respectively.  This information is  use-
-       ful  when a <STRONG>curses</STRONG> program needs complete control over the
+       substitute  a  different video attribute for it.  The <STRONG>ter-</STRONG>
+       <STRONG>mattrs</STRONG> and <STRONG>term_attrs</STRONG> functions return a logical <STRONG>OR</STRONG> of all
+       video  attributes  supported  by the terminal using <EM>A</EM><STRONG>_</STRONG> and
+       <EM>WA</EM><STRONG>_</STRONG> constants respectively.  This  information  is  useful
+       when  a  <STRONG>curses</STRONG>  program  needs  complete control over the
        appearance of the screen.
 
+
+</PRE>
+<H3><a name="h3-termname">termname</a></H3><PRE>
        The <STRONG>termname</STRONG> routine returns the  terminal  name  used  by
        <STRONG>setupterm</STRONG>.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        <STRONG>longname</STRONG> and <STRONG>termname</STRONG> return <STRONG>NULL</STRONG> on error.
 
        Routines  that  return  an integer return <STRONG>ERR</STRONG> upon failure
@@ -132,12 +153,12 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that <STRONG>termattrs</STRONG> may be a macro.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  XSI  Curses  standard,  Issue 4 describes these func-
        tions.  It changes the return type of <STRONG>termattrs</STRONG> to the new
        type  <STRONG>attr_t</STRONG>.  Most versions of curses truncate the result
@@ -145,17 +166,33 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>
 
 
 
                                                      <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-baudrate">baudrate</a></li>
+<li><a href="#h3-erasechar_-erasewchar">erasechar, erasewchar</a></li>
+<li><a href="#h3-has_is_-has_il">has_is, has_il</a></li>
+<li><a href="#h3-killchar_-killwchar">killchar, killwchar</a></li>
+<li><a href="#h3-longname">longname</a></li>
+<li><a href="#h3-termattrs_-term_attrs">termattrs, term_attrs</a></li>
+<li><a href="#h3-termname">termname</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_termcap.3x.html b/doc/html/man/curs_termcap.3x.html
index a245778..36c4e7a 100644
--- a/doc/html/man/curs_termcap.3x.html
+++ b/doc/html/man/curs_termcap.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2013,2015 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            *
@@ -27,32 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_termcap.3x,v 1.22 2007/06/02 20:40:07 tom Exp @
+  * @Id: curs_termcap.3x,v 1.31 2015/04/26 00:49:10 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_termcap 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_termcap 3x</H1>
-<HR>
+<H1 class="no-header">curs_termcap 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>                                       <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
-       <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>, <STRONG>tgetstr</STRONG>, <STRONG>tgoto</STRONG>, <STRONG>tputs</STRONG> - direct
-       <STRONG>curses</STRONG> interface to the terminfo capability database
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>PC</STRONG>, <STRONG>UP</STRONG>, <STRONG>BC</STRONG>, <STRONG>ospeed</STRONG>, <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>, <STRONG>tgetstr</STRONG>,
+       <STRONG>tgoto</STRONG>, <STRONG>tputs</STRONG> - direct <STRONG>curses</STRONG> interface to the terminfo
+       capability database
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
        <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
 
@@ -70,34 +71,76 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       These routines are included as a conversion aid  for  pro-
-       grams  that use the <EM>termcap</EM> library.  Their parameters are
-       the same and the routines are emulated using the  <EM>terminfo</EM>
-       database.   Thus, they can only be used to query the capa-
-       bilities of entries for which a terminfo  entry  has  been
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       These  routines  are included as a conversion aid for pro-
+       grams that use the <EM>termcap</EM> library.  Their parameters  are
+       the  same and the routines are emulated using the <EM>terminfo</EM>
+       database.  Thus, they can only be used to query the  capa-
+       bilities  of  entries  for which a terminfo entry has been
        compiled.
 
-       The  <STRONG>tgetent</STRONG> routine loads the entry for <EM>name</EM>.  It returns
-       1 on success, 0 if there is no such entry, and -1  if  the
-       terminfo  database  could  not  be  found.   The emulation
-       ignores the buffer pointer <EM>bp</EM>.
 
-       The <STRONG>tgetflag</STRONG> routine gets the boolean  entry  for  <EM>id</EM>,  or
-       zero if it is not available.
+</PRE>
+<H3><a name="h3-INITIALIZATION">INITIALIZATION</a></H3><PRE>
+       The <STRONG>tgetent</STRONG> routine loads the entry for <EM>name</EM>.  It returns:
+
+          1  on success,
+
+          0  if there is no such entry (or that it is  a  generic
+             type,  having  too little information for curses ap-
+             plications to run), and
+
+          -1 if the terminfo database could not be found.
+
+       This differs from the <EM>termcap</EM> library in two ways:
+
+          <STRONG>o</STRONG>   The emulation ignores the buffer pointer  <EM>bp</EM>.   The
+              <EM>termcap</EM>  library would store a copy of the terminal
+              description in the area referenced by this pointer.
+              However,  ncurses  stores its terminal descriptions
+              in compiled binary form,  which  is  not  the  same
+              thing.
+
+          <STRONG>o</STRONG>   There is a difference in return codes.  The <EM>termcap</EM>
+              library does not check if the terminal  description
+              is  marked  with  the <EM>generic</EM> capability, or if the
+              terminal description has cursor-addressing.
+
+
+</PRE>
+<H3><a name="h3-CAPABILITY-VALUES">CAPABILITY VALUES</a></H3><PRE>
+       The <STRONG>tgetflag</STRONG> routine gets the boolean entry for <EM>id</EM>, or ze-
+       ro if it is not available.
 
        The  <STRONG>tgetnum</STRONG>  routine gets the numeric entry for <EM>id</EM>, or -1
        if it is not available.
 
        The <STRONG>tgetstr</STRONG> routine returns the string entry  for  <EM>id</EM>,  or
-       zero  if  it  is  not  available.  Use <STRONG>tputs</STRONG> to output the
-       returned string.  The return value will also be copied  to
-       the  buffer pointed to by <EM>area</EM>, and the <EM>area</EM> value will be
-       updated to point past the null ending this value.
+       zero  if it is not available.  Use <STRONG>tputs</STRONG> to output the re-
+       turned string.  The <EM>area</EM> parameter is used as follows:
+
+          <STRONG>o</STRONG>   It is assumed to be the address of a pointer  to  a
+              buffer managed by the calling application.
+
+          <STRONG>o</STRONG>   However,  ncurses checks to ensure that <STRONG>area</STRONG> is not
+              NULL, and also that the resulting buffer pointer is
+              not  NULL.  If either check fails, the <EM>area</EM> parame-
+              ter is ignored.
+
+          <STRONG>o</STRONG>   If the checks succeed, ncurses also copies the  re-
+              turn  value  to  the buffer pointed to by <EM>area</EM>, and
+              the <EM>area</EM> value will be updated to  point  past  the
+              null ending this value.
+
+          <STRONG>o</STRONG>   The return value itself is an address in the termi-
+              nal description which is loaded into memory.
 
        Only the first two characters of the <STRONG>id</STRONG> parameter of <STRONG>tget-</STRONG>
        <STRONG>flag</STRONG>, <STRONG>tgetnum</STRONG> and <STRONG>tgetstr</STRONG> are compared in lookups.
 
+
+</PRE>
+<H3><a name="h3-FORMATTING-CAPABILITIES">FORMATTING CAPABILITIES</a></H3><PRE>
        The  <STRONG>tgoto</STRONG>  routine  instantiates  the parameters into the
        given capability.  The output from this routine is  to  be
        passed to <STRONG>tputs</STRONG>.
@@ -106,31 +149,34 @@
        manual page.  It can retrieve capabilities by either term-
        cap or terminfo name.
 
+
+</PRE>
+<H3><a name="h3-GLOBAL-VARIABLES">GLOBAL VARIABLES</a></H3><PRE>
        The variables <STRONG>PC</STRONG>, <STRONG>UP</STRONG> and <STRONG>BC</STRONG> are set by <STRONG>tgetent</STRONG> to the ter-
        minfo   entry's   data   for   <STRONG>pad_char</STRONG>,   <STRONG>cursor_up</STRONG>   and
        <STRONG>backspace_if_not_bs</STRONG>,  respectively.   <STRONG>UP</STRONG>  is  not  used by
        ncurses.  <STRONG>PC</STRONG> is used in the <STRONG>tdelay_output</STRONG> function.  <STRONG>BC</STRONG> is
        used  in  the <STRONG>tgoto</STRONG> emulation.  The variable <STRONG>ospeed</STRONG> is set
-       by ncurses in a  system-specific  coding  to  reflect  the
-       terminal speed.
+       by ncurses in a system-specific coding to reflect the ter-
+       minal speed.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Except  where  explicitly  noted,  routines that return an
-       integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4  only  speci-
-       fies  "an  integer  value other than <STRONG>ERR</STRONG>") upon successful
-       completion.
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Except where explicitly noted, routines that return an in-
+       teger return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 only  specifies
+       "an integer value other than <STRONG>ERR</STRONG>") upon successful comple-
+       tion.
 
        Routines that return pointers return <STRONG>NULL</STRONG> on error.
 
 
 </PRE>
-<H2>BUGS</H2><PRE>
+<H2><a name="h2-BUGS">BUGS</a></H2><PRE>
        If you call <STRONG>tgetstr</STRONG> to fetch <STRONG>ca</STRONG> or any other parameterized
-       string,  be  aware  that  it  will be returned in terminfo
-       notation, not the older and  not-quite-compatible  termcap
-       notation.  This will not cause problems if all you do with
+       string,  be aware that it will be returned in terminfo no-
+       tation, not the older and not-quite-compatible termcap no-
+       tation.   This  will not cause problems if all you do with
        it is call <STRONG>tgoto</STRONG> or <STRONG>tparm</STRONG>,  which  both  expand  terminfo-
        style  strings  as terminfo.  (The <STRONG>tgoto</STRONG> function, if con-
        figured to support termcap, will check if  the  string  is
@@ -152,7 +198,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  XSI  Curses  standard,  Issue 4 describes these func-
        tions.  However, they are marked TO BE WITHDRAWN  and  may
        be removed in future versions.
@@ -172,19 +218,54 @@
        guishing  between  input  and output.  In particular, some
        applications are reported to declare and/or modify <STRONG>ospeed</STRONG>.
 
+       The comment that only the first two characters of  the  <STRONG>id</STRONG>
+       parameter  are  used  escapes many application developers.
+       The original  BSD  4.2  termcap  library  (and  historical
+       relics thereof) did not require a trailing null NUL on the
+       parameter name passed to <STRONG>tgetstr</STRONG>,  <STRONG>tgetnum</STRONG>  and  <STRONG>tgetflag</STRONG>.
+       Some  applications  assume that the termcap interface does
+       not require the trailing NUL for the parameter name.  Tak-
+       ing into account these issues:
+
+       <STRONG>o</STRONG>   As  a special case, <STRONG>tgetflag</STRONG> matched against a single-
+           character identifier provided that was at the  end  of
+           the  terminal  description.   You should not rely upon
+           this behavior in portable programs.  This  implementa-
+           tion  disallows matches against single-character capa-
+           bility names.
+
+       <STRONG>o</STRONG>   This implementation disallows matches by  the  termcap
+           interface  against extended capability names which are
+           longer than two characters.
+
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="putc.3.html">putc(3)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>.
+
+       http://invisible-island.net/ncurses/tctest.html
 
 
 
                                                        <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-INITIALIZATION">INITIALIZATION</a></li>
+<li><a href="#h3-CAPABILITY-VALUES">CAPABILITY VALUES</a></li>
+<li><a href="#h3-FORMATTING-CAPABILITIES">FORMATTING CAPABILITIES</a></li>
+<li><a href="#h3-GLOBAL-VARIABLES">GLOBAL VARIABLES</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_terminfo.3x.html b/doc/html/man/curs_terminfo.3x.html
index 6877496..784b59d 100644
--- a/doc/html/man/curs_terminfo.3x.html
+++ b/doc/html/man/curs_terminfo.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1999-2007,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 1999-2011,2013 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -27,34 +26,40 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_terminfo.3x,v 1.30 2008/08/16 20:53:27 tom Exp @
+  * @Id: curs_terminfo.3x,v 1.43 2013/07/20 19:29:59 tom Exp @
+  * ***************************************************************************
+  * ***************************************************************************
+  * ***************************************************************************
+  * ***************************************************************************
+  * ***************************************************************************
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_terminfo 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_terminfo 3x</H1>
-<HR>
+<H1 class="no-header">curs_terminfo 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>                                     <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>del_curterm</STRONG>, <STRONG>mvcur</STRONG>, <STRONG>putp</STRONG>, <STRONG>restartterm</STRONG>, <STRONG>set_curterm</STRONG>,
-       <STRONG>setterm</STRONG>, <STRONG>setupterm</STRONG>, <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG>, <STRONG>tigetstr</STRONG>, <STRONG>tparm</STRONG>,
-       <STRONG>tputs</STRONG>, <STRONG>vid_attr</STRONG>, <STRONG>vid_puts</STRONG>, <STRONG>vidattr</STRONG>, <STRONG>vidputs</STRONG> - <STRONG>curses</STRONG>
-       interfaces to terminfo database
+       <STRONG>setterm</STRONG>, <STRONG>setupterm</STRONG>, <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG>, <STRONG>tigetstr</STRONG>, <STRONG>tiparm</STRONG>,
+       <STRONG>tparm</STRONG>, <STRONG>tputs</STRONG>, <STRONG>vid_attr</STRONG>, <STRONG>vid_puts</STRONG>, <STRONG>vidattr</STRONG>, <STRONG>vidputs</STRONG> -
+       <STRONG>curses</STRONG> interfaces to terminfo database
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
        <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
 
@@ -68,54 +73,70 @@
        <STRONG>int</STRONG> <STRONG>putp(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>vidputs(chtype</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
        <STRONG>int</STRONG> <STRONG>vidattr(chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG>
-       <STRONG>int</STRONG> <STRONG>vid_puts(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(char));</STRONG>
+       <STRONG>int</STRONG> <STRONG>vid_puts(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG>
        <STRONG>int</STRONG> <STRONG>vid_attr(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>mvcur(int</STRONG> <EM>oldrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newrow</EM>, int <EM>newcol</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>tigetflag(char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
        <STRONG>int</STRONG> <STRONG>tigetnum(char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>*tigetstr(char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*tiparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These low-level routines must be called by  programs  that
        have to deal directly with the <STRONG>terminfo</STRONG> database to handle
        certain terminal capabilities, such as  programming  func-
        tion  keys.   For all other functionality, <STRONG>curses</STRONG> routines
        are more suitable and their use is recommended.
 
+
+</PRE>
+<H3><a name="h3-Initialization">Initialization</a></H3><PRE>
        Initially, <STRONG>setupterm</STRONG> should  be  called.   Note  that  <STRONG>se-</STRONG>
        <STRONG>tupterm</STRONG>  is  automatically  called by <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG>.
        This  defines  the  set  of  terminal-dependent  variables
-       [listed in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].  The <STRONG>terminfo</STRONG> variables <STRONG>lines</STRONG> and
-       <STRONG>columns</STRONG> are initialized by <STRONG>setupterm</STRONG> as follows:
+       [listed in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].
 
-              If <STRONG>use_env(FALSE)</STRONG> has been called, values for <STRONG>lines</STRONG>
-              and <STRONG>columns</STRONG> specified in <STRONG>terminfo</STRONG> are used.
+       Each initialization routine provides applications with the
+       terminal capabilities either directly (via header  defini-
+       tions),  or  by special functions.  The header files <STRONG>curs-</STRONG>
+       <STRONG>es.h</STRONG> and <STRONG>term.h</STRONG> should be included (in this order) to  get
+       the definitions for these strings, numbers, and flags.
 
-              Otherwise,  if  the environment variables <STRONG>LINES</STRONG> and
-              <STRONG>COLUMNS</STRONG> exist, their values are used.  If these en-
-              vironment variables do not exist and the program is
-              running in a window, the  current  window  size  is
-              used.   Otherwise,  if the environment variables do
-              not exist, the values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG>  speci-
-              fied in the <STRONG>terminfo</STRONG> database are used.
+       The  <STRONG>terminfo</STRONG>  variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized
+       by <STRONG>setupterm</STRONG> as follows:
 
-       The  header  files  <STRONG>curses.h</STRONG> and <STRONG>term.h</STRONG> should be included
-       (in this order) to get the definitions for these  strings,
-       numbers,  and  flags.   Parameterized  strings  should  be
-       passed through <STRONG>tparm</STRONG> to instantiate  them.   All  <STRONG>terminfo</STRONG>
-       strings  [including the output of <STRONG>tparm</STRONG>] should be printed
-       with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.  Call the <STRONG>reset_shell_mode</STRONG> to  restore
-       the  tty modes before exiting [see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>].  Pro-
-       grams  which  use  cursor  addressing  should  output  <STRONG>en-</STRONG>
-       <STRONG>ter_ca_mode</STRONG>  upon  startup  and should output <STRONG>exit_ca_mode</STRONG>
-       before exiting.  Programs desiring  shell  escapes  should
-       call
+       <STRONG>o</STRONG>   If <STRONG>use_env(FALSE)</STRONG> has been called,  values  for  <STRONG>lines</STRONG>
+           and <STRONG>columns</STRONG> specified in <STRONG>terminfo</STRONG> are used.
 
-       <STRONG>reset_shell_mode</STRONG>  and output <STRONG>exit_ca_mode</STRONG> before the shell
-       is called and should output  <STRONG>enter_ca_mode</STRONG>  and  call  <STRONG>re-</STRONG>
-       <STRONG>set_prog_mode</STRONG> after returning from the shell.
+       <STRONG>o</STRONG>   Otherwise, if the environment variables <STRONG>LINES</STRONG> and <STRONG>COL-</STRONG>
+           <STRONG>UMNS</STRONG> exist, their values are used.  If these  environ-
+           ment variables do not exist and the program is running
+           in a window, the current window size is used.   Other-
+           wise,  if  the environment variables do not exist, the
+           values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the <STRONG>terminfo</STRONG>
+           database are used.
+
+       Parameterized  strings  should  be passed through <STRONG>tparm</STRONG> to
+       instantiate them.  All  <STRONG>terminfo</STRONG>  strings  [including  the
+       output  of  <STRONG>tparm</STRONG>]  should  be printed with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>.
+       Call <STRONG>reset_shell_mode</STRONG> to restore the tty modes before  ex-
+       iting [see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>].
+
+       Programs which use cursor addressing should
+
+       <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> upon startup and
+
+       <STRONG>o</STRONG>   output <STRONG>exit_ca_mode</STRONG> before exiting.
+
+       Programs which execute shell subprocesses should
+
+       <STRONG>o</STRONG>   call  <STRONG>reset_shell_mode</STRONG>  and output <STRONG>exit_ca_mode</STRONG> before
+           the shell is called and
+
+       <STRONG>o</STRONG>   output <STRONG>enter_ca_mode</STRONG> and  call  <STRONG>reset_prog_mode</STRONG>  after
+           returning from the shell.
 
        The <STRONG>setupterm</STRONG> routine reads in the <STRONG>terminfo</STRONG> database, ini-
        tializing the <STRONG>terminfo</STRONG> structures, but does not set up the
@@ -128,58 +149,89 @@
        <EM>rret</EM>.   A  return value of <STRONG>OK</STRONG> combined with status of <STRONG>1</STRONG> in
        <EM>errret</EM> is normal.  If <STRONG>ERR</STRONG> is returned, examine <EM>errret</EM>:
 
-              <STRONG>1</STRONG>    means that the terminal is hardcopy, cannot be
-                   used for curses applications.
+       <STRONG>1</STRONG>    means that the terminal is hardcopy, cannot  be  used
+            for curses applications.
 
-              <STRONG>0</STRONG>    means that the terminal could not be found, or
-                   that it is a generic type, having  too  little
-                   information for curses applications to run.
+            <STRONG>setupterm</STRONG>  determines if the entry is a hardcopy type
+            by checking the <EM>hc</EM> (<EM>hardcopy</EM>) capability.
 
-              <STRONG>-1</STRONG>   means  that the <STRONG>terminfo</STRONG> database could not be
-                   found.
+       <STRONG>0</STRONG>    means that the terminal could not be found,  or  that
+            it  is  a generic type, having too little information
+            for curses applications to run.
 
-       If <EM>errret</EM> is null, <STRONG>setupterm</STRONG> prints an error message  upon
+            <STRONG>setupterm</STRONG> determines if the entry is a  generic  type
+            by checking the <EM>gn</EM> (<EM>generic</EM>) capability.
+
+       <STRONG>-1</STRONG>   means that the <STRONG>terminfo</STRONG> database could not be found.
+
+       If  <EM>errret</EM> is null, <STRONG>setupterm</STRONG> prints an error message upon
        finding an error and exits.  Thus, the simplest call is:
 
              <STRONG>setupterm((char</STRONG> <STRONG>*)0,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0);</STRONG>,
 
-       which  uses  all the defaults and sends the output to <STRONG>std-</STRONG>
+       which uses all the defaults and sends the output  to  <STRONG>std-</STRONG>
        <STRONG>out</STRONG>.
 
-       The <STRONG>setterm</STRONG> routine is being replaced by  <STRONG>setupterm</STRONG>.   The
-       call:
+       The <STRONG>setterm</STRONG> routine was replaced by <STRONG>setupterm</STRONG>.  The call:
 
              <STRONG>setupterm(</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0)</STRONG>
 
        provides  the  same  functionality  as <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>.  The
-       <STRONG>setterm</STRONG> routine is included here  for  BSD  compatibility,
-       and is not recommended for new programs.
+       <STRONG>setterm</STRONG> routine is provided for BSD compatibility, and  is
+       not recommended for new programs.
 
-       The  <STRONG>set_curterm</STRONG>  routine  sets  the  variable <STRONG>cur_term</STRONG> to
-       <EM>nterm</EM>, and makes all of the <STRONG>terminfo</STRONG> boolean, numeric, and
-       string  variables  use  the values from <EM>nterm</EM>.  It returns
-       the old value of <STRONG>cur_term</STRONG>.
 
-       The <STRONG>del_curterm</STRONG> routine frees  the  space  pointed  to  by
+</PRE>
+<H3><a name="h3-The-Terminal-State">The Terminal State</a></H3><PRE>
+       The  <STRONG>setupterm</STRONG>  routine  stores  its information about the
+       terminal in a <STRONG>TERMINAL</STRONG> structure pointed to by the  global
+       variable  <STRONG>cur_term</STRONG>.   If  it  detects an error, or decides
+       that the terminal is unsuitable (hardcopy or generic),  it
+       discards  this information, making it not available to ap-
+       plications.
+
+       If <STRONG>setupterm</STRONG> is called repeatedly for  the  same  terminal
+       type,  it  will  reuse the information.  It maintains only
+       one copy of a given terminal's capabilities in memory.  If
+       it is called for different terminal types, <STRONG>setupterm</STRONG> allo-
+       cates new storage for each set of terminal capabilities.
+
+       The <STRONG>set_curterm</STRONG> routine sets <STRONG>cur_term</STRONG> to <EM>nterm</EM>, and  makes
+       all of the <STRONG>terminfo</STRONG> boolean, numeric, and string variables
+       use the values from <EM>nterm</EM>.  It returns the  old  value  of
+       <STRONG>cur_term</STRONG>.
+
+       The  <STRONG>del_curterm</STRONG>  routine  frees  the  space pointed to by
        <EM>oterm</EM> and makes it available for further use.  If <EM>oterm</EM> is
-       the same as <STRONG>cur_term</STRONG>, references to any  of  the  <STRONG>terminfo</STRONG>
-       boolean,  numeric, and string variables thereafter may re-
-       fer to invalid memory locations  until  another  <STRONG>setupterm</STRONG>
+       the  same  as  <STRONG>cur_term</STRONG>, references to any of the <STRONG>terminfo</STRONG>
+       boolean, numeric, and string variables thereafter may  re-
+       fer  to  invalid  memory locations until another <STRONG>setupterm</STRONG>
        has been called.
 
        The  <STRONG>restartterm</STRONG>  routine  is  similar  to  <STRONG>setupterm</STRONG>  and
-       <STRONG>initscr</STRONG>, except that it is called after  restoring  memory
-       to  a  previous  state (for example, when reloading a game
-       saved as a core image dump).  It assumes that the  windows
-       and the input and output options are the same as when mem-
-       ory was saved, but the terminal type and baud rate may  be
-       different.   Accordingly, it saves various tty state bits,
-       calls <STRONG>setupterm</STRONG>, and then restores the bits.
+       <STRONG>initscr</STRONG>,  except  that it is called after restoring memory
+       to a previous state (for example, when  reloading  a  game
+       saved as a core image dump).  <STRONG>restartterm</STRONG> assumes that the
+       windows and the input and output options are the  same  as
+       when memory was saved, but the terminal type and baud rate
+       may be different.  Accordingly, <STRONG>restartterm</STRONG> saves  various
+       tty  state  bits,  calls  <STRONG>setupterm</STRONG>, and then restores the
+       bits.
 
+
+</PRE>
+<H3><a name="h3-Formatting-Output">Formatting Output</a></H3><PRE>
        The <STRONG>tparm</STRONG> routine instantiates the string <EM>str</EM> with parame-
        ters  <EM>pi</EM>.  A pointer is returned to the result of <EM>str</EM> with
        the parameters applied.
 
+       <STRONG>tiparm</STRONG> is a newer form  of  <STRONG>tparm</STRONG>  which  uses  <EM>&lt;stdarg.h&gt;</EM>
+       rather  than  a fixed-parameter list.  Its numeric parame-
+       ters are integers (int) rather than longs.
+
+
+</PRE>
+<H3><a name="h3-Output-Functions">Output Functions</a></H3><PRE>
        The <STRONG>tputs</STRONG>  routine  applies  padding  information  to  the
        string  <EM>str</EM>  and  outputs  it.  The <EM>str</EM> must be a terminfo
        string variable or the return value from  <STRONG>tparm</STRONG>,  <STRONG>tgetstr</STRONG>,
@@ -213,39 +265,55 @@
        takes effect immediately (rather  than  at  the  next  re-
        fresh).
 
+
+</PRE>
+<H3><a name="h3-Terminal-Capability-Functions">Terminal Capability Functions</a></H3><PRE>
        The  <STRONG>tigetflag</STRONG>,  <STRONG>tigetnum</STRONG> and <STRONG>tigetstr</STRONG> routines return the
        value of the capability corresponding to the <STRONG>terminfo</STRONG> <EM>cap-</EM>
-       <EM>name</EM> passed to them, such as <STRONG>xenl</STRONG>.
+       <EM>name</EM>  passed  to them, such as <STRONG>xenl</STRONG>.  The <EM>capname</EM> for each
+       capability is given in the table column  entitled  <EM>capname</EM>
+       code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       The  <STRONG>tigetflag</STRONG>  routine returns the value <STRONG>-1</STRONG> if <EM>capname</EM> is
-       not a boolean capability, or <STRONG>0</STRONG> if it is canceled or absent
-       from the terminal description.
+       These routines return special values to denote errors.
 
-       The  <STRONG>tigetnum</STRONG>  routine  returns the value <STRONG>-2</STRONG> if <EM>capname</EM> is
-       not a numeric capability, or <STRONG>-1</STRONG> if it is canceled  or  ab-
-       sent from the terminal description.
+       The <STRONG>tigetflag</STRONG> routine returns
 
-       The  <STRONG>tigetstr</STRONG> routine returns the value <STRONG>(char</STRONG> <STRONG>*)-1</STRONG> if <EM>cap-</EM>
-       <EM>name</EM> is not a string capability, or <STRONG>0</STRONG> if it is canceled or
-       absent from the terminal description.
+       <STRONG>-1</STRONG>     if <EM>capname</EM> is not a boolean capability, or
 
-       The <EM>capname</EM> for each capability is given in the table col-
-       umn entitled <EM>capname</EM> code in the capabilities  section  of
-       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+       <STRONG>0</STRONG>      if  it  is canceled or absent from the terminal de-
+              scription.
 
+       The <STRONG>tigetnum</STRONG> routine returns
+
+       <STRONG>-2</STRONG>     if <EM>capname</EM> is not a numeric capability, or
+
+       <STRONG>-1</STRONG>     if it is canceled or absent from the  terminal  de-
+              scription.
+
+       The <STRONG>tigetstr</STRONG> routine returns
+
+       <STRONG>(char</STRONG> <STRONG>*)-1</STRONG>
+              if <EM>capname</EM> is not a string capability, or
+
+       <STRONG>0</STRONG>      if  it  is canceled or absent from the terminal de-
+              scription.
+
+
+</PRE>
+<H3><a name="h3-Terminal-Capability-Names">Terminal Capability Names</a></H3><PRE>
+       These null-terminated arrays contain  the  short  terminfo
+       names  ("codes"), the <STRONG>termcap</STRONG> names, and the long terminfo
+       names ("fnames") for each of the predefined <STRONG>terminfo</STRONG> vari-
+       ables:
               <STRONG>char</STRONG> <STRONG>*boolnames[]</STRONG>, <STRONG>*boolcodes[]</STRONG>, <STRONG>*boolfnames[]</STRONG>
 
               <STRONG>char</STRONG> <STRONG>*numnames[]</STRONG>, <STRONG>*numcodes[]</STRONG>, <STRONG>*numfnames[]</STRONG>
 
               <STRONG>char</STRONG> <STRONG>*strnames[]</STRONG>, <STRONG>*strcodes[]</STRONG>, <STRONG>*strfnames[]</STRONG>
 
-       These  null-terminated  arrays  contain  the <EM>capnames</EM>, the
-       <STRONG>termcap</STRONG> codes, and the full C names, for each of the  <STRONG>ter-</STRONG>
-       <STRONG>minfo</STRONG> variables.
-
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines  that  return  an integer return <STRONG>ERR</STRONG> upon failure
        and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value  other  than
        <STRONG>ERR</STRONG>")  upon  successful completion, unless otherwise noted
@@ -253,44 +321,36 @@
 
        Routines that return pointers always return <STRONG>NULL</STRONG> on error.
 
-       X/Open  defines  no error conditions.  In this implementa-
+       X/Open defines no error conditions.  In  this  implementa-
        tion
 
-              <STRONG>del_curterm</STRONG>
-                   returns an error if its terminal parameter  is
-                   null.
+            <STRONG>del_curterm</STRONG>
+                 returns  an  error  if its terminal parameter is
+                 null.
 
-              <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error-codes.
+            <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error-codes.
 
-              <STRONG>restartterm</STRONG>
-                   returns an error if the associated call to <STRONG>se-</STRONG>
-                   <STRONG>tupterm</STRONG> returns an error.
+            <STRONG>restartterm</STRONG>
+                 returns an error if the associated call  to  <STRONG>se-</STRONG>
+                 <STRONG>tupterm</STRONG> returns an error.
 
-              <STRONG>setupterm</STRONG>
-                   returns an error if it cannot allocate  enough
-                   memory, or create the initial windows (stdscr,
-                   curscr, newscr).  Other error  conditions  are
-                   documented above.
+            <STRONG>setupterm</STRONG>
+                 returns  an  error  if it cannot allocate enough
+                 memory, or create the initial  windows  (stdscr,
+                 curscr,  newscr).   Other  error  conditions are
+                 documented above.
 
-              <STRONG>tputs</STRONG>
-                   returns  an  error  if the string parameter is
-                   null.  It does not detect I/O  errors:  X/Open
-                   states  that <STRONG>tputs</STRONG> ignores the return value of
-                   the output function <EM>putc</EM>.
+            <STRONG>tputs</STRONG>
+                 returns an error  if  the  string  parameter  is
+                 null.   It  does  not  detect I/O errors: X/Open
+                 states that <STRONG>tputs</STRONG> ignores the  return  value  of
+                 the output function <EM>putc</EM>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       The <STRONG>setupterm</STRONG> routine should be used in place of  <STRONG>setterm</STRONG>.
-       It  may be useful when you want to test for terminal capa-
-       bilities without committing to the allocation  of  storage
-       involved in <STRONG>initscr</STRONG>.
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open notes that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
 
-       Note that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros.
-
-
-</PRE>
-<H2>PORTABILITY</H2><PRE>
        The  function  <STRONG>setterm</STRONG> is not described by X/Open and must
        be considered non-portable.  All other  functions  are  as
        described by X/Open.
@@ -299,55 +359,100 @@
        This is not part of X/Open Curses, but is assumed by  some
        applications.
 
-       In  System V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return type
-       and returns <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>.  We have chosen  to  implement  the
+       If  configured  to  use the terminal-driver, e.g., for the
+       MinGW port,
+
+       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG> interprets a missing/empty TERM variable  as
+           the special value "unknown".
+
+       <STRONG>o</STRONG>   <STRONG>setupterm</STRONG>  allows explicit use of the the windows con-
+           sole driver by checking if $TERM is set to "#win32con"
+           or an abbreviation of that string.
+
+       Older versions of <STRONG>ncurses</STRONG> assumed that the file descriptor
+       passed to <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses  buffered
+       I/O,  and would write to the corresponding stream.  In ad-
+       dition to the limitation that the  terminal  was  left  in
+       block-buffered  mode on exit (like SystemV curses), it was
+       problematic because <STRONG>ncurses</STRONG> did not allow a  reliable  way
+       to cleanup on receiving SIGTSTP.  The current version uses
+       output buffers managed directly by <STRONG>ncurses</STRONG>.  Some  of  the
+       low-level functions described in this manual page write to
+       the standard output.  They are not signal-safe.  The high-
+       level functions in <STRONG>ncurses</STRONG> use alternate versions of these
+       functions using the more reliable buffering scheme.
+
+       In System V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return  type
+       and  returns  <STRONG>OK</STRONG>  or <STRONG>ERR</STRONG>.  We have chosen to implement the
        X/Open Curses semantics.
 
        In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the
        type <STRONG>int</STRONG> <STRONG>(*putc)(char)</STRONG>.
 
        At least one implementation of X/Open Curses (Solaris) re-
-       turns  a value other than OK/ERR from <STRONG>tputs</STRONG>.  That returns
+       turns a value other than OK/ERR from <STRONG>tputs</STRONG>.  That  returns
        the length of the string, and does no error-checking.
 
-       X/Open Curses prototypes <STRONG>tparm</STRONG> with a fixed number of  pa-
-       rameters,  rather than a variable argument list.  This im-
-       plementation uses a variable argument list.  Portable  ap-
+       X/Open  Curses prototypes <STRONG>tparm</STRONG> with a fixed number of pa-
+       rameters, rather than a variable argument list.  This  im-
+       plementation  uses  a  variable  argument list, but can be
+       configured to use the fixed-parameter list.  Portable  ap-
        plications  should  provide 9 parameters after the format;
        zeroes are fine for this purpose.
 
-       X/Open notes that after calling <STRONG>mvcur</STRONG>,  the  curses  state
-       may  not  match the actual terminal state, and that an ap-
-       plication should touch and refresh the window  before  re-
-       suming normal curses calls.  Both ncurses and System V Re-
+       In response to comments by Thomas E. Dickey, X/Open Curses
+       Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009.
+
+       X/Open  notes  that  after calling <STRONG>mvcur</STRONG>, the curses state
+       may not match the actual terminal state, and that  an  ap-
+       plication  should  touch and refresh the window before re-
+       suming normal curses calls.  Both <STRONG>ncurses</STRONG> and System V Re-
        lease 4 curses implement <STRONG>mvcur</STRONG> using the SCREEN data allo-
        cated in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.  So though it is docu-
-       mented as a terminfo function, <STRONG>mvcur</STRONG> is  really  a  curses
+       mented  as  a  terminfo function, <STRONG>mvcur</STRONG> is really a curses
        function which is not well specified.
 
-       X/Open  states  that  the  old  location must be given for
-       <STRONG>mvcur</STRONG>.  This implementation allows the caller to use  -1's
-       for  the old ordinates.  In that case, the old location is
+       X/Open states that the old  location  must  be  given  for
+       <STRONG>mvcur</STRONG>.   This implementation allows the caller to use -1's
+       for the old ordinates.  In that case, the old location  is
        unknown.
 
-       Extended terminal capability names, e.g.,  as  defined  by
-       <STRONG>tic</STRONG> <STRONG>-x</STRONG>,  are  not  stored  in the arrays described in this
-       section.
+       Other  implementions  may  not declare the capability name
+       arrays.  Some provide them without declaring them.  X/Open
+       does not specify them.
+
+       Extended  terminal  capability  names, e.g., as defined by
+       <STRONG>tic</STRONG> <STRONG>-x</STRONG>, are not stored in the arrays described here.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>,  <STRONG>curs_term-</STRONG>
-       <STRONG><A HREF="curs_termcap.3x.html">cap(3x)</A></STRONG>, <STRONG><A HREF="putc.3.html">putc(3)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
+       <STRONG><A HREF="curs_termcap.3x.html">cap(3x)</A></STRONG>,  <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>,
+       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
                                                       <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Initialization">Initialization</a></li>
+<li><a href="#h3-The-Terminal-State">The Terminal State</a></li>
+<li><a href="#h3-Formatting-Output">Formatting Output</a></li>
+<li><a href="#h3-Output-Functions">Output Functions</a></li>
+<li><a href="#h3-Terminal-Capability-Functions">Terminal Capability Functions</a></li>
+<li><a href="#h3-Terminal-Capability-Names">Terminal Capability Names</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_threads.3x.html b/doc/html/man/curs_threads.3x.html
index 2a2f0fd..e37da32 100644
--- a/doc/html/man/curs_threads.3x.html
+++ b/doc/html/man/curs_threads.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2008 Free Software Foundation, Inc.                        *
+  * Copyright (c) 2008-2014,2015 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            *
@@ -27,109 +26,115 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_threads.3x,v 1.12 2008/04/12 18:22:51 tom Exp @
+  * @Id: curs_threads.3x,v 1.21 2015/04/11 10:23:49 tom Exp @
   * ***************************************************************************
   * ***************************************************************************
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_threads 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_threads 3x</H1>
-<HR>
+<H1 class="no-header">curs_threads 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>                                       <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>use_screen</STRONG>, <STRONG>use_window</STRONG> - <STRONG>curses</STRONG> thread support
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>typedef</STRONG>  <STRONG>int</STRONG> <STRONG>(*NCURSES_WINDOW_CB)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG> <STRONG>type-</STRONG>
-       <STRONG>def</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_SCREEN_CB)(SCREEN</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
+       <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_WINDOW_CB)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
+       <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_SCREEN_CB)(SCREEN</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG>
+       <STRONG>int</STRONG> <STRONG>get_escdelay(void);</STRONG>
        <STRONG>int</STRONG> <STRONG>set_escdelay(int</STRONG> <STRONG>size);</STRONG>
        <STRONG>int</STRONG> <STRONG>set_tabsize(int</STRONG> <STRONG>size);</STRONG>
-       <STRONG>int</STRONG> <STRONG>use_screen(SCREEN</STRONG> <STRONG>*scr,</STRONG> <STRONG>NCURSES_WINDOW_CB</STRONG>  <STRONG>func,</STRONG>  <STRONG>void</STRONG>
+       <STRONG>int</STRONG>  <STRONG>use_screen(SCREEN</STRONG>  <STRONG>*scr,</STRONG> <STRONG>NCURSES_SCREEN_CB</STRONG> <STRONG>func,</STRONG> <STRONG>void</STRONG>
        <STRONG>*data);</STRONG>
-       <STRONG>int</STRONG>  <STRONG>use_window(WINDOW</STRONG>  <STRONG>*win,</STRONG> <STRONG>NCURSES_SCREEN_CB</STRONG> <STRONG>func,</STRONG> <STRONG>void</STRONG>
+       <STRONG>int</STRONG> <STRONG>use_window(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>NCURSES_WINDOW_CB</STRONG>  <STRONG>func,</STRONG>  <STRONG>void</STRONG>
        <STRONG>*data);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       This implementation can be configured to provide  rudimen-
-       tary  support for multi-threaded applications.  This makes
-       a different set of libraries, e.g., <EM>libncursest</EM> since  the
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       This  implementation can be configured to provide rudimen-
+       tary support for multi-threaded applications.  This  makes
+       a  different set of libraries, e.g., <EM>libncursest</EM> since the
        binary interfaces are different.
 
-       Rather  than modify the interfaces to pass a thread speci-
-       fier to each function, it adds a few functions  which  can
+       Rather than modify the interfaces to pass a thread  speci-
+       fier  to  each function, it adds a few functions which can
        be used in any configuration which hide the mutex's needed
-       to prevent concurrent use of  the  global  variables  when
+       to  prevent  concurrent  use  of the global variables when
        configured for threading.
 
-       In  addition  to  forcing  access to members of the <STRONG>WINDOW</STRONG>
-       structure to be via functions  (see  <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>),  it
+       In addition to forcing access to  members  of  the  <STRONG>WINDOW</STRONG>
+       structure  to  be  via functions (see <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>), it
        makes functions of the common global variables, e.g., COL-
-       ORS, COLOR_PAIRS, COLS, ESCDELAY, LINES,  TABSIZE  curscr,
-       newscr  and  ttytype.   Those  variables are maintained as
+       ORS,  COLOR_PAIRS,  COLS, ESCDELAY, LINES, TABSIZE curscr,
+       newscr and ttytype.  Those  variables  are  maintained  as
        read-only values, stored in the <STRONG>SCREEN</STRONG> structure.
 
-       Even this is not enough to make a thread-safe  application
-       using  curses.   A multi-threaded application would be ex-
-       pected to have threads updating separate  windows  (within
+       Even  this is not enough to make a thread-safe application
+       using curses.  A multi-threaded application would  be  ex-
+       pected  to  have threads updating separate windows (within
        the same device), or updating on separate screens (on dif-
-       ferent devices).  Also, a few of the global variables  are
-       considered  writable  by some applications.  The functions
+       ferent  devices).  Also, a few of the global variables are
+       considered writable by some applications.   The  functions
        described here address these special situations.
 
-       The ESCDELAY and TABSIZE global variables are modified  by
-       some  applications.   To modify them in any configuration,
-       use the  <STRONG>set_escdelay</STRONG>  or  <STRONG>set_tabsize</STRONG>  functions.   Other
+       The  ESCDELAY and TABSIZE global variables are modified by
+       some applications.  To modify them in  any  configuration,
+       use  the  <STRONG>set_escdelay</STRONG>  or  <STRONG>set_tabsize</STRONG>  functions.  Other
        global variables are not modifiable.
 
-       The  <STRONG>use_window</STRONG>  and  <STRONG>use_screen</STRONG>  functions provide coarse
+       The <STRONG>get_escdelay</STRONG> function returns the value for ESCDELAY.
+
+       The <STRONG>use_window</STRONG> and  <STRONG>use_screen</STRONG>  functions  provide  coarse
        granularity mutexes for their respective <STRONG>WINDOW</STRONG> and <STRONG>SCREEN</STRONG>
-       parameters,  and call a user-supplied function, passing it
-       a <EM>data</EM> parameter, and returning the value from  the  user-
+       parameters, and call a user-supplied function, passing  it
+       a  <EM>data</EM>  parameter, and returning the value from the user-
        supplied function to the application.
 
-   <STRONG>USAGE</STRONG>
-       All  of  the ncurses library functions assume that the lo-
-       cale is not altered during operation.  In  addition,  they
+
+</PRE>
+<H3><a name="h3-USAGE">USAGE</a></H3><PRE>
+       All of the ncurses library functions assume that  the  lo-
+       cale  is  not altered during operation.  In addition, they
        use data which is maintained within a hierarchy of scopes.
 
-              -  global data, e.g., used in the low-level termin-
-                 fo or termcap interfaces.
+          <STRONG>o</STRONG>   global data, e.g., used in the  low-level  terminfo
+              or termcap interfaces.
 
-              -  terminal  data,  e.g., associated with a call to
-                 <EM>set</EM><STRONG>_</STRONG><EM>curterm</EM>.  The terminal data are  initialized
-                 when screens are created.
+          <STRONG>o</STRONG>   terminal  data,  e.g.,  associated  with  a call to
+              <EM>set</EM><STRONG>_</STRONG><EM>curterm</EM>.  The  terminal  data  are  initialized
+              when screens are created.
 
-              -  screen  data,  e.g.,  associated  with a call to
-                 <EM>newterm</EM> or <EM>initscr</EM>.
+          <STRONG>o</STRONG>   screen  data,  e.g.,  associated  with  a  call  to
+              <EM>newterm</EM> or <EM>initscr</EM>.
 
-              -  window data, e.g., associated  with  a  call  to
-                 <EM>newwin</EM>  or  <EM>subwin</EM>.  Windows are associated with
-                 screens.  Pads are  not  necessarily  associated
-                 with a particular screen.
+          <STRONG>o</STRONG>   window data, e.g., associated with a call to <EM>newwin</EM>
+              or  <EM>subwin</EM>.   Windows  are associated with screens.
+              Pads are not necessarily associated with a particu-
+              lar screen.
 
-                 Most  curses applications operate on one or more
-                 windows within a single screen.
+              Most  curses  applications  operate  on one or more
+              windows within a single screen.
 
-              -  reentrant, i.e., it uses only the data passed as
-                 parameters.
+          <STRONG>o</STRONG>   reentrant, i.e., it uses only the  data  passed  as
+              parameters.
 
        This table lists the scope of data used for each symbol in
        the ncurses library  when  it  is  configured  to  support
@@ -178,10 +183,10 @@
       boolfnames              global (readonly)
       boolnames               global (readonly)
       border                  window (stdscr)
+
       border_set              window (stdscr)
       box                     window (stdscr)
       box_set                 window (stdscr)
-
       can_change_color        terminal
       cbreak                  screen
       chgat                   window (stdscr)
@@ -245,10 +250,10 @@
       has_key                 screen
       hline                   window (stdscr)
       hline_set               window (stdscr)
+
       idcok                   window
       idlok                   window
       immedok                 window
-
       in_wch                  window (stdscr)
       in_wchnstr              window (stdscr)
       in_wchstr               window (stdscr)
@@ -312,10 +317,10 @@
       mvaddstr                window (stdscr)
       mvaddwstr               window (stdscr)
       mvchgat                 window (stdscr)
+
       mvcur                   screen
       mvdelch                 window (stdscr)
       mvderwin                window (stdscr)
-
       mvget_wch               screen (input-operation)
       mvget_wstr              screen (input-operation)
       mvgetch                 screen (input-operation)
@@ -379,10 +384,10 @@
       mvwinsch                window
       mvwinsnstr              window
       mvwinsstr               window
+
       mvwinstr                window
       mvwinwstr               window
       mvwprintw               window
-
       mvwscanw                screen
       mvwvline                window
       mvwvline_set            window
@@ -446,10 +451,10 @@
       slk_attr_on             screen
       slk_attr_set            screen
       slk_attroff             screen
+
       slk_attron              screen
       slk_attrset             screen
       slk_clear               screen
-
       slk_color               screen
       slk_init                screen
       slk_label               screen
@@ -513,10 +518,10 @@
       wadd_wchnstr            window
       wadd_wchstr             window
       waddch                  window
+
       waddchnstr              window
       waddchstr               window
       waddnstr                window
-
       waddnwstr               window
       waddstr                 window
       waddwstr                window
@@ -549,6 +554,7 @@
       wget_wstr               screen (input-operation)
       wgetbkgrnd              window
       wgetch                  screen (input-operation)
+      wgetdelay               window
       wgetn_wstr              screen (input-operation)
       wgetnstr                screen (input-operation)
       wgetparent              window
@@ -579,11 +585,11 @@
       wnoutrefresh            screen
       wprintw                 window
       wredrawln               window
+
       wrefresh                screen
       wresize                 window locks(windowlist)
       wscanw                  screen
       wscrl                   window
-
       wsetscrreg              window
       wstandend               window
       wstandout               window
@@ -597,35 +603,45 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       These functions all return TRUE or FALSE, except as noted.
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Both a macro and a function are provided for each name.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines are specific to  ncurses.   They  were  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on  ncurses  ex-
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  are  specific  to ncurses.  They were not
+       supported on Version 7, BSD or System  V  implementations.
+       It  is  recommended that any code depending on ncurses ex-
        tensions be conditioned using NCURSES_VERSION.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>
+<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_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
 
 
 
                                                        <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-USAGE">USAGE</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_touch.3x.html b/doc/html/man/curs_touch.3x.html
index 42c0fe2..0b4642a 100644
--- a/doc/html/man/curs_touch.3x.html
+++ b/doc/html/man/curs_touch.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2020,2015 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            *
@@ -27,32 +26,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_touch.3x,v 1.11 2006/02/25 21:49:19 tom Exp @
+  * @Id: curs_touch.3x,v 1.15 2015/04/11 10:23:49 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_touch 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_touch 3x</H1>
-<HR>
+<H1 class="no-header">curs_touch 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>                                           <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>touchwin</STRONG>, <STRONG>touchline</STRONG>, <STRONG>untouchwin</STRONG>, <STRONG>wtouchln</STRONG>, <STRONG>is_linetouched</STRONG>,
        <STRONG>is_wintouched</STRONG> - <STRONG>curses</STRONG> refresh control routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
        <STRONG>int</STRONG> <STRONG>touchwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
        <STRONG>int</STRONG> <STRONG>touchline(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>start,</STRONG> <STRONG>int</STRONG> <STRONG>count);</STRONG>
@@ -63,7 +63,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>touchwin</STRONG> and <STRONG>touchline</STRONG> routines throw away  all  opti-
        mization  information about which parts of the window have
        been touched, by pretending that  the  entire  window  has
@@ -79,66 +79,72 @@
 
        The <STRONG>wtouchln</STRONG> routine makes <EM>n</EM> lines in the window, starting
        at line <EM>y</EM>, look as if they have (<EM>changed</EM><STRONG>=1</STRONG>)  or  have  not
-       (<EM>changed</EM><STRONG>=0</STRONG>)  been changed since the last call to <STRONG>wrefresh</STRONG>.
+       (<EM>changed</EM><STRONG>=0</STRONG>) been changed since the last call to <STRONG>wrefresh</STRONG>.
 
-       The <STRONG>is_linetouched</STRONG> and <STRONG>is_wintouched</STRONG> routines return  <STRONG>TRUE</STRONG>
-       if  the  specified line/window was modified since the last
-       call to <STRONG>wrefresh</STRONG>; otherwise they return <STRONG>FALSE</STRONG>.   In  addi-
-       tion,  <STRONG>is_linetouched</STRONG> returns <STRONG>ERR</STRONG> if <EM>line</EM> is not valid for
+       The  <STRONG>is_linetouched</STRONG> and <STRONG>is_wintouched</STRONG> routines return <STRONG>TRUE</STRONG>
+       if the specified line/window was modified since  the  last
+       call  to  <STRONG>wrefresh</STRONG>; otherwise they return <STRONG>FALSE</STRONG>.  In addi-
+       tion, <STRONG>is_linetouched</STRONG> returns <STRONG>ERR</STRONG> if <EM>line</EM> is not valid  for
        the given window.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       All routines return the integer <STRONG>ERR</STRONG> upon  failure  and  an
-       integer  value  other than <STRONG>ERR</STRONG> upon successful completion,
-       unless otherwise noted in the preceding  routine  descrip-
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       All  routines  return  the integer <STRONG>ERR</STRONG> upon failure and an
+       integer value other than <STRONG>ERR</STRONG> upon  successful  completion,
+       unless  otherwise  noted in the preceding routine descrip-
        tions.
 
-       X/Open  does not define any error conditions.  In this im-
+       X/Open does not define any error conditions.  In this  im-
        plementation
 
               <STRONG>is_linetouched</STRONG>
-                   returns an error  if  the  window  pointer  is
-                   null,  or  if  the  line number is outside the
-                   window.  Note that ERR is distinct  from  TRUE
-                   and  FALSE, which are the normal return values
+                   returns  an  error  if  the  window pointer is
+                   null, or if the line  number  is  outside  the
+                   window.   Note  that ERR is distinct from <STRONG>TRUE</STRONG>
+                   and <STRONG>FALSE</STRONG>, which are the normal return  values
                    of this function.
 
               <STRONG>wtouchln</STRONG>
-                   returns an error  if  the  window  pointer  is
-                   null,  or  if  the  line number is outside the
+                   returns  an  error  if  the  window pointer is
+                   null, or if the line  number  is  outside  the
                    window.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       The XSI Curses standard, Issue  4  describes  these  func-
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       The  XSI  Curses  standard,  Issue 4 describes these func-
        tions.
 
-       Some  historic  curses  implementations had, as an undocu-
-       mented feature,  the  ability  to  do  the  equivalent  of
-       <STRONG>clearok(...,</STRONG>  <STRONG>1)</STRONG>  by saying <STRONG>touchwin(stdscr)</STRONG> or <STRONG>clear(std-</STRONG>
+       Some historic curses implementations had,  as  an  undocu-
+       mented  feature,  the  ability  to  do  the  equivalent of
+       <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG> by saying <STRONG>touchwin(stdscr)</STRONG>  or  <STRONG>clear(std-</STRONG>
        <STRONG>scr)</STRONG>.  This will not work under ncurses.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Note that all routines except <STRONG>wtouchln</STRONG> may be macros.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>.
+<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_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>.
 
 
 
                                                          <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_trace.3x.html b/doc/html/man/curs_trace.3x.html
index f24a8c8..e4d1129 100644
--- a/doc/html/man/curs_trace.3x.html
+++ b/doc/html/man/curs_trace.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2000-2005,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 2000-2010,2015 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            *
@@ -27,149 +26,179 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_trace.3x,v 1.8 2007/02/24 17:33:49 tom Exp @
+  * @Id: curs_trace.3x,v 1.13 2015/07/20 22:54:44 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_trace 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_trace 3x</H1>
-<HR>
+<H1 class="no-header">curs_trace 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>                                           <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>_tracef</STRONG>, <STRONG>_tracedump</STRONG>, <STRONG>_traceattr</STRONG>, <STRONG>_traceattr2</STRONG>,
-       <STRONG>_nc_tracebits</STRONG>, <STRONG>_tracechar</STRONG>, <STRONG>_tracechtype</STRONG>, <STRONG>_tracechtype2</STRONG>,
-       <STRONG>_tracemouse</STRONG>, <STRONG>trace</STRONG> - <STRONG>curses</STRONG> debugging routines
+       <STRONG>_nc_tracebits</STRONG>, <STRONG>_tracecchar_t</STRONG>, <STRONG>_tracecchar_t2</STRONG>, <STRONG>_tracechar</STRONG>,
+       <STRONG>_tracechtype</STRONG>, <STRONG>_tracechtype2</STRONG>, <STRONG>_tracemouse</STRONG>, <STRONG>trace</STRONG> - <STRONG>curses</STRONG>
+       debugging routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>void</STRONG> <STRONG>_tracef(const</STRONG> <STRONG>char</STRONG> <STRONG>*format,</STRONG> <STRONG>...);</STRONG>
-       <STRONG>void</STRONG> <STRONG>_tracedump(const</STRONG> <STRONG>char</STRONG> <STRONG>*label,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*_traceattr(attr_t</STRONG> <STRONG>attr);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*_traceattr2(int</STRONG> <STRONG>buffer,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
+       <STRONG>void</STRONG> <STRONG>_tracef(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>format</EM><STRONG>,</STRONG> <STRONG>...);</STRONG>
+       <STRONG>void</STRONG> <STRONG>_tracedump(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*_traceattr(attr_t</STRONG> <EM>attr</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*_traceattr2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
        <STRONG>char</STRONG> <STRONG>*_nc_tracebits(void);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*_tracechar(int);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*_tracechtype(chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*_tracechtype2(int</STRONG> <STRONG>buffer,</STRONG> <STRONG>chtype</STRONG> <STRONG>ch);</STRONG>
-       <STRONG>char</STRONG> <STRONG>*_tracemouse(const</STRONG> <STRONG>MEVENT</STRONG> <STRONG>*event);</STRONG>
-       <STRONG>void</STRONG> <STRONG>trace(const</STRONG> <STRONG>unsigned</STRONG> <STRONG>int</STRONG> <STRONG>param);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>_tracecchar_t(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>string</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>_tracecchar_t2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>string</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*_tracechar(int</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*_tracechtype(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*_tracechtype2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG>
+       <STRONG>char</STRONG> <STRONG>*_tracemouse(const</STRONG> <STRONG>MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>trace(const</STRONG> <STRONG>unsigned</STRONG> <STRONG>int</STRONG> <EM>param</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  <STRONG>trace</STRONG> routines are used for debugging the ncurses li-
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       The <STRONG>trace</STRONG> routines are used for debugging the ncurses  li-
        braries, as well as applications which use the ncurses li-
        braries.  These functions are normally available only with
-       the debugging library <EM>libncurses</EM><STRONG>_</STRONG><EM>g.a</EM>, but may be  compiled
-       into  any  model (shared, static, profile) by defining the
-       symbol <STRONG>TRACE</STRONG>.
+       the  debugging  library  e.g.,  <EM>libncurses</EM><STRONG>_</STRONG><EM>g.a</EM>, but may be
+       compiled into  any  model  (shared,  static,  profile)  by
+       defining  the  symbol <STRONG>TRACE</STRONG>.  Additionally, some functions
+       are only available with the  wide-character  configuration
+       of the libraries.
 
-       The principal parts of this interface are the  <STRONG>trace</STRONG>  rou-
-       tine which selectively enables different tracing features,
-       and the <STRONG>_tracef</STRONG> routine which writes formatted data to the
-       <EM>trace</EM> file.
+       The principal parts of this interface are
+
+       <STRONG>o</STRONG>   <STRONG>trace</STRONG>,  which  selectively  enables  different tracing
+           features, and
+
+       <STRONG>o</STRONG>   <STRONG>_tracef</STRONG>, which writes  formatted  data  to  the  <EM>trace</EM>
+           file.
 
        Calling  <STRONG>trace</STRONG>  with  a  nonzero  parameter opens the file
        <STRONG>trace</STRONG> in the current directory for output.  The  parameter
        is formed by OR'ing values from the list of <STRONG>TRACE_</STRONG><EM>xxx</EM> def-
        initions in <STRONG>&lt;curses.h&gt;</STRONG>.  These include:
 
-       TRACE_DISABLE
+       <STRONG>TRACE_DISABLE</STRONG>
             turn off tracing.
 
-       TRACE_TIMES
+       <STRONG>TRACE_TIMES</STRONG>
             trace user and system times of updates.
 
-       TRACE_TPUTS
+       <STRONG>TRACE_TPUTS</STRONG>
             trace tputs calls.
 
-       TRACE_UPDATE
+       <STRONG>TRACE_UPDATE</STRONG>
             trace update actions, old &amp; new screens.
 
-       TRACE_MOVE
+       <STRONG>TRACE_MOVE</STRONG>
             trace cursor movement and scrolling.
 
-       TRACE_CHARPUT
+       <STRONG>TRACE_CHARPUT</STRONG>
             trace all character outputs.
 
-       TRACE_ORDINARY
+       <STRONG>TRACE_ORDINARY</STRONG>
             trace all update actions.  The  old  and  new  screen
             contents  are  written to the trace file for each re-
             fresh.
 
-       TRACE_CALLS
+       <STRONG>TRACE_CALLS</STRONG>
             trace all curses calls.  The parameters for each call
             are traced, as well as return values.
 
-       TRACE_VIRTPUT
+       <STRONG>TRACE_VIRTPUT</STRONG>
             trace virtual character puts, i.e., calls to <STRONG>addch</STRONG>.
 
-       TRACE_IEVENT
+       <STRONG>TRACE_IEVENT</STRONG>
             trace low-level input processing, including timeouts.
 
-       TRACE_BITS
+       <STRONG>TRACE_BITS</STRONG>
             trace state of TTY control bits.
 
-       TRACE_ICALLS
+       <STRONG>TRACE_ICALLS</STRONG>
             trace internal/nested calls.
 
-       TRACE_CCALLS
+       <STRONG>TRACE_CCALLS</STRONG>
             trace per-character calls.
 
-       TRACE_DATABASE
+       <STRONG>TRACE_DATABASE</STRONG>
             trace read/write of terminfo/termcap data.
 
-       TRACE_ATTRS
+       <STRONG>TRACE_ATTRS</STRONG>
             trace changes to video attributes and colors.
 
-       TRACE_MAXIMUM
-            maximum trace level,  enables  all  of  the  separate
+       <STRONG>TRACE_MAXIMUM</STRONG>
+            maximum  trace  level,  enables  all  of the separate
             trace features.
 
-       Some  tracing  features are enabled whenever the <STRONG>trace</STRONG> pa-
-       rameter is nonzero.  Some features overlap.  The  specific
+       Some tracing features are enabled whenever the  <STRONG>trace</STRONG>  pa-
+       rameter  is nonzero.  Some features overlap.  The specific
        names are used as a guideline.
 
+       The other functions either return a pointer to  a  string-
+       area  (allocated by the corresponding function), or return
+       no value (such as <STRONG>_tracedump</STRONG>, which implements the  screen
+       dump  for <STRONG>TRACE_UPDATE</STRONG>).  The caller should not free these
+       strings, since the  allocation  is  reused  on  successive
+       calls.  To work around the problem of a single string-area
+       per function, some use a buffer-number parameter,  telling
+       the library to allocate additional string-areas.
+
+       These  functions check the <STRONG>NCURSES_TRACE</STRONG> environment vari-
+       able, to set the tracing feature as if <STRONG>trace</STRONG> was called:
+
+              filter, initscr, new_prescr, newterm, nofilter,
+              restartterm, ripoffline, setupterm, slk_init, tge-
+              tent, use_env, use_extended_names, use_tioctl
+
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Routines  which  return a value are designed to be used as
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Routines which return a value are designed to be  used  as
        parameters to the <STRONG>_tracef</STRONG> routine.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These functions are not part of the XSI  interface.   Some
-       other  curses  implementations  are known to have similar,
-       undocumented features, but they are  not  compatible  with
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  functions  are not part of the XSI interface.  Some
+       other curses implementations are known  to  have  similar,
+       undocumented  features,  but  they are not compatible with
        ncurses.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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_trace.3x.html">curs_trace(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_util.3x.html b/doc/html/man/curs_util.3x.html
index 981a372..00b13c2 100644
--- a/doc/html/man/curs_util.3x.html
+++ b/doc/html/man/curs_util.3x.html
@@ -1,7 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
+  * t
   ****************************************************************************
-  * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2013,2015 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            *
@@ -27,33 +27,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_util.3x,v 1.26 2008/10/11 20:32:56 tom Exp @
+  * @Id: curs_util.3x,v 1.43 2015/06/06 23:36:27 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_util 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_util 3x</H1>
-<HR>
+<H1 class="no-header">curs_util 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>                                             <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>delay_output</STRONG>, <STRONG>filter</STRONG>, <STRONG>flushinp</STRONG>, <STRONG>getwin</STRONG>, <STRONG>key_name</STRONG>, <STRONG>keyname</STRONG>,
-       <STRONG>nofilter</STRONG>, <STRONG>putwin</STRONG>, <STRONG>unctrl</STRONG>, <STRONG>use_env</STRONG>, <STRONG>wunctrl</STRONG> - miscellaneous
-       <STRONG>curses</STRONG> utility routines
+       <STRONG>nofilter</STRONG>, <STRONG>putwin</STRONG>, <STRONG>unctrl</STRONG>, <STRONG>use_env</STRONG>, <STRONG>use_tioctl</STRONG>, <STRONG>wunctrl</STRONG> -
+       miscellaneous <STRONG>curses</STRONG> utility routines
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>char</STRONG> <STRONG>*unctrl(chtype</STRONG> <STRONG>c);</STRONG>
@@ -63,6 +64,7 @@
        <STRONG>void</STRONG> <STRONG>filter(void);</STRONG>
        <STRONG>void</STRONG> <STRONG>nofilter(void);</STRONG>
        <STRONG>void</STRONG> <STRONG>use_env(bool</STRONG> <STRONG>f);</STRONG>
+       <STRONG>void</STRONG> <STRONG>use_tioctl(bool</STRONG> <STRONG>f);</STRONG>
        <STRONG>int</STRONG> <STRONG>putwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>FILE</STRONG> <STRONG>*filep);</STRONG>
        <STRONG>WINDOW</STRONG> <STRONG>*getwin(FILE</STRONG> <STRONG>*filep);</STRONG>
        <STRONG>int</STRONG> <STRONG>delay_output(int</STRONG> <STRONG>ms);</STRONG>
@@ -70,161 +72,216 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-unctrl">unctrl</a></H3><PRE>
        The  <STRONG>unctrl</STRONG>  routine returns a character string which is a
        printable representation of the character <EM>c</EM>, ignoring  at-
        tributes.   Control characters are displayed in the <STRONG>^</STRONG><EM>X</EM> no-
        tation.  Printing characters are  displayed  as  is.   The
        corresponding  <STRONG>wunctrl</STRONG>  returns a printable representation
-       of a wide-character.
+       of a wide character.
 
+
+</PRE>
+<H3><a name="h3-keyname_key_name">keyname/key_name</a></H3><PRE>
        The <STRONG>keyname</STRONG> routine returns a character string correspond-
        ing to the key <EM>c</EM>:
 
-          -  Printable  characters  are  displayed as themselves,
-             e.g., a one-character string containing the key.
+       <STRONG>o</STRONG>   Printable  characters  are  displayed  as  themselves,
+           e.g., a one-character string containing the key.
 
-          -  Control characters are displayed in the <STRONG>^</STRONG><EM>X</EM> notation.
+       <STRONG>o</STRONG>   Control characters are displayed in the <STRONG>^</STRONG><EM>X</EM> notation.
 
-          -  DEL (character 127) is displayed as <STRONG>^?</STRONG>.
+       <STRONG>o</STRONG>   DEL (character 127) is displayed as <STRONG>^?</STRONG>.
 
-          -  Values  above 128 are either meta characters (if the
-             screen has not been initialized, or if <STRONG>meta</STRONG> has been
-             called  with a TRUE parameter), shown in the <STRONG>M-</STRONG><EM>X</EM> no-
-             tation, or are displayed as themselves.  In the lat-
-             ter case, the values may not be printable; this fol-
-             lows the X/Open specification.
+       <STRONG>o</STRONG>   Values above 128 are either meta  characters  (if  the
+           screen  has  not been initialized, or if <STRONG>meta</STRONG> has been
+           called with a <STRONG>TRUE</STRONG> parameter), shown in the <STRONG>M-</STRONG><EM>X</EM>  nota-
+           tion,  or  are displayed as themselves.  In the latter
+           case, the values may not be  printable;  this  follows
+           the X/Open specification.
 
-          -  Values above 256 may be the names of  the  names  of
-             function keys.
+       <STRONG>o</STRONG>   Values  above  256  may  be  the names of the names of
+           function keys.
 
-          -  Otherwise  (if  there  is no corresponding name) the
-             function returns null, to denote an  error.   X/Open
-             also lists an "UNKNOWN KEY" return value, which some
-             implementations return rather than null.
+       <STRONG>o</STRONG>   Otherwise (if there  is  no  corresponding  name)  the
+           function returns null, to denote an error.  X/Open al-
+           so lists an "UNKNOWN KEY" return value, which some im-
+           plementations return rather than null.
 
        The corresponding <STRONG>key_name</STRONG> returns a character string cor-
-       responding  to  the wide-character value <EM>w</EM>.  The two func-
-       tions do not return the same set of  strings;  the  latter
+       responding to the wide-character value <EM>w</EM>.  The  two  func-
+       tions  do  not  return the same set of strings; the latter
        returns null where the former would display a meta charac-
        ter.
 
+
+</PRE>
+<H3><a name="h3-filter_nofilter">filter/nofilter</a></H3><PRE>
        The <STRONG>filter</STRONG> routine, if used, must be called before <STRONG>initscr</STRONG>
-       or  <STRONG>newterm</STRONG>  are called.  The effect is that, during those
-       calls, <STRONG>LINES</STRONG> is set to 1;  the  capabilities  <STRONG>clear</STRONG>,  <STRONG>cup</STRONG>,
-       <STRONG>cud</STRONG>,  <STRONG>cud1</STRONG>,  <STRONG>cuu1</STRONG>,  <STRONG>cuu</STRONG>,  <STRONG>vpa</STRONG>  are  disabled; and the <STRONG>home</STRONG>
+       or <STRONG>newterm</STRONG> are called.  The effect is that,  during  those
+       calls,  <STRONG>LINES</STRONG>  is  set  to 1; the capabilities <STRONG>clear</STRONG>, <STRONG>cup</STRONG>,
+       <STRONG>cud</STRONG>, <STRONG>cud1</STRONG>, <STRONG>cuu1</STRONG>, <STRONG>cuu</STRONG>,  <STRONG>vpa</STRONG>  are  disabled;  and  the  <STRONG>home</STRONG>
        string is set to the value of <STRONG>cr</STRONG>.
 
-       The <STRONG>nofilter</STRONG> routine cancels the  effect  of  a  preceding
-       <STRONG>filter</STRONG>  call.   That  allows  the  caller  to initialize a
-       screen on a different device, using a different  value  of
-       <STRONG>$TERM</STRONG>.   The  limitation arises because the <STRONG>filter</STRONG> routine
+       The  <STRONG>nofilter</STRONG>  routine  cancels  the effect of a preceding
+       <STRONG>filter</STRONG> call.  That  allows  the  caller  to  initialize  a
+       screen  on  a different device, using a different value of
+       <STRONG>$TERM</STRONG>.  The limitation arises because the  <STRONG>filter</STRONG>  routine
        modifies the in-memory copy of the terminal information.
 
-       The <STRONG>use_env</STRONG> routine, if used, is called before <STRONG>initscr</STRONG>  or
-       <STRONG>newterm</STRONG>  are  called.   When called with <STRONG>FALSE</STRONG> as an argu-
-       ment, the values of <STRONG>lines</STRONG> and  <STRONG>columns</STRONG>  specified  in  the
-       <EM>terminfo</EM>  database will be used, even if environment vari-
-       ables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> (used by default) are set,  or  if
-       <STRONG>curses</STRONG>  is  running in a window (in which case default be-
-       havior would be to  use  the  window  size  if  <STRONG>LINES</STRONG>  and
-       <STRONG>COLUMNS</STRONG>  are not set).  Note that setting <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG>
-       overrides the corresponding size  which  may  be  obtained
-       from the operating system.
 
-       The  <STRONG>putwin</STRONG> routine writes all data associated with window
-       <EM>win</EM> into the file to which <EM>filep</EM> points.  This information
-       can be later retrieved using the <STRONG>getwin</STRONG> function.
+</PRE>
+<H3><a name="h3-use_env">use_env</a></H3><PRE>
+       The  <STRONG>use_env</STRONG>  routine,  if  used,  should be called before
+       <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> are called (because those  compute  the
+       screen size).  It modifies the way <STRONG>ncurses</STRONG> treats environ-
+       ment variables when determining the screen size.
+
+       <STRONG>o</STRONG>   Normally ncurses looks first at the terminal  database
+           for the screen size.
+
+           If  <STRONG>use_env</STRONG>  was  called  with <STRONG>FALSE</STRONG> for parameter, it
+           stops here unless If <STRONG>use_tioctl</STRONG> was also  called  with
+           <STRONG>TRUE</STRONG> for parameter.
+
+       <STRONG>o</STRONG>   Then  it asks for the screen size via operating system
+           calls.  If successful, it overrides  the  values  from
+           the terminal database.
+
+       <STRONG>o</STRONG>   Finally  (unless <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> parame-
+           ter), ncurses examines the <STRONG>LINES</STRONG> or  <STRONG>COLUMNS</STRONG>  environ-
+           ment variables, using a value in those to override the
+           results from the operating system  or  terminal  data-
+           base.
+
+           Ncurses  also  updates  the screen size in response to
+           SIGWINCH, unless overridden by the  <STRONG>LINES</STRONG>  or  <STRONG>COLUMNS</STRONG>
+           environment variables,
+
+
+</PRE>
+<H3><a name="h3-use_tioctl">use_tioctl</a></H3><PRE>
+       The  <STRONG>use_tioctl</STRONG>  routine, if used, should be called before
+       <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> are called (because those  compute  the
+       screen  size).  After <STRONG>use_tioctl</STRONG> is called with <STRONG>TRUE</STRONG> as an
+       argument, ncurses modifies the last step in  its  computa-
+       tion of screen size as follows:
+
+       <STRONG>o</STRONG>   checks  if the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables
+           are set to a number greater than zero.
+
+       <STRONG>o</STRONG>   for each, ncurses updates the  corresponding  environ-
+           ment  variable with the value that it has obtained via
+           operating system call or from the terminal database.
+
+       <STRONG>o</STRONG>   ncurses re-fetches the value of the environment  vari-
+           ables  so  that  it is still the environment variables
+           which set the screen size.
+
+       The <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> routines combine as  summarized
+       here:
+
+     <EM>use</EM><STRONG>_</STRONG><EM>env</EM>   <EM>use</EM><STRONG>_</STRONG><EM>tioctl</EM>   <EM>Summary</EM>
+     ----------------------------------------------------------------
+
+
+
+     TRUE      FALSE        This  is  the default behavior.  ncurses
+                            uses operating system calls unless over-
+                            ridden by $LINES or $COLUMNS environment
+                            variables.
+     TRUE      TRUE         ncurses  updates  $LINES  and   $COLUMNS
+                            based on operating system calls.
+     FALSE     TRUE         ncurses ignores $LINES and $COLUMNS, us-
+                            es  operating  system  calls  to  obtain
+                            size.
+     FALSE     FALSE        ncurses  relies on the terminal database
+                            to determine size.
+
+
+</PRE>
+<H3><a name="h3-putwin_getwin">putwin/getwin</a></H3><PRE>
+       The <STRONG>putwin</STRONG> routine writes all data associated with  window
+       (or  pad)  <EM>win</EM>  into the file to which <EM>filep</EM> points.  This
+       information can be later retrieved using the <STRONG>getwin</STRONG>  func-
+       tion.
 
        The <STRONG>getwin</STRONG> routine reads window related data stored in the
        file by <STRONG>putwin</STRONG>.  The routine then creates and  initializes
        a new window using that data.  It returns a pointer to the
-       new window.
+       new window.  There are a few caveats:
 
-       The <STRONG>delay_output</STRONG> routine inserts an <EM>ms</EM>  millisecond  pause
-       in  output.   This  routine should not be used extensively
-       because padding characters are  used  rather  than  a  CPU
-       pause.   If  no  padding character is specified, this uses
+       <STRONG>o</STRONG>   the data written is a copy of  the  <STRONG>WINDOW</STRONG>  structure,
+           and  its  associated character cells.  The format dif-
+           fers between the wide-character  (ncursesw)  and  non-
+           wide  (ncurses)  libraries.  You can transfer data be-
+           tween the two, however.
+
+       <STRONG>o</STRONG>   the retrieved window is always created as a  top-level
+           window (or pad), rather than a subwindow.
+
+       <STRONG>o</STRONG>   the  window's  character  cells contain the color pair
+           <EM>value</EM>, but not the actual color <EM>numbers</EM>.  If cells  in
+           the  retrieved  window  use color pairs which have not
+           been created in the application using <STRONG>init_pair</STRONG>,  they
+           will not be colored when the window is refreshed.
+
+
+</PRE>
+<H3><a name="h3-delay_output">delay_output</a></H3><PRE>
+       The  <STRONG>delay_output</STRONG>  routine inserts an <EM>ms</EM> millisecond pause
+       in output.  This routine should not  be  used  extensively
+       because  padding  characters  are  used  rather than a CPU
+       pause.  If no padding character is  specified,  this  uses
        <STRONG>napms</STRONG> to perform the delay.
 
-       The <STRONG>flushinp</STRONG> routine throws away any  typeahead  that  has
-       been  typed  by  the user and has not yet been read by the
+
+</PRE>
+<H3><a name="h3-flushinp">flushinp</a></H3><PRE>
+       The  <STRONG>flushinp</STRONG>  routine  throws away any typeahead that has
+       been typed by the user and has not yet been  read  by  the
        program.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Except for <STRONG>flushinp</STRONG>, routines that return an  integer  re-
-       turn  <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 specifies only "an in-
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Except  for  <STRONG>flushinp</STRONG>, routines that return an integer re-
+       turn <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 specifies only "an  in-
        teger value other than <STRONG>ERR</STRONG>") upon successful completion.
 
        Routines that return pointers return <STRONG>NULL</STRONG> on error.
 
-       X/Open does not define any error conditions.  In this  im-
+       X/Open  does not define any error conditions.  In this im-
        plementation
 
-              <STRONG>flushinp</STRONG>
-                   returns  an error if the terminal was not ini-
-                   tialized.
+          <STRONG>flushinp</STRONG>
+               returns an error if the terminal was not  initial-
+               ized.
 
-              <STRONG>putwin</STRONG>
-                   returns an  error  if  the  associated  <STRONG>fwrite</STRONG>
-                   calls return an error.
+          <STRONG>meta</STRONG> returns  an error if the terminal was not initial-
+               ized.
+
+          <STRONG>putwin</STRONG>
+               returns an error if the  associated  <STRONG>fwrite</STRONG>  calls
+               return an error.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       The  XSI  Curses  standard,  Issue 4 describes these func-
-       tions.  It states that <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG>  will  return  a
-       null  pointer if unsuccessful, but does not define any er-
-       ror conditions.  This implementation checks for three cas-
-       es:
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
 
-              -    the  parameter is a 7-bit US-ASCII code.  This
-                   is the case that X/Open Curses documented.
-
-              -    the parameter is in the range 128-159, i.e., a
-                   C1  control  code.   If  <STRONG>use_legacy_coding</STRONG> has
-                   been called with a <STRONG>2</STRONG> parameter, <STRONG>unctrl</STRONG> returns
-                   the  parameter,  i.e.,  a one-character string
-                   with the parameter  as  the  first  character.
-                   Otherwise,  it  returns  ``~@'', ``~A'', etc.,
-                   analogous to ``^@'', ``^A'', C0 controls.
-
-                   X/Open Curses does not document whether <STRONG>unctrl</STRONG>
-                   can  be  called  before  initializing  curses.
-                   This implementation permits that, and  returns
-                   the ``~@'', etc., values in that case.
-
-              -    parameter  values  outside the 0 to 255 range.
-                   <STRONG>unctrl</STRONG> returns a null pointer.
-
+</PRE>
+<H3><a name="h3-filter">filter</a></H3><PRE>
        The SVr4 documentation describes the action of <STRONG>filter</STRONG> only
-       in  the  vaguest  terms.   The description here is adapted
-       from the XSI Curses standard (which erroneously  fails  to
+       in the vaguest terms.  The  description  here  is  adapted
+       from  the  XSI Curses standard (which erroneously fails to
        describe the disabling of <STRONG>cuu</STRONG>).
 
-       The  strings returned by <STRONG>unctrl</STRONG> in this implementation are
-       determined at compile time, showing C1 controls  from  the
-       upper-128  codes with a `~' prefix rather than `^'.  Other
-       implementations have different conventions.  For  example,
-       they  may  show  both sets of control characters with `^',
-       and strip the parameter to 7 bits.  Or they may ignore  C1
-       controls  and  treat  all of the upper-128 codes as print-
-       able.  This implementation uses 8 bits but does not modify
-       the string to reflect locale.  The <STRONG>use_legacy_coding</STRONG> func-
-       tion allows the caller to change the output of <STRONG>unctrl</STRONG>.
 
-       Likewise, the <STRONG>meta</STRONG> function allows the  caller  to  change
-       the  output of <STRONG>keyname</STRONG>, i.e., it determines whether to use
-       the `M-' prefix for ``meta'' keys (codes in the range  128
-       to 255).  Both <STRONG>use_legacy_coding</STRONG> and <STRONG>meta</STRONG> succeed only af-
-       ter curses is initialized.  X/Open Curses does  not  docu-
-       ment  the  treatment  of  codes 128 to 159.  When treating
-       them as ``meta'' keys (or if <STRONG>keyname</STRONG> is called before ini-
-       tializing  curses),  this  implementation  returns strings
-       ``M-^@'', ``M-^A'', etc.
-
+</PRE>
+<H3><a name="h3-keyname">keyname</a></H3><PRE>
        The <STRONG>keyname</STRONG> function may return the names of  user-defined
        string  capabilities which are defined in the terminfo en-
        try via the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>.  This  implementation  auto-
@@ -237,25 +294,137 @@
        loaded  when  the  terminal description is read by the li-
        brary.
 
-       The <STRONG>nofilter</STRONG> routine is specific to ncurses.  It  was  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on  ncurses  ex-
-       tensions be conditioned using NCURSES_VERSION.
+
+</PRE>
+<H3><a name="h3-nofilter_use_tioctl">nofilter/use_tioctl</a></H3><PRE>
+       The <STRONG>nofilter</STRONG>  and  <STRONG>use_tioctl</STRONG>  routines  are  specific  to
+       ncurses.   They  were  not  supported on Version 7, BSD or
+       System V implementations.  It is recommended that any code
+       depending  on  ncurses  extensions  be  conditioned  using
+       NCURSES_VERSION.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H3><a name="h3-putwin_getwin">putwin/getwin</a></H3><PRE>
+       The <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG> functions have several  issues  with
+       portability:
+
+       <STRONG>o</STRONG>   The  files  written and read by these functions use an
+           implementation-specific format.  Although  the  format
+           is  an obvious target for standardization, it has been
+           overlooked.
+
+           Interestingly enough, according to the copyright dates
+           in Solaris source, the functions (along with <STRONG>scr_init</STRONG>,
+           etc.) originated with the  University  of  California,
+           Berkeley  (in  1982) and were later (in 1988) incorpo-
+           rated into SVr4.  Oddly, there are no  such  functions
+           in the 4.3BSD curses sources.
+
+       <STRONG>o</STRONG>   Most  implementations  simply  dump  the binary <STRONG>WINDOW</STRONG>
+           structure to the file.   These  include  SVr4  curses,
+           NetBSD  and  PDCurses,  as  well as older ncurses ver-
+           sions.  This implementation (as  well  as  the  X/Open
+           variant  of  Solaris  curses, dated 1995) uses textual
+           dumps.
+
+           The implementations which use binary dumps use  block-
+           I/O  (the <STRONG>fwrite</STRONG> and <STRONG>fread</STRONG> functions).  Those that use
+           textual dumps use buffered-I/O.   A  few  applications
+           may happen to write extra data in the file using these
+           functions.  Doing that can run  into  problems  mixing
+           block-  and buffered-I/O.  This implementation reduces
+           the problem on writes by flushing the output.   Howev-
+           er,  reading  from  a file written using mixed schemes
+           may not be successful.
+
+
+</PRE>
+<H3><a name="h3-unctrl_wunctrl">unctrl/wunctrl</a></H3><PRE>
+       The XSI Curses standard, Issue  4  describes  these  func-
+       tions.   It  states  that <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> will return a
+       null pointer if unsuccessful, but does not define any  er-
+       ror conditions.  This implementation checks for three cas-
+       es:
+
+       <STRONG>o</STRONG>   the parameter is a 7-bit US-ASCII code.  This  is  the
+           case that X/Open Curses documented.
+
+       <STRONG>o</STRONG>   the parameter is in the range 128-159, i.e., a C1 con-
+           trol code.  If <STRONG>use_legacy_coding</STRONG> has been called  with
+           a  <STRONG>2</STRONG>  parameter, <STRONG>unctrl</STRONG> returns the parameter, i.e., a
+           one-character string with the parameter as  the  first
+           character.   Otherwise,  it  returns "~@", "~A", etc.,
+           analogous to "^@", "^A", C0 controls.
+
+           X/Open Curses does not document whether <STRONG>unctrl</STRONG> can  be
+           called  before  initializing curses.  This implementa-
+           tion permits that, and returns the "~@", etc.,  values
+           in that case.
+
+       <STRONG>o</STRONG>   parameter  values  outside the 0 to 255 range.  <STRONG>unctrl</STRONG>
+           returns a null pointer.
+
+       The strings returned by <STRONG>unctrl</STRONG> in this implementation  are
+       determined  at  compile time, showing C1 controls from the
+       upper-128 codes with a `~' prefix rather than `^'.   Other
+       implementations  have different conventions.  For example,
+       they may show both sets of control  characters  with  `^',
+       and  strip the parameter to 7 bits.  Or they may ignore C1
+       controls and treat all of the upper-128  codes  as  print-
+       able.  This implementation uses 8 bits but does not modify
+       the string to reflect locale.  The <STRONG>use_legacy_coding</STRONG> func-
+       tion allows the caller to change the output of <STRONG>unctrl</STRONG>.
+
+       Likewise,  the  <STRONG>meta</STRONG>  function allows the caller to change
+       the output of <STRONG>keyname</STRONG>, i.e., it determines whether to  use
+       the `M-' prefix for "meta" keys (codes in the range 128 to
+       255).  Both <STRONG>use_legacy_coding</STRONG> and <STRONG>meta</STRONG> succeed only  after
+       curses  is  initialized.   X/Open Curses does not document
+       the treatment of codes 128 to 159.  When treating them  as
+       "meta"  keys  (or if <STRONG>keyname</STRONG> is called before initializing
+       curses),  this  implementation  returns  strings   "M-^@",
+       "M-^A", etc.
+
+
+</PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG>curs_ker-</STRONG>
-       <STRONG><A HREF="curs_kernel.3x.html">nel(3x)</A></STRONG>, <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>.
+       <STRONG><A HREF="curs_kernel.3x.html">nel(3x)</A></STRONG>,  <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>,   <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>,   <STRONG>lega-</STRONG>
+       <STRONG><A HREF="legacy_coding.3x.html">cy_coding(3x)</A></STRONG>.
 
 
 
                                                           <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-unctrl">unctrl</a></li>
+<li><a href="#h3-keyname_key_name">keyname/key_name</a></li>
+<li><a href="#h3-filter_nofilter">filter/nofilter</a></li>
+<li><a href="#h3-use_env">use_env</a></li>
+<li><a href="#h3-use_tioctl">use_tioctl</a></li>
+<li><a href="#h3-putwin_getwin">putwin/getwin</a></li>
+<li><a href="#h3-delay_output">delay_output</a></li>
+<li><a href="#h3-flushinp">flushinp</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a>
+<ul>
+<li><a href="#h3-filter">filter</a></li>
+<li><a href="#h3-keyname">keyname</a></li>
+<li><a href="#h3-nofilter_use_tioctl">nofilter/use_tioctl</a></li>
+<li><a href="#h3-putwin_getwin">putwin/getwin</a></li>
+<li><a href="#h3-unctrl_wunctrl">unctrl/wunctrl</a></li>
+</ul>
+</li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/curs_variables.3x.html b/doc/html/man/curs_variables.3x.html
new file mode 100644
index 0000000..019c3e5
--- /dev/null
+++ b/doc/html/man/curs_variables.3x.html
@@ -0,0 +1,199 @@
+<!-- 
+  ****************************************************************************
+  * Copyright (c) 2010,2013 Free Software Foundation, Inc.                   *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: curs_variables.3x,v 1.6 2013/12/21 18:41:32 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>curs_variables 3x</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">curs_variables 3x</H1>
+<PRE>
+<STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>                                   <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
+
+
+
+
+</PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>COLORS</STRONG>, <STRONG>COLOR_PAIRS</STRONG>, <STRONG>COLS</STRONG>, <STRONG>ESCDELAY</STRONG>, <STRONG>LINES</STRONG>, <STRONG>TABSIZE</STRONG>,
+       <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>, <STRONG>stdscr</STRONG> - <STRONG>curses</STRONG> global variables
+
+
+</PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+
+       <STRONG>int</STRONG> <STRONG>COLOR_PAIRS;</STRONG>
+       <STRONG>int</STRONG> <STRONG>COLORS;</STRONG>
+       <STRONG>int</STRONG> <STRONG>COLS;</STRONG>
+       <STRONG>int</STRONG> <STRONG>ESCDELAY;</STRONG>
+       <STRONG>int</STRONG> <STRONG>LINES;</STRONG>
+       <STRONG>int</STRONG> <STRONG>TABSIZE;</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>curscr;</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>newscr;</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>stdscr;</STRONG>
+
+
+</PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       This page summarizes variables provided by the <STRONG>curses</STRONG>  li-
+       brary.   A more complete description is given in the <STRONG>curs-</STRONG>
+       <STRONG><A HREF="ncurses.3x.html">es(3x)</A></STRONG> manual page.
+
+       Depending on the configuration, these may be actual  vari-
+       ables,     or    macros    (see    <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>    and
+       <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>) which provide read-only access  to  <EM>curs-</EM>
+       <EM>es</EM>'s  state.   In  either  case, applications should treat
+       them as read-only to avoid confusing the library.
+
+
+</PRE>
+<H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE>
+       After initializing curses, this variable contains the num-
+       ber of color pairs which the terminal can support.  Usual-
+       ly the number of color pairs  will  be  the  product  <STRONG>COL-</STRONG>
+       <STRONG>ORS</STRONG>*<STRONG>COLORS</STRONG>, however this is not always true:
+
+       <STRONG>o</STRONG>   a  few  terminals  use HLS colors, which do not follow
+           this rule
+
+       <STRONG>o</STRONG>   terminals supporting a large number of colors are lim-
+           ited  by  the number of color pairs that can be repre-
+           sented in a <EM>signed</EM> <EM>short</EM> value.
+
+
+</PRE>
+<H3><a name="h3-COLORS">COLORS</a></H3><PRE>
+       After initializing curses, this variable contains the num-
+       ber of colors which the terminal can support.
+
+
+</PRE>
+<H3><a name="h3-COLS">COLS</a></H3><PRE>
+       After  initializing  curses,  this  variable  contains the
+       width of the screen, i.e., the number of columns.
+
+
+</PRE>
+<H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE>
+       This variable holds the number of milliseconds to wait af-
+       ter reading an escape character, to distinguish between an
+       individual escape character entered on the  keyboard  from
+       escape  sequences  sent  by cursor- and function-keys (see
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.
+
+
+</PRE>
+<H3><a name="h3-LINES">LINES</a></H3><PRE>
+       After initializing  curses,  this  variable  contains  the
+       height of the screen, i.e., the number of lines.
+
+
+</PRE>
+<H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE>
+       This  variable  holds  the  number  of columns used by the
+       <EM>curses</EM> library when converting a tab character  to  spaces
+       as it adds the tab to a window (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>.
+
+
+</PRE>
+<H3><a name="h3-The-Current-Screen">The Current Screen</a></H3><PRE>
+       This implementation of curses uses a special window <STRONG>curscr</STRONG>
+       to record its updates to the terminal screen.
+
+
+</PRE>
+<H3><a name="h3-The-New-Screen">The New Screen</a></H3><PRE>
+       This implementation of curses uses a special window <STRONG>newscr</STRONG>
+       to  hold  updates  to  the terminal screen before applying
+       them to <STRONG>curscr</STRONG>.
+
+
+</PRE>
+<H3><a name="h3-The-Standard-Screen">The Standard Screen</a></H3><PRE>
+       Upon initializing curses, a default window called  <STRONG>stdscr</STRONG>,
+       which  is  the  size  of  the terminal screen, is created.
+       Many curses functions use this window.
+
+
+</PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       The   curses   library   is   initialized   using   either
+       <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, or <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>.
+
+       If  <STRONG>curses</STRONG>  is  configured to use separate curses/terminfo
+       libraries, most of these variables reside  in  the  curses
+       library.
+
+
+</PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       ESCDELAY  and TABSIZE are extensions, not provided in most
+       other implementations of curses.
+
+
+</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_opaque.3x.html">curs_opaque(3x)</A></STRONG>,       <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+
+
+
+                                                     <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-COLOR_PAIRS">COLOR_PAIRS</a></li>
+<li><a href="#h3-COLORS">COLORS</a></li>
+<li><a href="#h3-COLS">COLS</a></li>
+<li><a href="#h3-ESCDELAY">ESCDELAY</a></li>
+<li><a href="#h3-LINES">LINES</a></li>
+<li><a href="#h3-TABSIZE">TABSIZE</a></li>
+<li><a href="#h3-The-Current-Screen">The Current Screen</a></li>
+<li><a href="#h3-The-New-Screen">The New Screen</a></li>
+<li><a href="#h3-The-Standard-Screen">The Standard Screen</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/curs_window.3x.html b/doc/html/man/curs_window.3x.html
index da6219d..c474f1c 100644
--- a/doc/html/man/curs_window.3x.html
+++ b/doc/html/man/curs_window.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2014,2015 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            *
@@ -27,82 +26,105 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_window.3x,v 1.14 2006/02/25 21:49:19 tom Exp @
+  * @Id: curs_window.3x,v 1.19 2015/07/21 08:25:23 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>curs_window 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>curs_window 3x</H1>
-<HR>
+<H1 class="no-header">curs_window 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>                                         <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>newwin</STRONG>, <STRONG>delwin</STRONG>, <STRONG>mvwin</STRONG>, <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>dupwin</STRONG>,
        <STRONG>wsyncup</STRONG>, <STRONG>syncok</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>wsyncdown</STRONG> - create <STRONG>curses</STRONG>
        windows
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
-       <STRONG>WINDOW</STRONG> <STRONG>*newwin(int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG> <STRONG>int</STRONG> <STRONG>begin_y,</STRONG>
-             <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>delwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>y,</STRONG> <STRONG>int</STRONG> <STRONG>x);</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*subwin(WINDOW</STRONG> <STRONG>*orig,</STRONG> <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
-             <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*derwin(WINDOW</STRONG> <STRONG>*orig,</STRONG> <STRONG>int</STRONG> <STRONG>nlines,</STRONG> <STRONG>int</STRONG> <STRONG>ncols,</STRONG>
-             <STRONG>int</STRONG> <STRONG>begin_y,</STRONG> <STRONG>int</STRONG> <STRONG>begin_x);</STRONG>
-       <STRONG>int</STRONG> <STRONG>mvderwin(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>par_y,</STRONG> <STRONG>int</STRONG> <STRONG>par_x);</STRONG>
-       <STRONG>WINDOW</STRONG> <STRONG>*dupwin(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wsyncup(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>int</STRONG> <STRONG>syncok(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>bool</STRONG> <STRONG>bf);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wcursyncup(WINDOW</STRONG> <STRONG>*win);</STRONG>
-       <STRONG>void</STRONG> <STRONG>wsyncdown(WINDOW</STRONG> <STRONG>*win);</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*newwin(</STRONG>
+             <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>delwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvwin(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>WINDOW</STRONG> <STRONG>*subwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*derwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG>
+             <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>mvderwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>par</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>par</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG>
+       <STRONG>WINDOW</STRONG> <STRONG>*dupwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>wsyncup(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>syncok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>wcursyncup(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
+       <STRONG>void</STRONG> <STRONG>wsyncdown(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-newwin">newwin</a></H3><PRE>
        Calling <STRONG>newwin</STRONG> creates and returns a pointer to a new win-
        dow with the given number of lines and columns.  The upper
-       left-hand  corner of the window is at line <EM>begin</EM>_<EM>y</EM>, column
-       <EM>begin</EM>_<EM>x</EM>.  If either <EM>nlines</EM> or <EM>ncols</EM> is zero, they  default
-       to  <STRONG>LINES</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>y</EM> and <STRONG>COLS</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>x</EM>.  A new full-screen
-       window is created by calling <STRONG>newwin(0,0,0,0)</STRONG>.
+       left-hand corner of the window is at
+              line <EM>begin</EM>_<EM>y</EM>,
+              column <EM>begin</EM>_<EM>x</EM>
 
+       If either <EM>nlines</EM> or <EM>ncols</EM> is zero, they default to
+              <STRONG>LINES</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>y</EM> and
+              <STRONG>COLS</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>x</EM>.
+
+       A   new   full-screen   window   is   created  by  calling
+       <STRONG>newwin(0,0,0,0)</STRONG>.
+
+
+</PRE>
+<H3><a name="h3-delwin">delwin</a></H3><PRE>
        Calling <STRONG>delwin</STRONG> deletes the named window, freeing all memo-
        ry associated with it (it does not actually erase the win-
        dow's screen image).  Subwindows must  be  deleted  before
        the main window can be deleted.
 
+
+</PRE>
+<H3><a name="h3-mvwin">mvwin</a></H3><PRE>
        Calling <STRONG>mvwin</STRONG> moves the window so that the upper left-hand
        corner is at position (<EM>x</EM>, <EM>y</EM>).  If the move would cause the
        window to be off the screen, it is an error and the window
        is not moved.  Moving subwindows is allowed, but should be
        avoided.
 
+
+</PRE>
+<H3><a name="h3-subwin">subwin</a></H3><PRE>
        Calling <STRONG>subwin</STRONG> creates and returns a pointer to a new win-
        dow with the given number of lines, <EM>nlines</EM>,  and  columns,
        <EM>ncols</EM>.   The  window  is at position (<EM>begin</EM>_<EM>y</EM>, <EM>begin</EM>_<EM>x</EM>) on
-       the screen.  (This position is relative to the screen, and
-       not to the window <EM>orig</EM>.)  The window is made in the middle
-       of the window <EM>orig</EM>, so that changes  made  to  one  window
-       will  affect  both  windows.   The subwindow shares memory
-       with the window <EM>orig</EM>.  When using this routine, it is nec-
-       essary  to call <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> before call-
-       ing <STRONG>wrefresh</STRONG> on the subwindow.
+       the screen.  The subwindow shares memory with  the  window
+       <EM>orig</EM>,  so that changes made to one window will affect both
+       windows.  When using this routine, it is necessary to call
+       <STRONG>touchwin</STRONG>  or  <STRONG>touchline</STRONG> on <EM>orig</EM> before calling <STRONG>wrefresh</STRONG> on
+       the subwindow.
 
+
+</PRE>
+<H3><a name="h3-derwin">derwin</a></H3><PRE>
        Calling <STRONG>derwin</STRONG> is the same as calling <STRONG>subwin,</STRONG> except  that
        <EM>begin</EM>_<EM>y</EM> and <EM>begin</EM>_<EM>x</EM> are relative to the origin of the win-
        dow <EM>orig</EM> rather than the screen.  There is  no  difference
@@ -114,26 +136,38 @@
        play different parts of the  parent  window  at  the  same
        physical position on the screen.
 
+
+</PRE>
+<H3><a name="h3-dupwin">dupwin</a></H3><PRE>
        Calling  <STRONG>dupwin</STRONG>  creates  an exact duplicate of the window
        <EM>win</EM>.
 
+
+</PRE>
+<H3><a name="h3-wsyncup">wsyncup</a></H3><PRE>
        Calling <STRONG>wsyncup</STRONG> touches all locations in ancestors of  <EM>win</EM>
        that  are changed in <EM>win</EM>.  If <STRONG>syncok</STRONG> is called with second
        argument <STRONG>TRUE</STRONG> then <STRONG>wsyncup</STRONG> is called automatically whenev-
        er there is a change in the window.
 
+
+</PRE>
+<H3><a name="h3-wsyncdown">wsyncdown</a></H3><PRE>
        The  <STRONG>wsyncdown</STRONG>  routine  touches each location in <EM>win</EM> that
        has been touched in any of  its  ancestor  windows.   This
        routine  is  called by <STRONG>wrefresh</STRONG>, so it should almost never
        be necessary to call it manually.
 
+
+</PRE>
+<H3><a name="h3-wcursyncup">wcursyncup</a></H3><PRE>
        The routine <STRONG>wcursyncup</STRONG> updates the current cursor position
        of  all the ancestors of the window to reflect the current
        cursor position of the window.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return an integer return the integer <STRONG>ERR</STRONG> up-
        on  failure  and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value
        other than <STRONG>ERR</STRONG>") upon successful completion.
@@ -143,34 +177,54 @@
        X/Open defines no error conditions.  In  this  implementa-
        tion
 
-              <STRONG>delwin</STRONG>
-                   returns  an  error  if  the  window pointer is
-                   null, or if the window is the parent of anoth-
-                   er window.
+       <STRONG>delwin</STRONG>
+            returns an error if the window pointer is null, or if
+            the window is the parent of another window.
 
-                   This  implementation  also maintains a list of
-                   windows, and checks that the pointer passed to
-                   <STRONG>delwin</STRONG>  is  one  that it created, returning an
-                   error if it was not..
+       <STRONG>derwin</STRONG>
+            returns an error if  the  parent  window  pointer  is
+            null,  or  if  any  of its ordinates or dimensions is
+            negative, or if the resulting window does not fit in-
+            side the parent window.
 
-              <STRONG>mvderwin</STRONG>
-                   returns an error  if  the  window  pointer  is
-                   null,  or  if some part of the window would be
-                   placed off-screen.
+       <STRONG>dupwin</STRONG>
+            returns an error if the window pointer is null.
 
-              <STRONG>mvwin</STRONG>
-                   returns an error  if  the  window  pointer  is
-                   null,  or if the window is really a pad, or if
-                   some part of the window would be  placed  off-
-                   screen.
+            This implementation also maintains a list of windows,
+            and checks that the pointer passed to <STRONG>delwin</STRONG>  is  one
+            that it created, returning an error if it was not..
 
-              <STRONG>syncok</STRONG>
-                   returns  an  error  if  the  window pointer is
-                   null.
+       <STRONG>mvderwin</STRONG>
+            returns an error if the window pointer is null, or if
+            some part of the window would be placed off-screen.
+
+       <STRONG>mvwin</STRONG>
+            returns an error if the window pointer is null, or if
+            the  window  is  really a pad, or if some part of the
+            window would be placed off-screen.
+
+       <STRONG>newwin</STRONG>
+            will fail if either of  its  beginning  ordinates  is
+            negative, or if either the number of lines or columns
+            is negative.
+
+       <STRONG>syncok</STRONG>
+            returns an error if the window pointer is null.
+
+       <STRONG>subwin</STRONG>
+            returns an error if  the  parent  window  pointer  is
+            null,  or  if  any  of its ordinates or dimensions is
+            negative, or if the resulting window does not fit in-
+            side the parent window.
+
+       The  functions which return a window pointer may also fail
+       if there is insufficient memory for its  data  structures.
+       Any  of  these  functions  will fail if the screen has not
+       been initialized, i.e., with <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        If many small changes are made to the window, the  <STRONG>wsyncup</STRONG>
        option could degrade performance.
 
@@ -178,7 +232,7 @@
 
 
 </PRE>
-<H2>BUGS</H2><PRE>
+<H2><a name="h2-BUGS">BUGS</a></H2><PRE>
        The  subwindow  functions (<EM>subwin</EM>, <EM>derwin</EM>, <EM>mvderwin</EM>, <STRONG>wsyn-</STRONG>
        <STRONG>cup</STRONG>, <STRONG>wsyncdown</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>syncok</STRONG>) are flaky, incomplete-
        ly implemented, and not well tested.
@@ -193,23 +247,43 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  XSI  Curses  standard,  Issue 4 describes these func-
        tions.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
+<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_refresh.3x.html">curs_refresh(3x)</A></STRONG>,  <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>,  <STRONG>curs_vari-</STRONG>
+       <STRONG><A HREF="curs_variables.3x.html">ables(3x)</A></STRONG>
 
 
 
                                                         <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-newwin">newwin</a></li>
+<li><a href="#h3-delwin">delwin</a></li>
+<li><a href="#h3-mvwin">mvwin</a></li>
+<li><a href="#h3-subwin">subwin</a></li>
+<li><a href="#h3-derwin">derwin</a></li>
+<li><a href="#h3-dupwin">dupwin</a></li>
+<li><a href="#h3-wsyncup">wsyncup</a></li>
+<li><a href="#h3-wsyncdown">wsyncdown</a></li>
+<li><a href="#h3-wcursyncup">wcursyncup</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/default_colors.3x.html b/doc/html/man/default_colors.3x.html
index 4c9e801..46e1fdf 100644
--- a/doc/html/man/default_colors.3x.html
+++ b/doc/html/man/default_colors.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2011 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            *
@@ -28,32 +27,33 @@
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1997,1999,2000,2005
-  * @Id: default_colors.3x,v 1.20 2006/12/24 15:02:53 tom Exp @
+  * @Id: default_colors.3x,v 1.23 2011/01/03 21:52:27 Tim.van.der.Molen Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>default_colors 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>default_colors 3x</H1>
-<HR>
+<H1 class="no-header">default_colors 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>                                   <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>use_default_colors</STRONG>, <STRONG>assume_default_colors</STRONG> - use terminal's
        default colors
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>use_default_colors(void);</STRONG>
@@ -61,7 +61,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <EM>use</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM> and <EM>assume</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors()</EM> func-
        tions are extensions to the curses library.  They are used
        with terminals that support ISO 6429 color, or equivalent.
@@ -111,16 +111,16 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG>
        on success.  They will fail if either  the  terminal  does
        not  support  the <EM>orig</EM><STRONG>_</STRONG><EM>pair</EM> or <EM>orig</EM><STRONG>_</STRONG><EM>colors</EM> capability.  If
-       the <EM>initialize</EM><STRONG>_</STRONG><EM>pair</EM> capability is found,  this  causes  an
-       error as well.
+       the <EM>initialize</EM><STRONG>_</STRONG><EM>pair</EM> capability is not found,  this  causes
+       an error as well.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        Associated  with  this  extension,  the <STRONG>init_pair</STRONG> function
        accepts negative arguments to specify  default  foreground
        or background colors.
@@ -150,7 +150,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines are specific to  ncurses.   They  were  not
        supported  on  Version 7, BSD or System V implementations.
        It is recommended that any code depending on them be  con-
@@ -158,12 +158,12 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG><A HREF="ded.1.html">ded(1)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG>ded(1)</STRONG>.
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Thomas  Dickey  (from  an analysis of the requirements for
        color xterm for XFree86 3.1.2C, February 1996).
 
@@ -171,10 +171,17 @@
 
                                                      <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/define_key.3x.html b/doc/html/man/define_key.3x.html
index 0a6b54b..e12d989 100644
--- a/doc/html/man/define_key.3x.html
+++ b/doc/html/man/define_key.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2004,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2009,2010 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            *
@@ -28,38 +27,39 @@
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1997
-  * @Id: define_key.3x,v 1.12 2006/02/25 21:49:19 tom Exp @
+  * @Id: define_key.3x,v 1.14 2010/12/04 18:49:20 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>define_key 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>define_key 3x</H1>
-<HR>
+<H1 class="no-header">define_key 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>                                           <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>define_key</STRONG> - define a keycode
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>define_key(const</STRONG> <STRONG>char</STRONG> <STRONG>*definition,</STRONG> <STRONG>int</STRONG> <STRONG>keycode);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        This is an extension to the curses library.  It permits an
        application to define keycodes  with  their  corresponding
        control  strings,  so that the ncurses library will inter-
@@ -73,36 +73,45 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The keycode  must  be  greater  than  zero,  else  ERR  is
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       The keycode must be greater than zero, and the string non-
+       null, otherwise ERR is returned.  ERR may also be returned
+       if there is insufficient memory to allocate  the  data  to
+       store  the  definition.   If  no  error is detected, OK is
        returned.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  are  specific  to ncurses.  They were not
-       supported on Version 7, BSD or System  V  implementations.
-       It  is recommended that any code depending on them be con-
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These routines are specific to  ncurses.   They  were  not
+       supported  on  Version 7, BSD or System V implementations.
+       It is recommended that any code depending on them be  con-
        ditioned using NCURSES_VERSION.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>, <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Thomas Dickey.
 
 
 
                                                          <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form.3x.html b/doc/html/man/form.3x.html
index a2135f3..827d97a 100644
--- a/doc/html/man/form.3x.html
+++ b/doc/html/man/form.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2014,2015 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            *
@@ -28,36 +27,37 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form.3x,v 1.22 2008/10/11 20:48:11 tom Exp @
+  * @Id: form.3x,v 1.26 2015/08/02 18:14:50 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form 3x</H1>
-<HR>
+<H1 class="no-header">form 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>                                                       <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form</STRONG> - curses extension for programming forms
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  <STRONG>form</STRONG> library provides terminal-independent facilities
        for composing form screens  on  character-cell  terminals.
        The  library  includes:  field  routines, which create and
@@ -77,7 +77,9 @@
        A  curses  initialization  routine such as <STRONG>initscr</STRONG> must be
        called before using any of these functions.
 
-   <STRONG>Current</STRONG> <STRONG>Default</STRONG> <STRONG>Values</STRONG> <STRONG>for</STRONG> <STRONG>Field</STRONG> <STRONG>Attributes</STRONG>
+
+</PRE>
+<H3><a name="h3-Current-Default-Values-for-Field-Attributes">Current Default Values for Field Attributes</a></H3><PRE>
        The <STRONG>form</STRONG> library  maintains  a  default  value  for  field
        attributes.   You  can  get or set this default by calling
        the appropriate <STRONG>set_</STRONG> or  retrieval  routine  with  a  <STRONG>NULL</STRONG>
@@ -85,7 +87,9 @@
        affects future field creations, but does  not  change  the
        rendering of fields already created.
 
-   <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
+
+</PRE>
+<H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE>
        The  following  table lists each <STRONG>form</STRONG> routine and the name
        of the manual page on which it is described.
 
@@ -115,6 +119,7 @@
 
        field_userptr          <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
        form_driver            <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
+       form_driver_w          <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>*
        form_fields            <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
        form_init              <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
        form_opts              <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
@@ -168,7 +173,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return pointers return <STRONG>NULL</STRONG>  on  error,  and
        set  errno  to  the  corresponding  error-code returned by
        functions returning an integer.  Routines that  return  an
@@ -213,46 +218,55 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
-       detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        files <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
 
-       In  your  library  list,  libform.a should be before libn-
+       In your library list, libform.a  should  be  before  libn-
        curses.a; that is, you want to say `-lform -lncurses', not
-       the  other  way  around (which would give you a link error
+       the other way around (which would give you  a  link  error
        using most linkers).
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V forms  library.   They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  emulate the System V forms library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual pages and adaptation for  ncurses
        by Eric S. Raymond.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       This describes <STRONG>ncurses</STRONG> version 5.6 (patch 20081011).
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <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 20150808).
 
 
 
                                                                <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Current-Default-Values-for-Field-Attributes">Current Default Values for Field Attributes</a></li>
+<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_cursor.3x.html b/doc/html/man/form_cursor.3x.html
index af34701..c377fc0 100644
--- a/doc/html/man/form_cursor.3x.html
+++ b/doc/html/man/form_cursor.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,37 +27,38 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_cursor.3x,v 1.6 2006/11/04 18:50:24 tom Exp @
+  * @Id: form_cursor.3x,v 1.8 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_cursor 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_cursor 3x</H1>
-<HR>
+<H1 class="no-header">form_cursor 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>                                         <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_cursor</STRONG> - position a form window cursor
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int pos_form_cursor(FORM *form);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>pos_form_cursor</STRONG>  restores the cursor to the
        position required for the forms driver  to  continue  pro-
        cessing  requests.   This  is useful after <STRONG>curses</STRONG> routines
@@ -67,7 +67,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        This routine returns one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -84,24 +84,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate the System V forms library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -109,10 +109,17 @@
 
                                                         <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_data.3x.html b/doc/html/man/form_data.3x.html
index 0232996..7691a29 100644
--- a/doc/html/man/form_data.3x.html
+++ b/doc/html/man/form_data.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,38 +27,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_data.3x,v 1.8 2006/02/25 21:38:26 tom Exp @
+  * @Id: form_data.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_data 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_data 3x</H1>
-<HR>
+<H1 class="no-header">form_data 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>                                             <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_data</STRONG> - test for off-screen data in given forms
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        bool data_ahead(const FORM *form);
        bool data_behind(const FORM *form);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function <STRONG>data_ahead</STRONG> tests whether there is off-screen
        data ahead in the given form.   It  returns  TRUE  (1)  or
        FALSE (0).
@@ -70,24 +70,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -95,10 +95,16 @@
 
                                                           <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_driver.3x.html b/doc/html/man/form_driver.3x.html
index 66eb7e6..72b2d94 100644
--- a/doc/html/man/form_driver.3x.html
+++ b/doc/html/man/form_driver.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2015 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            *
@@ -27,298 +26,204 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_driver.3x,v 1.16 2008/06/21 21:55:39 tom Exp @
+  * @Id: form_driver.3x,v 1.24 2015/08/02 18:21:11 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_driver 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_driver 3x</H1>
-<HR>
+<H1 class="no-header">form_driver 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>                                         <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_driver</STRONG> - command-processing loop of the form system
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
-       int form_driver(FORM *form, int c);
+       <STRONG>int</STRONG> <STRONG>form_driver(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG>
+       <STRONG>int</STRONG> <STRONG>form_driver_w(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-form_driver">form_driver</a></H3><PRE>
        Once a form has been posted (displayed), you should funnel
        input events to it through <STRONG>form_driver</STRONG>.  This routine  has
        three major input cases:
 
-       -  The  input  is  a  form navigation request.  Navigation
-          request codes are constants defined in <STRONG>&lt;form.h&gt;</STRONG>,  which
-          are distinct from the key- and character codes returned
-          by <STRONG>wgetch</STRONG>.
+       <STRONG>o</STRONG>   The  input  is  a form navigation request.  Navigation
+           request codes are constants defined in <STRONG>&lt;form.h&gt;</STRONG>, which
+           are   distinct  from  the  key-  and  character  codes
+           returned by <STRONG><A HREF="wgetch.3x.html">wgetch(3x)</A></STRONG>.
 
-       -  The input is a printable character.  Printable  charac-
-          ters  (which  must  be  positive,  less  than  256) are
-          checked according to the program's locale settings.
+       <STRONG>o</STRONG>   The input is a printable character.  Printable charac-
+           ters  (which  must  be  positive,  less  than 256) are
+           checked according to the program's locale settings.
 
-       -  The input is the KEY_MOUSE special key associated  with
-          an mouse event.
+       <STRONG>o</STRONG>   The input is the KEY_MOUSE special key associated with
+           an mouse event.
 
+
+</PRE>
+<H3><a name="h3-form_driver_w">form_driver_w</a></H3><PRE>
+       This  extension  simplifies  the  use of the forms library
+       using wide characters.  The input is either a key code  (a
+       request) or a wide character returned by <STRONG><A HREF="get_wch.3x.html">get_wch(3x)</A></STRONG>.  The
+       type must be passed as well,  to  enable  the  library  to
+       determine  whether  the parameter is a wide character or a
+       request.
+
+
+</PRE>
+<H3><a name="h3-Form-driver-requests">Form-driver requests</a></H3><PRE>
        The form driver requests are as follows:
 
-       REQ_NEXT_PAGE
-            Move to the next page.
+       <EM>Name</EM>               <EM>Description</EM>
+       -------------------------------------------------------------------------
+       REQ_BEG_FIELD      Move to the beginning of the field.
+       REQ_BEG_LINE       Move to the beginning of the line.
+       REQ_CLR_EOF        Clear to end of field from cursor.
+       REQ_CLR_EOL        Clear to end of line from cursor.
+       REQ_CLR_FIELD      Clear the entire field.
+       REQ_DEL_CHAR       Delete character at the cursor.
+       REQ_DEL_LINE       Delete line at the cursor.
+       REQ_DEL_PREV       Delete character before the cursor.
+       REQ_DEL_WORD       Delete blank-delimited word at the cursor.
+       REQ_DOWN_CHAR      Move down in the field.
+       REQ_DOWN_FIELD     Move down to a field.
+       REQ_END_FIELD      Move to the end of the field.
+       REQ_END_LINE       Move to the end of the line.
+       REQ_FIRST_FIELD    Move to the first field.
+       REQ_FIRST_PAGE     Move to the first page.
+       REQ_INS_CHAR       Insert a blank at the cursor.
+       REQ_INS_LINE       Insert a blank line at the cursor.
+       REQ_INS_MODE       Enter insert mode.
+       REQ_LAST_FIELD     Move to the last field.
+       REQ_LAST_PAGE      Move to the last field.
+       REQ_LEFT_CHAR      Move left in the field.
+       REQ_LEFT_FIELD     Move left to a field.
 
-       REQ_PREV_PAGE
-            Move to the previous page.
+       REQ_NEW_LINE       Insert or overlay a new line.
+       REQ_NEXT_CHAR      Move to the next char.
+       REQ_NEXT_CHOICE    Display next field choice.
+       REQ_NEXT_FIELD     Move to the next field.
+       REQ_NEXT_LINE      Move to the next line.
+       REQ_NEXT_PAGE      Move to the next page.
+       REQ_NEXT_PAGE      Move to the next page.
+       REQ_NEXT_WORD      Move to the next word.
+       REQ_OVL_MODE       Enter overlay mode.
+       REQ_PREV_CHAR      Move to the previous char.
+       REQ_PREV_CHOICE    Display previous field choice.
+       REQ_PREV_FIELD     Move to the previous field.
+       REQ_PREV_LINE      Move to the previous line.
+       REQ_PREV_PAGE      Move to the previous page.
+       REQ_PREV_WORD      Move to the previous word.
+       REQ_RIGHT_CHAR     Move right in the field.
+       REQ_RIGHT_FIELD    Move right to a field.
+       REQ_SCR_BCHAR      Scroll the field backward a character.
+       REQ_SCR_BHPAGE     Scroll the field backward half a page.
+       REQ_SCR_BLINE      Scroll the field backward a line.
+       REQ_SCR_BPAGE      Scroll the field backward a page.
+       REQ_SCR_FCHAR      Scroll the field forward a character.
+       REQ_SCR_FHPAGE     Scroll the field forward half a page.
+       REQ_SCR_FLINE      Scroll the field forward a line.
+       REQ_SCR_FPAGE      Scroll the field forward a page.
+       REQ_SCR_HBHALF     Horizontal scroll the field backward half a line.
+       REQ_SCR_HBLINE     Horizontal scroll the field backward a line.
+       REQ_SCR_HFHALF     Horizontal scroll the field forward half a line.
+       REQ_SCR_HFLINE     Horizontal scroll the field forward a line.
+       REQ_SFIRST_FIELD   Move to the sorted first field.
+       REQ_SLAST_FIELD    Move to the sorted last field.
+       REQ_SNEXT_FIELD    Move to the sorted next field.
+       REQ_SPREV_FIELD    Move to the sorted previous field.
+       REQ_UP_CHAR        Move up in the field.
+       REQ_UP_FIELD       Move up to a field.
+       REQ_VALIDATION     Validate field.
 
-       REQ_FIRST_PAGE
-            Move to the first page.
-
-       REQ_LAST_PAGE
-            Move to the last field.
-
-
-       REQ_NEXT_FIELD
-            Move to the next field.
-
-       REQ_PREV_FIELD
-            Move to the previous field.
-
-       REQ_FIRST_FIELD
-            Move to the first field.
-
-       REQ_LAST_FIELD
-            Move to the last field.
-
-       REQ_SNEXT_FIELD
-            Move to the sorted next field.
-
-       REQ_SPREV_FIELD
-            Move to the sorted previous field.
-
-       REQ_SFIRST_FIELD
-            Move to the sorted first field.
-
-       REQ_SLAST_FIELD
-            Move to the sorted last field.
-
-       REQ_LEFT_FIELD
-            Move left to a field.
-
-       REQ_RIGHT_FIELD
-            Move right to a field.
-
-       REQ_UP_FIELD
-            Move up to a field.
-
-       REQ_DOWN_FIELD
-            Move down to a field.
-
-
-       REQ_NEXT_CHAR
-            Move to the next char.
-
-       REQ_PREV_CHAR
-            Move to the previous char.
-
-       REQ_NEXT_LINE
-            Move to the next line.
-
-       REQ_PREV_LINE
-            Move to the previous line.
-
-       REQ_NEXT_WORD
-            Move to the next word.
-
-       REQ_PREV_WORD
-            Move to the previous word.
-
-       REQ_BEG_FIELD
-            Move to the beginning of the field.
-
-       REQ_END_FIELD
-            Move to the end of the field.
-
-       REQ_BEG_LINE
-            Move to the beginning of the line.
-
-       REQ_END_LINE
-            Move to the end of the line.
-
-       REQ_LEFT_CHAR
-            Move left in the field.
-
-       REQ_RIGHT_CHAR
-            Move right in the field.
-
-       REQ_UP_CHAR
-            Move up in the field.
-
-       REQ_DOWN_CHAR
-            Move down in the field.
-
-
-       REQ_NEW_LINE
-            Insert or overlay a new line.
-
-       REQ_INS_CHAR
-            Insert a blank at the cursor.
-
-       REQ_INS_LINE
-            Insert a blank line at the cursor.
-
-       REQ_DEL_CHAR
-            Delete character at the cursor.
-
-       REQ_DEL_PREV
-            Delete character before the cursor.
-
-       REQ_DEL_LINE
-            Delete line at the cursor.
-
-       REQ_DEL_WORD
-            Delete blank-delimited word at the cursor.
-
-       REQ_CLR_EOL
-            Clear to end of line from cursor.
-
-       REQ_CLR_EOF
-            Clear to end of field from cursor.
-
-       REQ_CLR_FIELD
-            Clear the entire field.
-
-       REQ_OVL_MODE
-            Enter overlay mode.
-
-       REQ_INS_MODE
-            Enter insert mode.
-
-
-       REQ_SCR_FLINE
-            Scroll the field forward a line.
-
-       REQ_SCR_BLINE
-            Scroll the field backward a line.
-
-       REQ_SCR_FPAGE
-            Scroll the field forward a page.
-
-       REQ_SCR_BPAGE
-            Scroll the field backward a page.
-
-       REQ_SCR_FHPAGE
-            Scroll the field forward half a page.
-
-       REQ_SCR_BHPAGE
-            Scroll the field backward half a page.
-
-
-       REQ_SCR_FCHAR
-            Scroll the field forward a character.
-
-       REQ_SCR_BCHAR
-            Scroll the field backward a character.
-
-       REQ_SCR_HFLINE
-            Horizontal scroll the field forward a line.
-
-       REQ_SCR_HBLINE
-            Horizontal scroll the field backward a line.
-
-       REQ_SCR_HFHALF
-            Horizontal scroll the field forward half a line.
-
-       REQ_SCR_HBHALF
-            Horizontal scroll the field backward half a line.
-
-
-       REQ_VALIDATION
-            Validate field.
-
-       REQ_NEXT_CHOICE
-            Display next field choice.
-
-       REQ_PREV_CHOICE
-            Display previous field choice.
-
-       If  the  second  argument  is  a  printable character, the
-       driver places it in the current position  in  the  current
-       field.   If  it is one of the forms requests listed above,
+       If the second  argument  is  a  printable  character,  the
+       driver  places  it  in the current position in the current
+       field.  If it is one of the forms requests  listed  above,
        that request is executed.
 
-   <STRONG>MOUSE</STRONG> <STRONG>HANDLING</STRONG>
-       If the second argument is the KEY_MOUSE special  key,  the
+
+</PRE>
+<H3><a name="h3-Mouse-handling">Mouse handling</a></H3><PRE>
+       If  the  second argument is the KEY_MOUSE special key, the
        associated mouse event is translated into one of the above
-       pre-defined requests.  Currently only clicks in  the  user
-       window  (e.g.  inside the form display area or the decora-
+       pre-defined  requests.   Currently only clicks in the user
+       window (e.g., inside the form display area or the  decora-
        tion window) are handled.
 
        If you click above the display region of the form:
 
-              a REQ_PREV_FIELD is generated for a single click,
+          a REQ_PREV_FIELD is generated for a single click,
 
-              a REQ_PREV_PAGE is generated for a double-click and
+          a REQ_PREV_PAGE is generated for a double-click and
 
-              a REQ_FIRST_FIELD is generated for a  triple-click.
+          a REQ_FIRST_FIELD is generated for a triple-click.
 
        If you click below the display region of the form:
 
-              a REQ_NEXT_FIELD is generated for a single click,
+          a REQ_NEXT_FIELD is generated for a single click,
 
-              a REQ_NEXT_PAGE is generated for a double-click and
+          a REQ_NEXT_PAGE is generated for a double-click and
 
-              a REQ_LAST_FIELD is generated for a triple-click.
+          a REQ_LAST_FIELD is generated for a triple-click.
 
-       If you click at an field inside the display  area  of  the
+       If  you  click  at an field inside the display area of the
        form:
 
-              -  the form cursor is positioned to that field.
+          <STRONG>o</STRONG>   the form cursor is positioned to that field.
 
-              -  If  you double-click a field, the form cursor is
-                 positioned to that field  and  <STRONG>E_UNKNOWN_COMMAND</STRONG>
-                 is  returned.   This  return  value makes sense,
-                 because a double click  usually  means  that  an
-                 field-specific action should be returned.  It is
-                 exactly the purpose of this return value to sig-
-                 nal  that an application specific command should
-                 be executed.
+          <STRONG>o</STRONG>   If you double-click a field,  the  form  cursor  is
+              positioned  to  that field and <STRONG>E_UNKNOWN_COMMAND</STRONG> is
+              returned.  This return value makes sense, because a
+              double  click  usually means that an field-specific
+              action should be returned.  It is exactly the  pur-
+              pose  of this return value to signal that an appli-
+              cation specific command should be executed.
 
-              -  If  a  translation  into  a  request  was  done,
-                 <STRONG>form_driver</STRONG>  returns the result of this request.
+          <STRONG>o</STRONG>   If  a  translation  into  a   request   was   done,
+              <STRONG>form_driver</STRONG> returns the result of this request.
 
-       If you clicked outside the user window or the mouse  event
-       could   not   be   translated   into  a  form  request  an
+       If  you clicked outside the user window or the mouse event
+       could  not  be  translated  into   a   form   request   an
        <STRONG>E_REQUEST_DENIED</STRONG> is returned.
 
-   <STRONG>APPLICATION-DEFINED</STRONG> <STRONG>COMMANDS</STRONG>
+
+</PRE>
+<H3><a name="h3-Application-defined-commands">Application-defined commands</a></H3><PRE>
        If the second argument is neither printable nor one of the
-       above  pre-defined form requests, the driver assumes it is
+       above pre-defined form requests, the driver assumes it  is
        an application-specific command and returns <STRONG>E_UNKNOWN_COM-</STRONG>
        <STRONG>MAND</STRONG>.  Application-defined commands should be defined rel-
-       ative to <STRONG>MAX_COMMAND</STRONG>, the  maximum  value  of  these  pre-
+       ative  to  <STRONG>MAX_COMMAND</STRONG>,  the  maximum  value of these pre-
        defined requests.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        <STRONG>form_driver</STRONG> returns one of the following error codes:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
+            Routine detected an incorrect or  out-of-range  argu-
             ment.
 
        <STRONG>E_BAD_STATE</STRONG>
@@ -342,35 +247,50 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="wgetch.3x.html">wgetch(3x)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        files <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V forms  library.   They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  emulate the System V forms library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                         <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-form_driver">form_driver</a></li>
+<li><a href="#h3-form_driver_w">form_driver_w</a></li>
+<li><a href="#h3-Form-driver-requests">Form-driver requests</a></li>
+<li><a href="#h3-Mouse-handling">Mouse handling</a></li>
+<li><a href="#h3-Application-defined-commands">Application-defined commands</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field.3x.html b/doc/html/man/form_field.3x.html
index d743390..f40cf74 100644
--- a/doc/html/man/form_field.3x.html
+++ b/doc/html/man/form_field.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2012 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            *
@@ -28,32 +27,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field.3x,v 1.8 2006/11/04 18:01:38 tom Exp @
+  * @Id: form_field.3x,v 1.11 2012/11/03 23:03:59 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_field 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_field 3x</H1>
-<HR>
+<H1 class="no-header">form_field 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>                                           <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_field</STRONG> - make and break connections between fields and
        forms
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_form_fields(FORM *form, FIELD **fields);
        FIELD **form_fields(const FORM *form);
@@ -62,7 +62,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>set_form_fields</STRONG>  changes  the  field  pointer
        array  of the given <EM>form</EM>.  The array must be terminated by
        a <STRONG>NULL</STRONG>.
@@ -78,7 +78,7 @@
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The  function  <STRONG>form_fields</STRONG> returns a pointer (which may be
        <STRONG>NULL</STRONG>).  It does not set errno.
 
@@ -105,18 +105,18 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
@@ -125,18 +125,25 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                          <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field_attributes.3x.html b/doc/html/man/form_field_attributes.3x.html
index 54d77d9..d7789f7 100644
--- a/doc/html/man/form_field_attributes.3x.html
+++ b/doc/html/man/form_field_attributes.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2002,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,32 +27,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_attributes.3x,v 1.10 2006/11/04 18:51:26 tom Exp @
+  * @Id: form_field_attributes.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_field_attributes 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_field_attributes 3x</H1>
-<HR>
+<H1 class="no-header">form_field_attributes 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>                     <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_field_attributes</STRONG>  -  color  and attribute control for
        form fields
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_field_fore(FIELD *field, chtype attr);
        chtype field_fore(const FIELD *field);
@@ -64,7 +64,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>set_field_fore</STRONG> sets the foreground  attribute
        of  <EM>field</EM>. This is the highlight used to display the field
        contents.  The function <STRONG>field_fore</STRONG> returns the  foreground
@@ -81,7 +81,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -95,25 +95,25 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
        detailed descriptions of the entry points.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate the System V forms library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -121,10 +121,17 @@
 
                                               <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field_buffer.3x.html b/doc/html/man/form_field_buffer.3x.html
index 8e99806..c58fd21 100644
--- a/doc/html/man/form_field_buffer.3x.html
+++ b/doc/html/man/form_field_buffer.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2008,2010 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            *
@@ -28,32 +27,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_buffer.3x,v 1.14 2006/11/04 17:12:00 tom Exp @
+  * @Id: form_field_buffer.3x,v 1.19 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_field_buffer 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_field_buffer 3x</H1>
-<HR>
+<H1 class="no-header">form_field_buffer 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>                             <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_field_buffer</STRONG> - field buffer control
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+
        int  set_field_buffer(FIELD  *field,  int  buf, const char
        *value);
        char *field_buffer(const FIELD *field, int buffer);
@@ -63,23 +64,43 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>set_field_buffer</STRONG> sets the numbered buffer  of
-       the  given  field  to contain a given string.  Buffer 0 is
-       the displayed value of the field; other  numbered  buffers
-       may be allocated by applications through the <STRONG>nbuf</STRONG> argument
-       of (see <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>) but are not manipulated by the
-       forms  library.   The  function  <STRONG>field_buffer</STRONG>  returns the
-       address of the buffer.  Please note that this  buffer  has
-       always  the  length  of the buffer, that means that it may
-       typically contain trailing spaces. If you entered  leading
-       spaces  the  buffer may also contain them. If you want the
-       raw data, you must write your own routine that copies  the
-       value out of the buffer and removes the leading and trail-
-       ing spaces. Please note also, that  subsequent  operations
-       on  the  form  will  probably  change  the  content of the
-       buffer. So do not use it for  long  term  storage  of  the
-       entered form data.
+       the given field to contain a given string:
+
+          <STRONG>o</STRONG>   Buffer 0 is the displayed value of the field.
+
+          <STRONG>o</STRONG>   Other numbered buffers may be allocated by applica-
+              tions   through   the   <STRONG>nbuf</STRONG>   argument   of   (see
+              <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>)  but are not manipulated by the
+              forms library.
+
+       The function <STRONG>field_buffer</STRONG> returns a pointer  to  the  con-
+       tents of the given numbered buffer:
+
+          <STRONG>o</STRONG>   The  buffer  contents  always have the same length,
+              and are padded with trailing spaces  as  needed  to
+              ensure this length is the same.
+
+          <STRONG>o</STRONG>   The buffer may contain leading spaces, depending on
+              how it was set.
+
+          <STRONG>o</STRONG>   The buffer contents are set with  <STRONG>set_field_buffer</STRONG>,
+              or  as  a  side effect of any editing operations on
+              the corresponding field.
+
+          <STRONG>o</STRONG>   Editing operations are based on  the  <EM>window</EM>  which
+              displays the field, rather than a <EM>string</EM>.  The win-
+              dow contains  only  printable  characters,  and  is
+              filled  with blanks.  If you want the raw data, you
+              must write your own routine that copies  the  value
+              out  of  the  buffer  and  removes  the leading and
+              trailing spaces.
+
+          <STRONG>o</STRONG>   Because editing operations change  the  content  of
+              the  buffer to correspond to the window, you should
+              not rely on using buffers for long-term storage  of
+              form data.
 
        The  function  <STRONG>set_field_status</STRONG> sets the associated status
        flag of <EM>field</EM>; <STRONG>field_status</STRONG> gets the current  value.   The
@@ -92,7 +113,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The <STRONG>field_buffer</STRONG> function returns NULL on error.  It  sets
        errno according to their success:
 
@@ -117,31 +138,31 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
        detailed descriptions of the entry points.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file
 
-       When  configured for wide-characters, <STRONG>field_buffer</STRONG> returns
+       When  configured for wide characters, <STRONG>field_buffer</STRONG> returns
        a pointer to temporary storage (allocated and freed by the
        library).   The  application  should not attempt to modify
-       the  data.   It  will  be  freed  on  the  next  call   to
-       <STRONG>field_buffer</STRONG> to return the same buffer.  <STRONG>&lt;curses.h&gt;</STRONG>.
+       the data.  It will be freed on the next call to <STRONG>field_buf-</STRONG>
+       <STRONG>fer</STRONG> to return the same buffer.  <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate the System V forms library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -149,10 +170,17 @@
 
                                                   <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field_info.3x.html b/doc/html/man/form_field_info.3x.html
index 498fc29..b218e54 100644
--- a/doc/html/man/form_field_info.3x.html
+++ b/doc/html/man/form_field_info.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,55 +27,56 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_info.3x,v 1.10 2006/11/04 17:14:31 tom Exp @
+  * @Id: form_field_info.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_field_info 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_field_info 3x</H1>
-<HR>
+<H1 class="no-header">form_field_info 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>                                 <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_field_info</STRONG> - retrieve field characteristics
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int field_info(const FIELD *field, int *rows, int *cols,
                      int *frow, int *fcol, int *nrow, int *nbuf);
-       int dynamic_field_info(const FIELD *field, int *rows,  int
+       int  dynamic_field_info(const FIELD *field, int *rows, int
        *cols, int *max);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>field_info</STRONG>  returns  the  sizes  and  other
-       attributes passed in to the field at  its  creation  time.
-       The  attributes are: height, width, row of upper-left cor-
-       ner, column of upper-left corner, number off-screen  rows,
+       attributes  passed  in  to the field at its creation time.
+       The attributes are: height, width, row of upper-left  cor-
+       ner,  column of upper-left corner, number off-screen rows,
        and number of working buffers.
 
        The function <STRONG>dynamic_field_info</STRONG> returns the actual size of
-       the field, and its maximum possible size.   If  the  field
-       has  no  size  limit,  the location addressed by the third
+       the  field,  and  its maximum possible size.  If the field
+       has no size limit, the location  addressed  by  the  third
        argument will be set to 0.  A field can be made dynamic by
        turning off the <STRONG>O_STATIC</STRONG> option with <STRONG>field_opts_off</STRONG>.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -85,45 +85,52 @@
             System error occurred (see <STRONG>errno</STRONG>).
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
+            Routine detected an incorrect or  out-of-range  argu-
             ment.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
        detailed descriptions of the entry points.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V forms  library.   They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  emulate the System V forms library.  They
        were not supported on Version 7 or BSD versions.
 
-       A  null  (zero  pointer) is accepted for any of the return
-       values, to ignore that  value.   Not  all  implementations
+       A null (zero pointer) is accepted for any  of  the  return
+       values,  to  ignore  that  value.  Not all implementations
        allow this, e.g., Solaris 2.7 does not.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                     <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field_just.3x.html b/doc/html/man/form_field_just.3x.html
index 507020f..34a3bea 100644
--- a/doc/html/man/form_field_just.3x.html
+++ b/doc/html/man/form_field_just.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,47 +27,48 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_just.3x,v 1.9 2006/11/04 17:12:00 tom Exp @
+  * @Id: form_field_just.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_field_just 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_field_just 3x</H1>
-<HR>
+<H1 class="no-header">form_field_just 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>                                 <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_field_just</STRONG> - retrieve field characteristics
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_field_just(FIELD *field, int justification);
        int field_just(const FIELD *field);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The   function   <STRONG>set_field_just</STRONG>   sets  the  justification
        attribute of a field; <STRONG>field_just</STRONG> returns a field's  justi-
        fication attribute.  The attribute may be one of NO_JUSTI-
-       FICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or  JUSTIFY_CENTER.
+       FICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The  function <STRONG>field_just</STRONG> returns one of: NO_JUSTIFICATION,
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       The function <STRONG>field_just</STRONG> returns one of:  NO_JUSTIFICATION,
        JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
 
        The function <STRONG>set_field_just</STRONG> returns one of the following:
@@ -79,41 +79,48 @@
             System error occurred (see <STRONG>errno</STRONG>).
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
+            Routine  detected  an incorrect or out-of-range argu-
             ment.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
        detailed descriptions of the entry points.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
 
 
                                                     <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field_new.3x.html b/doc/html/man/form_field_new.3x.html
index 1a0269a..88a5c74 100644
--- a/doc/html/man/form_field_new.3x.html
+++ b/doc/html/man/form_field_new.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_new.3x,v 1.16 2007/06/02 20:40:07 tom Exp @
+  * @Id: form_field_new.3x,v 1.18 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_field_new 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_field_new 3x</H1>
-<HR>
+<H1 class="no-header">form_field_new 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>                                   <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_field_new</STRONG> - create and destroy form fields
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        FIELD *new_field(int height, int width,
                         int toprow, int leftcol,
@@ -63,36 +63,36 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function <STRONG>new_field</STRONG> allocates a new field and initial-
        izes it from the parameters given: height, width,  row  of
        upper-left  corner,  column  of  upper-left corner, number
        off-screen rows, and number of additional working buffers.
 
-       The  function  <STRONG>dup_field</STRONG> duplicates a field at a new loca-
-       tion.  Most attributes (including current contents,  size,
-       validation  type, buffer count, growth threshold, justifi-
-       cation, foreground, background,  pad  character,  options,
-       and  user pointer) are copied.  Field status and the field
+       The function <STRONG>dup_field</STRONG> duplicates a field at a  new  loca-
+       tion.   Most attributes (including current contents, size,
+       validation type, buffer count, growth threshold,  justifi-
+       cation,  foreground,  background,  pad character, options,
+       and user pointer) are copied.  Field status and the  field
        page bit are not copied.
 
-       The function <STRONG>link_field</STRONG> acts like <STRONG>dup_field</STRONG>, but  the  new
-       field  shares  buffers with its parent.  Attribute data is
+       The  function  <STRONG>link_field</STRONG> acts like <STRONG>dup_field</STRONG>, but the new
+       field shares buffers with its parent.  Attribute  data  is
        separate.
 
-       The function <STRONG>free_field</STRONG>  de-allocates  storage  associated
+       The  function  <STRONG>free_field</STRONG>  de-allocates storage associated
        with a field.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function, <STRONG>new_field</STRONG>, <STRONG>dup_field</STRONG>, <STRONG>link_field</STRONG> return <STRONG>NULL</STRONG>
        on error.  They set errno according to their success:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
+            Routine  detected  an incorrect or out-of-range argu-
             ment.
 
        <STRONG>E_SYSTEM_ERROR</STRONG>
@@ -103,7 +103,7 @@
        <STRONG>E_OK</STRONG> The routine succeeded.
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
+            Routine detected an incorrect or  out-of-range  argu-
             ment.
 
        <STRONG>E_CONNECTED</STRONG>
@@ -111,40 +111,47 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
-       It may be unwise to count on the set of attributes  copied
-       by  <STRONG>dup_field</STRONG>  being  portable; the System V forms library
+       It  may be unwise to count on the set of attributes copied
+       by <STRONG>dup_field</STRONG> being portable; the System  V  forms  library
        documents are not very explicit about what gets copied and
        what does not.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                      <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field_opts.3x.html b/doc/html/man/form_field_opts.3x.html
index f9a1321..93b62a1 100644
--- a/doc/html/man/form_field_opts.3x.html
+++ b/doc/html/man/form_field_opts.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2014 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_opts.3x,v 1.13 2007/02/24 17:34:27 tom Exp @
+  * @Id: form_field_opts.3x,v 1.17 2014/07/26 21:21:57 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_field_opts 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_field_opts 3x</H1>
-<HR>
+<H1 class="no-header">form_field_opts 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>                                 <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_field_opts</STRONG> - set and get field options
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_field_opts(FIELD *field, Field_Options opts);
        int field_opts_on(FIELD *field, Field_Options opts);
@@ -61,7 +61,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>set_field_opts</STRONG>  sets  all the given field's
        option bits (field  option  bits  may  be  logically-OR'ed
        together).
@@ -75,55 +75,63 @@
        The function <STRONG>field_opts</STRONG> returns the field's current option
        bits.
 
-       The following options are defined (all are on by default):
-
-       O_VISIBLE
-            The  field is displayed.  If this option is off, dis-
-            play of the field is suppressed.
+       The following standard options are defined (all are on  by
+       default):
 
        O_ACTIVE
-            The field is  visited  during  processing.   If  this
-            option  is  off,  the  field will not be reachable by
-            navigation keys.  Please  notice  that  an  invisible
+            The  field  is  visited  during  processing.  If this
+            option is off, the field will  not  be  reachable  by
+            navigation  keys.  Please  notice  that  an invisible
             field appears to be inactive also.
 
-       O_PUBLIC
-            The  field contents are displayed as data is entered.
-
-       O_EDIT
-            The field can be edited.
-
-       O_WRAP
-            Words that do not fit on a line are  wrapped  to  the
-            next line.  Words are blank-separated.
-
-       O_BLANK
-            The  field is cleared whenever a character is entered
-            at the first position.
-
        O_AUTOSKIP
             Skip to the next field when this one fills.
 
+       O_BLANK
+            The field is cleared whenever a character is  entered
+            at the first position.
+
+       O_EDIT
+            The field can be edited.
+
        O_NULLOK
             Allow a blank field.
 
-       O_STATIC
-            Field buffers are fixed  to  field's  original  size.
-            Turn this option off to create a dynamic field.
-
        O_PASSOK
             Validate field only if modified by user.
 
+       O_PUBLIC
+            The field contents are displayed as data is entered.
+
+       O_STATIC
+            Field  buffers  are  fixed  to field's original size.
+            Turn this option off to create a dynamic field.
+
+       O_VISIBLE
+            The field is displayed.  If this option is off,  dis-
+            play of the field is suppressed.
+
+       O_WRAP
+            Words  that  do  not fit on a line are wrapped to the
+            next line.  Words are blank-separated.
+
+       One extension option is defined  (extensions  are  off  by
+       default):
+
+       O_DYNAMIC_JUSTIFY
+            Permit  dynamic  fields  to be justified, like static
+            fields.
+
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Except  for  <STRONG>field_opts</STRONG>,  each  routine returns one of the
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Except for <STRONG>field_opts</STRONG>, each routine  returns  one  of  the
        following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
+            Routine  detected  an incorrect or out-of-range argu-
             ment.
 
        <STRONG>E_CURRENT</STRONG>
@@ -134,33 +142,42 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
-
-
-       <STRONG>NOTES</STRONG>  The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the
-              header file <STRONG>&lt;curses.h&gt;</STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.  <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V forms  library.   They
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
+       file <STRONG>&lt;curses.h&gt;</STRONG>.
+
+
+</PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  emulate the System V forms library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                     <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field_userptr.3x.html b/doc/html/man/form_field_userptr.3x.html
index c7a6ad4..bce4e11 100644
--- a/doc/html/man/form_field_userptr.3x.html
+++ b/doc/html/man/form_field_userptr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,46 +27,47 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_userptr.3x,v 1.8 2006/11/04 18:04:37 tom Exp @
+  * @Id: form_field_userptr.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_field_userptr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_field_userptr 3x</H1>
-<HR>
+<H1 class="no-header">form_field_userptr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>                           <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_field_userptr</STRONG>  -  associate  application  data with a
        form field
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_field_userptr(FIELD *field, void*userptr);
        void *field_userptr(const FIELD *field);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        Every form field has a field that  can  be  used  to  hold
        application-specific  data  (that is, the form-driver code
        leaves it alone).  These functions get and set that field.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function <STRONG>field_userptr</STRONG> returns a pointer (which may be
        <STRONG>NULL</STRONG>).  It does not set errno.
 
@@ -75,19 +75,19 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
        The user pointer is a void pointer.  We chose not to leave
@@ -95,18 +95,25 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                  <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_field_validation.3x.html b/doc/html/man/form_field_validation.3x.html
index 9328031..677790e 100644
--- a/doc/html/man/form_field_validation.3x.html
+++ b/doc/html/man/form_field_validation.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,31 +26,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_field_validation.3x,v 1.16 2006/12/24 16:08:08 tom Exp @
+  * @Id: form_field_validation.3x,v 1.20 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_field_validation 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_field_validation 3x</H1>
-<HR>
+<H1 class="no-header">form_field_validation 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>                     <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_field_validation</STRONG> - data type validation for fields
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_field_type(FIELD *field, FIELDTYPE *type, ...);
        FIELDTYPE *field_type(const FIELD *field);
@@ -67,7 +67,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>set_field_type</STRONG>  declares  a data type for a
        given form field.  This is the type checked by  validation
        functions.  The predefined types are as follows:
@@ -88,70 +88,69 @@
             partial  match  must be a unique one (if this flag is
             off, a prefix matches the first of any  set  of  more
             than  one  list  elements  with  that prefix). Please
-            notice that the string list is  not  copied,  only  a
-            reference to it is stored in the field. So you should
-            avoid using a list that lives in automatic  variables
-            on the stack.
+            notice that the string list is copied. So you may use
+            a  list  that  lives  in  automatic  variables on the
+            stack.
 
        TYPE_INTEGER
-            Integer  data,  parsable  to  an  integer by <STRONG>atoi(3)</STRONG>.
-            Requires a third <STRONG>int</STRONG> argument controlling the  preci-
-            sion,  a  fourth  <STRONG>long</STRONG>  argument constraining minimum
-            value, and a fifth <STRONG>long</STRONG> constraining  maximum  value.
-            If  the  maximum  value  is less than or equal to the
+            Integer data, parsable  to  an  integer  by  <STRONG>atoi(3)</STRONG>.
+            Requires  a third <STRONG>int</STRONG> argument controlling the preci-
+            sion, a fourth  <STRONG>long</STRONG>  argument  constraining  minimum
+            value,  and  a fifth <STRONG>long</STRONG> constraining maximum value.
+            If the maximum value is less than  or  equal  to  the
             minimum value, the range is simply ignored. On return
             the field buffer is formatted according to the <STRONG>printf</STRONG>
-            format  specification  ".*ld",  where  the   '*'   is
-            replaced  by  the precision argument.  For details of
+            format   specification   ".*ld",  where  the  '*'  is
+            replaced by the precision argument.  For  details  of
             the precision handling see <STRONG>printf's</STRONG> man-page.
 
        TYPE_NUMERIC
-            Numeric  data  (may  have  a   decimal-point   part).
-            Requires  a third <STRONG>int</STRONG> argument controlling the preci-
-            sion, a fourth <STRONG>double</STRONG> argument  constraining  minimum
+            Numeric   data   (may  have  a  decimal-point  part).
+            Requires a third <STRONG>int</STRONG> argument controlling the  preci-
+            sion,  a  fourth <STRONG>double</STRONG> argument constraining minimum
             value, and a fifth <STRONG>double</STRONG> constraining maximum value.
-            If your system supports locales,  the  decimal  point
-            character  to  be  used  must be the one specified by
-            your locale.  If the maximum value is  less  than  or
-            equal  to  the  minimum  value,  the  range is simply
-            ignored. On return  the  field  buffer  is  formatted
-            according  to  the <STRONG>printf</STRONG> format specification ".*f",
-            where the '*' is replaced by the precision  argument.
-            For  details  of  the precision handling see <STRONG>printf's</STRONG>
+            If  your  system  supports locales, the decimal point
+            character to be used must be  the  one  specified  by
+            your  locale.   If  the maximum value is less than or
+            equal to the  minimum  value,  the  range  is  simply
+            ignored.  On  return  the  field  buffer is formatted
+            according to the <STRONG>printf</STRONG> format  specification  ".*f",
+            where  the '*' is replaced by the precision argument.
+            For details of the precision  handling  see  <STRONG>printf's</STRONG>
             man-page.
 
        TYPE_REGEXP
-            Regular expression data.  Requires a regular  expres-
-            sion  <STRONG>(char</STRONG>  <STRONG>*)</STRONG>  third argument; the data is valid if
-            the regular expression matches it.   Regular  expres-
-            sions  are  in  the  format  of  <STRONG>regcomp</STRONG> and <STRONG>regexec</STRONG>.
-            Please notice that the regular expression must  match
-            the  whole  field.  If  you have for example an eight
+            Regular  expression data.  Requires a regular expres-
+            sion <STRONG>(char</STRONG> <STRONG>*)</STRONG> third argument; the data  is  valid  if
+            the  regular  expression matches it.  Regular expres-
+            sions are in  the  format  of  <STRONG>regcomp</STRONG>  and  <STRONG>regexec</STRONG>.
+            Please  notice that the regular expression must match
+            the whole field. If you have  for  example  an  eight
             character wide field, a regular expression "^[0-9]*$"
-            always  means  that  you have to fill all eight posi-
+            always means that you have to fill  all  eight  posi-
             tions with digits. If you want to allow fewer digits,
-            you  may  use  for example "^[0-9]* *$" which is good
-            for trailing spaces (up to an  empty  field),  or  "^
-            *[0-9]*  *$"  which  is good for leading and trailing
+            you may use for example "^[0-9]* *$"  which  is  good
+            for  trailing  spaces  (up  to an empty field), or "^
+            *[0-9]* *$" which is good for  leading  and  trailing
             spaces around the digits.
 
        TYPE_IPV4
             An Internet Protocol Version 4 address. This requires
-            no  additional argument. It is checked whether or not
-            the buffer has the form a.b.c.d, where  a,b,c  and  d
+            no additional argument. It is checked whether or  not
+            the  buffer  has  the form a.b.c.d, where a,b,c and d
             are numbers between 0 and 255. Trailing blanks in the
-            buffer are ignored. The address itself is  not  vali-
+            buffer  are  ignored. The address itself is not vali-
             dated. Please note that this is an ncurses extension.
-            This field type may not be available in other  curses
+            This  field type may not be available in other curses
             implementations.
 
-       It  is  possible  to  set  up new programmer-defined field
+       It is possible to  set  up  new  programmer-defined  field
        types.  See the <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> manual page.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The functions <STRONG>field_type</STRONG>  and  <STRONG>field_arg</STRONG>  return  <STRONG>NULL</STRONG>  on
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       The  functions  <STRONG>field_type</STRONG>  and  <STRONG>field_arg</STRONG>  return <STRONG>NULL</STRONG> on
        error. The function <STRONG>set_field_type</STRONG> returns one of the fol-
        lowing:
 
@@ -162,35 +161,42 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
 
 
                                               <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_fieldtype.3x.html b/doc/html/man/form_fieldtype.3x.html
index 80dab41..b1e27a6 100644
--- a/doc/html/man/form_fieldtype.3x.html
+++ b/doc/html/man/form_fieldtype.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_fieldtype.3x,v 1.14 2006/11/04 17:12:00 tom Exp @
+  * @Id: form_fieldtype.3x,v 1.16 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_fieldtype 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_fieldtype 3x</H1>
-<HR>
+<H1 class="no-header">form_fieldtype 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>                                   <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_fieldtype</STRONG> - define validation-field types
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        FIELDTYPE *new_fieldtype(
            bool (* const field_check)(FIELD *, const void *),
@@ -72,7 +72,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>new_fieldtype</STRONG> creates a new field type usable
        for data validation.  You supply it  with  <EM>field</EM><STRONG>_</STRONG><EM>check</EM>,  a
        predicate  to check the validity of an entered data string
@@ -112,14 +112,14 @@
        <STRONG>REQ_PREV_CHOICE</STRONG> assume that the possible values of a field
        form an ordered set, and provide the forms user with a way
        to  move  through the set.  The <STRONG>set_fieldtype_choice</STRONG> func-
-       tion allows forms  programmers  to  define  successor  and
-       predecessor functions for the field type.  These functions
+       tion allows forms programmers to define successor and pre-
+       decessor  functions  for  the field type.  These functions
        take the field pointer and an argument-block structure  as
        arguments.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The  pointer-valued  routines  return NULL on error.  They
        set errno according to their success:
 
@@ -152,12 +152,12 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
@@ -167,13 +167,13 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -181,10 +181,17 @@
 
                                                      <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_hook.3x.html b/doc/html/man/form_hook.3x.html
index f88aa1d..4f3c54f 100644
--- a/doc/html/man/form_hook.3x.html
+++ b/doc/html/man/form_hook.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -28,32 +27,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_hook.3x,v 1.9 2007/02/24 17:34:18 tom Exp @
+  * @Id: form_hook.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_hook 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_hook 3x</H1>
-<HR>
+<H1 class="no-header">form_hook 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>                                             <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_hook</STRONG> - set hooks for automatic invocation by applica-
        tions
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_field_init(FORM *form, Form_Hook func);
        Form_Hook field_init(const FORM *form);
@@ -66,7 +66,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These functions make it possible to set hook functions  to
        be called at various points in the automatic processing of
        input event codes by <STRONG>form_driver</STRONG>.
@@ -93,7 +93,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return pointers return <STRONG>NULL</STRONG> on error.  Other
        routines return one of the following:
 
@@ -104,24 +104,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -129,10 +129,17 @@
 
                                                           <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_new.3x.html b/doc/html/man/form_new.3x.html
index c313012..2bc8631 100644
--- a/doc/html/man/form_new.3x.html
+++ b/doc/html/man/form_new.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,38 +27,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_new.3x,v 1.7 2006/11/04 17:12:00 tom Exp @
+  * @Id: form_new.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_new 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_new 3x</H1>
-<HR>
+<H1 class="no-header">form_new 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>                                               <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_new</STRONG> - create and destroy forms
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        FORM *new_form(FIELD **fields);
        int free_form(FORM *form);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>new_form</STRONG>  creates a new form connected to a
        specified field pointer array (which must  be  <STRONG>NULL</STRONG>-termi-
        nated).
@@ -69,7 +69,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function <STRONG>new_form</STRONG> returns  <STRONG>NULL</STRONG>  on  error.   It  sets
        errno according to the function's success:
 
@@ -98,24 +98,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -123,10 +123,17 @@
 
                                                            <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_new_page.3x.html b/doc/html/man/form_new_page.3x.html
index 8863369..9ee5a69 100644
--- a/doc/html/man/form_new_page.3x.html
+++ b/doc/html/man/form_new_page.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2002,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,38 +27,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_new_page.3x,v 1.8 2006/11/04 17:12:00 tom Exp @
+  * @Id: form_new_page.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_new_page 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_new_page 3x</H1>
-<HR>
+<H1 class="no-header">form_new_page 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>                                     <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_new_page</STRONG> - form pagination functions
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_new_page(FIELD *field, bool new_page_flag);
        bool new_page(const FIELD *field);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>set_new_page</STRONG>  sets or resets a flag marking
        the given field as the beginning of  a  new  page  on  its
        form.
@@ -69,7 +69,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function <STRONG>new_page</STRONG> returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>.
 
        The function <STRONG>set_new_page</STRONG> return one of the following:
@@ -84,25 +84,25 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for
        detailed descriptions of the entry points.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -110,10 +110,17 @@
 
                                                       <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_opts.3x.html b/doc/html/man/form_opts.3x.html
index 53869a5..5bcb665 100644
--- a/doc/html/man/form_opts.3x.html
+++ b/doc/html/man/form_opts.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_opts.3x,v 1.9 2007/02/24 17:34:36 tom Exp @
+  * @Id: form_opts.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_opts 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_opts 3x</H1>
-<HR>
+<H1 class="no-header">form_opts 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>                                             <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_opts</STRONG> - set and get form options
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_form_opts(FORM *form, Field_Options opts);
        int form_opts_on(FORM *form, Field_Options opts);
@@ -61,7 +61,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>set_form_opts</STRONG>  sets  all  the  given form's
        option bits  (form  option  bits  may  be  logically-OR'ed
        together).
@@ -78,18 +78,18 @@
        The following options are defined (all are on by default):
 
        O_NL_OVERLOAD
-            Overload  the  <STRONG>REQ_NEW_LINE</STRONG>  forms  driver request so
-            that calling it at the end of a  field  goes  to  the
+            Overload the <STRONG>REQ_NEW_LINE</STRONG>  forms  driver  request  so
+            that  calling  it  at  the end of a field goes to the
             next field.
 
        O_BS_OVERLOAD
-            Overload  the  <STRONG>REQ_DEL_PREV</STRONG>  forms  driver request so
-            that calling it at the beginning of a field  goes  to
+            Overload the <STRONG>REQ_DEL_PREV</STRONG>  forms  driver  request  so
+            that  calling  it at the beginning of a field goes to
             the previous field.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Except for <STRONG>form_opts</STRONG>, each routine returns one of the fol-
        lowing:
 
@@ -100,35 +100,42 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
 
 
                                                           <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_page.3x.html b/doc/html/man/form_page.3x.html
index 753075b..8b12bb4 100644
--- a/doc/html/man/form_page.3x.html
+++ b/doc/html/man/form_page.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_page.3x,v 1.10 2006/11/04 18:52:32 tom Exp @
+  * @Id: form_page.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_page 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_page 3x</H1>
-<HR>
+<H1 class="no-header">form_page 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>                                             <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_page</STRONG> - set and get form page number
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_current_field(FORM *form, FIELD *field);
        FIELD *current_field(const FORM *);
@@ -62,7 +62,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>set_current</STRONG> <STRONG>field</STRONG> sets the current field of
        the given form; <STRONG>current_field</STRONG> returns the current field of
        the given form.
@@ -80,7 +80,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Except for <STRONG>form_page</STRONG>, each routine returns one of the fol-
        lowing:
 
@@ -105,24 +105,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -130,10 +130,17 @@
 
                                                           <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_post.3x.html b/doc/html/man/form_post.3x.html
index f125a0b..b950d09 100644
--- a/doc/html/man/form_post.3x.html
+++ b/doc/html/man/form_post.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,39 +27,40 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_post.3x,v 1.7 2006/11/04 18:53:20 tom Exp @
+  * @Id: form_post.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_post 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_post 3x</H1>
-<HR>
+<H1 class="no-header">form_post 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>                                             <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_post</STRONG>  -  write or erase forms from associated subwin-
        dows
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int post_form(FORM *form);
        int unpost_form(FORM *form);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>post_form</STRONG> displays a form to  its  associated
        subwindow.   To trigger physical display of the subwindow,
        use  <STRONG>refresh</STRONG>  or  some  equivalent  <STRONG>curses</STRONG>  routine   (the
@@ -72,7 +72,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -102,24 +102,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -127,10 +127,17 @@
 
                                                           <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_requestname.3x.html b/doc/html/man/form_requestname.3x.html
index 6c0c2bd..2d2dcdf 100644
--- a/doc/html/man/form_requestname.3x.html
+++ b/doc/html/man/form_requestname.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,38 +27,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_requestname.3x,v 1.7 2006/11/04 17:57:49 tom Exp @
+  * @Id: form_requestname.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_requestname 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_requestname 3x</H1>
-<HR>
+<H1 class="no-header">form_requestname 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>                               <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_requestname</STRONG> - handle printable form request names
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        const char *form_request_name(int request);
        int form_request_by_name(const char *name);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function <STRONG>form_request_name</STRONG> returns the printable name
        of a form request code.
        The function <STRONG>form_request_by_name</STRONG> searches in the name-ta-
@@ -68,7 +68,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        <STRONG>form_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets errno  to
        <STRONG>E_BAD_ARGUMENT</STRONG>.
        <STRONG>form_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error.  It does
@@ -76,18 +76,18 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  are  specific  to ncurses.  They were not
        supported on Version 7, BSD or System  V  implementations.
        It  is recommended that any code depending on them be con-
@@ -95,7 +95,7 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -103,10 +103,17 @@
 
                                                    <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_userptr.3x.html b/doc/html/man/form_userptr.3x.html
index d6a50fd..feae531 100644
--- a/doc/html/man/form_userptr.3x.html
+++ b/doc/html/man/form_userptr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,66 +27,67 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_userptr.3x,v 1.11 2006/11/04 18:43:24 tom Exp @
+  * @Id: form_userptr.3x,v 1.13 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_userptr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_userptr 3x</H1>
-<HR>
+<H1 class="no-header">form_userptr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>                                       <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_userptr</STRONG> - associate application data with a form item
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_form_userptr(FORM *form, void *userptr);
        void* form_userptr(const FORM *form);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       Every form and every form item has a  field  that  can  be
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       Every  form  and  every  form item has a field that can be
        used to hold application-specific data (that is, the form-
        driver code leaves it alone).  These functions get and set
        the form user pointer field.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The  function <STRONG>form_userptr</STRONG> returns a pointer (which may be
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       The function <STRONG>form_userptr</STRONG> returns a pointer (which may  be
        <STRONG>NULL</STRONG>).  It does not set errno.
 
        The function <STRONG>set_form_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success).
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate the System V forms library.  They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These routines emulate the System V forms  library.   They
        were not supported on Version 7 or BSD versions.
 
        The user pointer is a void pointer.  We chose not to leave
@@ -95,18 +95,25 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                        <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/form_variables.3x.html b/doc/html/man/form_variables.3x.html
new file mode 100644
index 0000000..0d41616
--- /dev/null
+++ b/doc/html/man/form_variables.3x.html
@@ -0,0 +1,146 @@
+<!-- 
+  ****************************************************************************
+  * Copyright (c) 2010,2013 Free Software Foundation, Inc.                   *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: form_variables.3x,v 1.4 2013/06/22 17:58:32 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>form_variables 3x</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">form_variables 3x</H1>
+<PRE>
+<STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>                                   <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
+
+
+
+
+</PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>TYPE_ALNUM</STRONG>, <STRONG>TYPE_ALPHA</STRONG>, <STRONG>TYPE_ENUM</STRONG>, <STRONG>TYPE_INTEGER</STRONG>,
+       <STRONG>TYPE_IPV4</STRONG>, <STRONG>TYPE_NUMERIC</STRONG>, <STRONG>TYPE_REGEXP</STRONG> - form system global
+       variables
+
+
+</PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
+
+       <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_ALNUM;</STRONG>
+       <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_ALPHA;</STRONG>
+       <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_ENUM;</STRONG>
+       <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_INTEGER;</STRONG>
+       <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_IPV4;</STRONG>
+       <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_NUMERIC;</STRONG>
+       <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_REGEXP;</STRONG>
+
+
+</PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       These  are  building blocks for the form library, defining
+       fields that can be created using <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>.   Each
+       provides  functions  for  field- and character-validation,
+       according to the given datatype.
+
+
+</PRE>
+<H3><a name="h3-TYPE_ALNUM">TYPE_ALNUM</a></H3><PRE>
+       This holds alphanumeric data.
+
+
+</PRE>
+<H3><a name="h3-TYPE_ALPHA">TYPE_ALPHA</a></H3><PRE>
+       This holds alphabetic data.
+
+
+</PRE>
+<H3><a name="h3-TYPE_ENUM">TYPE_ENUM</a></H3><PRE>
+       This holds an enumerated type.
+
+
+</PRE>
+<H3><a name="h3-TYPE_INTEGER">TYPE_INTEGER</a></H3><PRE>
+       This holds a decimal integer.
+
+
+</PRE>
+<H3><a name="h3-TYPE_IPV4">TYPE_IPV4</a></H3><PRE>
+       This holds an IPv4 internet address, e.g., "127.0.0.1".
+
+
+</PRE>
+<H3><a name="h3-TYPE_NUMERIC">TYPE_NUMERIC</a></H3><PRE>
+       This holds a decimal number, with optional sign and  deci-
+       mal point.
+
+
+</PRE>
+<H3><a name="h3-TYPE_REGEXP">TYPE_REGEXP</a></H3><PRE>
+       This holds a regular expression.
+
+
+</PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       The  <STRONG>TYPE_IPV4</STRONG>  variable  is  an extension not provided by
+       older implementations of the form library.
+
+
+</PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
+
+
+
+                                                     <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-TYPE_ALNUM">TYPE_ALNUM</a></li>
+<li><a href="#h3-TYPE_ALPHA">TYPE_ALPHA</a></li>
+<li><a href="#h3-TYPE_ENUM">TYPE_ENUM</a></li>
+<li><a href="#h3-TYPE_INTEGER">TYPE_INTEGER</a></li>
+<li><a href="#h3-TYPE_IPV4">TYPE_IPV4</a></li>
+<li><a href="#h3-TYPE_NUMERIC">TYPE_NUMERIC</a></li>
+<li><a href="#h3-TYPE_REGEXP">TYPE_REGEXP</a></li>
+</ul>
+</li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/form_win.3x.html b/doc/html/man/form_win.3x.html
index 6d213df..b164c26 100644
--- a/doc/html/man/form_win.3x.html
+++ b/doc/html/man/form_win.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,32 +27,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: form_win.3x,v 1.10 2006/11/04 17:12:00 tom Exp @
+  * @Id: form_win.3x,v 1.13 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>form_win 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>form_win 3x</H1>
-<HR>
+<H1 class="no-header">form_win 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>                                               <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>form_win</STRONG>  - make and break form window and subwindow asso-
        ciations
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG>
        int set_form_win(FORM *form, WINDOW *win);
        WINDOW *form_win(const FORM *form);
@@ -63,29 +63,29 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       Every  form has an associated pair of <STRONG>curses</STRONG> windows.  The
-       form window displays any title and border associated  with
-       the  window;  the form subwindow displays the items of the
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       Every form has an associated pair of <STRONG>curses</STRONG> windows.   The
+       form  window displays any title and border associated with
+       the window; the form subwindow displays the items  of  the
        form that are currently available for selection.
 
        The first four functions get and set those windows.  It is
        not necessary to set either window; by default, the driver
        code uses <STRONG>stdscr</STRONG> for both.
 
-       In the <STRONG>set_</STRONG> functions, window argument of <STRONG>NULL</STRONG> is  treated
-       as  though  it  were  <STRONG>stsdcr</STRONG>.   A form argument of <STRONG>NULL</STRONG> is
-       treated as a request to change  the  system  default  form
+       In  the <STRONG>set_</STRONG> functions, window argument of <STRONG>NULL</STRONG> is treated
+       as though it were <STRONG>stsdcr</STRONG>.  A  form  argument  of  <STRONG>NULL</STRONG>  is
+       treated  as  a  request  to change the system default form
        window or subwindow.
 
-       The  function <STRONG>scale_form</STRONG> returns the minimum size required
+       The function <STRONG>scale_form</STRONG> returns the minimum size  required
        for the subwindow of <EM>form</EM>.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.   Rou-
-       tines  that  return an integer return one of the following
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Routines  that return pointers return <STRONG>NULL</STRONG> on error.  Rou-
+       tines that return an integer return one of  the  following
        error codes:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -94,7 +94,7 @@
             System error occurred (see <STRONG>errno</STRONG>).
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
+            Routine  detected  an incorrect or out-of-range argu-
             ment.
 
        <STRONG>E_POSTED</STRONG>
@@ -105,35 +105,42 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
+<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>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V forms  library.   They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  emulate the System V forms library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                            <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/index.html b/doc/html/man/index.html
index 5db3a6d..c93d1f8 100644
--- a/doc/html/man/index.html
+++ b/doc/html/man/index.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
 <!--
-  $Id: index.html,v 1.3 2006/12/24 23:05:35 tom Exp $
+  $Id: index.html,v 1.7 2013/06/07 20:12:36 tom Exp $
   ****************************************************************************
-  * Copyright (c) 1998-2001,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2013 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -29,38 +28,83 @@
   * authorization.                                                           *
   ****************************************************************************
   -->
-<HTML>
-<HEAD>
-<TITLE>NCURSES - Manual Pages</TITLE>
-<LINK REV=MADE HREF="mailto:dickey@invisible-island.net">
-</HEAD>
-<BODY>
-<HR>
-<ul>
-<li>Programs:
-<ul>
-<li><a href = "captoinfo.1m.html">captoinfo - convert a termcap description into a terminfo description</a>
-<li><a href = "clear.1.html">clear - clear the terminal screen</a>
-<li><a href = "infocmp.1m.html">infocmp - compare or print out terminfo descriptions</a>
-<li><a href = "infotocap.1m.html">infotocap - convert a terminfo description into a termcap description</a>
-<li><a href = "tic.1m.html">tic - the terminfo entry-description compiler</a>
-<li><a href = "toe.1m.html">toe - table of (terminfo) entries</a>
-<li><a href = "tput.1.html">tput -  initialize  a  terminal or query terminfo database</a>
-<li><a href = "tset.1.html">tset - terminal initialization</a>
-</ul>
-<li>Libraries:
-<ul>
-<li><a href = "ncurses.3x.html">ncurses - CRT screen handling and optimization package</a>
-<li><a href = "panel.3x.html">panel- panel stack extension for curses</a>
-<li><a href = "form.3x.html">form - curses extension for programming forms</a>
-<li><a href = "menu.3x.html">menu - curses extension for programming menus</a>
-</ul>
-<li>File formats:
-<ul>
-<li><a href = "terminfo.5.html">terminfo - terminal capability data base</a>
-<li><a href = "term.5.html">term - format of compiled term file.</a>
-<li><a href = "term.7.html">term - conventions for naming terminal types</a>
-</ul>
-</ul>
-</BODY>
-</HTML>
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+
+<html>
+<head>
+  <meta name="generator" content=
+  "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
+
+  <title>NCURSES &ndash; Manual Pages</title>
+  <link rev="MADE" href="mailto:dickey@invisible-island.net">
+  <meta http-equiv="Content-Type" content=
+  "text/html; charset=us-ascii">
+</head>
+
+<body>
+  <ul>
+    <li>Programs:
+
+      <ul>
+        <li><a href="captoinfo.1m.html">captoinfo &ndash; convert a
+        termcap description into a terminfo description</a></li>
+
+        <li><a href="clear.1.html">clear &ndash; clear the terminal
+        screen</a></li>
+
+        <li><a href="infocmp.1m.html">infocmp &ndash; compare or
+        print out terminfo descriptions</a></li>
+
+        <li><a href="infotocap.1m.html">infotocap &ndash; convert a
+        terminfo description into a termcap description</a></li>
+
+        <li><a href="tabs.1.html">tabs &ndash; set tabs on a
+        terminal</a></li>
+
+        <li><a href="tic.1m.html">tic &ndash; the terminfo
+        entry-description compiler</a></li>
+
+        <li><a href="toe.1m.html">toe &ndash; table of (terminfo)
+        entries</a></li>
+
+        <li><a href="tput.1.html">tput &ndash; initialize a
+        terminal or query terminfo database</a></li>
+
+        <li><a href="tset.1.html">tset &ndash; terminal
+        initialization</a></li>
+      </ul>
+    </li>
+
+    <li>Libraries:
+
+      <ul>
+        <li><a href="ncurses.3x.html">ncurses &ndash; CRT screen
+        handling and optimization package</a></li>
+
+        <li><a href="panel.3x.html">panel- panel stack extension
+        for curses</a></li>
+
+        <li><a href="form.3x.html">form &ndash; curses extension
+        for programming forms</a></li>
+
+        <li><a href="menu.3x.html">menu &ndash; curses extension
+        for programming menus</a></li>
+      </ul>
+    </li>
+
+    <li>File formats:
+
+      <ul>
+        <li><a href="terminfo.5.html">terminfo &ndash; terminal
+        capability data base</a></li>
+
+        <li><a href="term.5.html">term &ndash; format of compiled
+        term file.</a></li>
+
+        <li><a href="term.7.html">term &ndash; conventions for
+        naming terminal types</a></li>
+      </ul>
+    </li>
+  </ul>
+</body>
+</html>
diff --git a/doc/html/man/infocmp.1m.html b/doc/html/man/infocmp.1m.html
index 9e63557..9d18c97 100644
--- a/doc/html/man/infocmp.1m.html
+++ b/doc/html/man/infocmp.1m.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2004,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2014,2015 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            *
@@ -28,39 +27,40 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: infocmp.1m,v 1.44 2006/12/24 18:16:31 tom Exp @
+  * @Id: infocmp.1m,v 1.56 2015/05/23 20:50:00 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>infocmp 1m</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>infocmp 1m</H1>
-<HR>
+<H1 class="no-header">infocmp 1m</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>                                                 <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>infocmp</STRONG> - compare or print out <EM>terminfo</EM> descriptions
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>infocmp</STRONG> [<STRONG>-1CEFGILTUVcdegilnpqrtux</STRONG>]
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>infocmp</STRONG> [<STRONG>-1CDEFGIKLTUVcdegilnpqrtux</STRONG>]
              [<STRONG>-v</STRONG> <EM>n</EM>] [<STRONG>-s</STRONG> <STRONG>d</STRONG>| <STRONG>i</STRONG>| <STRONG>l</STRONG>| <STRONG>c</STRONG>] [<STRONG>-R</STRONG> <STRONG>subset</STRONG>]
              [<STRONG>-w</STRONG> <EM>width</EM>] [<STRONG>-A</STRONG> <EM>directory</EM>] [<STRONG>-B</STRONG> <EM>directory</EM>]
              [<EM>termname</EM>...]
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        <STRONG>infocmp</STRONG>  can  be  used  to compare a binary <STRONG>terminfo</STRONG> entry
        with other terminfo entries, rewrite a  <STRONG>terminfo</STRONG>  descrip-
        tion  to  take  advantage  of  the <STRONG>use=</STRONG> terminfo field, or
@@ -69,79 +69,100 @@
        fields will be printed  first,  followed  by  the  numeric
        fields, followed by the string fields.
 
-   <STRONG>Default</STRONG> <STRONG>Options</STRONG>
+
+</PRE>
+<H3><a name="h3-Default-Options">Default Options</a></H3><PRE>
        If  no options are specified and zero or one <EM>termnames</EM> are
        specified, the <STRONG>-I</STRONG> option will be assumed.   If  more  than
-       one  <EM>termname</EM> is specified, the <STRONG>-d</STRONG> option will be assumed.
+       one <EM>termname</EM> is specified, the <STRONG>-d</STRONG> option will be assumed.
 
-   <STRONG>Comparison</STRONG> <STRONG>Options</STRONG> <STRONG>[-d]</STRONG> <STRONG>[-c]</STRONG> <STRONG>[-n]</STRONG>
-       <STRONG>infocmp</STRONG> compares the <STRONG>terminfo</STRONG>  description  of  the  first
-       terminal  <EM>termname</EM>  with each of the descriptions given by
-       the entries for the  other  terminal's  <EM>termnames</EM>.   If  a
-       capability  is  defined for only one of the terminals, the
-       value returned will depend on the type of the  capability:
-       <STRONG>F</STRONG>  for  boolean  variables,  <STRONG>-1</STRONG> for integer variables, and
+
+</PRE>
+<H3><a name="h3-Comparison-Options-_-d_-_-c_-_-n_">Comparison Options [-d] [-c] [-n]</a></H3><PRE>
+       <STRONG>infocmp</STRONG>  compares  the  <STRONG>terminfo</STRONG>  description of the first
+       terminal <EM>termname</EM> with each of the descriptions  given  by
+       the  entries  for  the  other  terminal's <EM>termnames</EM>.  If a
+       capability is defined for only one of the  terminals,  the
+       value  returned will depend on the type of the capability:
+       <STRONG>F</STRONG> for boolean variables, <STRONG>-1</STRONG>  for  integer  variables,  and
        <STRONG>NULL</STRONG> for string variables.
 
-       The <STRONG>-d</STRONG> option produces a list of each capability  that  is
-       different  between  two entries.  This option is useful to
-       show the difference between two entries, created  by  dif-
+       The  <STRONG>-d</STRONG>  option produces a list of each capability that is
+       different between two entries.  This option is  useful  to
+       show  the  difference between two entries, created by dif-
        ferent people, for the same or similar terminals.
 
-       The  <STRONG>-c</STRONG>  option produces a list of each capability that is
-       common between two entries.  Capabilities that are not set
-       are  ignored.  This option can be used as a quick check to
-       see if the <STRONG>-u</STRONG> option is worth using.
+       The <STRONG>-c</STRONG> option produces a list of each capability  that  is
+       common between two or more entries.  Capabilities that are
+       not set are ignored.  This option can be used as  a  quick
+       check to see if the <STRONG>-u</STRONG> option is worth using.
 
-       The <STRONG>-n</STRONG> option produces a list of each capability  that  is
-       in neither entry.  If no <EM>termnames</EM> are given, the environ-
-       ment variable <STRONG>TERM</STRONG> will be used for both of the <EM>termnames</EM>.
-       This  can  be used as a quick check to see if anything was
-       left out of a description.
+       The  <STRONG>-n</STRONG>  option produces a list of each capability that is
+       in none of the given entries.  If no <EM>termnames</EM> are  given,
+       the environment variable <STRONG>TERM</STRONG> will be used for both of the
+       <EM>termnames</EM>.  This can be used as a quick check  to  see  if
+       anything was left out of a description.
 
-   <STRONG>Source</STRONG> <STRONG>Listing</STRONG> <STRONG>Options</STRONG> <STRONG>[-I]</STRONG> <STRONG>[-L]</STRONG> <STRONG>[-C]</STRONG> <STRONG>[-r]</STRONG>
-       The <STRONG>-I</STRONG>, <STRONG>-L</STRONG>, and <STRONG>-C</STRONG> options will produce a  source  listing
+
+</PRE>
+<H3><a name="h3-Source-Listing-Options-_-I_-_-L_-_-C_-_-r_">Source Listing Options [-I] [-L] [-C] [-r]</a></H3><PRE>
+       The  <STRONG>-I</STRONG>,  <STRONG>-L</STRONG>, and <STRONG>-C</STRONG> options will produce a source listing
        for each terminal named.
 
       <STRONG>-I</STRONG>   use the <STRONG>terminfo</STRONG> names
       <STRONG>-L</STRONG>   use the long C variable name listed in &lt;<STRONG>term.h</STRONG>&gt;
       <STRONG>-C</STRONG>   use the <STRONG>termcap</STRONG> names
       <STRONG>-r</STRONG>   when using <STRONG>-C</STRONG>, put out all capabilities in <STRONG>termcap</STRONG> form
+      <STRONG>-K</STRONG>   modifies the <STRONG>-C</STRONG> option, improving BSD-compatibility.
 
-       If  no  <EM>termnames</EM> are given, the environment variable <STRONG>TERM</STRONG>
+       If no <EM>termnames</EM> are given, the environment  variable  <STRONG>TERM</STRONG>
        will be used for the terminal name.
 
-       The source produced by the <STRONG>-C</STRONG> option may be used  directly
-       as  a <STRONG>termcap</STRONG> entry, but not all parameterized strings can
+       The  source produced by the <STRONG>-C</STRONG> option may be used directly
+       as a <STRONG>termcap</STRONG> entry, but not all parameterized strings  can
        be changed to the <STRONG>termcap</STRONG> format.  <STRONG>infocmp</STRONG> will attempt to
-       convert  most  of  the parameterized information, and any-
-       thing not converted will be plainly marked in  the  output
+       convert most of the parameterized  information,  and  any-
+       thing  not  converted will be plainly marked in the output
        and commented out.  These should be edited by hand.
 
-       All  padding  information  for  strings  will be collected
-       together and placed at the beginning of the  string  where
-       <STRONG>termcap</STRONG>  expects  it.  Mandatory padding (padding informa-
+       For best results when converting to  <STRONG>termcap</STRONG>  format,  you
+       should use both <STRONG>-C</STRONG> and <STRONG>-r</STRONG>.  Normally a termcap description
+       is limited to 1023 bytes.  infocmp trims away less  essen-
+       tial  parts  to make it fit.  If you are converting to one
+       of the (rare)  termcap  implementations  which  accept  an
+       unlimited  size  of  termcap,  you  may want to add the <STRONG>-T</STRONG>
+       option.  More often however, you  must  help  the  termcap
+       implementation,  and  trim  excess  whitespace (use the <STRONG>-0</STRONG>
+       option for that).
+
+       All padding information  for  strings  will  be  collected
+       together  and  placed at the beginning of the string where
+       <STRONG>termcap</STRONG> expects it.  Mandatory padding  (padding  informa-
        tion with a trailing '/') will become optional.
 
        All <STRONG>termcap</STRONG> variables no longer supported by <STRONG>terminfo</STRONG>, but
        which are derivable from other <STRONG>terminfo</STRONG> variables, will be
        output.  Not all <STRONG>terminfo</STRONG> capabilities will be translated;
-       only  those variables which were part of <STRONG>termcap</STRONG> will nor-
-       mally be output.  Specifying the <STRONG>-r</STRONG> option will  take  off
-       this  restriction,  allowing all capabilities to be output
-       in <EM>termcap</EM> form.
+       only those variables which were part of <STRONG>termcap</STRONG> will  nor-
+       mally  be  output.  Specifying the <STRONG>-r</STRONG> option will take off
+       this restriction, allowing all capabilities to  be  output
+       in  <EM>termcap</EM>  form.  Normally you would use both the <STRONG>-C</STRONG> and
+       <STRONG>-r</STRONG> options.  The  actual  format  used  incorporates  some
+       improvements  for escaped characters from terminfo format.
+       For a stricter  BSD-compatible  translation,  use  the  <STRONG>-K</STRONG>
+       option rather than <STRONG>-C</STRONG>.
 
        Note that because padding is collected to the beginning of
-       the  capability,  not all capabilities are output.  Manda-
-       tory padding is not supported.   Because  <STRONG>termcap</STRONG>  strings
-       are  not as flexible, it is not always possible to convert
-       a <STRONG>terminfo</STRONG> string capability into  an  equivalent  <STRONG>termcap</STRONG>
-       format.   A subsequent conversion of the <STRONG>termcap</STRONG> file back
-       into <STRONG>terminfo</STRONG> format will not  necessarily  reproduce  the
+       the capability, not all capabilities are  output.   Manda-
+       tory  padding  is  not supported.  Because <STRONG>termcap</STRONG> strings
+       are not as flexible, it is not always possible to  convert
+       a  <STRONG>terminfo</STRONG>  string  capability into an equivalent <STRONG>termcap</STRONG>
+       format.  A subsequent conversion of the <STRONG>termcap</STRONG> file  back
+       into  <STRONG>terminfo</STRONG>  format  will not necessarily reproduce the
        original <STRONG>terminfo</STRONG> source.
 
-       Some  common  <STRONG>terminfo</STRONG>  parameter sequences, their <STRONG>termcap</STRONG>
-       equivalents, and some terminal types which  commonly  have
+       Some common <STRONG>terminfo</STRONG> parameter  sequences,  their  <STRONG>termcap</STRONG>
+       equivalents,  and  some terminal types which commonly have
        such sequences, are:
 
      <STRONG>terminfo</STRONG>                    <STRONG>termcap</STRONG>   Representative Terminals
@@ -153,67 +174,82 @@
      <STRONG>%p1%?%'x'%&gt;%t%p1%'y'%+%;</STRONG>    <STRONG>%&gt;xy</STRONG>      concept
      <STRONG>%p2</STRONG> is printed before <STRONG>%p1</STRONG>   <STRONG>%r</STRONG>        hp
 
-   <STRONG>Use=</STRONG> <STRONG>Option</STRONG> <STRONG>[-u]</STRONG>
-       The  <STRONG>-u</STRONG>  option  produces a <STRONG>terminfo</STRONG> source description of
-       the first terminal <EM>termname</EM> which is relative to  the  sum
-       of  the  descriptions  given  by the entries for the other
-       terminals <EM>termnames</EM>.  It does this by analyzing  the  dif-
-       ferences   between   the  first  <EM>termname</EM>  and  the  other
+
+</PRE>
+<H3><a name="h3-Use_-Option-_-u_">Use= Option [-u]</a></H3><PRE>
+       The <STRONG>-u</STRONG> option produces a <STRONG>terminfo</STRONG>  source  description  of
+       the  first  terminal <EM>termname</EM> which is relative to the sum
+       of the descriptions given by the  entries  for  the  other
+       terminals  <EM>termnames</EM>.   It does this by analyzing the dif-
+       ferences  between  the  first  <EM>termname</EM>  and   the   other
        <EM>termnames</EM> and producing a description with <STRONG>use=</STRONG> fields for
-       the  other  terminals.   In this manner, it is possible to
-       retrofit  generic  terminfo  entries  into  a   terminal's
+       the other terminals.  In this manner, it  is  possible  to
+       retrofit   generic  terminfo  entries  into  a  terminal's
        description.  Or, if two similar terminals exist, but were
-       coded at different times or by different  people  so  that
+       coded  at  different  times or by different people so that
        each description is a full description, using <STRONG>infocmp</STRONG> will
        show what can be done to change one description to be rel-
        ative to the other.
 
        A capability will get printed with an at-sign (@) if it no
-       longer exists in the first <EM>termname</EM>, but one of the  other
-       <EM>termname</EM>  entries contains a value for it.  A capability's
-       value gets printed if the value in the first  <EM>termname</EM>  is
-       not  found in any of the other <EM>termname</EM> entries, or if the
+       longer  exists in the first <EM>termname</EM>, but one of the other
+       <EM>termname</EM> entries contains a value for it.  A  capability's
+       value  gets  printed if the value in the first <EM>termname</EM> is
+       not found in any of the other <EM>termname</EM> entries, or if  the
        first of the other <EM>termname</EM> entries that has this capabil-
-       ity  gives  a different value for the capability than that
+       ity gives a different value for the capability  than  that
        in the first <EM>termname</EM>.
 
-       The order of the other <EM>termname</EM>  entries  is  significant.
-       Since  the terminfo compiler <STRONG>tic</STRONG> does a left-to-right scan
+       The  order  of  the other <EM>termname</EM> entries is significant.
+       Since the terminfo compiler <STRONG>tic</STRONG> does a left-to-right  scan
        of the capabilities, specifying two <STRONG>use=</STRONG> entries that con-
        tain differing entries for the same capabilities will pro-
-       duce different results depending on  the  order  that  the
-       entries  are  given in.  <STRONG>infocmp</STRONG> will flag any such incon-
-       sistencies between the other <EM>termname</EM> entries as they  are
+       duce  different  results  depending  on the order that the
+       entries are given in.  <STRONG>infocmp</STRONG> will flag any  such  incon-
+       sistencies  between the other <EM>termname</EM> entries as they are
        found.
 
-       Alternatively,  specifying a capability <EM>after</EM> a <STRONG>use=</STRONG> entry
+       Alternatively, specifying a capability <EM>after</EM> a <STRONG>use=</STRONG>  entry
        that contains that capability will cause the second speci-
-       fication  to  be  ignored.   Using  <STRONG>infocmp</STRONG>  to recreate a
+       fication to be  ignored.   Using  <STRONG>infocmp</STRONG>  to  recreate  a
        description can be a useful check to make sure that every-
-       thing  was  specified  correctly  in  the  original source
+       thing was  specified  correctly  in  the  original  source
        description.
 
-       Another error  that  does  not  cause  incorrect  compiled
-       files,  but will slow down the compilation time, is speci-
-       fying extra <STRONG>use=</STRONG> fields  that  are  superfluous.   <STRONG>infocmp</STRONG>
-       will  flag  any  other  <EM>termname</EM> <EM>use=</EM> fields that were not
+       Another  error  that  does  not  cause  incorrect compiled
+       files, but will slow down the compilation time, is  speci-
+       fying  extra  <STRONG>use=</STRONG>  fields  that are superfluous.  <STRONG>infocmp</STRONG>
+       will flag any other <EM>termname</EM> <EM>use=</EM>  fields  that  were  not
        needed.
 
    <STRONG>Changing</STRONG> <STRONG>Databases</STRONG> <STRONG>[-A</STRONG> <EM>directory</EM>] [-B <EM>directory</EM>]
-       The location of the compiled <STRONG>terminfo</STRONG>  database  is  taken
-       from  the environment variable <STRONG>TERMINFO</STRONG> .  If the variable
-       is not defined, or the terminal is not found in that loca-
-       tion,  the  system  <STRONG>terminfo</STRONG>  database, in <STRONG>/usr/share/ter-</STRONG>
-       <STRONG>minfo</STRONG>, will be used.  The options <STRONG>-A</STRONG> and <STRONG>-B</STRONG> may be used to
-       override  this  location.  The <STRONG>-A</STRONG> option will set <STRONG>TERMINFO</STRONG>
-       for the first <EM>termname</EM> and the <STRONG>-B</STRONG> option will set <STRONG>TERMINFO</STRONG>
-       for  the  other  <EM>termnames</EM>.   With this, it is possible to
-       compare descriptions for a terminal  with  the  same  name
-       located  in  two  different databases.  This is useful for
-       comparing descriptions for the same  terminal  created  by
-       different people.
+       Like other <STRONG>ncurses</STRONG> utilities, infocmp looks for the termi-
+       nal descriptions in several places.  You can use the  <STRONG>TER-</STRONG>
+       <STRONG>MINFO</STRONG>  and <STRONG>TERMINFO_DIRS</STRONG> environment variables to override
+       the compiled-in default list  of  places  to  search  (see
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> for details).
 
-   <STRONG>Other</STRONG> <STRONG>Options</STRONG>
+       You  can  also  use  the options <STRONG>-A</STRONG> and <STRONG>-B</STRONG> to override the
+       list of places to search when comparing terminal  descrip-
+       tions:
+
+       <STRONG>o</STRONG>   The <STRONG>-A</STRONG> option sets the location for the first <EM>termname</EM>
+
+       <STRONG>o</STRONG>   The   <STRONG>-B</STRONG>  option  sets  the  location  for  the  other
+           <EM>termnames</EM>.
+
+       Using these options, it is possible  to  compare  descrip-
+       tions  for  a  terminal  with the same name located in two
+       different databases.  For instance, you can use this  fea-
+       ture for comparing descriptions for the same terminal cre-
+       ated by different people.
+
+
+</PRE>
+<H3><a name="h3-Other-Options">Other Options</a></H3><PRE>
+       <STRONG>-0</STRONG>   causes the fields to be printed on one line,  without
+            wrapping.
+
        <STRONG>-1</STRONG>   causes  the  fields  to be printed out one to a line.
             Otherwise, the fields will be printed  several  to  a
             line to a maximum width of 60 characters.
@@ -222,63 +258,72 @@
             rather than discarding them.  Capabilities  are  com-
             mented by prefixing them with a period.
 
+       <STRONG>-D</STRONG>   tells <STRONG>infocmp</STRONG> to print the database locations that it
+            knows about, and exit.
+
        <STRONG>-E</STRONG>   Dump  the  capabilities  of  the  given  terminal  as
-            tables, needed in the C initializer  for  a  TERMTYPE
-            structure  (the  terminal capability structure in the
-            <STRONG>&lt;term.h&gt;</STRONG>).  This option is useful for preparing  ver-
-            sions  of  the  curses  library hardwired for a given
-            terminal type.  The tables are all  declared  static,
-            and  are  named according to the type and the name of
+            tables,  needed  in  the C initializer for a TERMTYPE
+            structure (the terminal capability structure  in  the
+            <STRONG>&lt;term.h&gt;</STRONG>).   This option is useful for preparing ver-
+            sions of the curses library  hardwired  for  a  given
+            terminal  type.   The tables are all declared static,
+            and are named according to the type and the  name  of
             the corresponding terminal entry.
 
-            Before ncurses 5.0, the split between the <STRONG>-e</STRONG>  and  <STRONG>-E</STRONG>
-            options  was  not  needed;  but  support for extended
+            Before  ncurses  5.0, the split between the <STRONG>-e</STRONG> and <STRONG>-E</STRONG>
+            options was not  needed;  but  support  for  extended
             names required making the arrays of terminal capabil-
             ities separate from the TERMTYPE structure.
 
-       <STRONG>-e</STRONG>   Dump  the  capabilities  of the given terminal as a C
-            initializer for a TERMTYPE  structure  (the  terminal
-            capability  structure  in the <STRONG>&lt;term.h&gt;</STRONG>).  This option
+       <STRONG>-e</STRONG>   Dump the capabilities of the given terminal  as  a  C
+            initializer  for  a  TERMTYPE structure (the terminal
+            capability structure in the <STRONG>&lt;term.h&gt;</STRONG>).   This  option
             is  useful  for  preparing  versions  of  the  curses
             library hardwired for a given terminal type.
 
-       <STRONG>-F</STRONG>   compare  terminfo  files.  This assumes that two fol-
-            lowing  arguments  are  filenames.   The  files   are
-            searched  for  pairwise matches between entries, with
+       <STRONG>-F</STRONG>   compare terminfo files.  This assumes that  two  fol-
+            lowing   arguments  are  filenames.   The  files  are
+            searched for pairwise matches between  entries,  with
             two entries considered to match if any of their names
-            do.   The  report  printed  to  standard output lists
-            entries with  no  matches  in  the  other  file,  and
-            entries  with  more than one match.  For entries with
-            exactly one match it includes  a  difference  report.
-            Normally,  to  reduce  the  volume of the report, use
-            references are not resolved before looking  for  dif-
+            do.  The report  printed  to  standard  output  lists
+            entries  with  no  matches  in  the  other  file, and
+            entries with more than one match.  For  entries  with
+            exactly  one  match  it includes a difference report.
+            Normally, to reduce the volume  of  the  report,  use
+            references  are  not resolved before looking for dif-
             ferences, but resolution can be forced by also speci-
             fying <STRONG>-r</STRONG>.
 
-       <STRONG>-f</STRONG>   Display  complex  terminfo  strings   which   contain
+       <STRONG>-f</STRONG>   Display   complex   terminfo  strings  which  contain
             if/then/else/endif expressions indented for readabil-
             ity.
 
        <STRONG>-G</STRONG>   Display constant literals in decimal form rather than
             their character equivalents.
 
-       <STRONG>-g</STRONG>   Display  constant  character  literals in quoted form
+       <STRONG>-g</STRONG>   Display constant character literals  in  quoted  form
             rather than their decimal equivalents.
 
        <STRONG>-i</STRONG>   Analyze the initialization (<STRONG>is1</STRONG>, <STRONG>is2</STRONG>, <STRONG>is3</STRONG>), and reset
-            (<STRONG>rs1</STRONG>,  <STRONG>rs2</STRONG>,  <STRONG>rs3</STRONG>),  strings  in  the entry.  For each
-            string, the code tries to analyze it into actions  in
-            terms of the other capabilities in the entry, certain
-            X3.64/ISO 6429/ECMA-48 capabilities, and certain  DEC
-            VT-series  private  modes (the set of recognized spe-
-            cial sequences has  been  selected  for  completeness
-            over  the  existing  terminfo database).  Each report
-            line consists of the capability name, followed  by  a
-            colon and space, followed by a printable expansion of
-            the capability string with sections  matching  recog-
-            nized  actions  translated into {}-bracketed descrip-
-            tions.  Here  is  a  list  of  the  DEC/ANSI  special
-            sequences recognized: i.
+            (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>), strings in the  entry,  as  well  as
+            those  used  for starting/stopping cursor-positioning
+            mode (<STRONG>smcup</STRONG>,  <STRONG>rmcup</STRONG>)  as  well  as  starting/stopping
+            keymap mode (<STRONG>smkx</STRONG>, <STRONG>rmkx</STRONG>).
+
+            For  each  string,  the code tries to analyze it into
+            actions in terms of the  other  capabilities  in  the
+            entry,  certain  X3.64/ISO 6429/ECMA-48 capabilities,
+            and certain DEC VT-series private modes (the  set  of
+            recognized  special  sequences  has been selected for
+            completeness over the  existing  terminfo  database).
+            Each  report  line  consists  of the capability name,
+            followed by a colon and space, followed by  a  print-
+            able expansion of the capability string with sections
+            matching recognized actions translated into {}-brack-
+            eted descriptions.
+
+            Here is a list of the DEC/ANSI special sequences rec-
+            ognized:
 
                   Action        Meaning
                   -----------------------------------------
@@ -310,21 +355,20 @@
                   DEC[+-]CKM    application cursor keys
                   DEC[+-]ANM    set VT52 mode
                   DEC[+-]COLM   132-column mode
-
                   DEC[+-]SCLM   smooth scroll
                   DEC[+-]SCNM   reverse video mode
                   DEC[+-]OM     origin mode
                   DEC[+-]AWM    wraparound mode
                   DEC[+-]ARM    auto-repeat mode
 
-            It  also  recognizes  a  SGR  action corresponding to
-            ANSI/ISO 6429/ECMA Set Graphics Rendition,  with  the
-            values  NORMAL,  BOLD, UNDERLINE, BLINK, and REVERSE.
-            All but NORMAL may be prefixed with `+' (turn on)  or
+            It also recognizes  a  SGR  action  corresponding  to
+            ANSI/ISO  6429/ECMA  Set Graphics Rendition, with the
+            values NORMAL, BOLD, UNDERLINE, BLINK,  and  REVERSE.
+            All  but NORMAL may be prefixed with `+' (turn on) or
             `-' (turn off).
 
-       An SGR0 designates an empty highlight sequence (equivalent
-       to {SGR:NORMAL}).
+            An  SGR0  designates  an  empty  highlight   sequence
+            (equivalent to {SGR:NORMAL}).
 
        <STRONG>-l</STRONG>   Set output format to terminfo.
 
@@ -340,11 +384,13 @@
             on  SVr1,  Ultrix,  or  HP/UX that do not support the
             full set of SVR4/XSI Curses  terminfo;  and  variants
             such as AIX that have their own extensions incompati-
-            ble with SVr4/XSI.  Available  terminfo  subsets  are
-            "SVr1",  "Ultrix",  "HP",  and "AIX"; see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
-            for details.  You can also choose  the  subset  "BSD"
-            which  selects only capabilities with termcap equiva-
-            lents recognized by 4.4BSD.
+            ble with SVr4/XSI.
+
+            Available  terminfo  subsets  are  "SVr1",  "Ultrix",
+            "HP",  and  "AIX";  see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.  You
+            can also choose the subset "BSD" which  selects  only
+            capabilities  with  termcap equivalents recognized by
+            4.4BSD.
 
        <STRONG>-s</STRONG> <EM>[d|i|l|c]</EM>
             The <STRONG>-s</STRONG> option  sorts  the  fields  within  each  type
@@ -397,37 +443,40 @@
 
 
 </PRE>
-<H2>FILES</H2><PRE>
-       /usr/share/terminfo Compiled      terminal     description
-                           database.
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
+       /usr/share/terminfo Compiled  terminal  description  data-
+                           base.
 
 
 </PRE>
-<H2>EXTENSIONS</H2><PRE>
-       The <STRONG>-E</STRONG>, <STRONG>-F</STRONG>, <STRONG>-G</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>, <STRONG>-e</STRONG>, <STRONG>-f</STRONG>, <STRONG>-g</STRONG>, <STRONG>-i</STRONG>, <STRONG>-l</STRONG>, <STRONG>-p</STRONG>, <STRONG>-q</STRONG>
-       and <STRONG>-t</STRONG> options are not supported in SVr4 curses.
+<H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       The <STRONG>-0</STRONG>, <STRONG>-1</STRONG>, <STRONG>-E</STRONG>, <STRONG>-F</STRONG>, <STRONG>-G</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>, <STRONG>-e</STRONG>,  <STRONG>-f</STRONG>,  <STRONG>-g</STRONG>,  <STRONG>-i</STRONG>,
+       <STRONG>-l</STRONG>,  <STRONG>-p</STRONG>,  <STRONG>-q</STRONG>  and  <STRONG>-t</STRONG>  options  are  not supported in SVr4
+       curses.
 
        The <STRONG>-r</STRONG> option's notion of `termcap' capabilities is System
-       V Release 4's.  Actual BSD curses  versions  will  have  a
-       more  restricted  set.  To see only the 4.4BSD set, use <STRONG>-r</STRONG>
+       V  Release  4's.   Actual  BSD curses versions will have a
+       more restricted set.  To see only the 4.4BSD set,  use  <STRONG>-r</STRONG>
        <STRONG>-RBSD</STRONG>.
 
 
 </PRE>
-<H2>BUGS</H2><PRE>
+<H2><a name="h2-BUGS">BUGS</a></H2><PRE>
        The <STRONG>-F</STRONG> option of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> should be a <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG> mode.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,    <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,     <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>,     <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>,
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>,     <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>,     <STRONG><A HREF="tic.1m.html">tic(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="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 5.6 (patch 20081011).
+       http://invisible-island.net/ncurses/tctest.html
+
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
        Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
 
@@ -435,10 +484,25 @@
 
                                                             <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Default-Options">Default Options</a></li>
+<li><a href="#h3-Comparison-Options-_-d_-_-c_-_-n_">Comparison Options [-d] [-c] [-n]</a></li>
+<li><a href="#h3-Source-Listing-Options-_-I_-_-L_-_-C_-_-r_">Source Listing Options [-I] [-L] [-C] [-r]</a></li>
+<li><a href="#h3-Use_-Option-_-u_">Use= Option [-u]</a></li>
+<li><a href="#h3-Other-Options">Other Options</a></li>
+</ul>
+</li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/infotocap.1m.html b/doc/html/man/infotocap.1m.html
index 15359d8..bd5f05e 100644
--- a/doc/html/man/infotocap.1m.html
+++ b/doc/html/man/infotocap.1m.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1999-2004,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1999-2006,2010 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            *
@@ -28,49 +27,51 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: infotocap.1m,v 1.8 2006/12/24 20:13:56 tom Exp @
+  * @Id: infotocap.1m,v 1.11 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>infotocap 1m</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>infotocap 1m</H1>
-<HR>
+<H1 class="no-header">infotocap 1m</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>                                             <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>infotocap</STRONG>  - convert a <EM>terminfo</EM> description into a <EM>termcap</EM>
        description
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>infotocap</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>]  [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> . . .
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       <STRONG>infotocap</STRONG> looks in <EM>file</EM> for  <STRONG>terminfo</STRONG>  descriptions.   For
-       each one found, an equivalent <STRONG>termcap</STRONG> description is writ-
-       ten to standard output.   Terminfo  <STRONG>use</STRONG>  capabilities  are
-       translated directly to termcap <STRONG>tc</STRONG> capabilities.
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       <STRONG>infotocap</STRONG> looks in  each  given  text  <EM>file</EM>  for  <STRONG>terminfo</STRONG>
+       descriptions.   For  each  terminfo  description found, an
+       equivalent <STRONG>termcap</STRONG> description is written to standard out-
+       put.  Terminfo <STRONG>use</STRONG> capabilities are translated directly to
+       termcap <STRONG>tc</STRONG> capabilities.
 
-       <STRONG>-v</STRONG>   print  out  tracing  information on standard error as
+       <STRONG>-v</STRONG>   print out tracing information on  standard  error  as
             the program runs.
 
-       <STRONG>-V</STRONG>   print out the version of the program in use on  stan-
+       <STRONG>-V</STRONG>   print  out the version of the program in use on stan-
             dard error and exit.
 
-       <STRONG>-1</STRONG>   cause  the fields to print out one to a line.  Other-
+       <STRONG>-1</STRONG>   cause the fields to print out one to a line.   Other-
             wise, the fields will be printed several to a line to
             a maximum width of 60 characters.
 
@@ -78,31 +79,43 @@
 
 
 </PRE>
-<H2>FILES</H2><PRE>
-       /usr/share/terminfo Compiled      terminal     description
-                           database.
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
+       /usr/share/terminfo Compiled  terminal  description  data-
+                           base.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
-       This utility is actually a link  to  <EM>tic</EM>,  running  in  <EM>-C</EM>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       This  utility  is  actually  a  link to <EM>tic</EM>, running in <EM>-C</EM>
        mode.  You can use other <EM>tic</EM> options such as <STRONG>-f</STRONG> and  <STRONG>-x</STRONG>.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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 5.6 (patch 20081011).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
+
+
+</PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+       Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
+       Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
 
 
 
                                                           <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/key_defined.3x.html b/doc/html/man/key_defined.3x.html
index 7b1debe..62d52d1 100644
--- a/doc/html/man/key_defined.3x.html
+++ b/doc/html/man/key_defined.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2003-2004,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 2003-2006,2010 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            *
@@ -28,45 +27,46 @@
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 2003
-  * @Id: key_defined.3x,v 1.4 2006/02/25 21:50:01 tom Exp @
+  * @Id: key_defined.3x,v 1.6 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>key_defined 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>key_defined 3x</H1>
-<HR>
+<H1 class="no-header">key_defined 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>                                         <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>key_defined</STRONG> - check if a keycode is defined
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>key_defined(const</STRONG> <STRONG>char</STRONG> <STRONG>*definition);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        This is an extension to the curses library.  It permits an
        application to determine if a string is currently bound to
        any keycode.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        If  the  string  is bound to a keycode, its value (greater
        than zero) is returned.  If no keycode is bound,  zero  is
        returned.   If  the  string  conflicts with longer strings
@@ -74,7 +74,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines are specific to  ncurses.   They  were  not
        supported  on  Version 7, BSD or System V implementations.
        It is recommended that any code depending on them be  con-
@@ -82,22 +82,28 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Thomas Dickey.
 
 
 
                                                         <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/keybound.3x.html b/doc/html/man/keybound.3x.html
index c62d9da..a726f8a 100644
--- a/doc/html/man/keybound.3x.html
+++ b/doc/html/man/keybound.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1999-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1999-2008,2010 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            *
@@ -28,45 +27,46 @@
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1999
-  * @Id: keybound.3x,v 1.6 2006/02/25 21:47:06 tom Exp @
+  * @Id: keybound.3x,v 1.8 2010/12/04 18:49:20 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
-<TITLE>keyok 3x</TITLE>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>keybound 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>keyok 3x</H1>
-<HR>
+<H1 class="no-header">keybound 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
-<STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>                                                     <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
+<STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>                                               <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>keybound</STRONG> - return definition of keycode
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>keybound(int</STRONG> <STRONG>keycode,</STRONG> <STRONG>int</STRONG> <STRONG>count);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        This is an extension to the curses library.  It permits an
        application to determine the string which  is  defined  in
        the terminfo for specific keycodes.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The <EM>keycode</EM> parameter must be greater than zero, else NULL
        is returned.  If it does not correspond to a defined  key,
        then  NULL  is  returned.   The <EM>count</EM> parameter is used to
@@ -76,7 +76,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines are specific to  ncurses.   They  were  not
        supported  on  Version 7, BSD or System V implementations.
        It is recommended that any code depending on them be  con-
@@ -84,22 +84,28 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Thomas Dickey.
 
 
 
-                                                              <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
+                                                           <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/keyok.3x.html b/doc/html/man/keyok.3x.html
index 2a38610..31cbab8 100644
--- a/doc/html/man/keyok.3x.html
+++ b/doc/html/man/keyok.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,46 +27,47 @@
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1997
-  * @Id: keyok.3x,v 1.9 2006/02/25 21:47:06 tom Exp @
+  * @Id: keyok.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>keyok 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>keyok 3x</H1>
-<HR>
+<H1 class="no-header">keyok 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>                                                     <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>keyok</STRONG> - enable or disable a keycode
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>keyok(int</STRONG> <STRONG>keycode,</STRONG> <STRONG>bool</STRONG> <STRONG>enable);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        This is an extension to the curses library.  It permits an
        application to disable specific keycodes, rather than  use
        the  <EM>keypad</EM>  function  to disable all keycodes.  Keys that
-       have been disabled can be reenabled.
+       have been disabled can be re-enabled.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The keycode  must  be  greater  than  zero,  else  ERR  is
        returned.   If  it  does  not correspond to a defined key,
        then ERR is returned.  If the <EM>enable</EM>  parameter  is  true,
@@ -76,7 +76,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines are specific to  ncurses.   They  were  not
        supported  on  Version 7, BSD or System V implementations.
        It is recommended that any code depending on them be  con-
@@ -84,22 +84,28 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Thomas Dickey.
 
 
 
                                                               <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/legacy_coding.3x.html b/doc/html/man/legacy_coding.3x.html
index 9297a7b..d04f729 100644
--- a/doc/html/man/legacy_coding.3x.html
+++ b/doc/html/man/legacy_coding.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 2005,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 2005-2006,2010 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            *
@@ -28,38 +27,39 @@
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey
-  * @Id: legacy_coding.3x,v 1.3 2006/12/24 15:12:55 tom Exp @
+  * @Id: legacy_coding.3x,v 1.4 2010/12/04 18:49:20 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>legacy_coding 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>legacy_coding 3x</H1>
-<HR>
+<H1 class="no-header">legacy_coding 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>                                     <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>use_legacy_coding</STRONG> - use terminal's default colors
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>use_legacy_coding(int</STRONG> <STRONG>level);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  <EM>use</EM><STRONG>_</STRONG><EM>legacy</EM><STRONG>_</STRONG><EM>coding()</EM>  function  is an extension to the
        curses library.  It allows the caller to change the result
        of  <STRONG>unctrl</STRONG>, and suppress related checks within the library
@@ -82,14 +82,14 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        If  the  screen  has  not  been  initialized, or the <EM>level</EM>
        parameter is out of range, the function returns <STRONG>ERR</STRONG>.  Oth-
        erwise, it returns the previous level: <STRONG>0</STRONG>, <STRONG>1</STRONG> or <STRONG>2</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        This routine is specific to ncurses.  It was not supported
        on Version 7, BSD or System V implementations.  It is rec-
        ommended  that any code depending on ncurses extensions be
@@ -97,22 +97,28 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG>unctrl</STRONG>.
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
-       Thomas Dickey (to support lynx's font-switching  feature).
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+       Thomas Dickey (to support lynx's font-switching feature).
 
 
 
                                                       <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu.3x.html b/doc/html/man/menu.3x.html
index 4ab9195..a05f095 100644
--- a/doc/html/man/menu.3x.html
+++ b/doc/html/man/menu.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2002,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2014 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            *
@@ -28,36 +27,37 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu.3x,v 1.19 2006/11/04 18:38:29 tom Exp @
+  * @Id: menu.3x,v 1.22 2014/08/16 20:32:08 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu 3x</H1>
-<HR>
+<H1 class="no-header">menu 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>                                                       <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu</STRONG> - curses extension for programming menus
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  <STRONG>menu</STRONG> library provides terminal-independent facilities
        for composing menu systems  on  character-cell  terminals.
        The library includes: item routines, which create and mod-
@@ -70,7 +70,9 @@
        before using any of these  functions.   To  use  the  <STRONG>menu</STRONG>
        library, link with the options <STRONG>-lmenu</STRONG> <STRONG>-lcurses</STRONG>.
 
-   <STRONG>Current</STRONG> <STRONG>Default</STRONG> <STRONG>Values</STRONG> <STRONG>for</STRONG> <STRONG>Item</STRONG> <STRONG>Attributes</STRONG>
+
+</PRE>
+<H3><a name="h3-Current-Default-Values-for-Item-Attributes">Current Default Values for Item Attributes</a></H3><PRE>
        The  <STRONG>menu</STRONG>  library  maintains  a  default  value  for item
        attributes.  You can get or set this  default  by  calling
        the  appropriate  <STRONG>get_</STRONG>  or  <STRONG>set_</STRONG>  routine with a <STRONG>NULL</STRONG> item
@@ -78,7 +80,9 @@
        affects  future  item  creations,  but does not change the
        rendering of items already created.
 
-   <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
+
+</PRE>
+<H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE>
        The following table lists each <STRONG>menu</STRONG> routine and  the  name
        of the manual page on which it is described.
 
@@ -152,7 +156,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines  that return pointers return <STRONG>NULL</STRONG> on error.  Rou-
        tines that return an integer return one of  the  following
        error codes:
@@ -196,46 +200,55 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for
-       detailed descriptions of the entry points.
-
-
-</PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        files <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>.
 
-       In  your  library  list,  libmenu.a should be before libn-
+       In your library list, libmenu.a  should  be  before  libn-
        curses.a; that is, you want to say `-lmenu -lncurses', not
-       the  other  way  around  (which would usually give a link-
+       the other way around (which would  usually  give  a  link-
        error).
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V  menu  library.   They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual pages and adaptation for  ncurses
        by Eric S. Raymond.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       This describes <STRONG>ncurses</STRONG> version 5.6 (patch 20081011).
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <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 20150808).
 
 
 
                                                                <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Current-Default-Values-for-Item-Attributes">Current Default Values for Item Attributes</a></li>
+<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_attributes.3x.html b/doc/html/man/menu_attributes.3x.html
index d7c2c6d..ac338e6 100644
--- a/doc/html/man/menu_attributes.3x.html
+++ b/doc/html/man/menu_attributes.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2008,2010 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_attributes.3x,v 1.10 2008/08/23 18:24:23 tom Exp @
+  * @Id: menu_attributes.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_attributes 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_attributes 3x</H1>
-<HR>
+<H1 class="no-header">menu_attributes 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>                                 <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_attributes</STRONG> - color and attribute control for menus
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_menu_fore(MENU *menu, chtype attr);
        chtype menu_fore(const MENU *menu);
@@ -65,7 +65,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>set_menu_fore</STRONG> sets the foreground attribute
        of <EM>menu</EM>. This is the  highlight  used  for  selected  menu
        items.   <STRONG>menu_fore</STRONG>  returns the foreground attribute.  The
@@ -90,7 +90,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -104,25 +104,25 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for
        detailed descriptions of the entry points.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -130,10 +130,17 @@
 
                                                     <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_cursor.3x.html b/doc/html/man/menu_cursor.3x.html
index 815dcf6..e5c29de 100644
--- a/doc/html/man/menu_cursor.3x.html
+++ b/doc/html/man/menu_cursor.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,37 +27,38 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_cursor.3x,v 1.6 2006/11/04 17:13:57 tom Exp @
+  * @Id: menu_cursor.3x,v 1.8 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_cursor 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_cursor 3x</H1>
-<HR>
+<H1 class="no-header">menu_cursor 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>                                         <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_cursor</STRONG> - position a menu's cursor
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int pos_menu_cursor(const MENU *menu);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>pos_menu_cursor</STRONG>  restores the cursor to the
        current position associated with the menu's selected item.
        This  is  useful after <STRONG>curses</STRONG> routines have been called to
@@ -66,7 +66,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        This routine returns one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -83,24 +83,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -108,10 +108,17 @@
 
                                                         <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_driver.3x.html b/doc/html/man/menu_driver.3x.html
index c592699..7de5eba 100644
--- a/doc/html/man/menu_driver.3x.html
+++ b/doc/html/man/menu_driver.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2008,2010 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            *
@@ -27,52 +26,53 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_driver.3x,v 1.15 2008/06/21 21:55:30 tom Exp @
+  * @Id: menu_driver.3x,v 1.20 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_driver 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_driver 3x</H1>
-<HR>
+<H1 class="no-header">menu_driver 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>                                         <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_driver</STRONG> - command-processing loop of the menu system
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int menu_driver(MENU *menu, int c);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        Once a menu has been posted (displayed), you should funnel
        input events to it through <STRONG>menu_driver</STRONG>.  This routine  has
        three major input cases:
 
-       -  The  input  is  a  form navigation request.  Navigation
-          request codes are constants defined in <STRONG>&lt;form.h&gt;</STRONG>,  which
-          are distinct from the key- and character codes returned
-          by <STRONG>wgetch</STRONG>.
+       <STRONG>o</STRONG>   The  input  is  a form navigation request.  Navigation
+           request codes are constants defined in <STRONG>&lt;form.h&gt;</STRONG>, which
+           are   distinct  from  the  key-  and  character  codes
+           returned by <STRONG>wgetch</STRONG>.
 
-       -  The input is a printable character.  Printable  charac-
-          ters  (which  must  be  positive,  less  than  256) are
-          checked according to the program's locale settings.
+       <STRONG>o</STRONG>   The input is a printable character.  Printable charac-
+           ters  (which  must  be  positive,  less  than 256) are
+           checked according to the program's locale settings.
 
-       -  The input is the KEY_MOUSE special key associated  with
-          an mouse event.
+       <STRONG>o</STRONG>   The input is the KEY_MOUSE special key associated with
+           an mouse event.
 
        The menu driver requests are as follows:
 
@@ -119,8 +119,8 @@
             Clear the menu pattern buffer.
 
        REQ_BACK_PATTERN
-            Delete   the  previous  character  from  the  pattern
-            buffer.
+            Delete  the  previous character from the pattern buf-
+            fer.
 
        REQ_NEXT_MATCH
             Move to the next item matching the pattern match.
@@ -128,59 +128,63 @@
        REQ_PREV_MATCH
             Move to the previous item matching the pattern match.
 
-       If  the second argument is a printable character, the code
-       appends it to the pattern buffer and attempts to  move  to
-       the  next  item  matching the new pattern.  If there is no
+       If the second argument is a printable character, the  code
+       appends  it  to the pattern buffer and attempts to move to
+       the next item matching the new pattern.  If  there  is  no
        such match, <STRONG>menu_driver</STRONG> returns <STRONG>E_NO_MATCH</STRONG> and deletes the
        appended character from the buffer.
 
-       If  the  second  argument  is one of the above pre-defined
+       If the second argument is one  of  the  above  pre-defined
        requests, the corresponding action is performed.
 
-   <STRONG>MOUSE</STRONG> <STRONG>HANDLING</STRONG>
-       If the second argument is the KEY_MOUSE special  key,  the
+
+</PRE>
+<H3><a name="h3-MOUSE-HANDLING">MOUSE HANDLING</a></H3><PRE>
+       If  the  second argument is the KEY_MOUSE special key, the
        associated mouse event is translated into one of the above
-       pre-defined requests.  Currently only clicks in  the  user
-       window  (e.g.  inside the menu display area or the decora-
+       pre-defined  requests.   Currently only clicks in the user
+       window (e.g., inside the menu display area or the  decora-
        tion window) are handled.
 
        If you click above the display region of the menu:
 
-              a REQ_SCR_ULINE is generated for a single click,
+       <STRONG>o</STRONG>   a REQ_SCR_ULINE is generated for a single click,
 
-              a REQ_SCR_UPAGE is generated for a double-click and
+       <STRONG>o</STRONG>   a REQ_SCR_UPAGE is generated for a double-click and
 
-              a REQ_FIRST_ITEM is generated for a triple-click.
+       <STRONG>o</STRONG>   a REQ_FIRST_ITEM is generated for a triple-click.
 
        If you click below the display region of the menu:
 
-              a REQ_SCR_DLINE is generated for a single click,
+       <STRONG>o</STRONG>   a REQ_SCR_DLINE is generated for a single click,
 
-              a REQ_SCR_DPAGE is generated for a double-click and
+       <STRONG>o</STRONG>   a REQ_SCR_DPAGE is generated for a double-click and
 
-              a REQ_LAST_ITEM is generated for a triple-click.
+       <STRONG>o</STRONG>   a REQ_LAST_ITEM is generated for a triple-click.
 
-       If you click at an item inside the  display  area  of  the
+       If  you  click  at  an item inside the display area of the
        menu:
 
-              -  the menu cursor is positioned to that item.
+       <STRONG>o</STRONG>   the menu cursor is positioned to that item.
 
-              -  If you double-click an item a REQ_TOGGLE_ITEM is
-                 generated  and  <STRONG>E_UNKNOWN_COMMAND</STRONG>  is  returned.
-                 This  return value makes sense, because a double
-                 click usually means that an item-specific action
-                 should  be  returned.  It is exactly the purpose
-                 of this return value to signal that an  applica-
-                 tion specific command should be executed.
+       <STRONG>o</STRONG>   If you double-click an item a REQ_TOGGLE_ITEM is  gen-
+           erated and <STRONG>E_UNKNOWN_COMMAND</STRONG> is returned.  This return
+           value makes sense,  because  a  double  click  usually
+           means that an item-specific action should be returned.
+           It is exactly the purpose of this return value to sig-
+           nal  that  an  application  specific command should be
+           executed.
 
-              -  If  a  translation  into  a  request  was  done,
-                 <STRONG>menu_driver</STRONG> returns the result of this  request.
+       <STRONG>o</STRONG>   If a translation into a request was done,  <STRONG>menu_driver</STRONG>
+           returns the result of this request.
 
        If  you clicked outside the user window or the mouse event
        could  not  be  translated  into   a   menu   request   an
        <STRONG>E_REQUEST_DENIED</STRONG> is returned.
 
-   <STRONG>APPLICATION-DEFINED</STRONG> <STRONG>COMMANDS</STRONG>
+
+</PRE>
+<H3><a name="h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></H3><PRE>
        If the second argument is neither printable nor one of the
        above pre-defined menu requests or  KEY_MOUSE,  the  drive
        assumes  it is an application-specific command and returns
@@ -190,7 +194,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        <STRONG>menu_driver</STRONG> return one of the following error codes:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -220,25 +224,25 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>, <STRONG><A HREF="wgetch.3x.html">wgetch(3x)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        files <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions. The  sup-
        port for mouse events is ncurses specific.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -246,10 +250,22 @@
 
                                                         <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-MOUSE-HANDLING">MOUSE HANDLING</a></li>
+<li><a href="#h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_format.3x.html b/doc/html/man/menu_format.3x.html
index 77b73c6..3e8adbc 100644
--- a/doc/html/man/menu_format.3x.html
+++ b/doc/html/man/menu_format.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2001,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,38 +27,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_format.3x,v 1.10 2006/11/04 17:12:00 tom Exp @
+  * @Id: menu_format.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_format 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_format 3x</H1>
-<HR>
+<H1 class="no-header">menu_format 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>                                         <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_format</STRONG> - set and get menu sizes
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_menu_format(MENU *menu, int rows, int cols);
        void menu_format(const MENU *menu, int *rows, int *cols);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>set_menu_format</STRONG> sets the maximum display size
        of the given menu.  If this size is too small  to  display
        all  menu items, the menu will be made scrollable. If this
@@ -79,7 +79,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines returns one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -99,24 +99,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -124,10 +124,17 @@
 
                                                         <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_hook.3x.html b/doc/html/man/menu_hook.3x.html
index 95addf4..00148f7 100644
--- a/doc/html/man/menu_hook.3x.html
+++ b/doc/html/man/menu_hook.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -28,32 +27,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_hook.3x,v 1.9 2007/02/24 17:34:08 tom Exp @
+  * @Id: menu_hook.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_hook 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_hook 3x</H1>
-<HR>
+<H1 class="no-header">menu_hook 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>                                             <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_hook</STRONG> - set hooks for automatic invocation by applica-
        tions
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_item_init(MENU *menu, Menu_Hook func);
        Menu_Hook item_init(const MENU *menu);
@@ -66,7 +66,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        These functions make it possible to set hook functions  to
        be called at various points in the automatic processing of
        input event codes by <STRONG>menu_driver</STRONG>.
@@ -93,7 +93,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return pointers return <STRONG>NULL</STRONG> on error.  Other
        routines return one of the following:
 
@@ -104,24 +104,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -129,10 +129,17 @@
 
                                                           <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_items.3x.html b/doc/html/man/menu_items.3x.html
index ad609f8..fc56a87 100644
--- a/doc/html/man/menu_items.3x.html
+++ b/doc/html/man/menu_items.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2010,2012 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            *
@@ -28,32 +27,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_items.3x,v 1.7 2006/11/04 18:35:31 tom Exp @
+  * @Id: menu_items.3x,v 1.10 2012/11/03 23:03:59 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_items 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_items 3x</H1>
-<HR>
+<H1 class="no-header">menu_items 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>                                           <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_items</STRONG>  - make and break connections between items and
        menus
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_menu_items(MENU *menu, ITEM **items);
        ITEM **menu_items(const MENU *menu);
@@ -61,7 +61,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>set_menu_items</STRONG> changes the item pointer array
        of  the  given  <EM>menu</EM>.   The  array must be terminated by a
        <STRONG>NULL</STRONG>.
@@ -74,7 +74,7 @@
 
 
 </PRE>
-<H2>RETURN VALUES</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function <STRONG>menu_items</STRONG> returns a pointer  (which  may  be
        <STRONG>NULL</STRONG>).  It does not set errno.
 
@@ -101,38 +101,45 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
        The  SVr4  menu  library   documentation   specifies   the
-       <STRONG>item_count</STRONG>  error value as -1 (which is the value of <STRONG>ERR</STRONG>).
+       <STRONG>item_count</STRONG> error value as -1 (which is the value of <STRONG>ERR</STRONG>).
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
 
 
                                                          <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_mark.3x.html b/doc/html/man/menu_mark.3x.html
index 6929963..b0e678c 100644
--- a/doc/html/man/menu_mark.3x.html
+++ b/doc/html/man/menu_mark.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,38 +27,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_mark.3x,v 1.9 2006/11/04 18:33:18 tom Exp @
+  * @Id: menu_mark.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_mark 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_mark 3x</H1>
-<HR>
+<H1 class="no-header">menu_mark 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>                                             <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_mark</STRONG> - get and set the menu mark string
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_menu_mark(MENU *menu, const char *mark);
        const char *menu_mark(const MENU *menu);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        In  order  to make menu selections visible on older termi-
        nals without highlighting or color  capability,  the  menu
        library  marks  selected  items  in  a  menu with a prefix
@@ -79,7 +79,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function <STRONG>menu_mark</STRONG> returns a  pointer  (which  may  be
        <STRONG>NULL</STRONG>).  It does not set errno.
 
@@ -97,24 +97,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -122,10 +122,17 @@
 
                                                           <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_new.3x.html b/doc/html/man/menu_new.3x.html
index c8fdde7..1bd9075 100644
--- a/doc/html/man/menu_new.3x.html
+++ b/doc/html/man/menu_new.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,38 +27,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_new.3x,v 1.9 2006/11/04 18:31:37 tom Exp @
+  * @Id: menu_new.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_new 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_new 3x</H1>
-<HR>
+<H1 class="no-header">menu_new 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>                                               <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_new</STRONG> - create and destroy menus
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        MENU *new_menu(ITEM **items);
        int free_menu(MENU *menu);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>new_menu</STRONG>  creates a new menu connected to a
        specified item pointer array (which  must  be  <STRONG>NULL</STRONG>-termi-
        nated).
@@ -69,7 +69,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function <STRONG>new_menu</STRONG> returns  <STRONG>NULL</STRONG>  on  error.   It  sets
        errno according to the function's failure:
 
@@ -95,24 +95,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -120,10 +120,17 @@
 
                                                            <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_opts.3x.html b/doc/html/man/menu_opts.3x.html
index 3fb9670..d61c9d6 100644
--- a/doc/html/man/menu_opts.3x.html
+++ b/doc/html/man/menu_opts.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_opts.3x,v 1.10 2007/02/24 17:33:59 tom Exp @
+  * @Id: menu_opts.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_opts 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_opts 3x</H1>
-<HR>
+<H1 class="no-header">menu_opts 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>                                             <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_opts</STRONG> - set and get menu options
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_menu_opts(MENU *menu, Menu_Options opts);
        int menu_opts_on(MENU *menu, Menu_Options opts);
@@ -61,7 +61,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>set_menu_opts</STRONG>  sets  all  the  given menu's
        option bits  (menu  option  bits  may  be  logically-OR'ed
        together).
@@ -91,16 +91,16 @@
             Ignore the case when pattern-matching.
 
        O_SHOWMATCH
-            Move the cursor to within the item  name  while  pat-
+            Move  the  cursor  to within the item name while pat-
             tern-matching.
 
        O_NONCYCLIC
-            Don't   wrap   around  next-item  and  previous-item,
+            Don't  wrap  around  next-item   and   previous-item,
             requests to the other end of the menu.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Except for <STRONG>menu_opts</STRONG>, each routine returns one of the fol-
        lowing:
 
@@ -114,35 +114,42 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V  menu  library.   They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                           <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_pattern.3x.html b/doc/html/man/menu_pattern.3x.html
index 0345c56..997be0c 100644
--- a/doc/html/man/menu_pattern.3x.html
+++ b/doc/html/man/menu_pattern.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2008,2010 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            *
@@ -27,38 +26,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_pattern.3x,v 1.11 2008/06/21 21:58:20 tom Exp @
+  * @Id: menu_pattern.3x,v 1.13 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_pattern 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_pattern 3x</H1>
-<HR>
+<H1 class="no-header">menu_pattern 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>                                       <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_pattern</STRONG> - get and set a menu's pattern buffer
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_menu_pattern(MENU *menu, const char *pattern);
        char *menu_pattern(const MENU *menu);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        Every  menu  has  an  associated pattern match buffer.  As
        input events that are printable characters come  in,  they
        are  appended to this match buffer and tested for a match,
@@ -74,7 +74,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function <STRONG>menu_pattern</STRONG> returns a pointer, which is <STRONG>NULL</STRONG>
        if the <EM>menu</EM> parameter is <STRONG>NULL</STRONG>.  Otherwise, it is a pointer
        to a string which is empty if no pattern has been set.  It
@@ -104,24 +104,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -129,10 +129,17 @@
 
                                                        <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_post.3x.html b/doc/html/man/menu_post.3x.html
index 84055be..ae275bf 100644
--- a/doc/html/man/menu_post.3x.html
+++ b/doc/html/man/menu_post.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,39 +27,40 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_post.3x,v 1.9 2006/11/04 17:12:00 tom Exp @
+  * @Id: menu_post.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_post 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_post 3x</H1>
-<HR>
+<H1 class="no-header">menu_post 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>                                             <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_post</STRONG>  -  write or erase menus from associated subwin-
        dows
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int post_menu(MENU *menu);
        int unpost_menu(MENU *menu);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>post_menu</STRONG> displays a menu to  its  associated
        subwindow.   To trigger physical display of the subwindow,
        use  <STRONG>refresh</STRONG>  or  some  equivalent  <STRONG>curses</STRONG>  routine   (the
@@ -73,7 +73,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -104,24 +104,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -129,10 +129,17 @@
 
                                                           <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_requestname.3x.html b/doc/html/man/menu_requestname.3x.html
index 6da9ee9..649a541 100644
--- a/doc/html/man/menu_requestname.3x.html
+++ b/doc/html/man/menu_requestname.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,38 +27,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_requestname.3x,v 1.7 2006/11/04 17:56:09 tom Exp @
+  * @Id: menu_requestname.3x,v 1.9 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_requestname 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_requestname 3x</H1>
-<HR>
+<H1 class="no-header">menu_requestname 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>                               <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_requestname</STRONG> - handle printable menu request names
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        const char *menu_request_name(int request);
        int menu_request_by_name(const char *name);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function <STRONG>menu_request_name</STRONG> returns the printable name
        of a menu request code.
        The function <STRONG>menu_request_by_name</STRONG> searches in the name-ta-
@@ -68,7 +68,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        <STRONG>menu_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets errno  to
        <STRONG>E_BAD_ARGUMENT</STRONG>.
        <STRONG>menu_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error.  It does
@@ -76,18 +76,18 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  are  specific  to ncurses.  They were not
        supported on Version 7, BSD or System  V  implementations.
        It  is recommended that any code depending on them be con-
@@ -95,7 +95,7 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -103,10 +103,17 @@
 
                                                    <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_spacing.3x.html b/doc/html/man/menu_spacing.3x.html
index 736e95c..d067211 100644
--- a/doc/html/man/menu_spacing.3x.html
+++ b/doc/html/man/menu_spacing.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2001,2004 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2004,2010 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_spacing.3x,v 1.8 2004/12/11 23:39:07 tom Exp @
+  * @Id: menu_spacing.3x,v 1.12 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_spacing 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_spacing 3x</H1>
-<HR>
+<H1 class="no-header">menu_spacing 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>                                       <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_spacing</STRONG> - Control spacing between menu items.
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_menu_spacing(MENU *menu,
                             int spc_description,
@@ -65,46 +65,46 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  function  <STRONG>set_menu_spacing</STRONG>  sets the spacing informa-
-       tions for the menu.  <STRONG>spc_description</STRONG> controls  the  number
-       of spaces between an item name and an item description. It
-       must not be larger than <STRONG>TABSIZE</STRONG>. The menu system  puts  in
-       the  middle  of  this  spacing area the pad character. The
-       remaining parts are filled with spaces.  <STRONG>spc_rows</STRONG> controls
-       the  number of rows that are used for an item. It must not
-       be larger than 3. The menu system inserts the blank  lines
-       between  item rows, these lines will contain the pad char-
-       acter in the appropriate positions.  <STRONG>spc_columns</STRONG>  controls
-       the number of blanks between columns of items. It must not
-       be larger than TABSIZE.  A value of 0 for all the  spacing
-       values  resets  them to the default, which is 1 for all of
-       them.
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       The function <STRONG>set_menu_spacing</STRONG> sets the spacing information
+       for the menu.  Its parameter <STRONG>spc_description</STRONG> controls  the
+       number of spaces between an item name and an item descrip-
+       tion.  It must not be larger than <STRONG>TABSIZE</STRONG>.  The menu  sys-
+       tem  puts in the middle of this spacing area the pad char-
+       acter.  The remaining parts are filled with  spaces.   The
+       <STRONG>spc_rows</STRONG>  parameter  controls  the number of rows that are
+       used for an item.  It must not be larger than 3.  The menu
+       system  inserts  the  blank lines between item rows, these
+       lines will contain the pad character  in  the  appropriate
+       positions.   The <STRONG>spc_columns</STRONG> parameter controls the number
+       of blanks between columns of items.  It must not be larger
+       than  TABSIZE.   A  value  of 0 for all the spacing values
+       resets them to the default, which is 1 for all of them.
        The function <STRONG>menu_spacing</STRONG> passes back the spacing info for
-       the menu. If a pointer is NULL, this specific info is sim-
-       ply not returned.
+       the  menu.   If  a  pointer is NULL, this specific info is
+       simply not returned.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Both routines return <STRONG>E_OK</STRONG> on success. <STRONG>set_menu_spacing</STRONG> may
-       return  <STRONG>E_POSTED</STRONG>  if the menu is posted, or <STRONG>E_BAD_ARGUMENT</STRONG>
-       if one of the spacing values is out of range.
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Both routines return <STRONG>E_OK</STRONG>  on  success.   <STRONG>set_menu_spacing</STRONG>
+       may  return <STRONG>E_POSTED</STRONG> if the menu is posted, or <STRONG>E_BAD_ARGU-</STRONG>
+       <STRONG>MENT</STRONG> if one of the spacing values is out of range.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
+<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>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  are  specific  to ncurses.  They were not
        supported on Version 7, BSD or System  V  implementations.
        It  is recommended that any code depending on them be con-
@@ -112,7 +112,7 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -120,10 +120,17 @@
 
                                                        <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_userptr.3x.html b/doc/html/man/menu_userptr.3x.html
index 78341cd..65463b4 100644
--- a/doc/html/man/menu_userptr.3x.html
+++ b/doc/html/man/menu_userptr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,66 +27,67 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_userptr.3x,v 1.8 2006/11/04 18:21:03 tom Exp @
+  * @Id: menu_userptr.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_userptr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_userptr 3x</H1>
-<HR>
+<H1 class="no-header">menu_userptr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>                                       <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_userptr</STRONG> - associate application data with a menu item
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_menu_userptr(MENU *menu, void *userptr);
        void *menu_userptr(const MENU *menu);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       Every menu and every menu item has a  field  that  can  be
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       Every  menu  and  every  menu item has a field that can be
        used to hold application-specific data (that is, the menu-
        driver code leaves it alone).  These functions get and set
        the menu user pointer field.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       <STRONG>menu_userptr</STRONG>  returns  a  pointer (which may be <STRONG>NULL</STRONG>).  It
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       <STRONG>menu_userptr</STRONG> returns a pointer (which may  be  <STRONG>NULL</STRONG>).   It
        does not set errno.
 
        <STRONG>set_menu_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success).
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate  the System V menu library.  They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
        The user pointer is a void pointer.  We chose not to leave
@@ -95,18 +95,25 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                        <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/menu_win.3x.html b/doc/html/man/menu_win.3x.html
index 85511bf..1321df1 100644
--- a/doc/html/man/menu_win.3x.html
+++ b/doc/html/man/menu_win.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,32 +27,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: menu_win.3x,v 1.8 2006/11/04 17:12:00 tom Exp @
+  * @Id: menu_win.3x,v 1.11 2010/12/04 18:38:55 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>menu_win 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>menu_win 3x</H1>
-<HR>
+<H1 class="no-header">menu_win 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>                                               <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>menu_win</STRONG>  - make and break menu window and subwindow asso-
        ciations
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_menu_win(MENU *menu, WINDOW *win);
        WINDOW *menu_win(const MENU *menu);
@@ -63,29 +63,29 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       Every  menu has an associated pair of <STRONG>curses</STRONG> windows.  The
-       menu window displays any title and border associated  with
-       the  window;  the menu subwindow displays the items of the
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       Every menu has an associated pair of <STRONG>curses</STRONG> windows.   The
+       menu  window displays any title and border associated with
+       the window; the menu subwindow displays the items  of  the
        menu that are currently available for selection.
 
        The first four functions get and set those windows.  It is
        not necessary to set either window; by default, the driver
        code uses <STRONG>stdscr</STRONG> for both.
 
-       In the <STRONG>set_</STRONG> functions, window argument of <STRONG>NULL</STRONG> is  treated
-       as  though  it  were  <STRONG>stsdcr</STRONG>.   A menu argument of <STRONG>NULL</STRONG> is
-       treated as a request to change  the  system  default  menu
+       In  the <STRONG>set_</STRONG> functions, window argument of <STRONG>NULL</STRONG> is treated
+       as though it were <STRONG>stsdcr</STRONG>.  A  menu  argument  of  <STRONG>NULL</STRONG>  is
+       treated  as  a  request  to change the system default menu
        window or subwindow.
 
-       The  function <STRONG>scale_menu</STRONG> returns the minimum size required
+       The function <STRONG>scale_menu</STRONG> returns the minimum size  required
        for the subwindow of <EM>menu</EM>.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Routines that return pointers return <STRONG>NULL</STRONG> on error.   Rou-
-       tines  that  return an integer return one of the following
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Routines  that return pointers return <STRONG>NULL</STRONG> on error.  Rou-
+       tines that return an integer return one of  the  following
        error codes:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -94,7 +94,7 @@
             System error occurred (see <STRONG>errno</STRONG>).
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
+            Routine  detected  an incorrect or out-of-range argu-
             ment.
 
        <STRONG>E_POSTED</STRONG>
@@ -105,35 +105,42 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
+<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>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V  menu  library.   They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                            <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_current.3x.html b/doc/html/man/mitem_current.3x.html
index 9529473..2ee61a2 100644
--- a/doc/html/man/mitem_current.3x.html
+++ b/doc/html/man/mitem_current.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_current.3x,v 1.11 2006/11/04 18:18:19 tom Exp @
+  * @Id: mitem_current.3x,v 1.13 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>mitem_current 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>mitem_current 3x</H1>
-<HR>
+<H1 class="no-header">mitem_current 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>                                     <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>mitem_current</STRONG> - set and get current_menu_item
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_current_item(MENU *menu, const ITEM *item);
        ITEM *current_item(const MENU *menu);
@@ -62,7 +62,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>set_current_item</STRONG> sets the current item (the
        item on  which  the  menu  cursor  is  positioned).   <STRONG>cur-</STRONG>
        <STRONG>rent_item</STRONG>  returns  a  pointer  to the current item in the
@@ -80,7 +80,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        <STRONG>current_item</STRONG> returns a pointer (which may  be  <STRONG>NULL</STRONG>).   It
        does not set errno.
 
@@ -108,18 +108,18 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
@@ -129,7 +129,7 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -137,10 +137,17 @@
 
                                                       <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_name.3x.html b/doc/html/man/mitem_name.3x.html
index 90895d3..fd73c6b 100644
--- a/doc/html/man/mitem_name.3x.html
+++ b/doc/html/man/mitem_name.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,38 +27,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_name.3x,v 1.6 2006/11/04 17:53:40 tom Exp @
+  * @Id: mitem_name.3x,v 1.8 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>mitem_name 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>mitem_name 3x</H1>
-<HR>
+<H1 class="no-header">mitem_name 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>                                           <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>mitem_name</STRONG> - get menu item name and description fields
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        const char *item_name(const ITEM *item);
        const char *item_description(const ITEM *item);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function <STRONG>item_name</STRONG> returns the name part of the given
        item.
        The function <STRONG>item_description</STRONG> returns the description part
@@ -67,30 +67,30 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        These routines return a pointer (which may be <STRONG>NULL</STRONG>).  They
        do not set errno.
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -98,10 +98,17 @@
 
                                                          <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_new.3x.html b/doc/html/man/mitem_new.3x.html
index e069b12..58ceafa 100644
--- a/doc/html/man/mitem_new.3x.html
+++ b/doc/html/man/mitem_new.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,57 +27,58 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_new.3x,v 1.10 2006/11/04 18:16:36 tom Exp @
+  * @Id: mitem_new.3x,v 1.12 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>mitem_new 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>mitem_new 3x</H1>
-<HR>
+<H1 class="no-header">mitem_new 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>                                             <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>mitem_new</STRONG> - create and destroy menu items
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        ITEM *new_item(const char *name, const char *description);
        int free_item(ITEM *item);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The function <STRONG>new_item</STRONG> allocates a new item and initializes
-       it  from  the <STRONG>name</STRONG> and <STRONG>description</STRONG> pointers. Please notice
-       that the item stores only the pointers  to  the  name  and
+       it from the <STRONG>name</STRONG> and <STRONG>description</STRONG> pointers.  Please  notice
+       that  the  item  stores  only the pointers to the name and
        description. Those pointers must be valid during the life-
        time of the item. So you should be very careful with names
        or descriptions allocated on the stack of some routines.
        The function <STRONG>free_item</STRONG> de-allocates an item. Please notice
-       that it  is  the  responsibility  of  the  application  to
-       release  the memory for the name or the description of the
+       that  it  is  the  responsibility  of  the  application to
+       release the memory for the name or the description of  the
        item.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The function <STRONG>new_item</STRONG> returns  <STRONG>NULL</STRONG>  on  error.   It  sets
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       The  function  <STRONG>new_item</STRONG>  returns  <STRONG>NULL</STRONG>  on error.  It sets
        errno according to the function's failure:
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine  detected  an incorrect or out-of-range argu-
+            Routine detected an incorrect or  out-of-range  argu-
             ment.
 
        <STRONG>E_SYSTEM_ERROR</STRONG>
@@ -89,7 +89,7 @@
        <STRONG>E_OK</STRONG> The routine succeeded.
 
        <STRONG>E_BAD_ARGUMENT</STRONG>
-            Routine detected an incorrect or  out-of-range  argu-
+            Routine  detected  an incorrect or out-of-range argu-
             ment.
 
        <STRONG>E_CONNECTED</STRONG>
@@ -100,35 +100,42 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These routines emulate the System V  menu  library.   They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                           <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_opts.3x.html b/doc/html/man/mitem_opts.3x.html
index 459930a..3932564 100644
--- a/doc/html/man/mitem_opts.3x.html
+++ b/doc/html/man/mitem_opts.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2007,2010 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            *
@@ -28,31 +27,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_opts.3x,v 1.9 2007/02/24 17:33:32 tom Exp @
+  * @Id: mitem_opts.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>mitem_opts 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>mitem_opts 3x</H1>
-<HR>
+<H1 class="no-header">mitem_opts 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>                                           <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>mitem_opts</STRONG> - set and get menu item options
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_item_opts(ITEM *item, Item_Options opts);
        int item_opts_on(ITEM *item, Item_Options opts);
@@ -61,7 +61,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  function  <STRONG>set_item_opts</STRONG>  sets  all  the  given item's
        option bits  (menu  option  bits  may  be  logically-OR'ed
        together).
@@ -81,7 +81,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Except for <STRONG>item_opts</STRONG>, each routine returns one of the fol-
        lowing:
 
@@ -92,24 +92,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen  Pfeifer.   Manual  pages  and  adaptation for new
        curses by Eric S. Raymond.
 
@@ -117,10 +117,17 @@
 
                                                          <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_userptr.3x.html b/doc/html/man/mitem_userptr.3x.html
index fc7c9c5..881d852 100644
--- a/doc/html/man/mitem_userptr.3x.html
+++ b/doc/html/man/mitem_userptr.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998,2006 Free Software Foundation, Inc.                   *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,66 +27,67 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_userptr.3x,v 1.9 2006/11/04 18:21:03 tom Exp @
+  * @Id: mitem_userptr.3x,v 1.11 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>mitem_userptr 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>mitem_userptr 3x</H1>
-<HR>
+<H1 class="no-header">mitem_userptr 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>                                     <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>mitem_userptr</STRONG>  -  associate  application  data with a menu
        item
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_item_userptr(ITEM *item, void *userptr);
        void *item_userptr(const ITEM *item);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        Every menu item has a field  that  can  be  used  to  hold
        application-specific  data  (that is, the menu-driver code
        leaves it alone).  These functions get and set that field.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       The  function  <STRONG>item_userptr</STRONG>  returns  a  pointer (possibly
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       The function  <STRONG>item_userptr</STRONG>  returns  a  pointer  (possibly
        <STRONG>NULL</STRONG>).  It does not set errno.
 
        The <STRONG>set_item_userptr</STRONG> always returns <STRONG>E_OK</STRONG> (success).
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       These  routines  emulate  the System V menu library.  They
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       These routines emulate the System V  menu  library.   They
        were not supported on Version 7 or BSD versions.
 
        The user pointer is a void pointer.  We chose not to leave
@@ -95,18 +95,25 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
+       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
 
 
                                                       <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_value.3x.html b/doc/html/man/mitem_value.3x.html
index 386c8b8..d68ba28 100644
--- a/doc/html/man/mitem_value.3x.html
+++ b/doc/html/man/mitem_value.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2002,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -27,38 +26,39 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_value.3x,v 1.8 2006/11/04 17:12:00 tom Exp @
+  * @Id: mitem_value.3x,v 1.10 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>mitem_value 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>mitem_value 3x</H1>
-<HR>
+<H1 class="no-header">mitem_value 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>                                         <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>mitem_value</STRONG> - set and get menu item values
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        int set_item_value(ITEM *item, bool value);
        bool item_value(const ITEM *item);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        If  you  turn  off  the menu option <STRONG>O_ONEVALUE</STRONG> (e.g., with
        <STRONG>set_menu_opts</STRONG> or <STRONG>menu_opts_off</STRONG>;  see  <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>),  the
        menu becomes multi-valued; that is, more than one item may
@@ -70,7 +70,7 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function <STRONG>set_item_value</STRONG> returns one of the following:
 
        <STRONG>E_OK</STRONG> The routine succeeded.
@@ -83,24 +83,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -108,10 +108,17 @@
 
                                                         <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/mitem_visible.3x.html b/doc/html/man/mitem_visible.3x.html
index 8d3d016..7027e52 100644
--- a/doc/html/man/mitem_visible.3x.html
+++ b/doc/html/man/mitem_visible.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+  * Copyright (c) 1998,2010 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            *
@@ -28,37 +27,38 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: mitem_visible.3x,v 1.5 1998/11/29 01:12:55 Rick.Ohnemus Exp @
+  * @Id: mitem_visible.3x,v 1.7 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>mitem_visible 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>mitem_visible 3x</H1>
-<HR>
+<H1 class="no-header">mitem_visible 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>                                     <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>mitem_visible</STRONG> - check visibility of a menu item
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG>
        bool item_visible(const ITEM *item);
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        A  menu  item  is  visible  when it is in the portion of a
        posted menu that is mapped onto the screen (if the menu is
        scrollable,  in  particular,  this portion will be smaller
@@ -66,24 +66,24 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="menu.3x.html">menu(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header
        file <STRONG>&lt;curses.h&gt;</STRONG>.
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        These  routines  emulate  the System V menu library.  They
        were not supported on Version 7 or BSD versions.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
        curses by Eric S. Raymond.
 
@@ -91,10 +91,16 @@
 
                                                       <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/ncurses.3x.html b/doc/html/man/ncurses.3x.html
index 8b1dee8..0c562ca 100644
--- a/doc/html/man/ncurses.3x.html
+++ b/doc/html/man/ncurses.3x.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2014,2015 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            *
@@ -28,52 +27,53 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: ncurses.3x,v 1.91 2008/10/11 20:43:11 tom Exp @
+  * @Id: ncurses.3x,v 1.124 2015/08/08 14:57:51 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>ncurses 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>ncurses 3x</H1>
-<HR>
+<H1 class="no-header">ncurses 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>                                                 <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>ncurses</STRONG> - CRT screen handling and optimization package
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  <STRONG>ncurses</STRONG>  library  routines  give the user a terminal-
        independent method of updating character screens with rea-
-       sonable   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 5.6 (patch 20081011).
+       sonable optimization.  This implementation is "new curses"
+       (ncurses) and is the approved replacement for 4.4BSD clas-
+       sic  curses,  which has been discontinued.  This describes
+       <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
 
-       The <STRONG>ncurses</STRONG> library emulates  the  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  library  of
-       System  V  Release  4  UNIX,  and XPG4 (X/Open Portability
-       Guide) curses (also known as XSI curses).  XSI stands  for
-       X/Open  System  Interfaces Extension.  The <STRONG>ncurses</STRONG> library
-       is freely redistributable  in  source  form.   Differences
-       from  the  SVr4 curses are summarized under the <STRONG>EXTENSIONS</STRONG>
-       and <STRONG>PORTABILITY</STRONG> sections below and described in detail  in
-       the  respective  <STRONG>EXTENSIONS</STRONG>, <STRONG>PORTABILITY</STRONG> and <STRONG>BUGS</STRONG> sections
-       of individual man pages.
+       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 curses).  XSI stands for  X/Open
+       System  Interfaces  Extension.   The  <STRONG>ncurses</STRONG>  library  is
+       freely redistributable in source form.   Differences  from
+       the  SVr4  curses  are summarized under the <STRONG>EXTENSIONS</STRONG> and
+       <STRONG>PORTABILITY</STRONG> sections below and described in detail in  the
+       respective  <STRONG>EXTENSIONS</STRONG>,  <STRONG>PORTABILITY</STRONG>  and <STRONG>BUGS</STRONG> sections of
+       individual man pages.
 
        The <STRONG>ncurses</STRONG> library also provides many useful  extensions,
        i.e.,  features  which  cannot  be implemented by a simple
@@ -96,6 +96,9 @@
        lation; use of soft label keys; terminfo capabilities; and
        access to low-level terminal-manipulation routines.
 
+
+</PRE>
+<H3><a name="h3-Initialization">Initialization</a></H3><PRE>
        The  library uses the locale which the calling program has
        initialized.  That is normally done with <STRONG>setlocale</STRONG>:
 
@@ -131,6 +134,9 @@
        <STRONG>TERM</STRONG>  has  been  exported.  <STRONG>tset(1)</STRONG> is usually responsible
        for doing this.  [See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for further details.]
 
+
+</PRE>
+<H3><a name="h3-Datatypes">Datatypes</a></H3><PRE>
        The <STRONG>ncurses</STRONG> library permits manipulation  of  data  struc-
        tures,  called  <EM>windows</EM>,  which  can be thought of as two-
        dimensional arrays of characters representing all or  part
@@ -150,48 +156,51 @@
        Among those, the most basic routines are <STRONG>move</STRONG>  and  <STRONG>addch</STRONG>.
        More  general versions of these routines are included with
        names beginning with <STRONG>w</STRONG>, allowing the  user  to  specify  a
-       window.   The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>.
+       window.  The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>.
 
-       After using routines to manipulate a  window,  <STRONG>refresh</STRONG>  is
-       called,  telling <STRONG>curses</STRONG> to make the user's CRT screen look
-       like <STRONG>stdscr</STRONG>.  The characters in a window are  actually  of
-       type  <STRONG>chtype</STRONG>, (character and attribute data) so that other
-       information about the character may also  be  stored  with
+       After  using  routines  to manipulate a window, <STRONG>refresh</STRONG> is
+       called, telling <STRONG>curses</STRONG> to make the user's CRT screen  look
+       like  <STRONG>stdscr</STRONG>.   The characters in a window are actually of
+       type <STRONG>chtype</STRONG>, (character and attribute data) so that  other
+       information  about  the  character may also be stored with
        each character.
 
-       Special  windows  called  <EM>pads</EM>  may  also  be manipulated.
+       Special windows  called  <EM>pads</EM>  may  also  be  manipulated.
        These are windows which are not constrained to the size of
-       the  screen and whose contents need not be completely dis-
+       the screen and whose contents need not be completely  dis-
        played.  See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> for more information.
 
-       In addition to drawing characters  on  the  screen,  video
-       attributes  and colors may be supported, causing the char-
-       acters to show up in such modes as underlined, in  reverse
-       video,  or in color on terminals that support such display
+       In  addition  to  drawing  characters on the screen, video
+       attributes and colors may be supported, causing the  char-
+       acters  to show up in such modes as underlined, in reverse
+       video, or in color on terminals that support such  display
        enhancements.  Line drawing characters may be specified to
-       be  output.   On  input,  <STRONG>curses</STRONG> is also able to translate
-       arrow and function keys  that  transmit  escape  sequences
-       into  single  values.   The video attributes, line drawing
-       characters,  and  input  values  use  names,  defined   in
+       be output.  On input, <STRONG>curses</STRONG> is  also  able  to  translate
+       arrow  and  function  keys  that transmit escape sequences
+       into single values.  The video  attributes,  line  drawing
+       characters,   and  input  values  use  names,  defined  in
        <STRONG>&lt;curses.h&gt;</STRONG>, such as <STRONG>A_REVERSE</STRONG>, <STRONG>ACS_HLINE</STRONG>, and <STRONG>KEY_LEFT</STRONG>.
 
+
+</PRE>
+<H3><a name="h3-Environment-variables">Environment variables</a></H3><PRE>
        If the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> are set, or
-       if the program is executing in a window environment,  line
-       and  column  information  in the environment will override
+       if  the program is executing in a window environment, line
+       and column information in the  environment  will  override
        information read by <EM>terminfo</EM>.  This would affect a program
-       running  in an AT&amp;T 630 layer, for example, where the size
+       running in an AT&amp;T 630 layer, for example, where the  size
        of a screen is changeable (see <STRONG>ENVIRONMENT</STRONG>).
 
-       If the environment variable <STRONG>TERMINFO</STRONG> is defined, any  pro-
-       gram  using  <STRONG>curses</STRONG> checks for a local terminal definition
-       before checking in the standard place.   For  example,  if
+       If  the environment variable <STRONG>TERMINFO</STRONG> is defined, any pro-
+       gram using <STRONG>curses</STRONG> checks for a local  terminal  definition
+       before  checking  in  the standard place.  For example, if
        <STRONG>TERM</STRONG> is set to <STRONG>att4424</STRONG>, then the compiled terminal defini-
        tion is found in
 
              <STRONG>/usr/share/terminfo/a/att4424</STRONG>.
 
        (The <STRONG>a</STRONG> is copied from the first letter of <STRONG>att4424</STRONG> to avoid
-       creation  of  huge  directories.)  However, if <STRONG>TERMINFO</STRONG> is
+       creation of huge directories.)  However,  if  <STRONG>TERMINFO</STRONG>  is
        set to <STRONG>$HOME/myterms</STRONG>, <STRONG>curses</STRONG> first checks
 
              <STRONG>$HOME/myterms/a/att4424</STRONG>,
@@ -200,120 +209,121 @@
 
              <STRONG>/usr/share/terminfo/a/att4424</STRONG>.
 
-       This is useful for developing experimental definitions  or
+       This  is useful for developing experimental definitions or
        when write permission in <STRONG>/usr/share/terminfo</STRONG> is not avail-
        able.
 
-       The integer  variables  <STRONG>LINES</STRONG>  and  <STRONG>COLS</STRONG>  are  defined  in
-       <STRONG>&lt;curses.h&gt;</STRONG>  and will be filled in by <STRONG>initscr</STRONG> with the size
+       The  integer  variables  <STRONG>LINES</STRONG>  and  <STRONG>COLS</STRONG>  are  defined in
+       <STRONG>&lt;curses.h&gt;</STRONG> and will be filled in by <STRONG>initscr</STRONG> with the  size
        of the screen.  The constants <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG> have the val-
        ues <STRONG>1</STRONG> and <STRONG>0</STRONG>, respectively.
 
-       The  <STRONG>curses</STRONG>  routines  also  define  the <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> variable
+       The <STRONG>curses</STRONG> routines also  define  the  <STRONG>WINDOW</STRONG>  <STRONG>*</STRONG>  variable
        <STRONG>curscr</STRONG> which is used for certain low-level operations like
-       clearing  and  redrawing a screen containing garbage.  The
+       clearing and redrawing a screen containing  garbage.   The
        <STRONG>curscr</STRONG> can be used in only a few routines.
 
-   <STRONG>Routine</STRONG> <STRONG>and</STRONG> <STRONG>Argument</STRONG> <STRONG>Names</STRONG>
-       Many <STRONG>curses</STRONG> routines have two or more versions.  The  rou-
+
+</PRE>
+<H3><a name="h3-Routine-and-Argument-Names">Routine and Argument Names</a></H3><PRE>
+       Many  <STRONG>curses</STRONG> routines have two or more versions.  The rou-
        tines prefixed with <STRONG>w</STRONG> require a window argument.  The rou-
        tines prefixed with <STRONG>p</STRONG> require a pad argument.  Those with-
        out a prefix generally use <STRONG>stdscr</STRONG>.
 
        The routines prefixed with <STRONG>mv</STRONG> require a <EM>y</EM> and <EM>x</EM> coordinate
-       to move to before performing the appropriate action.   The
-       <STRONG>mv</STRONG>  routines  imply  a call to <STRONG>move</STRONG> before the call to the
-       other routine.  The coordinate <EM>y</EM> always refers to the  row
-       (of  the  window), and <EM>x</EM> always refers to the column.  The
+       to  move to before performing the appropriate action.  The
+       <STRONG>mv</STRONG> routines imply a call to <STRONG>move</STRONG> before the  call  to  the
+       other  routine.  The coordinate <EM>y</EM> always refers to the row
+       (of the window), and <EM>x</EM> always refers to the  column.   The
        upper left-hand corner is always (0,0), not (1,1).
 
        The routines prefixed with <STRONG>mvw</STRONG> take both a window argument
-       and  <EM>x</EM>  and  <EM>y</EM> coordinates.  The window argument is always
+       and <EM>x</EM> and <EM>y</EM> coordinates.  The window  argument  is  always
        specified before the coordinates.
 
-       In each case, <EM>win</EM> is the window affected, and <EM>pad</EM>  is  the
+       In  each  case, <EM>win</EM> is the window affected, and <EM>pad</EM> is the
        pad affected; <EM>win</EM> and <EM>pad</EM> are always pointers to type <STRONG>WIN-</STRONG>
        <STRONG>DOW</STRONG>.
 
        Option setting routines require a Boolean flag <EM>bf</EM> with the
-       value  <STRONG>TRUE</STRONG>  or <STRONG>FALSE</STRONG>; <EM>bf</EM> is always of type <STRONG>bool</STRONG>.  Most of
-       the data types used in the library routines, such as  <STRONG>WIN-</STRONG>
-       <STRONG>DOW</STRONG>,  <STRONG>SCREEN</STRONG>,  <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are defined in <STRONG>&lt;curses.h&gt;</STRONG>.
-       Types used for the terminfo routines such as <STRONG>TERMINAL</STRONG>  are
+       value <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>; <EM>bf</EM> is always of type <STRONG>bool</STRONG>.   Most  of
+       the  data types used in the library routines, such as <STRONG>WIN-</STRONG>
+       <STRONG>DOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are defined  in  <STRONG>&lt;curses.h&gt;</STRONG>.
+       Types  used for the terminfo routines such as <STRONG>TERMINAL</STRONG> are
        defined in <STRONG>&lt;term.h&gt;</STRONG>.
 
-       This  manual  page describes functions which may appear in
-       any configuration of the library.  There  are  two  common
+       This manual page describes functions which may  appear  in
+       any  configuration  of  the library.  There are two common
        configurations of the library:
 
-              ncurses
-                   the  "normal"  library,  which  handles  8-bit
-                   characters.  The normal (8-bit) library stores
-                   characters  combined with attributes in <STRONG>chtype</STRONG>
-                   data.
+          <EM>ncurses</EM>
+               the "normal" library, which handles 8-bit  charac-
+               ters.   The  normal (8-bit) library stores charac-
+               ters combined with attributes in <STRONG>chtype</STRONG> data.
 
-                   Attributes alone (no corresponding  character)
-                   may  be  stored  in  <STRONG>chtype</STRONG>  or the equivalent
-                   <STRONG>attr_t</STRONG> data.  In  either  case,  the  data  is
-                   stored in something like an integer.
+               Attributes alone (no corresponding character)  may
+               be stored in <STRONG>chtype</STRONG> or the equivalent <STRONG>attr_t</STRONG> data.
+               In either case, the data is  stored  in  something
+               like an integer.
 
-                   Each  cell  (row  and  column)  in a <STRONG>WINDOW</STRONG> is
-                   stored as a <STRONG>chtype</STRONG>.
+               Each  cell  (row and column) in a <STRONG>WINDOW</STRONG> is stored
+               as a <STRONG>chtype</STRONG>.
 
-              ncursesw
-                   the so-called "wide"  library,  which  handles
-                   multibyte   characters  (See  the  section  on
-                   <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>).  The "wide" library
-                   includes  all  of  the calls from the "normal"
-                   library.  It adds about one third  more  calls
-                   using data types which store multibyte charac-
-                   ters:
+          <EM>ncursesw</EM>
+               the so-called "wide" library, which handles multi-
+               byte characters (see the section on <STRONG>ALTERNATE</STRONG> <STRONG>CON-</STRONG>
+               <STRONG>FIGURATIONS</STRONG>).  The "wide" library includes all  of
+               the  calls  from  the  "normal"  library.  It adds
+               about one third more calls using data types  which
+               store multibyte characters:
 
-                   <STRONG>cchar_t</STRONG>
-                        corresponds to <STRONG>chtype</STRONG>.  However it  is  a
-                        structure,  because  more  data is stored
-                        than can fit into an integer.  The  char-
-                        acters are large enough to require a full
-                        integer value - and  there  may  be  more
-                        than  one  character per cell.  The video
-                        attributes and color are stored in  sepa-
-                        rate fields of the structure.
+               <STRONG>cchar_t</STRONG>
+                    corresponds  to  <STRONG>chtype</STRONG>.   However  it  is  a
+                    structure, because more data is  stored  than
+                    can  fit into an integer.  The characters are
+                    large enough to require a full integer  value
+                    -  and  there  may be more than one character
+                    per cell.  The video attributes and color are
+                    stored in separate fields of the structure.
 
-                        Each cell (row and column) in a <STRONG>WINDOW</STRONG> is
-                        stored as a <STRONG>cchar_t</STRONG>.
+                    Each  cell  (row  and  column) in a <STRONG>WINDOW</STRONG> is
+                    stored as a <STRONG>cchar_t</STRONG>.
 
-                   <STRONG>wchar_t</STRONG>
-                        stores a "wide" character.  Like  <STRONG>chtype</STRONG>,
-                        this may be an integer.
+               <STRONG>wchar_t</STRONG>
+                    stores a "wide" character.  Like <STRONG>chtype</STRONG>, this
+                    may be an integer.
 
-                   <STRONG>wint_t</STRONG>
-                        stores  a <STRONG>wchar_t</STRONG> or <STRONG>WEOF</STRONG> - not the same,
-                        though both may have the same size.
+               <STRONG>wint_t</STRONG>
+                    stores  a  <STRONG>wchar_t</STRONG>  or  <STRONG>WEOF</STRONG>  - not the same,
+                    though both may have the same size.
 
-                   The  "wide"  library  provides  new  functions
-                   which  are analogous to functions in the "nor-
-                   mal" library.  There is  a  naming  convention
-                   which  relates  many  of the normal/wide vari-
-                   ants: a "_w" is inserted into the  name.   For
-                   example, <STRONG>waddch</STRONG> becomes <STRONG>wadd_wch</STRONG>.
+               The "wide" library provides  new  functions  which
+               are   analogous   to  functions  in  the  "normal"
+               library.   There  is  a  naming  convention  which
+               relates  many  of the normal/wide variants: a "_w"
+               is inserted into the name.   For  example,  <STRONG>waddch</STRONG>
+               becomes <STRONG>wadd_wch</STRONG>.
 
 
-   <STRONG>Routine</STRONG> <STRONG>Name</STRONG> <STRONG>Index</STRONG>
+</PRE>
+<H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE>
        The following table lists each <STRONG>curses</STRONG> routine and the name
        of the manual page on which  it  is  described.   Routines
        flagged  with  `*'  are ncurses-specific, not described by
        XPG4 or present in SVr4.
 
-
               <STRONG>curses</STRONG> Routine Name     Manual Page Name
               --------------------------------------------
               COLOR_PAIR              <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>
               PAIR_NUMBER             <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>
+              _nc_free_and_exit       <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
+              _nc_freeall             <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>*
               _nc_tracebits           <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
-
               _traceattr              <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
               _traceattr2             <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
               _tracechar              <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
+
               _tracechtype            <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
               _tracechtype2           <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
               _tracedump              <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
@@ -376,11 +386,11 @@
               echochar                <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>
               endwin                  <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
               erase                   <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>
-
               erasechar               <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
               erasewchar              <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>
               filter                  <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
               flash                   <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG>
+
               flushinp                <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
               get_wch                 <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
               get_wstr                <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
@@ -442,14 +452,16 @@
               is_cleared              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_idcok                <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_idlok                <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
-
               is_immedok              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_keypad               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_leaveok              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_linetouched          <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
               is_nodelay              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+
               is_notimeout            <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+              is_pad                  <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_scrollok             <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+              is_subwin               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_syncok               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               is_term_resized         <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
               is_wintouched           <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
@@ -508,11 +520,11 @@
               mvinsstr                <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>
               mvinstr                 <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>
               mvinwstr                <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG>
-
               mvprintw                <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
               mvscanw                 <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>
               mvvline                 <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
               mvvline_set             <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
+
               mvwadd_wch              <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>
               mvwadd_wchnstr          <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
               mvwadd_wchstr           <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>
@@ -574,16 +586,17 @@
               pnoutrefresh            <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
               prefresh                <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>
               printw                  <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>
-
               putp                    <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               putwin                  <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
               qiflush                 <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
               raw                     <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
               redrawwin               <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
+
               refresh                 <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>
               reset_prog_mode         <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
               reset_shell_mode        <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
               resetty                 <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
+              resize_term             <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
               resizeterm              <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>*
               restartterm             <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               ripoffline              <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>
@@ -636,15 +649,16 @@
               tigetflag               <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               tigetnum                <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               tigetstr                <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
+              tiparm                  <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>*
               timeout                 <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
               touchline               <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
               touchwin                <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>
               tparm                   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
-
               tputs                   <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>
               tputs                   <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               trace                   <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>*
               typeahead               <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>
+
               unctrl                  <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
               unget_wch               <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>
               ungetch                 <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
@@ -654,6 +668,7 @@
               use_env                 <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
               use_extended_names      <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>*
               use_legacy_coding       <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>*
+              use_tioctl              <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>
               vid_attr                <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               vid_puts                <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
               vidattr                 <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>
@@ -703,11 +718,14 @@
               wget_wstr               <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
               wgetbkgrnd              <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG>
               wgetch                  <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>
+              wgetdelay               <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               wgetn_wstr              <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG>
               wgetnstr                <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
+              wgetparent              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
+              wgetscrreg              <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>*
               wgetstr                 <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>
-
               whline                  <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>
+
               whline_set              <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG>
               win_wch                 <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>
               win_wchnstr             <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>
@@ -749,15 +767,18 @@
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return an integer return  <STRONG>ERR</STRONG>  upon  failure
        and  an  integer value other than <STRONG>ERR</STRONG> upon successful com-
        pletion, unless otherwise noted in  the  routine  descrip-
        tions.
 
-       All  macros  return  the  value  of  the <STRONG>w</STRONG> version, except
+       As a general rule, routines check for null pointers passed
+       as parameters, and handle this as an error.
+
+       All macros return the  value  of  the  <STRONG>w</STRONG>  version,  except
        <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>, and <STRONG>getmaxyx</STRONG>.  The
-       return  values  of <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>,
+       return values of <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>,  <STRONG>getyx</STRONG>,  <STRONG>getbegyx</STRONG>,
        and <STRONG>getmaxyx</STRONG> are undefined (i.e., these should not be used
        as the right-hand side of assignment statements).
 
@@ -765,274 +786,395 @@
 
 
 </PRE>
-<H2>ENVIRONMENT</H2><PRE>
+<H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
        The following environment symbols are useful for customiz-
        ing the runtime behavior of the <STRONG>ncurses</STRONG> library.  The most
        important ones have been already discussed in detail.
 
-       BAUDRATE
-            The  debugging library checks this environment symbol
-            when the application has redirected output to a file.
-            The  symbol's numeric value is used for the baudrate.
-            If no value is found, <STRONG>ncurses</STRONG> uses 9600.  This allows
-            testers  to construct repeatable test-cases that take
-            into account costs that depend on baudrate.
+   <STRONG>CC</STRONG>
+       When set,  change  occurrences  of  the  command_character
+       (i.e.,  the  <STRONG>cmdch</STRONG>  capability)  of  the  loaded  terminfo
+       entries to the value of this variable.  Very few  terminfo
+       entries provide this feature.
 
-       CC   When set, change occurrences of the command_character
-            (i.e.,  the  <STRONG>cmdch</STRONG> capability) of the loaded terminfo
-            entries to the value of this symbol.  Very  few  ter-
-            minfo entries provide this feature.
+       Because this name is also used in development environments
+       to represent the C compiler's name, <STRONG>ncurses</STRONG> ignores it  if
+       it does not happen to be a single character.
 
-       COLUMNS
-            Specify  the  width  of  the  screen  in  characters.
-            Applications running in a windowing environment  usu-
-            ally  are  able  to obtain the width of the window in
-            which they are executing.   If  neither  the  <STRONG>COLUMNS</STRONG>
-            value  nor  the  terminal's screen size is available,
-            <STRONG>ncurses</STRONG> uses the size which may be specified  in  the
-            terminfo database (i.e., the <STRONG>cols</STRONG> capability).
 
-            It  is  important that your application use a correct
-            size for the screen.  This  is  not  always  possible
-            because  your  application  may  be running on a host
-            which does not honor NAWS (Negotiations About  Window
-            Size),  or  because  you  are  temporarily running as
-            another user.  However, setting <STRONG>COLUMNS</STRONG> and/or  <STRONG>LINES</STRONG>
-            overrides  the  library's  use  of  the  screen  size
-            obtained from the operating system.
+</PRE>
+<H3><a name="h3-BAUDRATE">BAUDRATE</a></H3><PRE>
+       The  debugging  library  checks  this environment variable
+       when the application has redirected output to a file.  The
+       variable's  numeric value is used for the baudrate.  If no
+       value is found, <STRONG>ncurses</STRONG> uses 9600.  This allows testers to
+       construct  repeatable  test-cases  that  take into account
+       costs that depend on baudrate.
 
-            Either <STRONG>COLUMNS</STRONG> or  <STRONG>LINES</STRONG>  symbols  may  be  specified
-            independently.   This  is mainly useful to circumvent
-            legacy misfeatures of  terminal  descriptions,  e.g.,
-            xterm which commonly specifies a 65 line screen.  For
-            best results, <STRONG>lines</STRONG> and <STRONG>cols</STRONG> should not be  specified
-            in a terminal description for terminals which are run
-            as emulations.
 
-            Use the <STRONG>use_env</STRONG> function to disable all use of exter-
-            nal environment (including system calls) to determine
-            the screen size.
+</PRE>
+<H3><a name="h3-COLUMNS">COLUMNS</a></H3><PRE>
+       Specify the width of the screen in  characters.   Applica-
+       tions  running in a windowing environment usually are able
+       to obtain the width of the window in which they  are  exe-
+       cuting.   If  neither the <STRONG>COLUMNS</STRONG> value nor the terminal's
+       screen size is available, <STRONG>ncurses</STRONG> uses the size which  may
+       be  specified  in  the  terminfo  database (i.e., the <STRONG>cols</STRONG>
+       capability).
 
-       ESCDELAY
-            Specifies the total time, in milliseconds, for  which
-            ncurses  will  await  a  character  sequence, e.g., a
-            function key.  The default value, 1000  milliseconds,
-            is enough for most uses.  However, it is made a vari-
-            able to accommodate unusual applications.
+       It is important that your application use a  correct  size
+       for  the screen.  This is not always possible because your
+       application may be running on a host which does not  honor
+       NAWS  (Negotiations About Window Size), or because you are
+       temporarily running as  another  user.   However,  setting
+       <STRONG>COLUMNS</STRONG>  and/or  <STRONG>LINES</STRONG>  overrides the library's use of the
+       screen size obtained from the operating system.
 
-            The most common instance where you may wish to change
-            this  value is to work with slow hosts, e.g., running
-            on a network.  If the  host  cannot  read  characters
-            rapidly  enough,  it  will have the same effect as if
-            the terminal did not send characters rapidly  enough.
-            The library will still see a timeout.
+       Either <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> symbols may be specified  indepen-
+       dently.   This  is mainly useful to circumvent legacy mis-
+       features of terminal descriptions, e.g., xterm which  com-
+       monly specifies a 65 line screen.  For best results, <STRONG>lines</STRONG>
+       and <STRONG>cols</STRONG> should not be specified in a terminal description
+       for terminals which are run as emulations.
 
-            Note  that xterm mouse events are built up from char-
-            acter sequences received from  the  xterm.   If  your
-            application makes heavy use of multiple-clicking, you
-            may wish to lengthen this default value  because  the
-            timeout  applies to the composed multi-click event as
-            well as the individual clicks.
+       Use  the  <STRONG>use_env</STRONG>  function to disable all use of external
+       environment (but not including system calls) to  determine
+       the  screen  size.   Use the <STRONG>use_tioctl</STRONG> function to update
+       <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> to match the screen  size  obtained  from
+       system calls or the terminal database.
 
-            In addition to the environment variable, this  imple-
-            mentation  provides  a  global variable with the same
-            name.  Portable applications should not rely upon the
-            presence  of ESCDELAY in either form, but setting the
-            environment variable rather than the global  variable
-            does  not  create problems when compiling an applica-
-            tion.
 
-       HOME Tells <STRONG>ncurses</STRONG> where your home directory is.  That  is
-            where  it  may  read  and  write  auxiliary  terminal
-            descriptions:
+</PRE>
+<H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE>
+       Specifies  the  total  time,  in  milliseconds,  for which
+       ncurses will await a character sequence, e.g., a  function
+       key.   The default value, 1000 milliseconds, is enough for
+       most uses.  However, it is made a variable to  accommodate
+       unusual applications.
 
-            $HOME/.termcap
-            $HOME/.terminfo
+       The most common instance where you may wish to change this
+       value is to work with slow hosts, e.g., running on a  net-
+       work.   If the host cannot read characters rapidly enough,
+       it will have the same effect as if the  terminal  did  not
+       send  characters  rapidly  enough.  The library will still
+       see a timeout.
 
-       LINES
-            Like COLUMNS, specify the height  of  the  screen  in
-            characters.   See COLUMNS for a detailed description.
+       Note that xterm mouse events are built up  from  character
+       sequences  received  from  the xterm.  If your application
+       makes heavy use of  multiple-clicking,  you  may  wish  to
+       lengthen this default value because the timeout applies to
+       the composed multi-click event as well as  the  individual
+       clicks.
 
-       MOUSE_BUTTONS_123
-            This applies only to the OS/2 EMX port.  It specifies
-            the  order  of  buttons on the mouse.  OS/2 numbers a
-            3-button mouse inconsistently from other platforms:
+       In  addition to the environment variable, this implementa-
+       tion provides a global variable with the same name.   Por-
+       table  applications  should  not rely upon the presence of
+       ESCDELAY in either form, but setting the environment vari-
+       able rather than the global variable does not create prob-
+       lems when compiling an application.
 
-            1 = left
-            2 = right
-            3 = middle.
 
-            This symbol lets you customize the mouse.  The symbol
-            must  be three numeric digits 1-3 in any order, e.g.,
-            123 or 321.  If it is  not  specified,  <STRONG>ncurses</STRONG>  uses
-            132.
+</PRE>
+<H3><a name="h3-HOME">HOME</a></H3><PRE>
+       Tells <STRONG>ncurses</STRONG> where your home directory is.  That is where
+       it may read and write auxiliary terminal descriptions:
 
-       NCURSES_ASSUMED_COLORS
-            Override  the  compiled-in assumption that the termi-
-            nal's  default   colors   are   white-on-black   (see
-            <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>).   You may set the foreground and
-            background color values with this  environment  vari-
-            able  by  proving  a 2-element list: foreground,back-
-            ground.  For example, to tell ncurses to  not  assume
-            anything  about  the colors, set this to "-1,-1".  To
-            make it green-on-black, set it to "2,0".   Any  posi-
-            tive value from zero to the terminfo <STRONG>max_colors</STRONG> value
-            is allowed.
+       $HOME/.termcap
+       $HOME/.terminfo
 
-       NCURSES_GPM_TERMS
-            This applies only to ncurses configured  to  use  the
-            GPM interface.
 
-            If present, the environment variable is a list of one
-            or more terminal names against which the  TERM  envi-
-            ronment  variable is matched.  Setting it to an empty
-            value disables the GPM interface; using the  built-in
-            support for xterm, etc.
+</PRE>
+<H3><a name="h3-LINES">LINES</a></H3><PRE>
+       Like  COLUMNS, specify the height of the screen in charac-
+       ters.  See COLUMNS for a detailed description.
 
-            If  the  environment variable is absent, ncurses will
-            attempt to open GPM if TERM contains "linux".
 
-       NCURSES_NO_HARD_TABS
-            <STRONG>Ncurses</STRONG> may use tabs as part of the  cursor  movement
-            optimization.   In  some  cases, your terminal driver
-            may not handle these properly.  Set this  environment
-            variable to disable the feature.  You can also adjust
-            your <STRONG>stty</STRONG> settings to avoid the problem.
+</PRE>
+<H3><a name="h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></H3><PRE>
+       This applies only to the OS/2 EMX port.  It specifies  the
+       order  of  buttons  on the mouse.  OS/2 numbers a 3-button
+       mouse inconsistently from other platforms:
 
-       NCURSES_NO_MAGIC_COOKIES
-            Some  terminals  use  a  magic-cookie  feature  which
-            requires  special  handling  to make highlighting and
-            other video attributes  display  properly.   You  can
-            suppress  the  highlighting entirely for these termi-
-            nals by setting this environment variable.
+       1 = left
+       2 = right
+       3 = middle.
 
-       NCURSES_NO_PADDING
-            Most of the terminal  descriptions  in  the  terminfo
-            database  are  written for real "hardware" terminals.
-            Many people use terminal emulators  which  run  in  a
-            windowing    environment    and    use   curses-based
-            applications.  Terminal emulators can  duplicate  all
-            of  the important aspects of a hardware terminal, but
-            they do not have the  same  limitations.   The  chief
-            limitation of a hardware terminal from the standpoint
-            of your application is the  management  of  dataflow,
-            i.e.,  timing.   Unless a hardware terminal is inter-
-            faced into a terminal concentrator (which  does  flow
-            control),   it  (or  your  application)  must  manage
-            dataflow, preventing overruns.  The cheapest solution
-            (no  hardware cost) is for your program to do this by
-            pausing  after  operations  that  the  terminal  does
-            slowly, such as clearing the display.
+       This variable lets you customize the mouse.  The  variable
+       must  be  three numeric digits 1-3 in any order, e.g., 123
+       or 321.  If it is not specified, <STRONG>ncurses</STRONG> uses 132.
 
-            As  a  result,  many terminal descriptions (including
-            the vt100) have delay times embedded.  You  may  wish
-            to  use  these  descriptions, but not want to pay the
-            performance penalty.
 
-            Set the NCURSES_NO_PADDING symbol to disable all  but
-            mandatory  padding.   Mandatory  padding is used as a
-            part of special control sequences such as <EM>flash</EM>.
+</PRE>
+<H3><a name="h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></H3><PRE>
+       Override the compiled-in assumption  that  the  terminal's
+       default   colors   are  white-on-black  (see  <STRONG>default_col-</STRONG>
+       <STRONG><A HREF="default_colors.3x.html">ors(3x)</A></STRONG>).  You may set the foreground and background color
+       values  with this environment variable by proving a 2-ele-
+       ment list: foreground,background.  For  example,  to  tell
+       ncurses  to not assume anything about the colors, set this
+       to "-1,-1".  To make it green-on-black, set it  to  "2,0".
+       Any  positive  value  from zero to the terminfo <STRONG>max_colors</STRONG>
+       value is allowed.
 
-       NCURSES_NO_SETBUF
-            Normally <STRONG>ncurses</STRONG> enables buffered output during  ter-
-            minal  initialization.   This  is  done  (as  in SVr4
-            curses) for performance reasons.   For  testing  pur-
-            poses, both of <STRONG>ncurses</STRONG> and certain applications, this
-            feature    is    made    optional.     Setting    the
-            NCURSES_NO_SETBUF variable disables output buffering,
-            leaving the output  in  the  original  (usually  line
-            buffered) mode.
 
-       NCURSES_NO_UTF8_ACS
-            During initialization, the <STRONG>ncurses</STRONG> library checks for
-            special cases where VT100 line-drawing (and the  cor-
-            responding   alternate  character  set  capabilities)
-            described in the terminfo are known  to  be  missing.
-            Specifically,  when  running  in  a UTF-8 locale, the
-            Linux console emulator and  the  GNU  screen  program
-            ignore  these.   Ncurses  checks the TERM environment
-            variable for these.  For  other  special  cases,  you
-            should  set  this  environment  variable.  Doing this
-            tells ncurses to use Unicode values which  correspond
-            to the VT100 line-drawing glyphs.  That works for the
-            special cases cited, and is likely to work for termi-
-            nal emulators.
+</PRE>
+<H3><a name="h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></H3><PRE>
+       This applies only to the MinGW port of ncurses.
 
-            When  setting  this  variable, you should set it to a
-            nonzero value.  Setting it to zero (or to  a  nonnum-
-            ber) disables the special check for Linux and screen.
+       The <STRONG>Console2</STRONG> program's handling of the  Microsoft  Console
+       API call <STRONG>CreateConsoleScreenBuffer</STRONG> is defective.  Applica-
+       tions which use this will hang.  However, it  is  possible
+       to  simulate  the  action  of this call by mapping coordi-
+       nates, explicitly saving and restoring the original screen
+       contents.   Setting the environment variable <STRONG>NCGDB</STRONG> has the
+       same effect.
 
-       NCURSES_TRACE
-            During initialization, the <STRONG>ncurses</STRONG> debugging  library
-            checks  the  NCURSES_TRACE symbol.  If it is defined,
-            to a numeric value, <STRONG>ncurses</STRONG> calls the <STRONG>trace</STRONG> function,
-            using that value as the argument.
 
-            The  argument  values, which are defined in <STRONG>curses.h</STRONG>,
-            provide several types of information.   When  running
-            with  traces enabled, your application will write the
-            file <STRONG>trace</STRONG> to the current directory.
+</PRE>
+<H3><a name="h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></H3><PRE>
+       This applies only to ncurses configured  to  use  the  GPM
+       interface.
 
-       TERM Denotes your terminal type.  Each  terminal  type  is
-            distinct, though many are similar.
+       If  present,  the environment variable is a list of one or
+       more terminal names against  which  the  TERM  environment
+       variable  is  matched.   Setting it to an empty value dis-
+       ables the GPM interface; using the  built-in  support  for
+       xterm, etc.
 
-       TERMCAP
-            If the <STRONG>ncurses</STRONG> library has been configured with <EM>term-</EM>
-            <EM>cap</EM> support, <STRONG>ncurses</STRONG>  will  check  for  a  terminal's
-            description in termcap form if it is not available in
-            the terminfo database.
+       If  the  environment  variable  is  absent,  ncurses  will
+       attempt to open GPM if TERM contains "linux".
 
-            The  TERMCAP  symbol  contains  either   a   terminal
-            description  (with  newlines stripped out), or a file
-            name telling where the  information  denoted  by  the
-            TERM  symbol  exists.   In  either  case,  setting it
-            directs <STRONG>ncurses</STRONG> to ignore the usual  place  for  this
-            information, e.g., /etc/termcap.
 
-       TERMINFO
-            Overrides the directory in which <STRONG>ncurses</STRONG> searches for
-            your terminal description.  This is the simplest, but
-            not  the  only way to change the list of directories.
-            The complete list of directories in order follows:
+</PRE>
+<H3><a name="h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></H3><PRE>
+       <STRONG>Ncurses</STRONG> may use tabs as part of the cursor movement  opti-
+       mization.   In  some  cases,  your terminal driver may not
+       handle these properly.  Set this environment  variable  to
+       disable  the  feature.  You can also adjust your <STRONG>stty</STRONG> set-
+       tings to avoid the problem.  NCURSES_NO_MAGIC_COOKIE  Some
+       terminals  use  a magic-cookie feature which requires spe-
+       cial  handling  to  make  highlighting  and  other   video
+       attributes  display  properly.  You can suppress the high-
+       lighting entirely for  these  terminals  by  setting  this
+       environment variable.
 
-            -  the last directory to which <STRONG>ncurses</STRONG> wrote, if any,
-               is searched first
 
-            -  the directory specified by the TERMINFO symbol
+</PRE>
+<H3><a name="h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></H3><PRE>
+       Most of the terminal descriptions in the terminfo database
+       are written for real "hardware"  terminals.   Many  people
+       use  terminal  emulators which run in a windowing environ-
+       ment and use curses-based applications.   Terminal  emula-
+       tors can duplicate all of the important aspects of a hard-
+       ware terminal, but they do not have the same  limitations.
+       The  chief  limitation  of  a  hardware  terminal from the
+       standpoint  of  your  application  is  the  management  of
+       dataflow,  i.e.,  timing.   Unless  a hardware terminal is
+       interfaced into a terminal concentrator (which  does  flow
+       control),  it  (or your application) must manage dataflow,
+       preventing overruns.  The cheapest solution  (no  hardware
+       cost)  is  for  your  program  to do this by pausing after
+       operations that the terminal does slowly, such as clearing
+       the display.
 
-            -  $HOME/.terminfo
+       As  a  result,  many  terminal descriptions (including the
+       vt100) have delay times embedded.  You  may  wish  to  use
+       these  descriptions,  but  not want to pay the performance
+       penalty.
 
-            -  directories listed in the TERMINFO_DIRS symbol
+       Set the NCURSES_NO_PADDING environment variable to disable
+       all but mandatory padding.  Mandatory padding is used as a
+       part of special control sequences such as <EM>flash</EM>.
 
-            -  one or more directories whose names are configured
-               and  compiled  into  the  ncurses  library,  e.g.,
-               /usr/share/terminfo
 
-       TERMINFO_DIRS
-            Specifies  a list of directories to search for termi-
-            nal descriptions.  The list is  separated  by  colons
-            (i.e.,  ":") on Unix, semicolons on OS/2 EMX.  All of
-            the terminal descriptions are in terminfo form, which
-            makes  a  subdirectory  named for the first letter of
-            the terminal names therein.
+</PRE>
+<H3><a name="h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></H3><PRE>
+       This setting is obsolete.  Before changes
 
-       TERMPATH
-            If TERMCAP does not hold a  file  name  then  <STRONG>ncurses</STRONG>
-            checks  the TERMPATH symbol.  This is a list of file-
-            names separated by spaces or colons  (i.e.,  ":")  on
-            Unix, semicolons on OS/2 EMX.  If the TERMPATH symbol
-            is not set, <STRONG>ncurses</STRONG> looks in the files  /etc/termcap,
-            /usr/share/misc/termcap  and  $HOME/.termcap, in that
-            order.
+          <STRONG>o</STRONG>   started with 5.9 patch 20120825 and
 
-       The library may be configured to disregard  the  following
-       variables  when  the current user is the superuser (root),
-       or if the application uses setuid or  setgid  permissions:
+          <STRONG>o</STRONG>   continued though 5.9 patch 20130126
+
+       <STRONG>ncurses</STRONG> enabled buffered output during  terminal  initial-
+       ization.   This  was  done (as in SVr4 curses) for perfor-
+       mance reasons.  For testing purposes, both of <STRONG>ncurses</STRONG>  and
+       certain  applications,  this  feature  was  made optional.
+       Setting the  NCURSES_NO_SETBUF  variable  disabled  output
+       buffering,  leaving  the  output  in the original (usually
+       line buffered) mode.
+
+       In the current implementation, ncurses  performs  its  own
+       buffering  and  does not require this workaround.  It does
+       not modify the buffering of the standard output.
+
+       The reason for the change was to  make  the  behavior  for
+       interrupts and other signals more robust.  One drawback is
+       that certain nonconventional programs would  mix  ordinary
+       stdio  calls  with ncurses calls and (usually) work.  This
+       is no longer possible  since  ncurses  is  not  using  the
+       buffered  standard  output but its own output (to the same
+       file descriptor).  As a special case, the low-level  calls
+       such  as  <STRONG>putp</STRONG>  still  use the standard output.  But high-
+       level curses calls do not.
+
+
+</PRE>
+<H3><a name="h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></H3><PRE>
+       During initialization, the <STRONG>ncurses</STRONG> library checks for spe-
+       cial cases where VT100 line-drawing (and the corresponding
+       alternate character set  capabilities)  described  in  the
+       terminfo are known to be missing.  Specifically, when run-
+       ning in a UTF-8 locale, the Linux console emulator and the
+       GNU  screen program ignore these.  Ncurses checks the TERM
+       environment variable for these.  For other special  cases,
+       you  should  set  this  environment  variable.  Doing this
+       tells ncurses to use Unicode values  which  correspond  to
+       the VT100 line-drawing glyphs.  That works for the special
+       cases cited, and is likely to work for terminal emulators.
+
+       When setting this variable, you should set it to a nonzero
+       value.   Setting  it  to zero (or to a nonnumber) disables
+       the special check for "linux" and "screen".
+
+       As an alternative to  the  environment  variable,  ncurses
+       checks  for an extended terminfo capability <STRONG>U8</STRONG>.  This is a
+       numeric capability which can  be  compiled  using  <STRONG>tic</STRONG> <STRONG>-x</STRONG>.
+       For example
+
+          # linux console, if patched to provide working
+          # VT100 shift-in/shift-out, with corresponding font.
+          linux-vt100|linux console with VT100 line-graphics,
+                  U8#0, use=linux,
+
+          # uxterm with vt100Graphics resource set to false
+          xterm-utf8|xterm relying on UTF-8 line-graphics,
+                  U8#1, use=xterm,
+
+       The name "U8" is chosen to be two characters, to permit it
+       to be used  by  applications  that  use  ncurses'  termcap
+       interface.
+
+
+</PRE>
+<H3><a name="h3-NCURSES_TRACE">NCURSES_TRACE</a></H3><PRE>
+       During   initialization,  the  <STRONG>ncurses</STRONG>  debugging  library
+       checks the NCURSES_TRACE environment variable.  If  it  is
+       defined, to a numeric value, <STRONG>ncurses</STRONG> calls the <STRONG>trace</STRONG> func-
+       tion, using that value as the argument.
+
+       The argument values, which are defined in  <STRONG>curses.h</STRONG>,  pro-
+       vide  several  types  of  information.   When running with
+       traces enabled, your application will write the file <STRONG>trace</STRONG>
+       to the current directory.
+
+       See <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> for more information.
+
+
+</PRE>
+<H3><a name="h3-TERM">TERM</a></H3><PRE>
+       Denotes  your  terminal  type.  Each terminal type is dis-
+       tinct, though many are similar.
+
+       <STRONG>TERM</STRONG> is commonly set by terminal emulators to help  appli-
+       cations  find  a  workable  terminal description.  Some of
+       those  choose  a  popular  approximation,  e.g.,   "ansi",
+       "vt100",  "xterm"  rather  than  an exact fit.  Not infre-
+       quently, your application will  have  problems  with  that
+       approach, e.g., incorrect function-key definitions.
+
+       If  you  set <STRONG>TERM</STRONG> in your environment, it has no effect on
+       the operation of the terminal emulator.  It  only  affects
+       the  way applications work within the terminal.  Likewise,
+       as a general rule (<STRONG>xterm</STRONG> being a rare exception), terminal
+       emulators  which  allow you to specify <STRONG>TERM</STRONG> as a parameter
+       or configuration value do not  change  their  behavior  to
+       match that setting.
+
+
+</PRE>
+<H3><a name="h3-TERMCAP">TERMCAP</a></H3><PRE>
+       If  the  <STRONG>ncurses</STRONG>  library has been configured with <EM>termcap</EM>
+       support, <STRONG>ncurses</STRONG> will check for a  terminal's  description
+       in  termcap  form  if  it is not available in the terminfo
+       database.
+
+       The TERMCAP environment variable contains either a  termi-
+       nal  description  (with  newlines stripped out), or a file
+       name telling where the information  denoted  by  the  TERM
+       environment  variable  exists.  In either case, setting it
+       directs <STRONG>ncurses</STRONG> to ignore the usual place for this  infor-
+       mation, e.g., /etc/termcap.
+
+
+</PRE>
+<H3><a name="h3-TERMINFO">TERMINFO</a></H3><PRE>
+       Overrides the directory in which <STRONG>ncurses</STRONG> searches for your
+       terminal description.  This is the simplest, but  not  the
+       only  way to change the list of directories.  The complete
+       list of directories in order follows:
+
+          <STRONG>o</STRONG>   the last directory to which <STRONG>ncurses</STRONG> wrote, if  any,
+              is searched first
+
+          <STRONG>o</STRONG>   the directory specified by the TERMINFO environment
+              variable
+
+          <STRONG>o</STRONG>   $HOME/.terminfo
+
+          <STRONG>o</STRONG>   directories listed in the TERMINFO_DIRS environment
+              variable
+
+          <STRONG>o</STRONG>   one  or more directories whose names are configured
+              and compiled into the ncurses library, i.e.,
+
+             <STRONG>o</STRONG>   /usr/local/ncurses/share/ter-
+                 minfo:/usr/share/terminfo  (corresponding to the
+                 TERMINFO_DIRS variable)
+
+             <STRONG>o</STRONG>   /usr/share/terminfo (corresponding to  the  TER-
+                 MINFO variable)
+
+
+</PRE>
+<H3><a name="h3-TERMINFO_DIRS">TERMINFO_DIRS</a></H3><PRE>
+       Specifies  a  list  of  directories to search for terminal
+       descriptions.  The list is separated by colons (i.e., ":")
+       on Unix, semicolons on OS/2 EMX.
+
+       All  of  the  terminal  descriptions are in terminfo form.
+       Normally these are stored in a directory tree, using  sub-
+       directories  named  by  the  first  letter of the terminal
+       names therein.
+
+       If <STRONG>ncurses</STRONG> is built with  a  hashed  database,  then  each
+       entry in this list can also be the path of the correspond-
+       ing database file.
+
+       If <STRONG>ncurses</STRONG> is built with a  support  for  reading  termcap
+       files directly, then an entry in this list may be the path
+       of a termcap file.
+
+
+</PRE>
+<H3><a name="h3-TERMPATH">TERMPATH</a></H3><PRE>
+       If TERMCAP does not hold a file name then  <STRONG>ncurses</STRONG>  checks
+       the  TERMPATH  environment  variable.   This  is a list of
+       filenames separated by spaces or  colons  (i.e.,  ":")  on
+       Unix, semicolons on OS/2 EMX.
+
+       If  the  TERMPATH environment variable is not set, <STRONG>ncurses</STRONG>
+       looks in the files  /etc/termcap,  /usr/share/misc/termcap
+       and $HOME/.termcap, in that order.
+
+       The  library  may be configured to disregard the following
+       variables when the current user is the  superuser  (root),
+       or if the application uses setuid or setgid permissions:
+
        $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
 
 
 </PRE>
-<H2>ALTERNATE CONFIGURATIONS</H2><PRE>
+<H2><a name="h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></H2><PRE>
        Several  different  configurations are possible, depending
        on  the  configure  script  options  used  when   building
        <STRONG>ncurses</STRONG>.   There  are a few main options whose effects are
@@ -1042,7 +1184,7 @@
             The standard include for <STRONG>ncurses</STRONG> is as noted in  <STRONG>SYN-</STRONG>
             <STRONG>OPSIS</STRONG>:
 
-            <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+          <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
             This  option is used to avoid filename conflicts when
             <STRONG>ncurses</STRONG> is not the main implementation of  curses  of
@@ -1050,7 +1192,7 @@
             overwrite, it puts its  headers  in  a  subdirectory,
             e.g.,
 
-            <STRONG>#include</STRONG> <STRONG>&lt;ncurses/curses.h&gt;</STRONG>
+          <STRONG>#include</STRONG> <STRONG>&lt;ncurses/curses.h&gt;</STRONG>
 
             It  also  omits a symbolic link which would allow you
             to use <STRONG>-lcurses</STRONG> to build executables.
@@ -1062,11 +1204,11 @@
             library  names  have  a  "w"  appended to them, i.e.,
             instead of
 
-            <STRONG>-lncurses</STRONG>
+          <STRONG>-lncurses</STRONG>
 
             you link with
 
-            <STRONG>-lncursesw</STRONG>
+          <STRONG>-lncursesw</STRONG>
 
             You must also define <STRONG>_XOPEN_SOURCE_EXTENDED</STRONG> when com-
             piling  for  the  wide-character  library  to use the
@@ -1081,6 +1223,17 @@
             applications to be built using  either  library  from
             the same set of headers.
 
+       --with-pthread
+            The configure script renames the library.  All of the
+            library names have a "t" appended to them (before any
+            "w" added by <STRONG>--enable-widec</STRONG>).
+
+            The  global  variables  such as <STRONG>LINES</STRONG> are replaced by
+            macros to allow read-only access.  At the same  time,
+            setter-functions  are  provided  to set these values.
+            Some applications (very few) may require  changes  to
+            work with this convention.
+
        --with-shared
 
        --with-normal
@@ -1103,7 +1256,7 @@
 
 
 </PRE>
-<H2>FILES</H2><PRE>
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
        /usr/share/tabset
             directory  containing  initialization  files  for the
             terminal capability database /usr/share/terminfo ter-
@@ -1111,13 +1264,14 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>  and  related  pages whose names begin "curs_"
        for detailed routine descriptions.
+       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 </PRE>
-<H2>EXTENSIONS</H2><PRE>
+<H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
        The  <STRONG>ncurses</STRONG>  library  can  be  compiled  with  an  option
        (<STRONG>-DUSE_GETCAP</STRONG>) that falls back to the old-style /etc/term-
        cap file if the terminal setup code cannot find a terminfo
@@ -1157,7 +1311,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        The  <STRONG>ncurses</STRONG>  library is intended to be BASE-level confor-
        mant with XSI Curses.  The EXTENDED XSI Curses functional-
        ity (including color support) is supported.
@@ -1167,33 +1321,49 @@
        described  in  <STRONG>PORTABILITY</STRONG>  sections  of  the  library man
        pages.
 
+       Unlike other implementations, this one  checks  parameters
+       such  as  pointers to WINDOW structures to ensure they are
+       not null.  The main reason for providing this behavior  is
+       to guard against programmer error.  The standard interface
+       does not provide a way for the library to tell an applica-
+       tion  which  of  several  possible  errors  were detected.
+       Relying on this (or some other) extension  will  adversely
+       affect the portability of curses applications.
+
        This implementation also contains several extensions:
 
-            The routine <STRONG>has_key</STRONG> is not part of XPG4,  nor  is  it
-            present  in SVr4.  See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> manual page
-            for details.
+       <STRONG>o</STRONG>   The  routine  <STRONG>has_key</STRONG>  is  not part of XPG4, nor is it
+           present in SVr4.  See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>  manual  page
+           for details.
 
-            The routine <STRONG>slk_attr</STRONG> is not part of XPG4, nor  is  it
-            present  in  SVr4.   See the <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> manual page
-            for details.
+       <STRONG>o</STRONG>   The  routine  <STRONG>slk_attr</STRONG>  is not part of XPG4, nor is it
+           present in SVr4.  See the <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> manual page for
+           details.
 
-            The routines <STRONG>getmouse</STRONG>,  <STRONG>mousemask</STRONG>,  <STRONG>ungetmouse</STRONG>,  <STRONG>mou-</STRONG>
-            <STRONG>seinterval</STRONG>,  and <STRONG>wenclose</STRONG> relating to mouse interfac-
-            ing are not part of XPG4, nor  are  they  present  in
-            SVr4.    See   the  <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>  manual  page  for
-            details.
+       <STRONG>o</STRONG>   The routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousein-</STRONG>
+           <STRONG>terval</STRONG>, and <STRONG>wenclose</STRONG> relating to mouse interfacing are
+           not  part  of XPG4, nor are they present in SVr4.  See
+           the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> manual page for details.
 
-            The routine <STRONG>mcprint</STRONG> was not present in  any  previous
-            curses implementation.  See the <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual
-            page for details.
+       <STRONG>o</STRONG>   The routine <STRONG>mcprint</STRONG> was not present  in  any  previous
+           curses  implementation.  See the <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual
+           page for details.
 
-            The routine <STRONG>wresize</STRONG> is not part of XPG4,  nor  is  it
-            present in SVr4.  See the <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual page for
-            details.
+       <STRONG>o</STRONG>   The routine <STRONG>wresize</STRONG> is not part of  XPG4,  nor  is  it
+           present  in SVr4.  See the <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual page for
+           details.
 
-            The WINDOW structure's internal details can be hidden
-            from  application  programs.  See <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> for
-            the discussion of <STRONG>is_scrollok</STRONG>, etc.
+       <STRONG>o</STRONG>   The WINDOW structure's internal details can be  hidden
+           from  application  programs.   See <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> for
+           the discussion of <STRONG>is_scrollok</STRONG>, etc.
+
+       <STRONG>o</STRONG>   This implementation can be configured to provide rudi-
+           mentary  support for multi-threaded applications.  See
+           <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> for details.
+
+       <STRONG>o</STRONG>   This implementation can also be configured to  provide
+           a set of functions which improve the ability to manage
+           multiple screens.  See <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> for details.
 
        In historic curses versions, delays embedded in the  capa-
        bilities <STRONG>cr</STRONG>, <STRONG>ind</STRONG>, <STRONG>cub1</STRONG>, <STRONG>ff</STRONG> and <STRONG>tab</STRONG> activated corresponding
@@ -1205,7 +1375,7 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The header  file  <STRONG>&lt;curses.h&gt;</STRONG>  automatically  includes  the
        header files <STRONG>&lt;stdio.h&gt;</STRONG> and <STRONG>&lt;unctrl.h&gt;</STRONG>.
 
@@ -1216,7 +1386,7 @@
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Zeyd M. Ben-Halim, Eric  S.  Raymond,  Thomas  E.  Dickey.
        Based on pcurses by Pavel Curtis.
 
@@ -1224,10 +1394,51 @@
 
                                                             <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Initialization">Initialization</a></li>
+<li><a href="#h3-Datatypes">Datatypes</a></li>
+<li><a href="#h3-Environment-variables">Environment variables</a></li>
+<li><a href="#h3-Routine-and-Argument-Names">Routine and Argument Names</a></li>
+<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a>
+<ul>
+<li><a href="#h3-BAUDRATE">BAUDRATE</a></li>
+<li><a href="#h3-COLUMNS">COLUMNS</a></li>
+<li><a href="#h3-ESCDELAY">ESCDELAY</a></li>
+<li><a href="#h3-HOME">HOME</a></li>
+<li><a href="#h3-LINES">LINES</a></li>
+<li><a href="#h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></li>
+<li><a href="#h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></li>
+<li><a href="#h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></li>
+<li><a href="#h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></li>
+<li><a href="#h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></li>
+<li><a href="#h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></li>
+<li><a href="#h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></li>
+<li><a href="#h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></li>
+<li><a href="#h3-NCURSES_TRACE">NCURSES_TRACE</a></li>
+<li><a href="#h3-TERM">TERM</a></li>
+<li><a href="#h3-TERMCAP">TERMCAP</a></li>
+<li><a href="#h3-TERMINFO">TERMINFO</a></li>
+<li><a href="#h3-TERMINFO_DIRS">TERMINFO_DIRS</a></li>
+<li><a href="#h3-TERMPATH">TERMPATH</a></li>
+</ul>
+</li>
+<li><a href="#h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/ncurses5-config.1.html b/doc/html/man/ncurses5-config.1.html
new file mode 100644
index 0000000..19eb798
--- /dev/null
+++ b/doc/html/man/ncurses5-config.1.html
@@ -0,0 +1,138 @@
+<!-- 
+  ****************************************************************************
+  * Copyright (c) 2010 Free Software Foundation, Inc.                        *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: MKncu_config.in,v 1.3 2010/03/06 22:29:17 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>ncurses5-config 1</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">ncurses5-config 1</H1>
+<PRE>
+<STRONG><A HREF="ncurses5-config.1.html">ncurses5-config(1)</A></STRONG>                                   <STRONG><A HREF="ncurses5-config.1.html">ncurses5-config(1)</A></STRONG>
+
+
+
+
+</PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       ncurses5-config - helper script for ncurses libraries
+
+
+</PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>ncurses5-config</STRONG> [<EM>options</EM>]
+
+
+</PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       This is a shell script which simplifies configuring appli-
+       cations against a particular set of ncurses libraries.
+
+
+</PRE>
+<H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+       <STRONG>--prefix</STRONG>
+              echos the package-prefix of ncurses
+
+       <STRONG>--exec-prefix</STRONG>
+              echos the executable-prefix of ncurses
+
+       <STRONG>--cflags</STRONG>
+              echos the C compiler flags needed to  compile  with
+              ncurses
+
+       <STRONG>--libs</STRONG> echos the libraries needed to link with ncurses
+
+       <STRONG>--version</STRONG>
+              echos the release+patchdate version of ncurses
+
+       <STRONG>--abi-version</STRONG>
+              echos the ABI version of ncurses
+
+       <STRONG>--mouse-version</STRONG>
+              echos the mouse-interface version of ncurses
+
+       <STRONG>--bindir</STRONG>
+              echos the directory containing ncurses programs
+
+       <STRONG>--datadir</STRONG>
+              echos the directory containing ncurses data
+
+       <STRONG>--includedir</STRONG>
+              echos the directory containing ncurses header files
+
+       <STRONG>--libdir</STRONG>
+              echos the directory containing ncurses libraries
+
+       <STRONG>--mandir</STRONG>
+              echos the directory containing ncurses manpages
+
+       <STRONG>--terminfo</STRONG>
+              echos the $TERMINFO terminfo database path, e.g.,
+              /usr/share/terminfo
+
+       <STRONG>--terminfo-dirs</STRONG>
+              echos the $TERMINFO_DIRS directory list, e.g.,
+              /usr/local/ncurses/share/terminfo:/usr/share/ter-
+              minfo
+
+       <STRONG>--termpath</STRONG>
+              echos the $TERMPATH termcap list,  if  support  for
+              termcap is configured.
+
+       <STRONG>--help</STRONG> prints this message
+
+
+</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 5.9 (patch 20150523).
+
+
+
+                                                     <STRONG><A HREF="ncurses5-config.1.html">ncurses5-config(1)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/panel.3x.html b/doc/html/man/panel.3x.html
index a5b5a06..52e1f68 100644
--- a/doc/html/man/panel.3x.html
+++ b/doc/html/man/panel.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2020,2015 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            *
@@ -27,31 +26,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: panel.3x,v 1.14 2007/05/12 20:45:20 tom Exp @
+  * @Id: panel.3x,v 1.18 2015/04/11 10:23:49 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>panel 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>panel 3x</H1>
-<HR>
+<H1 class="no-header">panel 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>                                                     <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        panel - panel stack extension for curses
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;panel.h&gt;</STRONG>
 
        <STRONG>cc</STRONG> <STRONG>[flags]</STRONG> <STRONG>sourcefiles</STRONG> <STRONG>-lpanel</STRONG> <STRONG>-lncurses</STRONG>
@@ -74,7 +74,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        Panels  are  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>  windows with the added feature of
        depth.  Panel functions allow the use of  stacked  windows
        and  ensure  the  proper  portions  of each window and the
@@ -95,7 +95,7 @@
 
 
 </PRE>
-<H2>FUNCTIONS</H2><PRE>
+<H2><a name="h2-FUNCTIONS">FUNCTIONS</a></H2><PRE>
        <STRONG>new_panel(win)</STRONG>
               allocates   a   <STRONG>PANEL</STRONG> structure, associates it with
               <STRONG>win</STRONG>, places the panel  on  the  top  of  the  stack
@@ -106,33 +106,33 @@
               refreshes the virtual screen to reflect  the  rela-
               tions between the panels in the stack, but does not
               call doupdate() to  refresh  the  physical  screen.
-              Use this function and not wrefresh or wnoutrefresh.
-              update_panels() may be called more than once before
-              a  call  to doupdate(), but doupdate() is the func-
-              tion responsible for updating the physical  screen.
+              Use this function and not <STRONG>wrefresh</STRONG> or <STRONG>wnoutrefresh</STRONG>.
+              <STRONG>update_panels</STRONG> may be called more than once before a
+              call  to doupdate(), but doupdate() is the function
+              responsible for updating the physical screen.
 
        <STRONG>del_panel(pan)</STRONG>
               removes the given panel from the  stack and deallo-
-              cates the <STRONG>PANEL</STRONG> structure (but not  its  associated
+              cates  the  <STRONG>PANEL</STRONG> structure (but not its associated
               window).
 
        <STRONG>hide_panel(pan)</STRONG>
-              removes  the  given  panel from the panel stack and
+              removes the given panel from the  panel  stack  and
               thus hides it from view. The <STRONG>PANEL</STRONG> structure is not
               lost, merely removed from the stack.
 
        <STRONG>panel_hidden(pan)</STRONG>
-              returns  TRUE  if  the panel is in the panel stack,
-              FALSE if it  is  not.   If  the  panel  is  a  null
+              returns <STRONG>TRUE</STRONG> if the panel is in  the  panel  stack,
+              <STRONG>FALSE</STRONG>  if  it  is  not.   If  the  panel  is a null
               pointer, return ERR.
 
        <STRONG>show_panel(pan)</STRONG>
-              makes  a  hidden panel visible by placing it on top
+              makes a hidden panel visible by placing it  on  top
               of the panels in the panel stack. See COMPATIBILITY
               below.
 
        <STRONG>top_panel(pan)</STRONG>
-              puts  the  given visible panel on top of all panels
+              puts the given visible panel on top of  all  panels
               in the stack.  See COMPATIBILITY below.
 
        <STRONG>bottom_panel(pan)</STRONG>
@@ -140,26 +140,26 @@
 
        <STRONG>move_panel(pan,starty,startx)</STRONG>
               moves the given panel window so that its upper-left
-              corner  is  at  <STRONG>starty</STRONG>, <STRONG>startx</STRONG>.  It does not change
+              corner is at <STRONG>starty</STRONG>, <STRONG>startx</STRONG>.  It  does  not  change
               the position of the panel in the stack.  Be sure to
-              use  this  function,  not  <STRONG>mvwin()</STRONG>, to move a panel
+              use this function, not <STRONG>mvwin()</STRONG>,  to  move  a  panel
               window.
 
        <STRONG>replace_panel(pan,window)</STRONG>
-              replaces the current window of  panel  with  <STRONG>window</STRONG>
+              replaces  the  current  window of panel with <STRONG>window</STRONG>
               (useful, for example if you want to resize a panel;
               if you're using <STRONG>ncurses</STRONG>, you can call <STRONG>replace_panel</STRONG>
-              on  the output of <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>).  It does not change
+              on the output of <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>).  It does not  change
               the position of the panel in the stack.
 
        <STRONG>panel_above(pan)</STRONG>
-              returns a pointer to the panel above pan.   If  the
-              panel  argument is <STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>, it returns a pointer
+              returns  a  pointer to the panel above pan.  If the
+              panel argument is <STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>, it returns a  pointer
               to the bottom panel in the stack.
 
        <STRONG>panel_below(pan)</STRONG>
-              returns a pointer to the panel just below pan.   If
-              the  panel  argument  is  <STRONG>(PANEL</STRONG>  <STRONG>*)0</STRONG>, it returns a
+              returns  a pointer to the panel just below pan.  If
+              the panel argument is  <STRONG>(PANEL</STRONG>  <STRONG>*)0</STRONG>,  it  returns  a
               pointer to the top panel in the stack.
 
        <STRONG>set_panel_userptr(pan,ptr)</STRONG>
@@ -173,20 +173,20 @@
 
 
 </PRE>
-<H2>DIAGNOSTICS</H2><PRE>
+<H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE>
        Each  routine  that  returns  a pointer returns <STRONG>NULL</STRONG> if an
        error occurs. Each  routine  that  returns  an  int  value
        returns <STRONG>OK</STRONG> if it executes successfully and <STRONG>ERR</STRONG> if not.
 
 
 </PRE>
-<H2>COMPATIBILITY</H2><PRE>
+<H2><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE>
        Reasonable  care  has been taken to  ensure  compatibility
        with  the  native  panel  facility  introduced  in  SVr3.2
-       (inspection   of   the  SVr4  manual  pages  suggests  the
-       programming  interface  is  unchanged).   The  <STRONG>PANEL</STRONG>  data
-       structures  are  merely   similar. The  programmer is cau-
-       tioned not to directly use <STRONG>PANEL</STRONG> fields.
+       (inspection of the SVr4 manual pages suggests the program-
+       ming interface is unchanged).  The <STRONG>PANEL</STRONG>  data  structures
+       are  merely   similar. The  programmer is cautioned not to
+       directly use <STRONG>PANEL</STRONG> fields.
 
        The functions <STRONG>show_panel()</STRONG> and <STRONG>top_panel()</STRONG>  are  identical
        in  this  implementation,  and work equally well with dis-
@@ -200,7 +200,7 @@
 
 
 </PRE>
-<H2>NOTE</H2><PRE>
+<H2><a name="h2-NOTE">NOTE</a></H2><PRE>
        In your library list, libpanel.a should  be  before  libn-
        curses.a;  that  is,  you want to say `-lpanel -lncurses',
        not the other way around (which would usually give a link-
@@ -208,21 +208,21 @@
 
 
 </PRE>
-<H2>FILES</H2><PRE>
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
        panel.h interface for the panels library
 
        libpanel.a the panels library itself
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>
+<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 5.6 (patch 20081011).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Originally   written   by   Warren  Tucker  &lt;wht@n4hgf.mt-
        park.ga.us&gt;, primarily to assist  in  porting  u386mon  to
        systems  without  a native panels library.  Repackaged for
@@ -232,10 +232,19 @@
 
                                                               <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-FUNCTIONS">FUNCTIONS</a></li>
+<li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li>
+<li><a href="#h2-COMPATIBILITY">COMPATIBILITY</a></li>
+<li><a href="#h2-NOTE">NOTE</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/resizeterm.3x.html b/doc/html/man/resizeterm.3x.html
index 23b0845..2afe125 100644
--- a/doc/html/man/resizeterm.3x.html
+++ b/doc/html/man/resizeterm.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2013,2015 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            *
@@ -27,33 +26,34 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * Author: Thomas E. Dickey 1996-2005
-  * @Id: resizeterm.3x,v 1.11 2005/06/25 22:19:42 tom Exp @
+  * Author: Thomas E. Dickey 1996-on
+  * @Id: resizeterm.3x,v 1.19 2015/06/06 23:38:18 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>resizeterm 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>resizeterm 3x</H1>
-<HR>
+<H1 class="no-header">resizeterm 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>                                           <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>is_term_resized</STRONG>,  <STRONG>resize_term</STRONG>,  <STRONG>resizeterm</STRONG>  -  change  the
        curses terminal size
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>bool</STRONG> <STRONG>is_term_resized(int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
@@ -62,41 +62,53 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        This is an extension to the curses library.   It  provides
        callers  with  a hook into the <STRONG>ncurses</STRONG> data to resize win-
        dows, primarily for use by programs running in an X Window
-       terminal  (e.g.,  xterm).  The function <STRONG>resizeterm</STRONG> resizes
-       the standard and current windows to the  specified  dimen-
-       sions,  and  adjusts  other  bookkeeping  data used by the
-       <STRONG>ncurses</STRONG> library that record the window dimensions.
+       terminal (e.g., xterm).
 
-       Most  of  the  work  is  done  by   the   inner   function
+
+</PRE>
+<H3><a name="h3-resizeterm">resizeterm</a></H3><PRE>
+       The  function  <STRONG>resizeterm</STRONG> resizes the standard and current
+       windows to the specified  dimensions,  and  adjusts  other
+       bookkeeping  data  used by the <STRONG>ncurses</STRONG> library that record
+       the window dimensions such as the  <STRONG>LINES</STRONG>  and  <STRONG>COLS</STRONG>  vari-
+       ables.
+
+
+</PRE>
+<H3><a name="h3-resize_term">resize_term</a></H3><PRE>
+       Most   of   the   work  is  done  by  the  inner  function
        <STRONG>resize_term</STRONG>.  The outer function <STRONG>resizeterm</STRONG> adds bookkeep-
-       ing for the SIGWINCH handler.  When resizing the  windows,
-       <STRONG>resize_term</STRONG>  blank-fills the areas that are extended.  The
+       ing  for the SIGWINCH handler.  When resizing the windows,
+       <STRONG>resize_term</STRONG> blank-fills the areas that are extended.   The
        calling application should fill in these areas with appro-
-       priate  data.  The <STRONG>resize_term</STRONG> function attempts to resize
-       all windows.  However, due to the  calling  convention  of
-       pads,  it  is  not  possible to resize these without addi-
+       priate data.  The <STRONG>resize_term</STRONG> function attempts to  resize
+       all  windows.   However,  due to the calling convention of
+       pads, it is not possible to  resize  these  without  addi-
        tional interaction with the application.
 
-       A support function <STRONG>is_term_resized</STRONG>  is  provided  so  that
-       applications  can  check if the <STRONG>resize_term</STRONG> function would
-       modify the window structures.  It returns TRUE if the win-
-       dows would be modified, and FALSE otherwise.
+
+</PRE>
+<H3><a name="h3-is_term_resized">is_term_resized</a></H3><PRE>
+       A  support  function  <STRONG>is_term_resized</STRONG>  is provided so that
+       applications can check if the <STRONG>resize_term</STRONG>  function  would
+       modify the window structures.  It returns <STRONG>TRUE</STRONG> if the win-
+       dows would be modified, and <STRONG>FALSE</STRONG> otherwise.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
-       Except  as  notes,  these  function return the integer <STRONG>ERR</STRONG>
-       upon failure and <STRONG>OK</STRONG> on success.  They will fail if  either
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
+       Except as noted, these functions return  the  integer  <STRONG>ERR</STRONG>
+       upon  failure and <STRONG>OK</STRONG> on success.  They will fail if either
        of the dimensions are less than or equal to zero, or if an
-       error occurs while (re)allocating memory for the  windows.
+       error occurs while (re)allocating memory for the windows.
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        While these functions are intended to be used to support a
        signal handler (i.e., for SIGWINCH), care should be  taken
        to  avoid invoking them in a context where <STRONG>malloc</STRONG> or <STRONG>real-</STRONG>
@@ -104,7 +116,7 @@
        tions.
 
        If  ncurses  is configured to supply its own SIGWINCH han-
-       dler, the <STRONG>resizeterm</STRONG> function ungetch's a <STRONG>KEY_RESIZE</STRONG> which
+       dler, the <STRONG>resizeterm</STRONG> function <STRONG>ungetch</STRONG>'s a <STRONG>KEY_RESIZE</STRONG> which
        will  be  read on the next call to <STRONG>getch</STRONG>.  This is used to
        alert an application that the screen size has changed, and
        that  it should repaint special features such as pads that
@@ -113,18 +125,16 @@
        If the environment variables <STRONG>LINES</STRONG>  or  <STRONG>COLUMNS</STRONG>  are  set,
        this  overrides  the  library's  use  of  the  window size
        obtained from the operating system.  Thus, even if a  SIG-
-       WINCH  is received, no screen size change may be recorded.
-       In that case, no <STRONG>KEY_RESIZE</STRONG> is queued for the next call to
-       <STRONG>getch</STRONG>; an <STRONG>ERR</STRONG> will be returned instead.
+       WINCH is received, no screen size change may be recorded.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Thomas Dickey (from an equivalent function written in 1988
        for BSD curses).
 
@@ -132,10 +142,22 @@
 
                                                          <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-resizeterm">resizeterm</a></li>
+<li><a href="#h3-resize_term">resize_term</a></li>
+<li><a href="#h3-is_term_resized">is_term_resized</a></li>
+</ul>
+</li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/tabs.1.html b/doc/html/man/tabs.1.html
new file mode 100644
index 0000000..fac8a27
--- /dev/null
+++ b/doc/html/man/tabs.1.html
@@ -0,0 +1,195 @@
+<!-- 
+  ****************************************************************************
+  * Copyright (c) 2008-2011,2013 Free Software Foundation, Inc.              *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: tabs.1,v 1.11 2013/06/22 18:11:57 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>tabs 1</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">tabs 1</H1>
+<PRE>
+<STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>                                                         <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
+
+
+
+
+</PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>tabs</STRONG> - set tabs on a terminal
+
+
+</PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>tabs</STRONG> [<EM>options</EM>]] <EM>[tabstop-list]</EM>
+
+
+</PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       The  <STRONG>tabs</STRONG>  program clears and sets tab-stops on the termi-
+       nal.  This uses the terminfo  <EM>clear</EM><STRONG>_</STRONG><EM>all</EM><STRONG>_</STRONG><EM>tabs</EM>  and  <EM>set</EM><STRONG>_</STRONG><EM>tab</EM>
+       capabilities.   If  either  is  absent,  <STRONG>tabs</STRONG> is unable to
+       clear/set tab-stops.  The terminal should be configured to
+       use hard tabs, e.g.,
+
+              stty tab0
+
+
+</PRE>
+<H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-General-Options">General Options</a></H3><PRE>
+       <STRONG>-T</STRONG><EM>name</EM>
+            Tell <STRONG>tabs</STRONG> which terminal type to use.  If this option
+            is not given, <STRONG>tabs</STRONG> will  use  the  <STRONG>$TERM</STRONG>  environment
+            variable.   If  that  is  not  set,  it  will use the
+            <EM>ansi+tabs</EM> entry.
+
+       <STRONG>-d</STRONG>   The debugging option shows a ruler line, followed  by
+            two  data  lines.   The  first  data  line  shows the
+            expected tab-stops marked with asterisks.  The second
+            data  line  shows  the  actual tab-stops, marked with
+            asterisks.
+
+       <STRONG>-n</STRONG>   This option tells <STRONG>tabs</STRONG> to check the options  and  run
+            any  debugging option, but not to modify the terminal
+            settings.
+
+       <STRONG>-V</STRONG>   reports the version of ncurses which was used in this
+            program, and exits.
+
+       The  <STRONG>tabs</STRONG>  program  processes  a single list of tab stops.
+       The last option to be processed which defines  a  list  is
+       the one that determines the list to be processed.
+
+
+</PRE>
+<H3><a name="h3-Implicit-Lists">Implicit Lists</a></H3><PRE>
+       Use  a  single number as an option, e.g., "<STRONG>-5</STRONG>" to set tabs
+       at the given interval (in this case  1,  6,  11,  16,  21,
+       etc.).   Tabs  are  repeated up to the right margin of the
+       screen.
+
+       Use "<STRONG>-0</STRONG>" to clear all tabs.
+
+       Use "<STRONG>-8</STRONG>" to set tabs to the standard interval.
+
+
+</PRE>
+<H3><a name="h3-Explicit-Lists">Explicit Lists</a></H3><PRE>
+       An explicit list can be defined after  the  options  (this
+       does  not  use  a "-").  The values in the list must be in
+       increasing numeric order, and greater than zero.  They are
+       separated by a comma or a blank, for example,
+
+              tabs 1,6,11,16,21
+              tabs 1 6 11 16 21
+       Use  a  '+'  to treat a number as an increment relative to
+       the previous value, e.g.,
+
+              tabs 1,+5,+5,+5,+5
+
+       which is equivalent to the 1,6,11,16,21 example.
+
+
+</PRE>
+<H3><a name="h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></H3><PRE>
+       X/Open defines several predefined lists of tab stops.
+
+       <STRONG>-a</STRONG>   Assembler, IBM S/370, first format
+
+       <STRONG>-a2</STRONG>  Assembler, IBM S/370, second format
+
+       <STRONG>-c</STRONG>   COBOL, normal format
+
+       <STRONG>-c2</STRONG>  COBOL compact format
+
+       <STRONG>-c3</STRONG>  COBOL compact format extended
+
+       <STRONG>-f</STRONG>   FORTRAN
+
+       <STRONG>-p</STRONG>   PL/I
+
+       <STRONG>-s</STRONG>   SNOBOL
+
+       <STRONG>-u</STRONG>   UNIVAC 1100 Assembler
+
+
+</PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open describes a <STRONG>+m</STRONG> option, to set  a  terminal's  left-
+       margin.   Very few of the entries in the terminal database
+       provide this capability.
+
+       The <STRONG>-d</STRONG> (debug) and <STRONG>-n</STRONG> (no-op) options are  extensions  not
+       provided by other implementations.
+
+       Documentation  for other implementations states that there
+       is a limit on the number of tab stops.  While some  termi-
+       nals may not accept an arbitrary number of tab stops, this
+       implementation will attempt to set tab  stops  up  to  the
+       right  margin  of the screen, if the given list happens to
+       be that long.
+
+
+</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 20150808).
+
+
+
+                                                                <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-OPTIONS">OPTIONS</a>
+<ul>
+<li><a href="#h3-General-Options">General Options</a></li>
+<li><a href="#h3-Implicit-Lists">Implicit Lists</a></li>
+<li><a href="#h3-Explicit-Lists">Explicit Lists</a></li>
+<li><a href="#h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></li>
+</ul>
+</li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/term.5.html b/doc/html/man/term.5.html
index 50fdc55..221db40 100644
--- a/doc/html/man/term.5.html
+++ b/doc/html/man/term.5.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2004,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2015 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            *
@@ -27,37 +26,40 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: term.5,v 1.19 2006/12/24 18:12:38 tom Exp @
+  * @Id: term.5,v 1.22 2015/04/26 14:50:23 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>term 5</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>term 5</H1>
-<HR>
+<H1 class="no-header">term 5</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="term.5.html">term(5)</A></STRONG>                                                         <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        term - format of compiled term file.
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>term</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-   <STRONG>STORAGE</STRONG> <STRONG>LOCATION</STRONG>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+
+</PRE>
+<H3><a name="h3-STORAGE-LOCATION">STORAGE LOCATION</a></H3><PRE>
        Compiled terminfo descriptions are placed under the direc-
        tory <STRONG>/usr/share/terminfo</STRONG>.   Two  configurations  are  sup-
        ported (when building the ncurses libraries):
@@ -89,7 +91,9 @@
             directory  tree  for  entries  that  correspond to an
             existing directory, and hashed database otherwise.
 
-   <STRONG>STORAGE</STRONG> <STRONG>FORMAT</STRONG>
+
+</PRE>
+<H3><a name="h3-STORAGE-FORMAT">STORAGE FORMAT</a></H3><PRE>
        The format has been chosen so that it will be the same  on
        all  hardware.   An  8 or more bit byte is assumed, but no
        assumptions about byte  ordering  or  sign  extension  are
@@ -113,7 +117,7 @@
             (4) the number of short integers in the numbers  sec-
             tion;
 
-            (5) the number of offsets  (short  integers)  in  the
+            (5)  the  number  of  offsets (short integers) in the
             strings section;
 
             (6) the size, in bytes, of the string table.
@@ -167,7 +171,9 @@
        the values of string capabilities referenced in the string
        section.  Each string is null terminated.
 
-   <STRONG>EXTENDED</STRONG> <STRONG>STORAGE</STRONG> <STRONG>FORMAT</STRONG>
+
+</PRE>
+<H3><a name="h3-EXTENDED-STORAGE-FORMAT">EXTENDED STORAGE FORMAT</a></H3><PRE>
        The  previous  section describes the conventional terminfo
        binary format.  With some minor variations of the  offsets
        (see  PORTABILITY),  the same binary format is used in all
@@ -197,7 +203,7 @@
                  bytes.
 
        Using  the  counts and sizes, ncurses allocates arrays and
-       reads data for the extended capabilties in the same  order
+       reads data for the extended capabilities in the same order
        as the header information.
 
        The extended string table contains values for string capa-
@@ -207,7 +213,7 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        Note that it is possible for <EM>setupterm</EM> to expect a differ-
        ent  set  of capabilities than are actually present in the
        file.  Either the database may  have  been  updated  since
@@ -233,7 +239,7 @@
 
 
 </PRE>
-<H2>EXAMPLE</H2><PRE>
+<H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE>
        As  an  example, here is a hex dump of the description for
        the Lear-Siegler ADM-3, a  popular  though  rather  stupid
        early terminal:
@@ -271,24 +277,24 @@
 
 
 </PRE>
-<H2>LIMITS</H2><PRE>
+<H2><a name="h2-LIMITS">LIMITS</a></H2><PRE>
        Some  limitations:  total  compiled  entries cannot exceed
        4096 bytes.  The name field cannot exceed 128 bytes.
 
 
 </PRE>
-<H2>FILES</H2><PRE>
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
        /usr/share/terminfo/*/*  compiled terminal capability data
        base
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="terminfo.5.html">terminfo(5)</A></STRONG>.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Thomas E. Dickey
        extended terminfo format for ncurses 5.0
        hashed database support for ncurses 5.6
@@ -299,10 +305,24 @@
 
                                                                 <STRONG><A HREF="term.5.html">term(5)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-STORAGE-LOCATION">STORAGE LOCATION</a></li>
+<li><a href="#h3-STORAGE-FORMAT">STORAGE FORMAT</a></li>
+<li><a href="#h3-EXTENDED-STORAGE-FORMAT">EXTENDED STORAGE FORMAT</a></li>
+</ul>
+</li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-EXAMPLE">EXAMPLE</a></li>
+<li><a href="#h2-LIMITS">LIMITS</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/term.7.html b/doc/html/man/term.7.html
index 53ea633..749139e 100644
--- a/doc/html/man/term.7.html
+++ b/doc/html/man/term.7.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2006,2007 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2011 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            *
@@ -27,31 +26,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: term.7,v 1.18 2007/06/02 20:40:07 tom Exp @
+  * @Id: term.7,v 1.23 2011/12/17 23:32:17 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>term 7</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>term 7</H1>
-<HR>
+<H1 class="no-header">term 7</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="term.7.html">term(7)</A></STRONG>                                                         <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        term - conventions for naming terminal types
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The  environment variable <STRONG>TERM</STRONG> should normally contain the
        type name of the terminal, console or display-device  type
        you  are  using.   This  information  is  critical for all
@@ -59,7 +59,7 @@
        mailer.
 
        A  default  <STRONG>TERM</STRONG>  value will be set on a per-line basis by
-       either <STRONG>/etc/inittab</STRONG> (Linux and  System-V-like  UNIXes)  or
+       either  <STRONG>/etc/inittab</STRONG>  (e.g.,  System-V-like   UNIXes)   or
        <STRONG>/etc/ttys</STRONG>  (BSD  UNIXes).  This will nearly always suffice
        for workstation and microcomputer consoles.
 
@@ -85,9 +85,9 @@
        the tty device and baud rate.
 
        Setting your own <STRONG>TERM</STRONG> value may also be useful if you have
-       created a custom  entry  incorporating  options  (such  as
-       visual  bell  or reverse-video) which you wish to override
-       the system default type for your line.
+       created a custom entry incorporating options (such as vis-
+       ual  bell or reverse-video) which you wish to override the
+       system default type for your line.
 
        Terminal type descriptions are stored as files of capabil-
        ity data underneath /usr/share/terminfo.  To browse a list
@@ -101,9 +101,9 @@
        you  must  use the <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> command.  Invoke it as fol-
        lows:
 
-            infocmp <EM>entry-name</EM>
+            infocmp <EM>entry</EM><STRONG>_</STRONG><EM>name</EM>
 
-       where <EM>entry-name</EM> is the name of the type you wish to exam-
+       where <EM>entry</EM><STRONG>_</STRONG><EM>name</EM> is the name of the type you wish to exam-
        ine  (and the name of its capability file the subdirectory
        of /usr/share/terminfo named for its first letter).   This
        command  dumps  a  capability  file  in  the  text  format
@@ -152,7 +152,7 @@
        thus <STRONG>vt100</STRONG>, <STRONG>hp2621</STRONG>, <STRONG>wy50</STRONG>.
 
        The root name for a PC-Unix console type should be the  OS
-       name,  i.e.  <STRONG>linux</STRONG>, <STRONG>bsdos</STRONG>, <STRONG>freebsd</STRONG>, <STRONG>netbsd</STRONG>.  It should <EM>not</EM>
+       name,  i.e., <STRONG>linux</STRONG>, <STRONG>bsdos</STRONG>, <STRONG>freebsd</STRONG>, <STRONG>netbsd</STRONG>.  It should <EM>not</EM>
        be <STRONG>console</STRONG> or any other generic that might cause confusion
        in  a  multi-platform environment!  If a model number fol-
        lows, it should indicate either the OS  release  level  or
@@ -161,7 +161,7 @@
        The  root  name  for a terminal emulator (assuming it does
        not fit one of the standard ANSI or vt100 types) should be
        the program name or a readily recognizable abbreviation of
-       it (i.e. <STRONG>versaterm</STRONG>, <STRONG>ctrm</STRONG>).
+       it (i.e., <STRONG>versaterm</STRONG>, <STRONG>ctrm</STRONG>).
 
        Following the root name, you may add any reasonable number
        of hyphen-separated feature suffixes.
@@ -216,14 +216,14 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
        For  maximum  compatibility  with  older  System V UNIXes,
        names and aliases should be unique  within  the  first  14
        characters.
 
 
 </PRE>
-<H2>FILES</H2><PRE>
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
        /usr/share/terminfo/?/*
             compiled terminal capability data base
 
@@ -235,17 +235,21 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><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="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.
 
 
 
                                                                 <STRONG><A HREF="term.7.html">term(7)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/term_variables.3x.html b/doc/html/man/term_variables.3x.html
new file mode 100644
index 0000000..37b16da
--- /dev/null
+++ b/doc/html/man/term_variables.3x.html
@@ -0,0 +1,209 @@
+<!-- 
+  ****************************************************************************
+  * Copyright (c) 2011-2013,2015 Free Software Foundation, Inc.              *
+  *                                                                          *
+  * Permission is hereby granted, free of charge, to any person obtaining a  *
+  * copy of this software and associated documentation files (the            *
+  * "Software"), to deal in the Software without restriction, including      *
+  * without limitation the rights to use, copy, modify, merge, publish,      *
+  * distribute, distribute with modifications, sublicense, and/or sell       *
+  * copies of the Software, and to permit persons to whom the Software is    *
+  * furnished to do so, subject to the following conditions:                 *
+  *                                                                          *
+  * The above copyright notice and this permission notice shall be included  *
+  * in all copies or substantial portions of the Software.                   *
+  *                                                                          *
+  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
+  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
+  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
+  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
+  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
+  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
+  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
+  *                                                                          *
+  * Except as contained in this notice, the name(s) of the above copyright   *
+  * holders shall not be used in advertising or otherwise to promote the     *
+  * sale, use or other dealings in this Software without prior written       *
+  * authorization.                                                           *
+  ****************************************************************************
+  * @Id: term_variables.3x,v 1.6 2015/04/22 00:34:49 tom Exp @
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
+<HTML>
+<HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>term_variables 3x</TITLE>
+<link rev=made href="mailto:bug-ncurses@gnu.org">
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</HEAD>
+<BODY>
+<H1 class="no-header">term_variables 3x</H1>
+<PRE>
+<STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>                                   <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
+
+
+
+
+</PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
+       <STRONG>SP</STRONG>, <STRONG>acs_map</STRONG>, <STRONG>boolcodes</STRONG>, <STRONG>boolfnames</STRONG>, <STRONG>boolnames</STRONG>, <STRONG>cur_term</STRONG>,
+       <STRONG>numcodes</STRONG>, <STRONG>numfnames</STRONG>, <STRONG>numnames</STRONG>, <STRONG>strcodes</STRONG>, <STRONG>strfnames</STRONG>,
+       <STRONG>strnames</STRONG>, <STRONG>ttytype</STRONG> - <STRONG>curses</STRONG> terminfo global variables
+
+
+</PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
+       <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG>
+
+       <STRONG>chtype</STRONG> <STRONG>acs_map[];</STRONG>
+
+       <STRONG>TERMINAL</STRONG> <STRONG>*</STRONG> <STRONG>cur_term;</STRONG>
+
+       <STRONG>char</STRONG> <STRONG>ttytype[];</STRONG>
+
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>boolcodes;</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>boolfnames;</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>boolnames;</STRONG>
+
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>numcodes;</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>numfnames;</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>numnames;</STRONG>
+
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>strcodes;</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>strfnames;</STRONG>
+       <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>*</STRONG> <STRONG>strnames;</STRONG>
+
+
+</PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       This  page summarizes variables provided by the <STRONG>curses</STRONG> li-
+       brary's low-level terminfo interface.  A more complete de-
+       scription is given in the <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> manual page.
+
+       Depending  on the configuration, these may be actual vari-
+       ables, or  macros  (see  <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>)  which  provide
+       read-only  access  to <EM>curses</EM>'s state.  In either case, ap-
+       plications should treat them as read-only to avoid confus-
+       ing the library.
+
+
+</PRE>
+<H3><a name="h3-Alternate-Character-Set-Mapping">Alternate Character Set Mapping</a></H3><PRE>
+       After  initializing the curses or terminfo interfaces, the
+       <STRONG>acs_map</STRONG> array holds information used  to  translate  cells
+       with  the  <STRONG>A_ALTCHARSET</STRONG>  video attribute into line-drawing
+       characters.
+
+       The encoding of the information in this array has  changed
+       periodically.   Application developers need only know that
+       it is used for the "ACS_" constants in &lt;curses.h&gt;.
+
+       The comparable data for the wide-character  library  is  a
+       private variable.
+
+
+</PRE>
+<H3><a name="h3-Current-Terminal-Data">Current Terminal Data</a></H3><PRE>
+       After  initializing the curses or terminfo interfaces, the
+       <STRONG>cur_term</STRONG> contains data describing  the  current  terminal.
+       This variable is also set as a side-effect of <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>
+       and <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>.
+
+       It is possible to save a value of <STRONG>cur_term</STRONG> for  subsequent
+       use  as  a  parameter  to  <STRONG>set_term</STRONG>, for switching between
+       screens.  Alternatively, one can  save  the  return  value
+       from <STRONG>newterm</STRONG> or <STRONG>setupterm</STRONG> to reuse in <STRONG>set_term</STRONG>.
+
+
+</PRE>
+<H3><a name="h3-Terminfo-Names">Terminfo Names</a></H3><PRE>
+       The  <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>  and <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> programs use lookup tables for
+       the long and short names of terminfo capabilities, as well
+       as  the  corresponding  names  for  termcap  capabilities.
+       These are available to other  applications,  although  the
+       hash-tables used by the terminfo and termcap functions are
+       not available.
+
+       The long terminfo capability names  use  a  "l"  (ell)  in
+       their names: <STRONG>boolfnames</STRONG>, <STRONG>numfnames</STRONG>, and <STRONG>strfnames</STRONG>.
+
+       These are the short names for terminfo capabilities: <STRONG>bool-</STRONG>
+       <STRONG>names</STRONG>, <STRONG>numnames</STRONG>, and <STRONG>strnames</STRONG>.
+
+       These are the corresponding names  used  for  termcap  de-
+       scriptions: <STRONG>boolcodes</STRONG>, <STRONG>numcodes</STRONG>, and <STRONG>strcodes</STRONG>.
+
+
+</PRE>
+<H3><a name="h3-Terminal-Type">Terminal Type</a></H3><PRE>
+       On  initialization  of  the curses or terminfo interfaces,
+       <STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>.
+
+
+</PRE>
+<H3><a name="h3-Terminfo-Names">Terminfo Names</a></H3><PRE>
+       In addition to the variables, <STRONG>&lt;term.h&gt;</STRONG> also defines a sym-
+       bol  for each terminfo capability <EM>long</EM> <EM>name</EM>.  These are in
+       terms of the symbol <STRONG>CUR</STRONG>, which is defined
+
+       #define CUR cur_term-&gt;type.
+
+       These symbols provide a faster method of accessing termin-
+       fo capabilities than using <STRONG><A HREF="tigetstr.3x.html">tigetstr(3x)</A></STRONG>, etc.
+
+
+</PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
+       The  low-level  terminfo  interface  is  initialized using
+       <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>.  The upper-level curses interface uses  the
+       low-level terminfo interface, internally.
+
+
+</PRE>
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open  Curses  does  not describe any of these except for
+       <STRONG>cur_term</STRONG>.  (The inclusion of <STRONG>cur_term</STRONG>  appears  to  be  an
+       oversight, since other comparable low-level information is
+       omitted by X/Open).
+
+       Other implementations may have comparable variables.  Some
+       implementations  provide the variables in their libraries,
+       but omit them from the header files.
+
+       All implementations which provide terminfo interfaces  add
+       definitions  as  described  in the <STRONG>Terminfo</STRONG> <STRONG>Names</STRONG> section.
+       Most, but not all, base the definition upon  the  <STRONG>cur_term</STRONG>
+       variable.
+
+
+</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_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,      <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>,
+       <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+
+
+
+                                                     <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>
+</PRE>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Alternate-Character-Set-Mapping">Alternate Character Set Mapping</a></li>
+<li><a href="#h3-Current-Terminal-Data">Current Terminal Data</a></li>
+<li><a href="#h3-Terminfo-Names">Terminfo Names</a></li>
+<li><a href="#h3-Terminal-Type">Terminal Type</a></li>
+<li><a href="#h3-Terminfo-Names">Terminfo Names</a></li>
+</ul>
+</li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
+</BODY>
+</HTML>
diff --git a/doc/html/man/terminfo.5.html b/doc/html/man/terminfo.5.html
index 1284d02..cf70f7f 100644
--- a/doc/html/man/terminfo.5.html
+++ b/doc/html/man/terminfo.5.html
@@ -1,4 +1,3 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   * DO NOT EDIT THIS FILE BY HAND!
@@ -6,7 +5,7 @@
   * Note: this must be run through tbl before nroff.
   * The magic cookie on the first line triggers this under some man programs.
   ****************************************************************************
-  * Copyright (c) 1998-2004,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2012,2013 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -32,9 +31,9 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: terminfo.head,v 1.16 2007/03/04 00:09:46 tom Exp @
+  * @Id: terminfo.head,v 1.21 2013/03/09 22:11:36 tom Exp @
   * Head of terminfo man page ends here
-  * @Id: terminfo.tail,v 1.49 2008/02/16 20:57:43 tom Exp @
+  * @Id: terminfo.tail,v 1.69 2015/04/26 14:47:23 tom Exp @
   * Beginning of terminfo.tail file
   * This file is part of ncurses.
   * See "terminfo.head" for copyright.
@@ -44,41 +43,42 @@
   *.in +2
   *.TH
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>terminfo 5   File Formats</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>terminfo 5   File Formats</H1>
-<HR>
+<H1 class="no-header">terminfo 5   File Formats</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>                   File Formats                  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        terminfo - terminal capability data base
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        /usr/share/terminfo/*/*
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        <EM>Terminfo</EM>  is  a  data  base  describing terminals, used by
-       screen-oriented programs  such  as  <STRONG><A HREF="nvi.1.html">nvi(1)</A></STRONG>,  <STRONG><A HREF="rogue.1.html">rogue(1)</A></STRONG>  and
+       screen-oriented programs  such  as  <STRONG>nvi(1)</STRONG>,  <STRONG>rogue(1)</STRONG>  and
        libraries  such  as <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>.  <EM>Terminfo</EM> describes termi-
        nals by giving a set of capabilities which they  have,  by
        specifying how to perform screen operations, and by speci-
        fying padding requirements and  initialization  sequences.
-       This describes <STRONG>ncurses</STRONG> version 5.6 (patch 20081011).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
 
        Entries in <EM>terminfo</EM> consist of a sequence of `,' separated
        fields (embedded commas may be escaped with a backslash or
@@ -106,14 +106,13 @@
        Terminal names (except for the last, verbose entry) should
        be chosen using the following conventions.  The particular
        piece of hardware making up the  terminal  should  have  a
-       root  name, thus ``hp2621''.  This name should not contain
+       root  name,  thus  "hp2621".  This name should not contain
        hyphens.  Modes that the hardware can be in, or user pref-
        erences,  should  be indicated by appending a hyphen and a
        mode suffix.  Thus, a vt100 in 132 column  mode  would  be
        vt100-w.  The following suffixes should be used where pos-
        sible:
 
-
       <STRONG>Suffix</STRONG>                  <STRONG>Meaning</STRONG>                   <STRONG>Example</STRONG>
       -<EM>nn</EM>      Number of lines on the screen            aaa-60
       -<EM>n</EM>p      Number of pages of memory                c100-4p
@@ -126,14 +125,16 @@
       -ns      No status line                           hp2626-ns
       -rv      Reverse video                            c100-rv
       -s       Enable status line                       vt100-s
-
       -vb      Use visible bell instead of beep         wy370-vb
+
       -w       Wide mode (&gt; 80 columns, usually 132)    vt100-w
 
        For more on terminal naming conventions, see  the  <STRONG>term(7)</STRONG>
        manual page.
 
-   <STRONG>Capabilities</STRONG>
+
+</PRE>
+<H3><a name="h3-Predefined-Capabilities">Predefined Capabilities</a></H3><PRE>
        The  following  is  a  complete  table of the capabilities
        included in a terminfo description block and available  to
        terminfo-using code.  In each line of the table,
@@ -176,133 +177,134 @@
        These are the boolean capabilities:
 
 
-               <STRONG>Variable</STRONG>          <STRONG>Cap-</STRONG>  <STRONG>TCap</STRONG>      <STRONG>Description</STRONG>
-               <STRONG>Booleans</STRONG>          <STRONG>name</STRONG>  <STRONG>Code</STRONG>
-       auto_left_margin          bw    bw    cub1 wraps from col-
+               <STRONG>Variable</STRONG>          <STRONG>Cap-</STRONG>   <STRONG>TCap</STRONG>     <STRONG>Description</STRONG>
+               <STRONG>Booleans</STRONG>          <STRONG>name</STRONG>   <STRONG>Code</STRONG>
+       auto_left_margin          bw     bw   cub1 wraps from col-
                                              umn 0 to last column
-       auto_right_margin         am    am    terminal has auto-
+       auto_right_margin         am     am   terminal has auto-
                                              matic margins
-       back_color_erase          bce   ut    screen erased with
+       back_color_erase          bce    ut   screen erased with
                                              background color
-       can_change                ccc   cc    terminal can re-
+       can_change                ccc    cc   terminal can re-
                                              define existing col-
                                              ors
-       ceol_standout_glitch      xhp   xs    standout not erased
+       ceol_standout_glitch      xhp    xs   standout not erased
                                              by overwriting (hp)
-       col_addr_glitch           xhpa  YA    only positive motion
+       col_addr_glitch           xhpa   YA   only positive motion
                                              for hpa/mhpa caps
 
 
-       cpi_changes_res           cpix  YF    changing character
+
+       cpi_changes_res           cpix   YF   changing character
                                              pitch changes reso-
                                              lution
-       cr_cancels_micro_mode     crxm  YB    using cr turns off
+       cr_cancels_micro_mode     crxm   YB   using cr turns off
                                              micro mode
-       dest_tabs_magic_smso      xt    xt    tabs destructive,
+       dest_tabs_magic_smso      xt     xt   tabs destructive,
                                              magic so char
                                              (t1061)
-       eat_newline_glitch        xenl  xn    newline ignored
+       eat_newline_glitch        xenl   xn   newline ignored
                                              after 80 cols (con-
                                              cept)
-       erase_overstrike          eo    eo    can erase over-
+       erase_overstrike          eo     eo   can erase over-
                                              strikes with a blank
-       generic_type              gn    gn    generic line type
-       hard_copy                 hc    hc    hardcopy terminal
-       hard_cursor               chts  HC    cursor is hard to
+       generic_type              gn     gn   generic line type
+       hard_copy                 hc     hc   hardcopy terminal
+       hard_cursor               chts   HC   cursor is hard to
                                              see
-       has_meta_key              km    km    Has a meta key
+       has_meta_key              km     km   Has a meta key
                                              (i.e., sets 8th-bit)
-       has_print_wheel           daisy YC    printer needs opera-
+       has_print_wheel           daisy  YC   printer needs opera-
                                              tor to change char-
                                              acter set
-       has_status_line           hs    hs    has extra status
+       has_status_line           hs     hs   has extra status
                                              line
-       hue_lightness_saturation  hls   hl    terminal uses only
+       hue_lightness_saturation  hls    hl   terminal uses only
                                              HLS color notation
                                              (Tektronix)
-       insert_null_glitch        in    in    insert mode distin-
+       insert_null_glitch        in     in   insert mode distin-
                                              guishes nulls
-       lpi_changes_res           lpix  YG    changing line pitch
+       lpi_changes_res           lpix   YG   changing line pitch
                                              changes resolution
-       memory_above              da    da    display may be
+       memory_above              da     da   display may be
                                              retained above the
                                              screen
-       memory_below              db    db    display may be
+       memory_below              db     db   display may be
                                              retained below the
                                              screen
-       move_insert_mode          mir   mi    safe to move while
+       move_insert_mode          mir    mi   safe to move while
                                              in insert mode
-       move_standout_mode        msgr  ms    safe to move while
+       move_standout_mode        msgr   ms   safe to move while
                                              in standout mode
-       needs_xon_xoff            nxon  nx    padding will not
+       needs_xon_xoff            nxon   nx   padding will not
                                              work, xon/xoff
                                              required
-       no_esc_ctlc               xsb   xb    beehive (f1=escape,
+       no_esc_ctlc               xsb    xb   beehive (f1=escape,
                                              f2=ctrl C)
-       no_pad_char               npc   NP    pad character does
+       no_pad_char               npc    NP   pad character does
                                              not exist
-       non_dest_scroll_region    ndscr ND    scrolling region is
+       non_dest_scroll_region    ndscr  ND   scrolling region is
                                              non-destructive
-       non_rev_rmcup             nrrmc NR    smcup does not
+       non_rev_rmcup             nrrmc  NR   smcup does not
                                              reverse rmcup
-       over_strike               os    os    terminal can over-
+       over_strike               os     os   terminal can over-
                                              strike
-       prtr_silent               mc5i  5i    printer will not
+       prtr_silent               mc5i   5i   printer will not
                                              echo on screen
-       row_addr_glitch           xvpa  YD    only positive motion
+       row_addr_glitch           xvpa   YD   only positive motion
                                              for vpa/mvpa caps
-       semi_auto_right_margin    sam   YE    printing in last
+       semi_auto_right_margin    sam    YE   printing in last
                                              column causes cr
-       status_line_esc_ok        eslok es    escape can be used
+       status_line_esc_ok        eslok  es   escape can be used
                                              on the status line
-       tilde_glitch              hz    hz    cannot print ~'s
-                                             (hazeltine)
+       tilde_glitch              hz     hz   cannot print ~'s
+                                             (Hazeltine)
 
 
-       transparent_underline     ul    ul    underline character
+       transparent_underline     ul     ul   underline character
                                              overstrikes
-       xon_xoff                  xon   xo    terminal uses
+       xon_xoff                  xon    xo   terminal uses
                                              xon/xoff handshaking
 
        These are the numeric capabilities:
 
 
-            <STRONG>Variable</STRONG>         <STRONG>Cap-</STRONG>     <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
-             <STRONG>Numeric</STRONG>         <STRONG>name</STRONG>     <STRONG>Code</STRONG>
-       columns               cols     co     number of columns in
+               <STRONG>Variable</STRONG>          <STRONG>Cap-</STRONG>   <STRONG>TCap</STRONG>     <STRONG>Description</STRONG>
+                <STRONG>Numeric</STRONG>          <STRONG>name</STRONG>   <STRONG>Code</STRONG>
+       columns                   cols   co   number of columns in
                                              a line
-       init_tabs             it       it     tabs initially every
+       init_tabs                 it     it   tabs initially every
                                              # spaces
-       label_height          lh       lh     rows in each label
-       label_width           lw       lw     columns in each
+       label_height              lh     lh   rows in each label
+       label_width               lw     lw   columns in each
                                              label
-       lines                 lines    li     number of lines on
+       lines                     lines  li   number of lines on
                                              screen or page
-       lines_of_memory       lm       lm     lines of memory if &gt;
+       lines_of_memory           lm     lm   lines of memory if &gt;
                                              line. 0 means varies
-       magic_cookie_glitch   xmc      sg     number of blank
+       magic_cookie_glitch       xmc    sg   number of blank
                                              characters left by
                                              smso or rmso
-       max_attributes        ma       ma     maximum combined
+       max_attributes            ma     ma   maximum combined
                                              attributes terminal
                                              can handle
-       max_colors            colors   Co     maximum number of
+       max_colors                colors Co   maximum number of
                                              colors on screen
-       max_pairs             pairs    pa     maximum number of
+       max_pairs                 pairs  pa   maximum number of
                                              color-pairs on the
                                              screen
-       maximum_windows       wnum     MW     maximum number of
-                                             defineable windows
-       no_color_video        ncv      NC     video attributes
+       maximum_windows           wnum   MW   maximum number of
+                                             definable windows
+       no_color_video            ncv    NC   video attributes
                                              that cannot be used
                                              with colors
-       num_labels            nlab     Nl     number of labels on
+       num_labels                nlab   Nl   number of labels on
                                              screen
-       padding_baud_rate     pb       pb     lowest baud rate
+       padding_baud_rate         pb     pb   lowest baud rate
                                              where padding needed
-       virtual_terminal      vt       vt     virtual terminal
+       virtual_terminal          vt     vt   virtual terminal
                                              number (CB/unix)
-       width_status_line     wsl      ws     number of columns in
+       width_status_line         wsl    ws   number of columns in
                                              status line
 
        The following numeric  capabilities  are  present  in  the
@@ -310,47 +312,47 @@
        man page.  They came in with SVr4's printer support.
 
 
-             <STRONG>Variable</STRONG>         <STRONG>Cap-</STRONG>    <STRONG>TCap</STRONG>       <STRONG>Description</STRONG>
-             <STRONG>Numeric</STRONG>          <STRONG>name</STRONG>    <STRONG>Code</STRONG>
-       bit_image_entwining    bitwin  Yo     number of passes for
+               <STRONG>Variable</STRONG>          <STRONG>Cap-</STRONG>   <STRONG>TCap</STRONG>     <STRONG>Description</STRONG>
+                <STRONG>Numeric</STRONG>          <STRONG>name</STRONG>   <STRONG>Code</STRONG>
+       bit_image_entwining       bitwin Yo   number of passes for
                                              each bit-image row
-       bit_image_type         bitype  Yp     type of bit-image
+       bit_image_type            bitype Yp   type of bit-image
                                              device
-       buffer_capacity        bufsz   Ya     numbers of bytes
+       buffer_capacity           bufsz  Ya   numbers of bytes
                                              buffered before
                                              printing
-       buttons                btns    BT     number of buttons on
+       buttons                   btns   BT   number of buttons on
                                              mouse
-       dot_horz_spacing       spinh   Yc     spacing of dots hor-
+       dot_horz_spacing          spinh  Yc   spacing of dots hor-
                                              izontally in dots
                                              per inch
 
-       dot_vert_spacing       spinv   Yb     spacing of pins ver-
+       dot_vert_spacing          spinv  Yb   spacing of pins ver-
                                              tically in pins per
                                              inch
-       max_micro_address      maddr   Yd     maximum value in
+       max_micro_address         maddr  Yd   maximum value in
                                              micro_..._address
-       max_micro_jump         mjump   Ye     maximum value in
+       max_micro_jump            mjump  Ye   maximum value in
                                              parm_..._micro
-       micro_col_size         mcs     Yf     character step size
+       micro_col_size            mcs    Yf   character step size
                                              when in micro mode
-       micro_line_size        mls     Yg     line step size when
+       micro_line_size           mls    Yg   line step size when
                                              in micro mode
-       number_of_pins         npins   Yh     numbers of pins in
+       number_of_pins            npins  Yh   numbers of pins in
                                              print-head
-       output_res_char        orc     Yi     horizontal resolu-
+       output_res_char           orc    Yi   horizontal resolu-
                                              tion in units per
                                              line
-       output_res_horz_inch   orhi    Yk     horizontal resolu-
+       output_res_horz_inch      orhi   Yk   horizontal resolu-
                                              tion in units per
                                              inch
-       output_res_line        orl     Yj     vertical resolution
+       output_res_line           orl    Yj   vertical resolution
                                              in units per line
-       output_res_vert_inch   orvi    Yl     vertical resolution
+       output_res_vert_inch      orvi   Yl   vertical resolution
                                              in units per inch
-       print_rate             cps     Ym     print rate in char-
+       print_rate                cps    Ym   print rate in char-
                                              acters per second
-       wide_char_size         widcs   Yn     character step size
+       wide_char_size            widcs  Yn   character step size
                                              when in double wide
                                              mode
 
@@ -402,8 +404,8 @@
                                              prototype !?
        create_window             cwin   CW   define a window #1
                                              from #2,#3 to #4,#5
-       cursor_address            cup    cm   move to row #1
-                                             columns #2
+       cursor_address            cup    cm   move to row #1 col-
+                                             umns #2
        cursor_down               cud1   do   down one line
        cursor_home               home   ho   home cursor (if no
                                              cup)
@@ -904,8 +906,8 @@
        zero_motion               zerom  Zx   No motion for subse-
                                              quent character
 
-       The  following  string  capabilities  are  present  in the
-       SVr4.0 term structure, but were originally not  documented
+       The following  string  capabilities  are  present  in  the
+       SVr4.0  term structure, but were originally not documented
        in the man page.
 
 
@@ -928,9 +930,8 @@
                                                multiple codesets
        color_names               colornm  Yw   Give name for
                                                color #1
-       define_bit_image_region   defbi    Yx   Define rectan-
-                                               gualar bit image
-                                               region
+       define_bit_image_region   defbi    Yx   Define rectangular
+                                               bit image region
        device_type               devt     dv   Indicate lan-
                                                guage/codeset sup-
                                                port
@@ -985,17 +986,19 @@
        set_page_length           slines   YZ   Set page length to
                                                #1 lines
 
+
        set_tb_margin             smgtb    MT   Sets both top and
                                                bottom margins to
                                                #1, #2
 
-        The XSI Curses  standard  added  these.   They  are  some
-        post-4.1  versions  of System V curses, e.g., Solaris 2.5
-        and IRIX 6.x.  The <STRONG>ncurses</STRONG> termcap  names  for  them  are
-        invented; according to the XSI Curses standard, they have
-        no termcap names.  If your compiled terminfo entries  use
-        these,  they  may  not be binary-compatible with System V
-        terminfo entries after SVr4.1; beware!
+        The XSI Curses standard added  these  hardcopy  capabili-
+        ties.  They were used in some post-4.1 versions of System
+        V curses, e.g., Solaris 2.5 and IRIX 6.x.  Except for <STRONG>YI</STRONG>,
+        the <STRONG>ncurses</STRONG> termcap names for them are invented.  Accord-
+        ing to the XSI Curses  standard,  they  have  no  termcap
+        names.  If your compiled terminfo entries use these, they
+        may not  be  binary-compatible  with  System  V  terminfo
+        entries after SVr4.1; beware!
 
 
                 <STRONG>Variable</STRONG>         <STRONG>Cap-</STRONG>   <STRONG>TCap</STRONG>     <STRONG>Description</STRONG>
@@ -1015,90 +1018,173 @@
         set_a_attributes         sgr1   sA   Define second set of
                                              video attributes
                                              #1-#6
-        set_pglen_inch           slengthsL   YI Set page length
-                                             to #1 hundredth of
-                                             an inch
+        set_pglen_inch           slengthYI   Set page length to
+                                             #1 hundredth of an
+                                             inch (some implemen-
+                                             tations use sL for
+                                             termcap).
 
-   <STRONG>A</STRONG> <STRONG>Sample</STRONG> <STRONG>Entry</STRONG>
+
+</PRE>
+<H3><a name="h3-User-Defined-Capabilities">User-Defined Capabilities</a></H3><PRE>
+       The  preceding section listed the <EM>predefined</EM> capabilities.
+       They deal with some  special  features  for  terminals  no
+       longer  (or  possibly never) produced.  Occasionally there
+       are special features of newer terminals which are  awkward
+       or impossible to represent by reusing the predefined capa-
+       bilities.
+
+       <STRONG>ncurses</STRONG> addresses this limitation by allowing user-defined
+       capabilities.  The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG>
+       option for this purpose.   When  <STRONG>-x</STRONG>  is  set,  <STRONG>tic</STRONG>  treats
+       unknown  capabilities  as  user-defined.   That is, if <STRONG>tic</STRONG>
+       encounters a capability name which it does not  recognize,
+       it  infers  its  type (boolean, number or string) from the
+       syntax and makes an extended table entry for that capabil-
+       ity.   The <STRONG>use_extended_names</STRONG> function makes this informa-
+       tion conditionally available to applications.  The ncurses
+       library  provides the data leaving most of the behavior to
+       applications:
+
+       <STRONG>o</STRONG>   User-defined capability strings whose name begins with
+           "k" are treated as function keys.
+
+       <STRONG>o</STRONG>   The  types (boolean, number, string) determined by <STRONG>tic</STRONG>
+           can be inferred by successful calls on <STRONG>tigetflag</STRONG>, etc.
+
+       <STRONG>o</STRONG>   If the capability name happens to be  two  characters,
+           the  capability  is also available through the termcap
+           interface.
+
+       While termcap is said to be extensible because it does not
+       use  a  predefined set of capabilities, in practice it has
+       been limited  to  the  capabilities  defined  by  terminfo
+       implementations.   As  a  rule,  user-defined capabilities
+       intended for use by termcap applications should be limited
+       to  booleans  and  numbers  to avoid running past the 1023
+       byte limit assumed by termcap  implementations  and  their
+       applications.   In  particular, providing extended sets of
+       function keys (past the 60 numbered keys and  the  handful
+       of special named keys) is best done using the longer names
+       available using terminfo.
+
+
+</PRE>
+<H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE>
        The following entry, describing an ANSI-standard terminal,
        is  representative  of  what a <STRONG>terminfo</STRONG> entry for a modern
        terminal typically looks like.
 
-     ansi|ansi/pc-term compatible with color,
-             mc5i,
-             colors#8, ncv#3, pairs#64,
-             cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
-             cuu=\E[%p1%dA, dch=\E[%p1%dP, dl=\E[%p1%dM,
-             ech=\E[%p1%dX, el1=\E[1K, hpa=\E[%p1%dG, ht=\E[I,
-             ich=\E[%p1%d@, il=\E[%p1%dL, indn=\E[%p1%dS, .indn=\E[%p1%dT,
-             kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
-             kcuf1=\E[C, kcuu1=\E[A, kf1=\E[M, kf10=\E[V,
-             kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O, kf4=\E[P,
-             kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
-             kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S,
-             op=\E[37;40m, rep=%p1%c\E[%p2%{1}%-%db,
-             rin=\E[%p1%dT, s0ds=\E(B, s1ds=\E)B, s2ds=\E*B,
-             s3ds=\E+B, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
-             setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
-             setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
-             sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m,
-             sgr0=\E[0;10m, tbc=\E[2g, u6=\E[%d;%dR, u7=\E[6n,
-             u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%p1%dd,
+       ansi|ansi/pc-term compatible with color,
+               am, mc5i, mir, msgr,
+               colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
+               acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260
+                    j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303
+                    u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
+               bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
+               cr=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
+               cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
+               cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
+               dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
+               el1=\E[1K, home=\E[H, hpa=\E[%i%p1%dG, ht=\E[I, hts=\EH,
+               ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
+               indn=\E[%p1%dS, invis=\E[8m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
+               kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L,
+               mc4=\E[4i, mc5=\E[5i, nel=\r\E[S, op=\E[39;49m,
+               rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rin=\E[%p1%dT,
+               rmacs=\E[10m, rmpch=\E[10m, rmso=\E[m, rmul=\E[m,
+               s0ds=\E(B, s1ds=\E)B, s2ds=\E*B, s3ds=\E+B,
+               setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
+               sgr=\E[0;10%?%p1%t;7%;
+                          %?%p2%t;4%;
+                          %?%p3%t;7%;
+                          %?%p4%t;5%;
+                          %?%p6%t;1%;
+                          %?%p7%t;8%;
+                          %?%p9%t;11%;m,
+               sgr0=\E[0;10m, smacs=\E[11m, smpch=\E[11m, smso=\E[7m,
+               smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
+               u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,
 
        Entries may continue onto multiple lines by placing  white
        space  at  the  beginning  of  each line except the first.
-       Comments may be included on lines  beginning  with  ``#''.
-       Capabilities in <EM>terminfo</EM> are of three types: Boolean capa-
-       bilities which indicate that the terminal has some partic-
-       ular  feature, numeric capabilities giving the size of the
-       terminal or the size  of  particular  delays,  and  string
-       capabilities,  which  give a sequence which can be used to
-       perform particular terminal operations.
+       Comments may be included  on  lines  beginning  with  "#".
+       Capabilities in <EM>terminfo</EM> are of three types:
+
+       <STRONG>o</STRONG>   Boolean  capabilities which indicate that the terminal
+           has some particular feature,
+
+       <STRONG>o</STRONG>   numeric capabilities giving the size of  the  terminal
+           or the size of particular delays, and
+
+       <STRONG>o</STRONG>   string  capabilities,  which give a sequence which can
+           be used to perform particular terminal operations.
 
 
-   <STRONG>Types</STRONG> <STRONG>of</STRONG> <STRONG>Capabilities</STRONG>
+</PRE>
+<H3><a name="h3-Types-of-Capabilities">Types of Capabilities</a></H3><PRE>
        All capabilities have names.  For instance, the fact  that
        ANSI-standard  terminals  have <EM>automatic</EM> <EM>margins</EM> (i.e., an
        automatic return and line-feed when the end of a  line  is
        reached)  is  indicated  by  the capability <STRONG>am</STRONG>.  Hence the
        description of ansi includes <STRONG>am</STRONG>.  Numeric capabilities are
-       followed  by  the character `#' and then a positive value.
+       followed  by  the character "#" and then a positive value.
        Thus <STRONG>cols</STRONG>, which indicates the number of columns the  ter-
-       minal  has,  gives  the  value  `80' for ansi.  Values for
+       minal  has,  gives  the  value  "80" for ansi.  Values for
        numeric capabilities may be specified in decimal, octal or
        hexadecimal,  using the C programming language conventions
        (e.g., 255, 0377 and 0xff or 0xFF).
 
        Finally, string valued capabilities, such as <STRONG>el</STRONG> (clear  to
        end of line sequence) are given by the two-character code,
-       an `=', and then a string ending  at  the  next  following
-       `,'.
+       an "=", and then a string ending  at  the  next  following
+       ",".
 
        A  number  of  escape sequences are provided in the string
        valued capabilities for easy encoding of characters there.
        Both  <STRONG>\E</STRONG>  and  <STRONG>\e</STRONG> map to an ESCAPE character, <STRONG>^x</STRONG> maps to a
        control-x for any appropriate x, and the sequences  <STRONG>\n</STRONG>  <STRONG>\l</STRONG>
        <STRONG>\r</STRONG>  <STRONG>\t</STRONG>  <STRONG>\b</STRONG>  <STRONG>\f</STRONG>  <STRONG>\s</STRONG> give a newline, line-feed, return, tab,
-       backspace, form-feed, and space.  Other escapes include <STRONG>\^</STRONG>
-       for  <STRONG>^</STRONG>, <STRONG>\\</STRONG> for <STRONG>\</STRONG>, <STRONG>\</STRONG>, for comma, <STRONG>\:</STRONG> for <STRONG>:</STRONG>, and <STRONG>\0</STRONG> for null.
-       (<STRONG>\0</STRONG> will produce \200, which does not terminate  a  string
-       but behaves as a null character on most terminals, provid-
-       ing CS7 is specified.  See <STRONG><A HREF="stty.1.html">stty(1)</A></STRONG>.)  Finally,  characters
-       may be given as three octal digits after a <STRONG>\</STRONG>.
+       backspace, form-feed, and space.  Other escapes include
+
+       <STRONG>o</STRONG>   <STRONG>\^</STRONG> for <STRONG>^</STRONG>,
+
+       <STRONG>o</STRONG>   <STRONG>\\</STRONG> for <STRONG>\</STRONG>,
+
+       <STRONG>o</STRONG>   <STRONG>\</STRONG>, for comma,
+
+       <STRONG>o</STRONG>   <STRONG>\:</STRONG> for <STRONG>:</STRONG>,
+
+       <STRONG>o</STRONG>   and <STRONG>\0</STRONG> for null.
+
+           <STRONG>\0</STRONG> will produce  \200,  which  does  not  terminate  a
+           string  but behaves as a null character on most termi-
+           nals, providing CS7 is specified.  See <STRONG>stty(1)</STRONG>.
+
+           The reason for this quirk is to maintain  binary  com-
+           patibility  of  the compiled terminfo files with other
+           implementations, e.g., the SVr4 systems,  which  docu-
+           ment  this.   Compiled  terminfo files use null-termi-
+           nated strings, with no lengths.  Modifying this  would
+           require a new binary format, which would not work with
+           other implementations.
+
+       Finally, characters may be given  as  three  octal  digits
+       after a <STRONG>\</STRONG>.
 
        A  delay  in  milliseconds may appear anywhere in a string
        capability, enclosed in $&lt;..&gt; brackets, as in  <STRONG>el</STRONG>=\EK$&lt;5&gt;,
        and  padding  characters  are supplied by <EM>tputs</EM> to provide
        this delay.  The delay must be a number with at  most  one
        decimal place of precision; it may be followed by suffixes
-       `*' or '/' or both.  A  `*'  indicates  that  the  padding
+       "*" or "/" or both.  A  "*"  indicates  that  the  padding
        required  is  proportional to the number of lines affected
        by the  operation,  and  the  amount  given  is  the  per-
        affected-unit  padding  required.   (In the case of insert
        character,  the  factor  is  still  the  number  of  <EM>lines</EM>
        affected.)   Normally,  padding  is advisory if the device
        has the <STRONG>xon</STRONG> capability; it is used  for  cost  computation
-       but  does not trigger delays.  A `/' suffix indicates that
+       but  does not trigger delays.  A "/" suffix indicates that
        the padding is mandatory and forces a delay of  the  given
        number  of  milliseconds  even on devices for which <STRONG>xon</STRONG> is
        present to indicate flow control.
@@ -1108,85 +1194,100 @@
        example, see the second <STRONG>ind</STRONG> in the example above.
 
 
-   <STRONG>Fetching</STRONG> <STRONG>Compiled</STRONG> <STRONG>Descriptions</STRONG>
-       If the environment variable TERMINFO is set, it is  inter-
-       preted  as the pathname of a directory containing the com-
-       piled description you are working on.  Only that directory
-       is searched.
+</PRE>
+<H3><a name="h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></H3><PRE>
+       The <STRONG>ncurses</STRONG> library searches for terminal descriptions  in
+       several places.  It uses only the first description found.
+       The library has a compiled-in list  of  places  to  search
+       which  can be overridden by environment variables.  Before
+       starting to search, <STRONG>ncurses</STRONG> eliminates duplicates  in  its
+       search list.
 
-       If  TERMINFO  is  not set, the <STRONG>ncurses</STRONG> version of the ter-
-       minfo reader code  will  instead  look  in  the  directory
-       <STRONG>$HOME/.terminfo</STRONG>  for  a compiled description.  If it fails
-       to find one  there,  and  the  environment  variable  TER-
-       MINFO_DIRS  is set, it will interpret the contents of that
-       variable as a list of colon- separated directories  to  be
-       searched  (an  empty  entry is interpreted as a command to
-       search <EM>/usr/share/terminfo</EM>).  If no description  is  found
-       in  any of the TERMINFO_DIRS directories, the fetch fails.
+       <STRONG>o</STRONG>   If  the  environment  variable  TERMINFO is set, it is
+           interpreted as the pathname of a directory  containing
+           the  compiled  description  you  are working on.  Only
+           that directory is searched.
 
-       If neither TERMINFO nor TERMINFO_DIRS  is  set,  the  last
-       place   tried  will  be  the  system  terminfo  directory,
-       <EM>/usr/share/terminfo</EM>.
+       <STRONG>o</STRONG>   If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead  look  in
+           the  directory <STRONG>$HOME/.terminfo</STRONG> for a compiled descrip-
+           tion.
 
-       (Neither the  <STRONG>$HOME/.terminfo</STRONG>  lookups  nor  TERMINFO_DIRS
-       extensions   are  supported  under  stock  System  V  ter-
-       minfo/curses.)
+       <STRONG>o</STRONG>   Next, if the  environment  variable  TERMINFO_DIRS  is
+           set, <STRONG>ncurses</STRONG> will interpret the contents of that vari-
+           able as a  list  of  colon-separated  directories  (or
+           database files) to be searched.
+
+           An  empty directory name (i.e., if the variable begins
+           or ends with a colon, or contains adjacent colons)  is
+           interpreted  as  the  system  location <EM>/usr/share/ter-</EM>
+           <EM>minfo</EM>.
+
+       <STRONG>o</STRONG>   Finally, <STRONG>ncurses</STRONG> searches these compiled-in locations:
+
+           <STRONG>o</STRONG>   a          list           of           directories
+               (/usr/local/ncurses/share/terminfo:/usr/share/ter-
+               minfo), and
+
+           <STRONG>o</STRONG>   the system terminfo directory, <EM>/usr/share/terminfo</EM>
+               (the compiled-in default).
 
 
-   <STRONG>Preparing</STRONG> <STRONG>Descriptions</STRONG>
-       We now outline how to prepare descriptions  of  terminals.
-       The  most  effective way to prepare a terminal description
-       is by imitating the description of a similar  terminal  in
-       <EM>terminfo</EM>  and  to  build up a description gradually, using
+</PRE>
+<H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE>
+       We  now  outline how to prepare descriptions of terminals.
+       The most effective way to prepare a  terminal  description
+       is  by  imitating the description of a similar terminal in
+       <EM>terminfo</EM> and to build up a  description  gradually,  using
        partial descriptions with <EM>vi</EM> or some other screen-oriented
-       program  to  check that they are correct.  Be aware that a
+       program to check that they are correct.  Be aware  that  a
        very unusual terminal may expose deficiencies in the abil-
-       ity  of  the  <EM>terminfo</EM>  file to describe it or bugs in the
+       ity of the <EM>terminfo</EM> file to describe it  or  bugs  in  the
        screen-handling code of the test program.
 
-       To get the padding for insert line right (if the  terminal
+       To  get the padding for insert line right (if the terminal
        manufacturer did not document it) a severe test is to edit
-       a large file at 9600 baud, delete 16 or so lines from  the
-       middle  of  the screen, then hit the `u' key several times
-       quickly.  If the terminal messes up, more padding is  usu-
-       ally  needed.  A similar test can be used for insert char-
+       a  large file at 9600 baud, delete 16 or so lines from the
+       middle of the screen, then hit the "u" key  several  times
+       quickly.   If the terminal messes up, more padding is usu-
+       ally needed.  A similar test can be used for insert  char-
        acter.
 
 
-   <STRONG>Basic</STRONG> <STRONG>Capabilities</STRONG>
-       The number of columns on each line  for  the  terminal  is
-       given  by the <STRONG>cols</STRONG> numeric capability.  If the terminal is
-       a CRT, then the number of lines on the screen is given  by
+</PRE>
+<H3><a name="h3-Basic-Capabilities">Basic Capabilities</a></H3><PRE>
+       The  number  of  columns  on each line for the terminal is
+       given by the <STRONG>cols</STRONG> numeric capability.  If the terminal  is
+       a  CRT, then the number of lines on the screen is given by
        the <STRONG>lines</STRONG> capability.  If the terminal wraps around to the
-       beginning of the next line when it reaches the right  mar-
+       beginning  of the next line when it reaches the right mar-
        gin, then it should have the <STRONG>am</STRONG> capability.  If the termi-
-       nal can clear its screen, leaving the cursor in  the  home
-       position,  then this is given by the <STRONG>clear</STRONG> string capabil-
-       ity.  If the terminal overstrikes (rather than clearing  a
-       position  when  a character is struck over) then it should
-       have the <STRONG>os</STRONG> capability.  If the  terminal  is  a  printing
-       terminal,  with no soft copy unit, give it both <STRONG>hc</STRONG> and <STRONG>os</STRONG>.
-       (<STRONG>os</STRONG> applies to storage scope terminals, such as  TEKTRONIX
-       4010  series, as well as hard copy and APL terminals.)  If
+       nal  can  clear its screen, leaving the cursor in the home
+       position, then this is given by the <STRONG>clear</STRONG> string  capabil-
+       ity.   If the terminal overstrikes (rather than clearing a
+       position when a character is struck over) then  it  should
+       have  the  <STRONG>os</STRONG>  capability.   If the terminal is a printing
+       terminal, with no soft copy unit, give it both <STRONG>hc</STRONG> and  <STRONG>os</STRONG>.
+       (<STRONG>os</STRONG>  applies to storage scope terminals, such as TEKTRONIX
+       4010 series, as well as hard copy and APL terminals.)   If
        there is a code to move the cursor to the left edge of the
        current row, give this as <STRONG>cr</STRONG>.  (Normally this will be car-
-       riage return, control M.)  If there is a code  to  produce
+       riage  return,  control M.)  If there is a code to produce
        an audible signal (bell, beep, etc) give this as <STRONG>bel</STRONG>.
 
-       If  there is a code to move the cursor one position to the
-       left (such as backspace) that capability should  be  given
-       as  <STRONG>cub1</STRONG>.   Similarly, codes to move to the right, up, and
+       If there is a code to move the cursor one position to  the
+       left  (such  as backspace) that capability should be given
+       as <STRONG>cub1</STRONG>.  Similarly, codes to move to the right,  up,  and
        down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and <STRONG>cud1</STRONG>.  These local
-       cursor  motions  should not alter the text they pass over,
-       for example, you would not normally use  `<STRONG>cuf1</STRONG>= '  because
+       cursor motions should not alter the text they  pass  over,
+       for  example,  you would not normally use "<STRONG>cuf1</STRONG>= " because
        the space would erase the character moved over.
 
-       A  very  important  point  here  is  that the local cursor
-       motions encoded in <EM>terminfo</EM> are undefined at the left  and
-       top  edges  of  a  CRT  terminal.   Programs  should never
-       attempt to backspace around the left edge,  unless  <STRONG>bw</STRONG>  is
+       A very important point  here  is  that  the  local  cursor
+       motions  encoded in <EM>terminfo</EM> are undefined at the left and
+       top edges  of  a  CRT  terminal.   Programs  should  never
+       attempt  to  backspace  around the left edge, unless <STRONG>bw</STRONG> is
        given, and never attempt to go up locally off the top.  In
-       order to scroll text up, a program will go to  the  bottom
+       order  to  scroll text up, a program will go to the bottom
        left corner of the screen and send the <STRONG>ind</STRONG> (index) string.
 
        To scroll text down, a program goes to the top left corner
@@ -1222,20 +1323,21 @@
        described as
 
        33|tty33|tty|model 33 teletype,
-            bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,
+               bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,
 
        while the Lear Siegler ADM-3 is described as
 
        adm3|3|lsi adm3,
-            am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
-            ind=^J, lines#24,
+               am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
+               ind=^J, lines#24,
 
 
-   <STRONG>Parameterized</STRONG> <STRONG>Strings</STRONG>
+</PRE>
+<H3><a name="h3-Parameterized-Strings">Parameterized Strings</a></H3><PRE>
        Cursor addressing and other strings  requiring  parameters
        in  the  terminal  are described by a parameterized string
-       capability, with <STRONG><A HREF="printf.3.html">printf(3)</A></STRONG> like escapes  <STRONG>%x</STRONG>  in  it.   For
-       example,  to  address  the  cursor,  the <STRONG>cup</STRONG> capability is
+       capability, with <EM>printf</EM>-like escapes such  as  <EM>%x</EM>  in  it.
+       For  example, to address the cursor, the <STRONG>cup</STRONG> capability is
        given, using two parameters: the row and column to address
        to.  (Rows and columns are numbered from zero and refer to
        the physical screen visible to the user, not to any unseen
@@ -1252,32 +1354,31 @@
 
        The <STRONG>%</STRONG> encodings have the following meanings:
 
+       <STRONG>%%</STRONG>   outputs "%"
 
-       %%   outputs `%'
-
-       %<EM>[[</EM>:<EM>]flags][width[.precision]][</EM>doxXs<EM>]</EM>
-            as in <STRONG>printf</STRONG>, flags are [-+#] and space.  Use  a  `:'
-            to  allow the next character to be a `-' flag, avoid-
+       <STRONG>%</STRONG><EM>[[</EM>:<EM>]flags][width[.precision]][</EM><STRONG>doxXs</STRONG><EM>]</EM>
+            as in <STRONG>printf</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>.  Use  a  ":"
+            to  allow the next character to be a "-" flag, avoid-
             ing interpreting "%-" as an operator.
 
        %c   print pop() like %c in <STRONG>printf</STRONG>
 
-       %s   print pop() like %s in <STRONG>printf</STRONG>
+       <STRONG>%s</STRONG>   print pop() like %s in <STRONG>printf</STRONG>
 
-       %p[1-9]
+       <STRONG>%p</STRONG><EM>[1-9]</EM>
             push <EM>i</EM>'th parameter
 
-       %P[a-z]
-            set dynamic variable [a-z] to pop()
+       <STRONG>%P</STRONG><EM>[a-z]</EM>
+            set dynamic variable <EM>[a-z]</EM> to pop()
 
-       %g[a-z]
-            get dynamic variable [a-z] and push it
+       <STRONG>%g</STRONG><EM>[a-z]/</EM>
+            get dynamic variable <EM>[a-z]</EM> and push it
 
-       %P[A-Z]
-            set static variable [a-z] to pop()
+       <STRONG>%P</STRONG><EM>[A-Z]</EM>
+            set static variable <EM>[a-z]</EM> to <EM>pop()</EM>
 
-       %g[A-Z]
-            get static variable [a-z] and push it
+       <STRONG>%g</STRONG><EM>[A-Z]</EM>
+            get static variable <EM>[a-z]</EM> and push it
 
             The terms  "static"  and  "dynamic"  are  misleading.
             Historically,  these are simply two different sets of
@@ -1286,59 +1387,59 @@
             other implementations.  Relying on it will  adversely
             impact portability to other implementations.
 
-       %'<EM>c</EM>' char constant <EM>c</EM>
+       <STRONG>%'</STRONG><EM>c</EM><STRONG>'</STRONG> char constant <EM>c</EM>
 
-       %{<EM>nn</EM>}
+       <STRONG>%{</STRONG><EM>nn</EM><STRONG>}</STRONG>
             integer constant <EM>nn</EM>
 
-       %l   push strlen(pop)
+       <STRONG>%l</STRONG>   push strlen(pop)
 
-       %+ %- %* %/ %m
-            arithmetic (%m is mod): push(pop() op pop())
+       <STRONG>%+</STRONG>, <STRONG>%-</STRONG>, <STRONG>%*</STRONG>, <STRONG>%/</STRONG>, <STRONG>%m</STRONG>
+            arithmetic (%m is mod): <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
 
-       %&amp; %| %^
-            bit operations (AND, OR and exclusive-OR): push(pop()
-            op pop())
+       <STRONG>%&amp;</STRONG>, <STRONG>%|</STRONG>, <STRONG>%^</STRONG>
+            bit operations (AND, OR and exclusive-OR): <EM>push(pop()</EM>
+            <EM>op</EM> <EM>pop())</EM>
 
-       %= %&gt; %&lt;
-            logical operations: push(pop() op pop())
+       <STRONG>%=</STRONG>, <STRONG>%&gt;</STRONG>, <STRONG>%&lt;</STRONG>
+            logical operations: <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
 
-       %A, %O
+       <STRONG>%A</STRONG>, <STRONG>%O</STRONG>
             logical AND and OR operations (for conditionals)
 
-       %! %~
+       <STRONG>%!</STRONG>, <STRONG>%~</STRONG>
             unary  operations  (logical  and   bit   complement):
             push(op pop())
 
-       %i   add 1 to first two parameters (for ANSI terminals)
+       <STRONG>%i</STRONG>   add 1 to first two parameters (for ANSI terminals)
 
-       %? <EM>expr</EM> %t <EM>thenpart</EM> %e <EM>elsepart</EM> %;
-            This  forms  an  if-then-else.   The  %e  <EM>elsepart</EM> is
-            optional.  Usually the %? <EM>expr</EM> part  pushes  a  value
-            onto  the stack, and %t pops it from the stack, test-
+       <STRONG>%?</STRONG> <EM>expr</EM> <STRONG>%t</STRONG> <EM>thenpart</EM> <STRONG>%e</STRONG> <EM>elsepart</EM> <STRONG>%;</STRONG>
+            This  forms  an  if-then-else.   The  <STRONG>%e</STRONG>  <EM>elsepart</EM> is
+            optional.  Usually the <STRONG>%?</STRONG> <EM>expr</EM> part  pushes  a  value
+            onto  the stack, and <STRONG>%t</STRONG> pops it from the stack, test-
             ing if it is nonzero (true).  If it is zero  (false),
-            control passes to the %e (else) part.
+            control passes to the <STRONG>%e</STRONG> (else) part.
 
             It is possible to form else-if's a la Algol 68:
-            %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;
+            <STRONG>%?</STRONG> c1 <STRONG>%t</STRONG> b1 <STRONG>%e</STRONG> c2 <STRONG>%t</STRONG> b2 <STRONG>%e</STRONG> c3 <STRONG>%t</STRONG> b3 <STRONG>%e</STRONG> c4 <STRONG>%t</STRONG> b4 <STRONG>%e</STRONG> <STRONG>%;</STRONG>
 
             where ci are conditions, bi are bodies.
 
             Use the <STRONG>-f</STRONG> option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG> to see the struc-
-            ture  of  if-the-else's.  Some strings, e.g., <STRONG>sgr</STRONG> can
+            ture of if-then-else's.  Some strings, e.g., <STRONG>sgr</STRONG>  can
             be very complicated when written on one line.  The <STRONG>-f</STRONG>
-            option  splits  the  string into lines with the parts
+            option splits the string into lines  with  the  parts
             indented.
 
        Binary operations are in postfix form with the operands in
-       the  usual  order.   That  is,  to  get  x-5 one would use
-       "%gx%{5}%-".  %P and %g variables  are  persistent  across
+       the usual order.  That  is,  to  get  x-5  one  would  use
+       "%gx%{5}%-".   <STRONG>%P</STRONG>  and  <STRONG>%g</STRONG> variables are persistent across
        escape-string evaluations.
 
        Consider the HP2645, which, to get to row 3 and column 12,
-       needs to be sent \E&amp;a12c03Y  padded  for  6  milliseconds.
-       Note  that  the  order of the rows and columns is inverted
-       here, and that the row and column are printed as two  dig-
+       needs  to  be  sent  \E&amp;a12c03Y padded for 6 milliseconds.
+       Note that the order of the rows and  columns  is  inverted
+       here,  and that the row and column are printed as two dig-
        its.  Thus its <STRONG>cup</STRONG> capability is "cup=6\E&amp;%p2%2dc%p1%2dY".
 
        The Microterm ACT-IV needs the current row and column sent
@@ -1354,7 +1455,7 @@
 
        A final example is the LSI ADM-3a, which uses row and col-
        umn  offset  by  a  blank  character,  thus  "cup=\E=%p1%'
-       '%+%c%p2%'  '%+%c".   After sending `\E=', this pushes the
+       '%+%c%p2%'  '%+%c".   After sending "\E=", this pushes the
        first parameter, pushes the ASCII value for a space  (32),
        adds  them  (pushing  the sum on the stack in place of the
        two previous values) and outputs that value as  a  charac-
@@ -1362,7 +1463,8 @@
        More complex arithmetic is possible using the stack.
 
 
-   <STRONG>Cursor</STRONG> <STRONG>Motions</STRONG>
+</PRE>
+<H3><a name="h3-Cursor-Motions">Cursor Motions</a></H3><PRE>
        If the terminal has a fast way to home the cursor (to very
        upper  left  corner  of  screen) then this can be given as
        <STRONG>home</STRONG>; similarly a fast way of getting to the  lower  left-
@@ -1380,12 +1482,12 @@
        <STRONG>hpa</STRONG> (horizontal position absolute) and <STRONG>vpa</STRONG> (vertical posi-
        tion absolute).  Sometimes these are shorter than the more
        general two parameter sequence (as with  the  hp2645)  and
-       can   be   used  in  preference  to  <STRONG>cup</STRONG>.   If  there  are
-       parameterized local motions (e.g., move <EM>n</EM>  spaces  to  the
-       right) these can be given as <STRONG>cud</STRONG>, <STRONG>cub</STRONG>, <STRONG>cuf</STRONG>, and <STRONG>cuu</STRONG> with a
-       single parameter  indicating  how  many  spaces  to  move.
-       These  are  primarily useful if the terminal does not have
-       <STRONG>cup</STRONG>, such as the TEKTRONIX 4025.
+       can be used in preference to <STRONG>cup</STRONG>.  If there are parameter-
+       ized local motions (e.g., move  <EM>n</EM>  spaces  to  the  right)
+       these can be given as <STRONG>cud</STRONG>, <STRONG>cub</STRONG>, <STRONG>cuf</STRONG>, and <STRONG>cuu</STRONG> with a single
+       parameter indicating how many spaces to move.   These  are
+       primarily  useful  if the terminal does not have <STRONG>cup</STRONG>, such
+       as the TEKTRONIX 4025.
 
        If the terminal needs to be in a special mode when running
        a program that uses these capabilities, the codes to enter
@@ -1402,7 +1504,8 @@
        <STRONG>rmcup</STRONG>), specify <STRONG>nrrmc</STRONG>.
 
 
-   <STRONG>Area</STRONG> <STRONG>Clears</STRONG>
+</PRE>
+<H3><a name="h3-Area-Clears">Area Clears</a></H3><PRE>
        If the terminal can clear from the current position to the
        end  of  the  line,  leaving  the cursor where it is, this
        should be given as <STRONG>el</STRONG>.  If the terminal can clear from the
@@ -1415,7 +1518,8 @@
        number of lines, if a true <STRONG>ed</STRONG> is not available.)
 
 
-   <STRONG>Insert/delete</STRONG> <STRONG>line</STRONG> <STRONG>and</STRONG> <STRONG>vertical</STRONG> <STRONG>motions</STRONG>
+</PRE>
+<H3><a name="h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></H3><PRE>
        If  the terminal can open a new blank line before the line
        where the cursor is, this should be given as <STRONG>il1</STRONG>; this  is
        done  only  from the first position of a line.  The cursor
@@ -1478,7 +1582,8 @@
        bring down non-blank lines.
 
 
-   <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG>
+</PRE>
+<H3><a name="h3-Insert_Delete-Character">Insert/Delete Character</a></H3><PRE>
        There are two basic kinds of  intelligent  terminals  with
        respect  to insert/delete character which can be described
        using <EM>terminfo.</EM>  The most common  insert/delete  character
@@ -1488,34 +1593,36 @@
        Elmer Owl, make a distinction between  typed  and  untyped
        blanks  on  the  screen, shifting upon an insert or delete
        only to an untyped blank on the  screen  which  is  either
-       eliminated,  or  expanded  to two untyped blanks.  You can
-       determine the kind of terminal you have  by  clearing  the
-       screen  and  then typing text separated by cursor motions.
-       Type "abc    def" using local cursor motions (not  spaces)
-       between the "abc" and the "def".  Then position the cursor
-       before the "abc" and put the terminal in insert mode.   If
-       typing  characters  causes  the  rest of the line to shift
-       rigidly and characters to fall off the end, then your ter-
-       minal  does  not  distinguish  between  blanks and untyped
-       positions.  If the "abc" shifts over to  the  "def"  which
-       then  move together around the end of the current line and
-       onto the next as you insert, you have the second  type  of
-       terminal,  and should give the capability <STRONG>in</STRONG>, which stands
-       for "insert null".  While these are two logically separate
-       attributes  (one  line  versus multi-line insert mode, and
-       special treatment of untyped spaces) we have seen no  ter-
-       minals whose insert mode cannot be described with the sin-
-       gle attribute.
+       eliminated, or expanded to two untyped blanks.
+
+       You  can determine the kind of terminal you have by clear-
+       ing the screen and then typing text  separated  by  cursor
+       motions.   Type  "abc    def"  using  local cursor motions
+       (not spaces) between the "abc" and the "def".  Then  posi-
+       tion  the  cursor before the "abc" and put the terminal in
+       insert mode.  If typing characters causes the rest of  the
+       line  to shift rigidly and characters to fall off the end,
+       then your terminal does not distinguish between blanks and
+       untyped  positions.  If the "abc" shifts over to the "def"
+       which then move together around the  end  of  the  current
+       line  and onto the next as you insert, you have the second
+       type of terminal, and should give the capability <STRONG>in</STRONG>, which
+       stands for "insert null".
+
+       While  these  are  two  logically separate attributes (one
+       line versus multi-line insert mode, and special  treatment
+       of  untyped spaces) we have seen no terminals whose insert
+       mode cannot be described with the single attribute.
 
        Terminfo can describe both terminals which have an  insert
        mode, and terminals which send a simple sequence to open a
        blank position on the current  line.   Give  as  <STRONG>smir</STRONG>  the
        sequence  to  get  into  insert  mode.   Give  as <STRONG>rmir</STRONG> the
        sequence to leave insert  mode.   Now  give  as  <STRONG>ich1</STRONG>  any
-       sequence  needed  to  be  sent  just  before  sending  the
-       character to be inserted.   Most  terminals  with  a  true
-       insert  mode  will  not  give <STRONG>ich1</STRONG>; terminals which send a
-       sequence to open a screen position should give it here.
+       sequence needed to be sent just before sending the charac-
+       ter to be inserted.  Most terminals  with  a  true  insert
+       mode  will  not give <STRONG>ich1</STRONG>; terminals which send a sequence
+       to open a screen position should give it here.
 
        If your terminal has both, insert mode is usually  prefer-
        able  to  <STRONG>ich1</STRONG>.   Technically,  you  should  not give both
@@ -1535,15 +1642,15 @@
        milliseconds  in <STRONG>ip</STRONG> (a string option).  Any other sequence
        which may need to be sent after  an  insert  of  a  single
        character may also be given in <STRONG>ip</STRONG>.  If your terminal needs
-       both to be placed into an `insert mode' and a special code
+       both to be placed into an "insert mode" and a special code
        to  precede  each  inserted character, then both <STRONG>smir</STRONG>/<STRONG>rmir</STRONG>
        and <STRONG>ich1</STRONG> can be given, and both will  be  used.   The  <STRONG>ich</STRONG>
        capability, with one parameter, <EM>n</EM>, will repeat the effects
        of <STRONG>ich1</STRONG> <EM>n</EM> times.
 
        If padding is necessary between characters typed while not
-       in  insert  mode,  give  this  as a number of milliseconds
-       padding in <STRONG>rmp</STRONG>.
+       in insert mode, give this as a number of milliseconds pad-
+       ding in <STRONG>rmp</STRONG>.
 
        It is occasionally  necessary  to  move  around  while  in
        insert  mode  to delete characters on the same line (e.g.,
@@ -1565,7 +1672,8 @@
        with one parameter.
 
 
-   <STRONG>Highlighting,</STRONG> <STRONG>Underlining,</STRONG> <STRONG>and</STRONG> <STRONG>Visible</STRONG> <STRONG>Bells</STRONG>
+</PRE>
+<H3><a name="h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE>
        If  your  terminal  has  one  or  more  kinds  of  display
        attributes, these can be represented in a number  of  dif-
        ferent ways.  You should choose one display form as <EM>stand-</EM>
@@ -1575,205 +1683,234 @@
        plus  half-bright  is  good, or reverse video alone.)  The
        sequences to enter and exit standout  mode  are  given  as
        <STRONG>smso</STRONG>  and  <STRONG>rmso</STRONG>, respectively.  If the code to change into
-       or out of standout mode  leaves  one  or  even  two  blank
-       spaces  on the screen, as the TVI 912 and Teleray 1061 do,
+       or out of standout mode leaves one or even two blank  spa-
+       ces  on  the  screen,  as the TVI 912 and Teleray 1061 do,
        then <STRONG>xmc</STRONG> should be given to tell how many spaces are left.
 
-       Codes  to  begin  underlining  and  end underlining can be
-       given as <STRONG>smul</STRONG> and <STRONG>rmul</STRONG> respectively.  If the terminal  has
-       a  code  to  underline  the current character and move the
+       Codes to begin underlining  and  end  underlining  can  be
+       given  as <STRONG>smul</STRONG> and <STRONG>rmul</STRONG> respectively.  If the terminal has
+       a code to underline the current  character  and  move  the
        cursor one space to the right, such as the Microterm Mime,
        this can be given as <STRONG>uc</STRONG>.
 
-       Other  capabilities  to  enter  various highlighting modes
-       include <STRONG>blink</STRONG> (blinking) <STRONG>bold</STRONG> (bold or extra  bright)  <STRONG>dim</STRONG>
-       (dim  or  half-bright)  <STRONG>invis</STRONG> (blanking or invisible text)
-       <STRONG>prot</STRONG> (protected) <STRONG>rev</STRONG> (reverse video) <STRONG>sgr0</STRONG>  (turn  off  <EM>all</EM>
-       attribute  modes)  <STRONG>smacs</STRONG>  (enter  alternate  character set
-       mode) and  <STRONG>rmacs</STRONG>  (exit  alternate  character  set  mode).
-       Turning  on  any of these modes singly may or may not turn
+       Other capabilities to  enter  various  highlighting  modes
+       include  <STRONG>blink</STRONG>  (blinking) <STRONG>bold</STRONG> (bold or extra bright) <STRONG>dim</STRONG>
+       (dim or half-bright) <STRONG>invis</STRONG> (blanking  or  invisible  text)
+       <STRONG>prot</STRONG>  (protected)  <STRONG>rev</STRONG>  (reverse video) <STRONG>sgr0</STRONG> (turn off <EM>all</EM>
+       attribute modes)  <STRONG>smacs</STRONG>  (enter  alternate  character  set
+       mode)  and  <STRONG>rmacs</STRONG>  (exit  alternate  character  set mode).
+       Turning on any of these modes singly may or may  not  turn
        off other modes.
 
-       If there is a sequence to set  arbitrary  combinations  of
-       modes,  this should be given as <STRONG>sgr</STRONG> (set attributes), tak-
-       ing 9 parameters.  Each parameter is either 0 or  nonzero,
+       If  there  is  a sequence to set arbitrary combinations of
+       modes, this should be given as <STRONG>sgr</STRONG> (set attributes),  tak-
+       ing  9 parameters.  Each parameter is either 0 or nonzero,
        as the corresponding attribute is on or off.  The 9 param-
-       eters are, in order: standout, underline, reverse,  blink,
-       dim,  bold,  blank, protect, alternate character set.  Not
-       all modes need be supported by <STRONG>sgr</STRONG>, only those  for  which
+       eters  are, in order: standout, underline, reverse, blink,
+       dim, bold, blank, protect, alternate character  set.   Not
+       all  modes  need be supported by <STRONG>sgr</STRONG>, only those for which
        corresponding separate attribute commands exist.
 
        For example, the DEC vt220 supports most of the modes:
 
+        <STRONG>tparm</STRONG> <STRONG>parameter</STRONG>      <STRONG>attribute</STRONG>        <STRONG>escape</STRONG> <STRONG>sequence</STRONG>
 
-           <STRONG>tparm</STRONG> <STRONG>parameter</STRONG>   <STRONG>attribute</STRONG>    <STRONG>escape</STRONG> <STRONG>sequence</STRONG>
+        none                 none             \E[0m
+        p1                   standout         \E[0;1;7m
+        p2                   underline        \E[0;4m
+        p3                   reverse          \E[0;7m
+        p4                   blink            \E[0;5m
+        p5                   dim              not available
+        p6                   bold             \E[0;1m
+        p7                   invis            \E[0;8m
+        p8                   protect          not used
+        p9                   altcharset       ^O (off) ^N (on)
 
-           none              none         \E[0m
-           p1                standout     \E[0;1;7m
-           p2                underline    \E[0;4m
-           p3                reverse      \E[0;7m
-           p4                blink        \E[0;5m
-           p5                dim          not available
-           p6                bold         \E[0;1m
-           p7                invis        \E[0;8m
-           p8                protect      not used
-           p9                altcharset   ^O (off) ^N (on)
-
-       We  begin each escape sequence by turning off any existing
-       modes, since there is no quick way  to  determine  whether
+       We begin each escape sequence by turning off any  existing
+       modes,  since  there  is no quick way to determine whether
        they are active.  Standout is set up to be the combination
-       of reverse and bold.  The vt220  terminal  has  a  protect
-       mode,  though  it  is  not commonly used in sgr because it
-       protects characters on the screen  from  the  host's  era-
-       sures.   The  altcharset mode also is different in that it
-       is either ^O or ^N, depending on whether it is off or  on.
-       If  all  modes  are  turned  on, the resulting sequence is
+       of  reverse  and  bold.   The vt220 terminal has a protect
+       mode, though it is not commonly used  in  sgr  because  it
+       protects  characters  on  the  screen from the host's era-
+       sures.  The altcharset mode also is different in  that  it
+       is  either ^O or ^N, depending on whether it is off or on.
+       If all modes are turned  on,  the  resulting  sequence  is
        \E[0;1;4;5;7;8m^N.
 
-       Some sequences are common to different modes.   For  exam-
-       ple,  ;7  is output when either p1 or p3 is true, that is,
+       Some  sequences  are common to different modes.  For exam-
+       ple, ;7 is output when either p1 or p3 is true,  that  is,
        if either standout or reverse modes are turned on.
 
-       Writing out the above sequences, along with  their  depen-
+       Writing  out  the above sequences, along with their depen-
        dencies yields
 
+      <STRONG>sequence</STRONG>             <STRONG>when</STRONG> <STRONG>to</STRONG> <STRONG>output</STRONG>      <STRONG>terminfo</STRONG> <STRONG>translation</STRONG>
 
-         <STRONG>sequence</STRONG>    <STRONG>when</STRONG> <STRONG>to</STRONG> <STRONG>output</STRONG>     <STRONG>terminfo</STRONG> <STRONG>translation</STRONG>
-
-         \E[0       always              \E[0
-         ;1         if p1 or p6         %?%p1%p6%|%t;1%;
-         ;4         if p2               %?%p2%|%t;4%;
-         ;5         if p4               %?%p4%|%t;5%;
-
-         ;7         if p1 or p3         %?%p1%p3%|%t;7%;
-         ;8         if p7               %?%p7%|%t;8%;
-         m          always              m
-         ^N or ^O   if p9 ^N, else ^O   %?%p9%t^N%e^O%;
+      \E[0                 always              \E[0
+      ;1                   if p1 or p6         %?%p1%p6%|%t;1%;
+      ;4                   if p2               %?%p2%|%t;4%;
+      ;5                   if p4               %?%p4%|%t;5%;
+      ;7                   if p1 or p3         %?%p1%p3%|%t;7%;
+      ;8                   if p7               %?%p7%|%t;8%;
+      m                    always              m
+      ^N or ^O             if p9 ^N, else ^O   %?%p9%t^N%e^O%;
 
        Putting this all together into the sgr sequence gives:
 
-           sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;
-               %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
+           sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%;
+               %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
 
-       Remember  that  if  you specify sgr, you must also specify
-       sgr0.  Also, some implementations rely on sgr being  given
-       if  sgr0  is, Not all terminfo entries necessarily have an
-       sgr string, however.  Many terminfo  entries  are  derived
-       from  termcap  entries which have no sgr string.  The only
-       drawback to adding an sgr  string  is  that  termcap  also
-       assumes  that  sgr0  does not exit alternate character set
+       Remember that if you specify sgr, you  must  also  specify
+       sgr0.   Also, some implementations rely on sgr being given
+       if sgr0 is, Not all terminfo entries necessarily  have  an
+       sgr  string,  however.   Many terminfo entries are derived
+       from termcap entries which have no sgr string.   The  only
+       drawback  to  adding  an  sgr  string is that termcap also
+       assumes that sgr0 does not exit  alternate  character  set
        mode.
 
-       Terminals with the ``magic cookie'' glitch  (<STRONG>xmc</STRONG>)  deposit
-       special   ``cookies''   when   they  receive  mode-setting
-       sequences, which affect the display algorithm rather  than
-       having  extra  bits  for  each character.  Some terminals,
-       such as the HP 2621,  automatically  leave  standout  mode
-       when  they  move to a new line or the cursor is addressed.
-       Programs using standout mode  should  exit  standout  mode
-       before  moving the cursor or sending a newline, unless the
-       <STRONG>msgr</STRONG> capability, asserting that it  is  safe  to  move  in
+       Terminals  with  the  "magic  cookie" glitch (<STRONG>xmc</STRONG>) deposit
+       special   "cookies"   when   they   receive   mode-setting
+       sequences,  which affect the display algorithm rather than
+       having extra bits for  each  character.   Some  terminals,
+       such  as  the  HP  2621, automatically leave standout mode
+       when they move to a new line or the cursor  is  addressed.
+       Programs  using  standout  mode  should exit standout mode
+       before moving the cursor or sending a newline, unless  the
+       <STRONG>msgr</STRONG>  capability,  asserting  that  it  is safe to move in
        standout mode, is present.
 
-       If  the terminal has a way of flashing the screen to indi-
-       cate an error quietly (a bell replacement) then  this  can
+       If the terminal has a way of flashing the screen to  indi-
+       cate  an  error quietly (a bell replacement) then this can
        be given as <STRONG>flash</STRONG>; it must not move the cursor.
 
-       If  the  cursor  needs to be made more visible than normal
+       If the cursor needs to be made more  visible  than  normal
        when it is not on the bottom line (to make, for example, a
-       non-blinking  underline  into  an  easier to find block or
+       non-blinking underline into an easier  to  find  block  or
        blinking underline) give this sequence as <STRONG>cvvis</STRONG>.  If there
-       is  a  way  to  make the cursor completely invisible, give
+       is a way to make the  cursor  completely  invisible,  give
        that as <STRONG>civis</STRONG>.  The capability <STRONG>cnorm</STRONG> should be given which
        undoes the effects of both of these modes.
 
        If your terminal correctly generates underlined characters
-       (with no special codes needed) even  though  it  does  not
-       overstrike,  then you should give the capability <STRONG>ul</STRONG>.  If a
-       character overstriking another leaves both  characters  on
+       (with  no  special  codes  needed) even though it does not
+       overstrike, then you should give the capability <STRONG>ul</STRONG>.  If  a
+       character  overstriking  another leaves both characters on
        the screen, specify the capability <STRONG>os</STRONG>.  If overstrikes are
-       erasable with a blank, then this should  be  indicated  by
+       erasable  with  a  blank, then this should be indicated by
        giving <STRONG>eo</STRONG>.
 
 
-   <STRONG>Keypad</STRONG> <STRONG>and</STRONG> <STRONG>Function</STRONG> <STRONG>Keys</STRONG>
+</PRE>
+<H3><a name="h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></H3><PRE>
        If the terminal has a keypad that transmits codes when the
-       keys are pressed, this information  can  be  given.   Note
+       keys  are  pressed,  this  information can be given.  Note
        that it is not possible to handle terminals where the key-
        pad only works in local (this applies, for example, to the
-       unshifted  HP  2621  keys).   If  the keypad can be set to
-       transmit or not transmit, give these  codes  as  <STRONG>smkx</STRONG>  and
+       unshifted HP 2621 keys).  If the  keypad  can  be  set  to
+       transmit  or  not  transmit,  give these codes as <STRONG>smkx</STRONG> and
        <STRONG>rmkx</STRONG>.  Otherwise the keypad is assumed to always transmit.
+
        The codes sent by the left arrow, right arrow,  up  arrow,
        down  arrow,  and  home keys can be given as <STRONG>kcub1,</STRONG> <STRONG>kcuf1,</STRONG>
        <STRONG>kcuu1,</STRONG> <STRONG>kcud1,</STRONG> and <STRONG>khome</STRONG> respectively.  If there are  func-
        tion  keys  such  as f0, f1, ..., f10, the codes they send
        can be given as <STRONG>kf0,</STRONG> <STRONG>kf1,</STRONG> <STRONG>...,</STRONG> <STRONG>kf10</STRONG>.  If these  keys  have
        labels  other  than the default f0 through f10, the labels
-       can  be  given  as  <STRONG>lf0,</STRONG>  <STRONG>lf1,</STRONG>  <STRONG>...,</STRONG>  <STRONG>lf10</STRONG>.    The   codes
-       transmitted  by  certain  other special keys can be given:
-       <STRONG>kll</STRONG> (home down), <STRONG>kbs</STRONG> (backspace), <STRONG>ktbc</STRONG> (clear  all  tabs),
-       <STRONG>kctab</STRONG>  (clear  the  tab  stop in this column), <STRONG>kclr</STRONG> (clear
-       screen or  erase  key),  <STRONG>kdch1</STRONG>  (delete  character),  <STRONG>kdl1</STRONG>
-       (delete line), <STRONG>krmir</STRONG> (exit insert mode), <STRONG>kel</STRONG> (clear to end
-       of line), <STRONG>ked</STRONG> (clear to  end  of  screen),  <STRONG>kich1</STRONG>  (insert
-       character  or  enter insert mode), <STRONG>kil1</STRONG> (insert line), <STRONG>knp</STRONG>
-       (next  page),  <STRONG>kpp</STRONG>  (previous  page),  <STRONG>kind</STRONG>  (scroll  for-
-       ward/down), <STRONG>kri</STRONG> (scroll backward/up), <STRONG>khts</STRONG> (set a tab stop
-       in this column).  In addition, if the keypad has a 3 by  3
-       array  of  keys  including  the four arrow keys, the other
-       five keys can be given as <STRONG>ka1</STRONG>, <STRONG>ka3</STRONG>,  <STRONG>kb2</STRONG>,  <STRONG>kc1</STRONG>,  and  <STRONG>kc3</STRONG>.
-       These  keys are useful when the effects of a 3 by 3 direc-
-       tional pad are needed.
+       can be given as <STRONG>lf0,</STRONG> <STRONG>lf1,</STRONG> <STRONG>...,</STRONG> <STRONG>lf10</STRONG>.
 
-       Strings to program function keys can be  given  as  <STRONG>pfkey</STRONG>,
-       <STRONG>pfloc</STRONG>,  and <STRONG>pfx</STRONG>.  A string to program screen labels should
-       be specified as <STRONG>pln</STRONG>.  Each  of  these  strings  takes  two
-       parameters:  the function key number to program (from 0 to
-       10) and the string to program it with.  Function key  num-
-       bers  out  of  this  range may program undefined keys in a
-       terminal dependent manner.   The  difference  between  the
-       capabilities  is  that <STRONG>pfkey</STRONG> causes pressing the given key
-       to be the same as the user typing the given string;  <STRONG>pfloc</STRONG>
+       The codes transmitted by certain other special keys can be
+       given:
+
+       <STRONG>o</STRONG>   <STRONG>kll</STRONG> (home down),
+
+       <STRONG>o</STRONG>   <STRONG>kbs</STRONG> (backspace),
+
+       <STRONG>o</STRONG>   <STRONG>ktbc</STRONG> (clear all tabs),
+
+       <STRONG>o</STRONG>   <STRONG>kctab</STRONG> (clear the tab stop in this column),
+
+       <STRONG>o</STRONG>   <STRONG>kclr</STRONG> (clear screen or erase key),
+
+       <STRONG>o</STRONG>   <STRONG>kdch1</STRONG> (delete character),
+
+       <STRONG>o</STRONG>   <STRONG>kdl1</STRONG> (delete line),
+
+       <STRONG>o</STRONG>   <STRONG>krmir</STRONG> (exit insert mode),
+
+       <STRONG>o</STRONG>   <STRONG>kel</STRONG> (clear to end of line),
+
+       <STRONG>o</STRONG>   <STRONG>ked</STRONG> (clear to end of screen),
+
+       <STRONG>o</STRONG>   <STRONG>kich1</STRONG> (insert character or enter insert mode),
+
+       <STRONG>o</STRONG>   <STRONG>kil1</STRONG> (insert line),
+
+       <STRONG>o</STRONG>   <STRONG>knp</STRONG> (next page),
+
+       <STRONG>o</STRONG>   <STRONG>kpp</STRONG> (previous page),
+
+       <STRONG>o</STRONG>   <STRONG>kind</STRONG> (scroll forward/down),
+
+       <STRONG>o</STRONG>   <STRONG>kri</STRONG> (scroll backward/up),
+
+       <STRONG>o</STRONG>   <STRONG>khts</STRONG> (set a tab stop in this column).
+
+       In  addition,  if  the  keypad  has a 3 by 3 array of keys
+       including the four arrow keys, the other five keys can  be
+       given as <STRONG>ka1</STRONG>, <STRONG>ka3</STRONG>, <STRONG>kb2</STRONG>, <STRONG>kc1</STRONG>, and <STRONG>kc3</STRONG>.  These keys are use-
+       ful when the effects of a  3  by  3  directional  pad  are
+       needed.
+
+       Strings  to  program  function keys can be given as <STRONG>pfkey</STRONG>,
+       <STRONG>pfloc</STRONG>, and <STRONG>pfx</STRONG>.  A string to program screen labels  should
+       be  specified  as  <STRONG>pln</STRONG>.   Each  of these strings takes two
+       parameters: the function key number to program (from 0  to
+       10)  and the string to program it with.  Function key num-
+       bers out of this range may program  undefined  keys  in  a
+       terminal  dependent  manner.   The  difference between the
+       capabilities is that <STRONG>pfkey</STRONG> causes pressing the  given  key
+       to  be the same as the user typing the given string; <STRONG>pfloc</STRONG>
        causes the string to be executed by the terminal in local;
-       and <STRONG>pfx</STRONG> causes the string to be transmitted  to  the  com-
+       and  <STRONG>pfx</STRONG>  causes  the string to be transmitted to the com-
        puter.
 
        The capabilities <STRONG>nlab</STRONG>, <STRONG>lw</STRONG> and <STRONG>lh</STRONG> define the number of pro-
-       grammable screen labels and their width  and  height.   If
-       there  are  commands  to  turn the labels on and off, give
-       them in <STRONG>smln</STRONG> and <STRONG>rmln</STRONG>.  <STRONG>smln</STRONG> is normally output after  one
+       grammable  screen  labels  and their width and height.  If
+       there are commands to turn the labels  on  and  off,  give
+       them  in <STRONG>smln</STRONG> and <STRONG>rmln</STRONG>.  <STRONG>smln</STRONG> is normally output after one
        or more pln sequences to make sure that the change becomes
        visible.
 
 
-   <STRONG>Tabs</STRONG> <STRONG>and</STRONG> <STRONG>Initialization</STRONG>
-       If the terminal has hardware tabs, the command to  advance
-       to  the  next tab stop can be given as <STRONG>ht</STRONG> (usually control
-       I).  A ``back-tab'' command which moves  leftward  to  the
-       preceding tab stop can be given as <STRONG>cbt</STRONG>.  By convention, if
-       the teletype modes indicate that tabs are  being  expanded
-       by  the  computer  rather than being sent to the terminal,
-       programs should not  use  <STRONG>ht</STRONG>  or  <STRONG>cbt</STRONG>  even  if  they  are
-       present,  since  the user may not have the tab stops prop-
-       erly set.  If the terminal has  hardware  tabs  which  are
-       initially  set every <EM>n</EM> spaces when the terminal is powered
-       up, the numeric parameter <STRONG>it</STRONG> is given, showing the  number
-       of  spaces  the tabs are set to.  This is normally used by
-       the <EM>tset</EM> command to determine whether to set the mode  for
-       hardware  tab expansion, and whether to set the tab stops.
-       If the terminal has tab stops that can be  saved  in  non-
-       volatile  memory, the terminfo description can assume that
+</PRE>
+<H3><a name="h3-Tabs-and-Initialization">Tabs and Initialization</a></H3><PRE>
+       If  the terminal has hardware tabs, the command to advance
+       to the next tab stop can be given as <STRONG>ht</STRONG>  (usually  control
+       I).  A "back-tab" command which moves leftward to the pre-
+       ceding tab stop can be given as <STRONG>cbt</STRONG>.   By  convention,  if
+       the  teletype  modes indicate that tabs are being expanded
+       by the computer rather than being sent  to  the  terminal,
+       programs  should  not  use  <STRONG>ht</STRONG>  or  <STRONG>cbt</STRONG>  even  if they are
+       present, since the user may not have the tab  stops  prop-
+       erly  set.   If  the  terminal has hardware tabs which are
+       initially set every <EM>n</EM> spaces when the terminal is  powered
+       up,  the numeric parameter <STRONG>it</STRONG> is given, showing the number
+       of spaces the tabs are set to.  This is normally  used  by
+       the  <EM>tset</EM> command to determine whether to set the mode for
+       hardware tab expansion, and whether to set the tab  stops.
+       If  the  terminal  has tab stops that can be saved in non-
+       volatile memory, the terminfo description can assume  that
        they are properly set.
 
-       Other capabilities include <STRONG>is1</STRONG>, <STRONG>is2</STRONG>, and <STRONG>is3</STRONG>,  initializa-
-       tion  strings  for the terminal, <STRONG>iprog</STRONG>, the path name of a
-       program to be run to initialize the terminal, and <STRONG>if</STRONG>,  the
-       name  of  a  file  containing long initialization strings.
-       These strings are expected to set the terminal into  modes
-       consistent  with  the  rest  of  the terminfo description.
+       Other  capabilities include <STRONG>is1</STRONG>, <STRONG>is2</STRONG>, and <STRONG>is3</STRONG>, initializa-
+       tion strings for the terminal, <STRONG>iprog</STRONG>, the path name  of  a
+       program  to be run to initialize the terminal, and <STRONG>if</STRONG>, the
+       name of a file  containing  long  initialization  strings.
+       These  strings are expected to set the terminal into modes
+       consistent with the  rest  of  the  terminfo  description.
        They are normally sent to the terminal, by the <EM>init</EM> option
-       of  the  <EM>tput</EM>  program,  each time the user logs in.  They
+       of the <EM>tput</EM> program, each time the  user  logs  in.   They
        will be printed in the following order:
 
               run the program
@@ -1793,94 +1930,97 @@
               and finally
                      output <STRONG>is3</STRONG>.
 
-       Most initialization is done with  <STRONG>is2</STRONG>.   Special  terminal
+       Most  initialization  is  done with <STRONG>is2</STRONG>.  Special terminal
        modes can be set up without duplicating strings by putting
-       the common sequences in <STRONG>is2</STRONG> and special cases in  <STRONG>is1</STRONG>  and
+       the  common  sequences in <STRONG>is2</STRONG> and special cases in <STRONG>is1</STRONG> and
        <STRONG>is3</STRONG>.
 
        A set of sequences that does a harder reset from a totally
        unknown state can be given as <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rf</STRONG> and <STRONG>rs3</STRONG>, analo-
-       gous  to  <STRONG>is1</STRONG>  <STRONG>,</STRONG>  <STRONG>is2</STRONG>  <STRONG>,</STRONG>  <STRONG>if</STRONG>  and <STRONG>is3</STRONG> respectively.  These
-       strings are output by the <EM>reset</EM>  program,  which  is  used
-       when  the terminal gets into a wedged state.  Commands are
-       normally placed in <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG> <STRONG>rs3</STRONG> and <STRONG>rf</STRONG> only if  they  pro-
-       duce  annoying effects on the screen and are not necessary
-       when logging in.  For example,  the  command  to  set  the
-       vt100  into  80-column mode would normally be part of <STRONG>is2</STRONG>,
-       but it causes an annoying glitch of the screen and is  not
-       normally  needed  since the terminal is usually already in
+       gous to <STRONG>is1</STRONG> <STRONG>,</STRONG>  <STRONG>is2</STRONG>  <STRONG>,</STRONG>  <STRONG>if</STRONG>  and  <STRONG>is3</STRONG>  respectively.   These
+       strings  are  output  by  the <EM>reset</EM> program, which is used
+       when the terminal gets into a wedged state.  Commands  are
+       normally  placed  in <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG> <STRONG>rs3</STRONG> and <STRONG>rf</STRONG> only if they pro-
+       duce annoying effects on the screen and are not  necessary
+       when  logging  in.   For  example,  the command to set the
+       vt100 into 80-column mode would normally be part  of  <STRONG>is2</STRONG>,
+       but  it causes an annoying glitch of the screen and is not
+       normally needed since the terminal is usually  already  in
        80 column mode.
 
        The <EM>reset</EM> program writes strings including <STRONG>iprog</STRONG>, etc., in
-       the  same  order  as  the  <EM>init</EM>  program, using <STRONG>rs1</STRONG>, etc.,
+       the same order as  the  <EM>init</EM>  program,  using  <STRONG>rs1</STRONG>,  etc.,
        instead of <STRONG>is1</STRONG>, etc.  If any of <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, or <STRONG>rf</STRONG> reset
-       capability  strings  are  missing, the <EM>reset</EM> program falls
+       capability strings are missing, the  <EM>reset</EM>  program  falls
        back  upon  the  corresponding  initialization  capability
        string.
 
        If there are commands to set and clear tab stops, they can
-       be given as <STRONG>tbc</STRONG> (clear all tab stops) and <STRONG>hts</STRONG> (set  a  tab
-       stop  in the current column of every row).  If a more com-
-       plex sequence is needed  to  set  the  tabs  than  can  be
-       described  by  this,  the sequence can be placed in <STRONG>is2</STRONG> or
+       be  given  as <STRONG>tbc</STRONG> (clear all tab stops) and <STRONG>hts</STRONG> (set a tab
+       stop in the current column of every row).  If a more  com-
+       plex  sequence  is  needed  to  set  the  tabs than can be
+       described by this, the sequence can be placed  in  <STRONG>is2</STRONG>  or
        <STRONG>if</STRONG>.
 
-   <STRONG>Delays</STRONG> <STRONG>and</STRONG> <STRONG>Padding</STRONG>
-       Many older and slower  terminals  do  not  support  either
+
+</PRE>
+<H3><a name="h3-Delays-and-Padding">Delays and Padding</a></H3><PRE>
+       Many  older  and  slower  terminals  do not support either
        XON/XOFF or DTR handshaking, including hard copy terminals
-       and some very archaic CRTs (including,  for  example,  DEC
-       VT100s).   These may require padding characters after cer-
+       and  some  very  archaic CRTs (including, for example, DEC
+       VT100s).  These may require padding characters after  cer-
        tain cursor motions and screen changes.
 
        If the terminal uses xon/xoff handshaking for flow control
-       (that  is, it automatically emits ^S back to the host when
+       (that is, it automatically emits ^S back to the host  when
        its input buffers are close to full), set <STRONG>xon</STRONG>.  This capa-
-       bility  suppresses  the emission of padding.  You can also
-       set it for memory-mapped console devices effectively  that
-       do  not  have  a  speed limit.  Padding information should
-       still be included so that routines can make  better  deci-
+       bility suppresses the emission of padding.  You  can  also
+       set  it for memory-mapped console devices effectively that
+       do not have a speed  limit.   Padding  information  should
+       still  be  included so that routines can make better deci-
        sions about relative costs, but actual pad characters will
        not be transmitted.
 
-       If <STRONG>pb</STRONG> (padding baud rate) is given, padding is  suppressed
-       at  baud rates below the value of <STRONG>pb</STRONG>.  If the entry has no
-       padding baud rate, then whether padding is emitted or  not
+       If  <STRONG>pb</STRONG> (padding baud rate) is given, padding is suppressed
+       at baud rates below the value of <STRONG>pb</STRONG>.  If the entry has  no
+       padding  baud rate, then whether padding is emitted or not
        is completely controlled by <STRONG>xon</STRONG>.
 
-       If  the terminal requires other than a null (zero) charac-
-       ter as a pad, then this can be given  as  <STRONG>pad</STRONG>.   Only  the
+       If the terminal requires other than a null (zero)  charac-
+       ter  as  a  pad,  then this can be given as <STRONG>pad</STRONG>.  Only the
        first character of the <STRONG>pad</STRONG> string is used.
 
 
-   <STRONG>Status</STRONG> <STRONG>Lines</STRONG>
-       Some  terminals  have  an extra `status line' which is not
-       normally used by software (and thus  not  counted  in  the
+</PRE>
+<H3><a name="h3-Status-Lines">Status Lines</a></H3><PRE>
+       Some terminals have an extra "status line"  which  is  not
+       normally  used  by  software  (and thus not counted in the
        terminal's <STRONG>lines</STRONG> capability).
 
-       The  simplest  case  is  a  status  line  which is cursor-
-       addressable but not part of the main scrolling  region  on
-       the  screen;  the  Heathkit  H19 has a status line of this
-       kind, as would a 24-line VT100 with  a  23-line  scrolling
-       region  set up on initialization.  This situation is indi-
+       The simplest case  is  a  status  line  which  is  cursor-
+       addressable  but  not part of the main scrolling region on
+       the screen; the Heathkit H19 has a  status  line  of  this
+       kind,  as  would  a 24-line VT100 with a 23-line scrolling
+       region set up on initialization.  This situation is  indi-
        cated by the <STRONG>hs</STRONG> capability.
 
        Some terminals with status lines need special sequences to
-       access  the  status  line.   These  may  be expressed as a
+       access the status line.   These  may  be  expressed  as  a
        string with single parameter <STRONG>tsl</STRONG> which takes the cursor to
-       a  given zero-origin column on the status line.  The capa-
+       a given zero-origin column on the status line.  The  capa-
        bility <STRONG>fsl</STRONG> must return to the main-screen cursor positions
-       before  the  last  <STRONG>tsl</STRONG>.   You may need to embed the string
-       values of <STRONG>sc</STRONG> (save cursor) and <STRONG>rc</STRONG> (restore cursor) in  <STRONG>tsl</STRONG>
+       before the last <STRONG>tsl</STRONG>.  You may need  to  embed  the  string
+       values  of <STRONG>sc</STRONG> (save cursor) and <STRONG>rc</STRONG> (restore cursor) in <STRONG>tsl</STRONG>
        and <STRONG>fsl</STRONG> to accomplish this.
 
-       The  status  line is normally assumed to be the same width
-       as the width of the terminal.  If this is untrue, you  can
+       The status line is normally assumed to be the  same  width
+       as  the width of the terminal.  If this is untrue, you can
        specify it with the numeric capability <STRONG>wsl</STRONG>.
 
-       A  command to erase or blank the status line may be speci-
+       A command to erase or blank the status line may be  speci-
        fied as <STRONG>dsl</STRONG>.
 
-       The  boolean  capability  <STRONG>eslok</STRONG>  specifies   that   escape
+       The   boolean   capability  <STRONG>eslok</STRONG>  specifies  that  escape
        sequences, tabs, etc., work ordinarily in the status line.
 
        The <STRONG>ncurses</STRONG> implementation does not yet use any  of  these
@@ -1888,49 +2028,48 @@
        become important.
 
 
-   <STRONG>Line</STRONG> <STRONG>Graphics</STRONG>
+</PRE>
+<H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
        Many terminals have alternate character  sets  useful  for
        forms-drawing.   Terminfo  and <STRONG>curses</STRONG> build in support for
        the drawing characters supported by the VT100,  with  some
        characters  from  the  AT&amp;T  4410v1 added.  This alternate
        character set may be specified by the <STRONG>acsc</STRONG> capability.
 
-
-                <STRONG>Glyph</STRONG>             <STRONG>ACS</STRONG>            <STRONG>Ascii</STRONG>      <STRONG>VT100</STRONG>
-                 <STRONG>Name</STRONG>             <STRONG>Name</STRONG>           <STRONG>Default</STRONG>    <STRONG>Name</STRONG>
-       UK pound sign              ACS_STERLING   f          }
-       arrow pointing down        ACS_DARROW     v          .
-       arrow pointing left        ACS_LARROW     &lt;          ,
-       arrow pointing right       ACS_RARROW     &gt;          +
-       arrow pointing up          ACS_UARROW     ^          -
-       board of squares           ACS_BOARD      #          h
-       bullet                     ACS_BULLET     o          ~
-       checker board (stipple)    ACS_CKBOARD    :          a
-       degree symbol              ACS_DEGREE     \          f
-       diamond                    ACS_DIAMOND    +          `
-       greater-than-or-equal-to   ACS_GEQUAL     &gt;          z
-       greek pi                   ACS_PI         *          {
-       horizontal line            ACS_HLINE      -          q
-       lantern symbol             ACS_LANTERN    #          i
-       large plus or crossover    ACS_PLUS       +          n
-       less-than-or-equal-to      ACS_LEQUAL     &lt;          y
-
-       lower left corner          ACS_LLCORNER   +          m
-       lower right corner         ACS_LRCORNER   +          j
-       not-equal                  ACS_NEQUAL     !          |
-       plus/minus                 ACS_PLMINUS    #          g
-       scan line 1                ACS_S1         ~          o
-       scan line 3                ACS_S3         -          p
-       scan line 7                ACS_S7         -          r
-       scan line 9                ACS_S9         _          s
-       solid square block         ACS_BLOCK      #          0
-       tee pointing down          ACS_TTEE       +          w
-       tee pointing left          ACS_RTEE       +          u
-       tee pointing right         ACS_LTEE       +          t
-       tee pointing up            ACS_BTEE       +          v
-       upper left corner          ACS_ULCORNER   +          l
-       upper right corner         ACS_URCORNER   +          k
-       vertical line              ACS_VLINE      |          x
+       <STRONG>Glyph</STRONG>                       <STRONG>ACS</STRONG>           <STRONG>Ascii</STRONG>     <STRONG>VT100</STRONG>
+       <STRONG>Name</STRONG>                        <STRONG>Name</STRONG>          <STRONG>Default</STRONG>   <STRONG>Name</STRONG>
+       UK pound sign               ACS_STERLING  f         }
+       arrow pointing down         ACS_DARROW    v         .
+       arrow pointing left         ACS_LARROW    &lt;         ,
+       arrow pointing right        ACS_RARROW    &gt;         +
+       arrow pointing up           ACS_UARROW    ^         -
+       board of squares            ACS_BOARD     #         h
+       bullet                      ACS_BULLET    o         ~
+       checker board (stipple)     ACS_CKBOARD   :         a
+       degree symbol               ACS_DEGREE    \         f
+       diamond                     ACS_DIAMOND   +         `
+       greater-than-or-equal-to    ACS_GEQUAL    &gt;         z
+       greek pi                    ACS_PI        *         {
+       horizontal line             ACS_HLINE     -         q
+       lantern symbol              ACS_LANTERN   #         i
+       large plus or crossover     ACS_PLUS      +         n
+       less-than-or-equal-to       ACS_LEQUAL    &lt;         y
+       lower left corner           ACS_LLCORNER  +         m
+       lower right corner          ACS_LRCORNER  +         j
+       not-equal                   ACS_NEQUAL    !         |
+       plus/minus                  ACS_PLMINUS   #         g
+       scan line 1                 ACS_S1        ~         o
+       scan line 3                 ACS_S3        -         p
+       scan line 7                 ACS_S7        -         r
+       scan line 9                 ACS_S9        _         s
+       solid square block          ACS_BLOCK     #         0
+       tee pointing down           ACS_TTEE      +         w
+       tee pointing left           ACS_RTEE      +         u
+       tee pointing right          ACS_LTEE      +         t
+       tee pointing up             ACS_BTEE      +         v
+       upper left corner           ACS_ULCORNER  +         l
+       upper right corner          ACS_URCORNER  +         k
+       vertical line               ACS_VLINE     |         x
 
        The best way to define a new device's graphics set  is  to
        add  a  column  to a copy of this table for your terminal,
@@ -1941,9 +2080,10 @@
        ACSC string.
 
 
-   <STRONG>Color</STRONG> <STRONG>Handling</STRONG>
-       Most color terminals are either `Tektronix-like'  or  `HP-
-       like'.   Tektronix-like terminals have a predefined set of
+</PRE>
+<H3><a name="h3-Color-Handling">Color Handling</a></H3><PRE>
+       Most color terminals are either "Tektronix-like"  or  "HP-
+       like".   Tektronix-like terminals have a predefined set of
        N colors (where N usually 8), and can  set  character-cell
        foreground and background characters independently, mixing
        them into N * N color-pairs.  On  HP-like  terminals,  the
@@ -1986,7 +2126,6 @@
        these  as  it  likes,  but  the RGB values indicate normal
        locations in color space.
 
-
              <STRONG>Color</STRONG>       <STRONG>#define</STRONG>       <STRONG>Value</STRONG>       <STRONG>RGB</STRONG>
              black     <STRONG>COLOR_BLACK</STRONG>       0     0, 0, 0
              red       <STRONG>COLOR_RED</STRONG>         1     max,0,0
@@ -2009,6 +2148,7 @@
              magenta   <STRONG>COLOR_MAGENTA</STRONG>     5     max,0,max
              yellow    <STRONG>COLOR_YELLOW</STRONG>      6     max,max,0
              white     <STRONG>COLOR_WHITE</STRONG>       7     max,max,max
+
        It is important to not confuse the two sets of color capa-
        bilities; otherwise red/blue will be interchanged  on  the
        display.
@@ -2038,17 +2178,23 @@
        ors  are  enabled.  The correspondence with the attributes
        understood by <STRONG>curses</STRONG> is as follows:
 
-
-                      <STRONG>Attribute</STRONG>      <STRONG>Bit</STRONG>   <STRONG>Decimal</STRONG>
-                      A_STANDOUT     0     1
-                      A_UNDERLINE    1     2
-                      A_REVERSE      2     4
-                      A_BLINK        3     8
-                      A_DIM          4     16
-                      A_BOLD         5     32
-                      A_INVIS        6     64
-                      A_PROTECT      7     128
-                      A_ALTCHARSET   8     256
+          <STRONG>Attribute</STRONG>              <STRONG>Bit</STRONG>   <STRONG>Decimal</STRONG>      <STRONG>Set</STRONG> <STRONG>by</STRONG>
+          A_STANDOUT             0     1            sgr
+          A_UNDERLINE            1     2            sgr
+          A_REVERSE              2     4            sgr
+          A_BLINK                3     8            sgr
+          A_DIM                  4     16           sgr
+          A_BOLD                 5     32           sgr
+          A_INVIS                6     64           sgr
+          A_PROTECT              7     128          sgr
+          A_ALTCHARSET           8     256          sgr
+          A_HORIZONTAL           9     512          sgr1
+          A_LEFT                 10    1024         sgr1
+          A_LOW                  11    2048         sgr1
+          A_RIGHT                12    4096         sgr1
+          A_TOP                  13    8192         sgr1
+          A_VERTICAL             14    16384        sgr1
+          A_ITALIC               15    32768        sitm
 
        For example,  on  many  IBM  PC  consoles,  the  underline
        attribute  collides  with the foreground color blue and is
@@ -2059,7 +2205,8 @@
        and optimizes the output in favor of colors.
 
 
-   <STRONG>Miscellaneous</STRONG>
+</PRE>
+<H3><a name="h3-Miscellaneous">Miscellaneous</a></H3><PRE>
        If the terminal requires other than a null (zero)  charac-
        ter  as  a  pad,  then this can be given as pad.  Only the
        first character of the pad string is used.  If the  termi-
@@ -2082,7 +2229,7 @@
        parameterized  string  <STRONG>rep</STRONG>.   The  first  parameter is the
        character to be repeated and the second is the  number  of
        times  to repeat it.  Thus, tparm(repeat_char, 'x', 10) is
-       the same as `xxxxxxxxxx'.
+       the same as "xxxxxxxxxx".
 
        If the terminal has a settable command character, such  as
        the  TEKTRONIX  4025, this can be indicated with <STRONG>cmdch</STRONG>.  A
@@ -2102,12 +2249,12 @@
        <EM>virtual</EM>   terminal   descriptions  for  which  the  escape
        sequences are known.)
 
-       If the terminal has a ``meta key'' which acts as  a  shift
+       If the terminal has a "meta key" which  acts  as  a  shift
        key,  setting  the  8th  bit of any character transmitted,
        this fact can be indicated with <STRONG>km</STRONG>.   Otherwise,  software
        will assume that the 8th bit is parity and it will usually
-       be cleared.  If strings exist to turn this  ``meta  mode''
-       on and off, they can be given as <STRONG>smm</STRONG> and <STRONG>rmm</STRONG>.
+       be cleared.  If strings exist to turn this "meta mode"  on
+       and off, they can be given as <STRONG>smm</STRONG> and <STRONG>rmm</STRONG>.
 
        If  the terminal has more lines of memory than will fit on
        the screen at once, the number of lines of memory  can  be
@@ -2133,161 +2280,169 @@
        printer while an <STRONG>mc5p</STRONG> is in effect.
 
 
-   <STRONG>Glitches</STRONG> <STRONG>and</STRONG> <STRONG>Braindamage</STRONG>
-       Hazeltine terminals, which do not allow `~' characters  to
+</PRE>
+<H3><a name="h3-Glitches-and-Braindamage">Glitches and Braindamage</a></H3><PRE>
+       Hazeltine terminals, which do not allow "~" characters  to
        be displayed should indicate <STRONG>hz</STRONG>.
 
        Terminals which ignore a line-feed immediately after an <STRONG>am</STRONG>
        wrap, such as the Concept and vt100, should indicate <STRONG>xenl</STRONG>.
 
-       If  <STRONG>el</STRONG>  is  required  to  get  rid of standout (instead of
-       merely writing normal text on top of it),  <STRONG>xhp</STRONG>  should  be
+       If <STRONG>el</STRONG> is required to  get  rid  of  standout  (instead  of
+       merely  writing  normal  text on top of it), <STRONG>xhp</STRONG> should be
        given.
 
-       Teleray  terminals,  where  tabs turn all characters moved
-       over to blanks, should  indicate  <STRONG>xt</STRONG>  (destructive  tabs).
-       Note:    the    variable    indicating    this    is   now
-       `dest_tabs_magic_smso'; in older  versions,  it  was  tel-
+       Teleray terminals, where tabs turn  all  characters  moved
+       over  to  blanks,  should  indicate <STRONG>xt</STRONG> (destructive tabs).
+       Note:   the    variable    indicating    this    is    now
+       "dest_tabs_magic_smso";  in  older  versions,  it was tel-
        eray_glitch.  This glitch is also taken to mean that it is
-       not possible to position the cursor on top  of  a  ``magic
-       cookie'', that to erase standout mode it is instead neces-
+       not  possible  to  position  the cursor on top of a "magic
+       cookie", that to erase standout mode it is instead  neces-
        sary to use delete and insert line.  The ncurses implemen-
        tation ignores this glitch.
 
-       The  Beehive Superbee, which is unable to correctly trans-
-       mit the escape or control C characters, has <STRONG>xsb</STRONG>,  indicat-
-       ing  that the f1 key is used for escape and f2 for control
-       C.  (Only certain Superbees have this  problem,  depending
-       on  the  ROM.)  Note that in older terminfo versions, this
-       capability  was  called  `beehive_glitch';   it   is   now
-       `no_esc_ctl_c'.
+       The Beehive Superbee, which is unable to correctly  trans-
+       mit  the escape or control C characters, has <STRONG>xsb</STRONG>, indicat-
+       ing that the f1 key is used for escape and f2 for  control
+       C.   (Only  certain Superbees have this problem, depending
+       on the ROM.)  Note that in older terminfo  versions,  this
+       capability   was   called   "beehive_glitch";  it  is  now
+       "no_esc_ctl_c".
 
-       Other  specific  terminal  problems  may  be  corrected by
+       Other specific  terminal  problems  may  be  corrected  by
        adding more capabilities of the form <STRONG>x</STRONG><EM>x</EM>.
 
 
-   <STRONG>Similar</STRONG> <STRONG>Terminals</STRONG>
+</PRE>
+<H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE>
        If there are two very similar terminals, one (the variant)
-       can  be  defined  as  being just like the other (the base)
-       with certain exceptions.  In the definition of  the  vari-
-       ant,  the string capability <STRONG>use</STRONG> can be given with the name
-       of the base terminal.  The capabilities given  before  <STRONG>use</STRONG>
-       override  those  in  the base type named by <STRONG>use</STRONG>.  If there
-       are multiple <STRONG>use</STRONG> capabilities, they are merged in  reverse
-       order.   That is, the rightmost <STRONG>use</STRONG> reference is processed
-       first, then the one to its left, and so forth.   Capabili-
-       ties  given explicitly in the entry override those brought
+       can be defined as being just like  the  other  (the  base)
+       with  certain  exceptions.  In the definition of the vari-
+       ant, the string capability <STRONG>use</STRONG> can be given with the  name
+       of  the  base terminal.  The capabilities given before <STRONG>use</STRONG>
+       override those in the base type named by  <STRONG>use</STRONG>.   If  there
+       are  multiple <STRONG>use</STRONG> capabilities, they are merged in reverse
+       order.  That is, the rightmost <STRONG>use</STRONG> reference is  processed
+       first,  then the one to its left, and so forth.  Capabili-
+       ties given explicitly in the entry override those  brought
        in by <STRONG>use</STRONG> references.
 
        A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of
-       the  use  reference that imports it, where <EM>xx</EM> is the capa-
+       the use reference that imports it, where <EM>xx</EM> is  the  capa-
        bility.  For example, the entry
 
-                   2621-nl, smkx@, rmkx@, use=2621,
+              2621-nl, smkx@, rmkx@, use=2621,
 
-       defines a 2621-nl that does not  have  the  <STRONG>smkx</STRONG>  or  <STRONG>rmkx</STRONG>
-       capabilities,  and hence does not turn on the function key
-       labels when in visual mode.  This is useful for  different
+       defines  a  2621-nl  that  does  not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG>
+       capabilities, and hence does not turn on the function  key
+       labels  when in visual mode.  This is useful for different
        modes for a terminal, or for different user preferences.
 
 
-   <STRONG>Pitfalls</STRONG> <STRONG>of</STRONG> <STRONG>Long</STRONG> <STRONG>Entries</STRONG>
-       Long  terminfo  entries  are  unlikely to be a problem; to
-       date, no entry has even  approached  terminfo's  4096-byte
+</PRE>
+<H3><a name="h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></H3><PRE>
+       Long terminfo entries are unlikely to  be  a  problem;  to
+       date,  no  entry  has even approached terminfo's 4096-byte
        string-table maximum.  Unfortunately, the termcap transla-
        tions are much more strictly limited (to 1023 bytes), thus
-       termcap  translations  of  long terminfo entries can cause
+       termcap translations of long terminfo  entries  can  cause
        problems.
 
-       The man pages for 4.3BSD and older versions  of  <STRONG>tgetent()</STRONG>
-       instruct  the  user to allocate a 1024-byte buffer for the
-       termcap entry.  The  entry  gets  null-terminated  by  the
+       The  man  pages for 4.3BSD and older versions of <STRONG>tgetent()</STRONG>
+       instruct the user to allocate a 1024-byte buffer  for  the
+       termcap  entry.   The  entry  gets  null-terminated by the
        termcap library, so that makes the maximum safe length for
-       a termcap entry 1k-1 (1023) bytes.  Depending on what  the
-       application  and  the termcap library being used does, and
+       a  termcap entry 1k-1 (1023) bytes.  Depending on what the
+       application and the termcap library being used  does,  and
        where in the termcap file the terminal type that <STRONG>tgetent()</STRONG>
        is searching for is, several bad things can happen.
 
-       Some  termcap libraries print a warning message or exit if
-       they find an entry that's longer than 1023  bytes;  others
-       do  not;  others truncate the entries to 1023 bytes.  Some
+       Some termcap libraries print a warning message or exit  if
+       they  find  an entry that's longer than 1023 bytes; others
+       do not; others truncate the entries to 1023  bytes.   Some
        application programs allocate more than the recommended 1K
        for the termcap entry; others do not.
 
        Each termcap entry has two important sizes associated with
        it: before "tc" expansion, and after "tc" expansion.  "tc"
-       is  the  capability that tacks on another termcap entry to
-       the end of the current one, to add  on  its  capabilities.
-       If  a termcap entry does not use the "tc" capability, then
+       is the capability that tacks on another termcap  entry  to
+       the  end  of  the current one, to add on its capabilities.
+       If a termcap entry does not use the "tc" capability,  then
        of course the two lengths are the same.
 
-       The "before tc expansion" length  is  the  most  important
-       one,  because it affects more than just users of that par-
-       ticular terminal.  This is the length of the entry  as  it
+       The  "before  tc  expansion"  length is the most important
+       one, because it affects more than just users of that  par-
+       ticular  terminal.   This is the length of the entry as it
        exists in /etc/termcap, minus the backslash-newline pairs,
        which <STRONG>tgetent()</STRONG> strips out while reading it.  Some termcap
-       libraries  strip  off  the final newline, too (GNU termcap
+       libraries strip off the final newline,  too  (GNU  termcap
        does not).  Now suppose:
 
-       *    a termcap entry before expansion is  more  than  1023
-            bytes long,
+       <STRONG>o</STRONG>   a  termcap  entry  before  expansion is more than 1023
+           bytes long,
 
-       *    and the application has only allocated a 1k buffer,
+       <STRONG>o</STRONG>   and the application has only allocated a 1k buffer,
 
-       *    and  the  termcap library (like the one in BSD/OS 1.1
-            and GNU) reads the whole entry into  the  buffer,  no
-            matter  what its length, to see if it is the entry it
-            wants,
+       <STRONG>o</STRONG>   and the termcap library (like the one  in  BSD/OS  1.1
+           and  GNU)  reads  the  whole entry into the buffer, no
+           matter what its length, to see if it is the  entry  it
+           wants,
 
-       *    and <STRONG>tgetent()</STRONG> is searching for a terminal  type  that
-            either is the long entry, appears in the termcap file
-            after the long entry, or does not appear in the  file
-            at  all  (so  that  <STRONG>tgetent()</STRONG> has to search the whole
-            termcap file).
+       <STRONG>o</STRONG>   and  <STRONG>tgetent()</STRONG>  is  searching for a terminal type that
+           either is the long entry, appears in the termcap  file
+           after  the  long entry, or does not appear in the file
+           at all (so that <STRONG>tgetent()</STRONG>  has  to  search  the  whole
+           termcap file).
 
-       Then <STRONG>tgetent()</STRONG> will overwrite memory, perhaps  its  stack,
-       and  probably core dump the program.  Programs like telnet
-       are particularly vulnerable;  modern  telnets  pass  along
-       values  like the terminal type automatically.  The results
-       are almost as undesirable with  a  termcap  library,  like
-       SunOS  4.1.3  and Ultrix 4.4, that prints warning messages
-       when it reads an overly long termcap entry.  If a  termcap
-       library  truncates  long  entries,  like  OSF/1 3.0, it is
-       immune to dying here but will return  incorrect  data  for
+       Then  <STRONG>tgetent()</STRONG>  will overwrite memory, perhaps its stack,
+       and probably core dump the program.  Programs like  telnet
+       are  particularly  vulnerable;  modern  telnets pass along
+       values like the terminal type automatically.  The  results
+       are  almost  as  undesirable  with a termcap library, like
+       SunOS 4.1.3 and Ultrix 4.4, that prints  warning  messages
+       when  it reads an overly long termcap entry.  If a termcap
+       library truncates long entries,  like  OSF/1  3.0,  it  is
+       immune  to  dying  here but will return incorrect data for
        the terminal.
 
        The "after tc expansion" length will have a similar effect
        to the above, but only for people who actually set TERM to
-       that  terminal type, since <STRONG>tgetent()</STRONG> only does "tc" expan-
-       sion once it is found the terminal  type  it  was  looking
+       that terminal type, since <STRONG>tgetent()</STRONG> only does "tc"  expan-
+       sion  once  it  is  found the terminal type it was looking
        for, not while searching.
 
        In summary, a termcap entry that is longer than 1023 bytes
-       can cause, on various combinations  of  termcap  libraries
-       and  applications,  a  core  dump,  warnings, or incorrect
-       operation.  If it is too long even before "tc"  expansion,
+       can  cause,  on  various combinations of termcap libraries
+       and applications, a  core  dump,  warnings,  or  incorrect
+       operation.   If it is too long even before "tc" expansion,
        it will have this effect even for users of some other ter-
-       minal types and users whose TERM variable does not have  a
+       minal  types and users whose TERM variable does not have a
        termcap entry.
 
        When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> imple-
        mentation of <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> issues warning messages when the pre-
-       tc  length  of  a termcap translation is too long.  The -c
-       (check) option also checks resolved (after  tc  expansion)
+       tc length of a termcap translation is too  long.   The  -c
+       (check)  option  also checks resolved (after tc expansion)
        lengths.
 
-   <STRONG>Binary</STRONG> <STRONG>Compatibility</STRONG>
-       It  is not wise to count on portability of binary terminfo
-       entries between commercial UNIX versions.  The problem  is
-       that  there  are  at least two versions of terminfo (under
+
+</PRE>
+<H3><a name="h3-Binary-Compatibility">Binary Compatibility</a></H3><PRE>
+       It is not wise to count on portability of binary  terminfo
+       entries  between commercial UNIX versions.  The problem is
+       that there are at least two versions  of  terminfo  (under
        HP-UX and AIX) which diverged from System V terminfo after
-       SVr1,  and have added extension capabilities to the string
-       table that (in the binary format) collide  with  System  V
+       SVr1, and have added extension capabilities to the  string
+       table  that  (in  the binary format) collide with System V
        and XSI Curses extensions.
 
 
 </PRE>
-<H2>EXTENSIONS</H2><PRE>
+<H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and
+       TERMINFO_DIRS is not supported by older implementations.
+
        Some  SVr4  <STRONG>curses</STRONG>  implementations,  and  all previous to
        SVr4, do not interpret the %A and %O operators in  parame-
        ter strings.
@@ -2316,6 +2471,14 @@
        and emulators like xterm that  can  return  mouse-tracking
        information in the keyboard-input stream.
 
+       X/Open Curses does not mention italics.  Portable applica-
+       tions must assume that  numeric  capabilities  are  signed
+       16-bit  values.   This  includes  the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv)
+       capability.  The 32768 mask value used  for  italics  with
+       ncv  can  be confused with an absent or cancelled ncv.  If
+       italics should work with colors, then the ncv  value  must
+       be specified, even if it is zero.
+
        Different  commercial ports of terminfo and curses support
        different subsets of the XSI Curses standard and (in  some
        cases) different extension sets.  Here is a summary, accu-
@@ -2342,22 +2505,23 @@
        through 63, plus a number  of  incompatible  string  table
        extensions.
 
-       <STRONG>OSF</STRONG>  -- Supports both the SVr4 set and the AIX extensions.
+       <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions.
 
 
 </PRE>
-<H2>FILES</H2><PRE>
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
        /usr/share/terminfo/?/*  files     containing     terminal
                                 descriptions
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="tic.1m.html">tic(1m)</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="printf.3.html">printf(3)</A></STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>,  <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>,  <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,  <STRONG>printf(3)</STRONG>,   <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.
+       <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>AUTHORS</H2><PRE>
+<H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Zeyd  M.  Ben-Halim,  Eric  S.  Raymond, Thomas E. Dickey.
        Based on pcurses by Pavel Curtis.
 
@@ -2365,10 +2529,43 @@
 
                                                             <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-Predefined-Capabilities">Predefined Capabilities</a></li>
+<li><a href="#h3-User-Defined-Capabilities">User-Defined Capabilities</a></li>
+<li><a href="#h3-A-Sample-Entry">A Sample Entry</a></li>
+<li><a href="#h3-Types-of-Capabilities">Types of Capabilities</a></li>
+<li><a href="#h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></li>
+<li><a href="#h3-Preparing-Descriptions">Preparing Descriptions</a></li>
+<li><a href="#h3-Basic-Capabilities">Basic Capabilities</a></li>
+<li><a href="#h3-Parameterized-Strings">Parameterized Strings</a></li>
+<li><a href="#h3-Cursor-Motions">Cursor Motions</a></li>
+<li><a href="#h3-Area-Clears">Area Clears</a></li>
+<li><a href="#h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></li>
+<li><a href="#h3-Insert_Delete-Character">Insert/Delete Character</a></li>
+<li><a href="#h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></li>
+<li><a href="#h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></li>
+<li><a href="#h3-Tabs-and-Initialization">Tabs and Initialization</a></li>
+<li><a href="#h3-Delays-and-Padding">Delays and Padding</a></li>
+<li><a href="#h3-Status-Lines">Status Lines</a></li>
+<li><a href="#h3-Line-Graphics">Line Graphics</a></li>
+<li><a href="#h3-Color-Handling">Color Handling</a></li>
+<li><a href="#h3-Miscellaneous">Miscellaneous</a></li>
+<li><a href="#h3-Glitches-and-Braindamage">Glitches and Braindamage</a></li>
+<li><a href="#h3-Similar-Terminals">Similar Terminals</a></li>
+<li><a href="#h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></li>
+<li><a href="#h3-Binary-Compatibility">Binary Compatibility</a></li>
+</ul>
+</li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/tic.1m.html b/doc/html/man/tic.1m.html
index b3103ad..f287c1e 100644
--- a/doc/html/man/tic.1m.html
+++ b/doc/html/man/tic.1m.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2013,2014 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            *
@@ -27,85 +26,163 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tic.1m,v 1.44 2006/12/24 17:59:11 tom Exp @
+  * @Id: tic.1m,v 1.60 2014/05/24 22:00:11 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>tic 1m</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>tic 1m</H1>
-<HR>
+<H1 class="no-header">tic 1m</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>                                                         <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>tic</STRONG> - the <EM>terminfo</EM> entry-description compiler
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>tic</STRONG>  [<STRONG>-1CGILNTUVacfgrstx</STRONG>]  [<STRONG>-e</STRONG> <EM>names</EM>] [<STRONG>-o</STRONG> <EM>dir</EM>] [<STRONG>-R</STRONG> <EM>subset</EM>]
-       [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-w</STRONG>[<EM>n</EM>]] <EM>file</EM>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>tic</STRONG>  [<STRONG>-01CDGIKLNTUVacfgrstx</STRONG>]  [<STRONG>-e</STRONG> <EM>names</EM>] [<STRONG>-o</STRONG> <EM>dir</EM>] [<STRONG>-R</STRONG> <EM>sub-</EM>
+       <EM>set</EM>] [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-w</STRONG>[<EM>n</EM>]] <EM>file</EM>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The command <STRONG>tic</STRONG> translates a  <STRONG>terminfo</STRONG>  file  from  source
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       The <STRONG>tic</STRONG> command translates a  <STRONG>terminfo</STRONG>  file  from  source
        format  into compiled format.  The compiled format is nec-
        essary for use with the library routines in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>.
 
+       As described in <STRONG><A HREF="term.5.html">term(5)</A></STRONG>, the  database  may  be  either  a
+       directory  tree  (one file per terminal entry) or a hashed
+       database (one record per entry).  The <STRONG>tic</STRONG>  command  writes
+       only one type of entry, depending on how it was built:
+
+       <STRONG>o</STRONG>   For  directory  trees,  the top-level directory, e.g.,
+           /usr/share/terminfo, specifies  the  location  of  the
+           database.
+
+       <STRONG>o</STRONG>   For  hashed  databases,  a filename is needed.  If the
+           given file is not found by that name, but can be found
+           by adding the suffix ".db", then that is used.
+
+           The  default  name for the hashed database is the same
+           as the default directory name  (only  adding  a  ".db"
+           suffix).
+
+       In  either  case  (directory or hashed database), <STRONG>tic</STRONG> will
+       create the container if it does not exist.  For  a  direc-
+       tory,  this  would  be the "terminfo" leaf, versus a "ter-
+       minfo.db" file.
+
        The results are normally placed  in  the  system  terminfo
-       directory  <STRONG>/usr/share/terminfo</STRONG>.   There  are  two  ways to
-       change this behavior.
+       database   <STRONG>/usr/share/terminfo</STRONG>.    The  compiled  terminal
+       description can be placed in a  different  terminfo  data-
+       base.  There are two ways to achieve this:
 
-       First, you may override the system default by setting  the
-       variable  <STRONG>TERMINFO</STRONG>  in  your  shell environment to a valid
-       (existing) directory name.
+       <STRONG>o</STRONG>   First,  you  may override the system default either by
+           using the <STRONG>-o</STRONG> option, or by setting the  variable  <STRONG>TER-</STRONG>
+           <STRONG>MINFO</STRONG>  in  your  shell environment to a valid database
+           location.
 
-       Secondly, if <STRONG>tic</STRONG> cannot get access to  <EM>/usr/share/terminfo</EM>
-       or  your  TERMINFO  directory,  it looks for the directory
-       <EM>$HOME/.terminfo</EM>; if that directory exists,  the  entry  is
-       placed there.
+       <STRONG>o</STRONG>   Secondly, if <STRONG>tic</STRONG> cannot write  in  <EM>/usr/share/terminfo</EM>
+           or  the  location  specified using your TERMINFO vari-
+           able, it looks for the directory  <EM>$HOME/.terminfo</EM>  (or
+           hashed  database <EM>$HOME/.terminfo.db)</EM>; if that location
+           exists, the entry is placed there.
 
        Libraries that read terminfo entries are expected to check
-       for a TERMINFO directory first, look at <EM>$HOME/.terminfo</EM> if
-       TERMINFO  is  not set, and finally look in <EM>/usr/share/ter-</EM>
-       <EM>minfo</EM>.
+       in succession
+
+       <STRONG>o</STRONG>   a  location  specified  with  the TERMINFO environment
+           variable,
+
+       <STRONG>o</STRONG>   <EM>$HOME/.terminfo</EM>,
+
+       <STRONG>o</STRONG>   directories listed in  the  TERMINFO_DIRS  environment
+           variable,
+
+       <STRONG>o</STRONG>   a       compiled-in      list      of      directories
+           (/usr/local/ncurses/share/terminfo:/usr/share/ter-
+           minfo), and
+
+       <STRONG>o</STRONG>   the system terminfo database (<EM>/usr/share/terminfo</EM>).
+
+
+</PRE>
+<H3><a name="h3-OPTIONS">OPTIONS</a></H3><PRE>
+       <STRONG>-0</STRONG>     restricts the output to a single line
 
        <STRONG>-1</STRONG>     restricts the output to a single column
 
        <STRONG>-a</STRONG>     tells  <STRONG>tic</STRONG>  to  retain  commented-out  capabilities
               rather than discarding them.  Capabilities are com-
-              mented by prefixing them with a period.  This  sets
-              the  <STRONG>-x</STRONG> option, because it treats the commented-out
-              entries as user-defined names.  If  the  source  is
-              termcap,  accept  the 2-character names required by
+              mented  by prefixing them with a period.  This sets
+              the <STRONG>-x</STRONG> option, because it treats the  commented-out
+              entries  as  user-defined  names.  If the source is
+              termcap, accept the 2-character names  required  by
               version 6.  Otherwise these are ignored.
 
-       <STRONG>-C</STRONG>     Force source translation to termcap format.   Note:
-              this  differs  from the <STRONG>-C</STRONG> option of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> in
+       <STRONG>-C</STRONG>     Force  source translation to termcap format.  Note:
+              this differs from the <STRONG>-C</STRONG> option of  <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>  in
               that it does not merely translate capability names,
-              but  also  translates  terminfo  strings to termcap
+              but also translates  terminfo  strings  to  termcap
               format.  Capabilities that are not translatable are
-              left  in  the  entry under their terminfo names but
-              commented out with two preceding dots.
+              left in the entry under their  terminfo  names  but
+              commented  out with two preceding dots.  The actual
+              format  used  incorporates  some  improvements  for
+              escaped  characters  from  terminfo  format.  For a
+              stricter BSD-compatible  translation,  add  the  <STRONG>-K</STRONG>
+              option.
+
+              If  this  is combined with <STRONG>-c</STRONG>, <STRONG>tic</STRONG> makes additional
+              checks to report cases where the terminfo values do
+              not  have an exact equivalent in termcap form.  For
+              example:
+
+              <STRONG>o</STRONG>   <STRONG>sgr</STRONG> usually will not convert,  because  termcap
+                  lacks  the  ability  to work with more than two
+                  parameters, and because termcap lacks  many  of
+                  the  arithmetic/logical  operators used in ter-
+                  minfo.
+
+              <STRONG>o</STRONG>   capabilities with more than one delay  or  with
+                  delays  before  the  end of the string will not
+                  convert completely.
 
        <STRONG>-c</STRONG>     tells <STRONG>tic</STRONG> to only check <EM>file</EM> for errors,  including
               syntax  problems and bad use links.  If you specify
               <STRONG>-C</STRONG> (<STRONG>-I</STRONG>) with this option, the code will print warn-
               ings about entries which, after use resolution, are
               more than 1023 (4096) bytes long.  Due to  a  fixed
-              buffer  length  in  older  termcap libraries (and a
-              documented limit in terminfo),  these  entries  may
-              cause core dumps.
+              buffer  length  in older termcap libraries, as well
+              as buggy checking for the buffer length (and a doc-
+              umented limit in terminfo), these entries may cause
+              core dumps with other implementations.
+
+              <STRONG>tic</STRONG> checks string capabilities to ensure that those
+              with parameters will be valid expressions.  It does
+              this check only for the predefined string capabili-
+              ties;  those  which  are defined with the <STRONG>-x</STRONG> option
+              are ignored.
+
+       <STRONG>-D</STRONG>     tells <STRONG>tic</STRONG> to print the database locations  that  it
+              knows about, and exit.  The first location shown is
+              the one to which it would write  compiled  terminal
+              descriptions.   If  <STRONG>tic</STRONG>  is  not  able  to  find  a
+              writable database location according to  the  rules
+              summarized  above,  it  will print a diagnostic and
+              exit with an error rather than printing a  list  of
+              database locations.
 
        <STRONG>-e</STRONG> <EM>names</EM>
               Limit  writes  and  translations  to  the following
@@ -130,128 +207,137 @@
 
        <STRONG>-I</STRONG>     Force source translation to terminfo format.
 
-       <STRONG>-L</STRONG>     Force  source  translation to terminfo format using
+       <STRONG>-K</STRONG>     Suppress  some  longstanding  ncurses extensions to
+              termcap format, e.g., "\s" for space.
+
+       <STRONG>-L</STRONG>     Force source translation to terminfo  format  using
               the long C variable names listed in &lt;<STRONG>term.h</STRONG>&gt;
 
        <STRONG>-N</STRONG>     Disable smart defaults.  Normally, when translating
               from termcap to terminfo, the compiler makes a num-
-              ber of assumptions about  the  defaults  of  string
-              capabilities  <STRONG>reset1_string</STRONG>,  <STRONG>carriage_return</STRONG>, <STRONG>cur-</STRONG>
-              <STRONG>sor_left</STRONG>, <STRONG>cursor_down</STRONG>,  <STRONG>scroll_forward</STRONG>,  <STRONG>tab</STRONG>,  <STRONG>new-</STRONG>
-              <STRONG>line</STRONG>,  <STRONG>key_backspace</STRONG>,  <STRONG>key_left</STRONG>, and <STRONG>key_down</STRONG>, then
-              attempts to use obsolete  termcap  capabilities  to
+              ber  of  assumptions  about  the defaults of string
+              capabilities <STRONG>reset1_string</STRONG>,  <STRONG>carriage_return</STRONG>,  <STRONG>cur-</STRONG>
+              <STRONG>sor_left</STRONG>,  <STRONG>cursor_down</STRONG>,  <STRONG>scroll_forward</STRONG>,  <STRONG>tab</STRONG>, <STRONG>new-</STRONG>
+              <STRONG>line</STRONG>, <STRONG>key_backspace</STRONG>, <STRONG>key_left</STRONG>, and  <STRONG>key_down</STRONG>,  then
+              attempts  to  use  obsolete termcap capabilities to
               deduce correct values.  It also normally suppresses
               output of obsolete termcap capabilities such as <STRONG>bs</STRONG>.
-              This  option forces a more literal translation that
+              This option forces a more literal translation  that
               also preserves the obsolete capabilities.
 
-       <STRONG>-o</STRONG><EM>dir</EM>  Write compiled entries to given  directory.   Over-
-              rides the TERMINFO environment variable.
+       <STRONG>-o</STRONG><EM>dir</EM>  Write  compiled entries to given database location.
+              Overrides the TERMINFO environment variable.
 
        <STRONG>-R</STRONG><EM>subset</EM>
-              Restrict  output to a given subset.  This option is
-              for use with  archaic  versions  of  terminfo  like
+              Restrict output to a given subset.  This option  is
+              for  use  with  archaic  versions  of terminfo like
               those on SVr1, Ultrix, or HP/UX that do not support
-              the full set of SVR4/XSI Curses terminfo; and  out-
+              the  full set of SVR4/XSI Curses terminfo; and out-
               right broken ports like AIX 3.x that have their own
-              extensions incompatible with  SVr4/XSI.   Available
+              extensions  incompatible  with SVr4/XSI.  Available
               subsets  are  "SVr1",  "Ultrix",  "HP",  "BSD"  and
               "AIX"; see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.
 
-       <STRONG>-r</STRONG>     Force entry resolution (so there are  no  remaining
-              tc  capabilities)  even  when  doing translation to
-              termcap format.  This may  be  needed  if  you  are
-              preparing  a  termcap  file  for  a termcap library
-              (such as GNU termcap through  version  1.3  or  BSD
-              termcap through 4.3BSD) that does not handle multi-
-              ple tc capabilities per entry.
+       <STRONG>-r</STRONG>     Force  entry  resolution (so there are no remaining
+              tc capabilities) even  when  doing  translation  to
+              termcap format.  This may be needed if you are pre-
+              paring a termcap file for a termcap  library  (such
+              as  GNU  termcap through version 1.3 or BSD termcap
+              through 4.3BSD) that does not  handle  multiple  tc
+              capabilities per entry.
 
-       <STRONG>-s</STRONG>     Summarize the compile by showing the directory into
-              which  entries  are  written,  and  the  number  of
-              entries which are compiled.
+       <STRONG>-s</STRONG>     Summarize the compile by showing the database loca-
+              tion into which entries are written, and the number
+              of entries which are compiled.
 
        <STRONG>-T</STRONG>     eliminates size-restrictions on the generated text.
-              This  is  mainly  useful  for testing and analysis,
-              since the compiled descriptions are limited  (e.g.,
+              This is mainly useful  for  testing  and  analysis,
+              since  the compiled descriptions are limited (e.g.,
               1023 for termcap, 4096 for terminfo).
 
-       <STRONG>-t</STRONG>     tells  <STRONG>tic</STRONG>  to  discard commented-out capabilities.
+       <STRONG>-t</STRONG>     tells <STRONG>tic</STRONG> to  discard  commented-out  capabilities.
               Normally when translating from terminfo to termcap,
               untranslatable capabilities are commented-out.
 
-       <STRONG>-U</STRONG>   tells  <STRONG>tic</STRONG> to not post-process the data after parsing
-            the source file.  Normally, it infers data  which  is
-            commonly  missing in older terminfo data, or in term-
+       <STRONG>-U</STRONG>   tells <STRONG>tic</STRONG> to not post-process the data after  parsing
+            the  source  file.  Normally, it infers data which is
+            commonly missing in older terminfo data, or in  term-
             caps.
 
        <STRONG>-V</STRONG>   reports the version of ncurses which was used in this
             program, and exits.
 
-       <STRONG>-v</STRONG><EM>n</EM>  specifies  that  (verbose) output be written to stan-
-            dard error trace information showing <STRONG>tic</STRONG>'s  progress.
-            The  optional  parameter  <EM>n</EM> is a number from 1 to 10,
-            inclusive, indicating the desired level of detail  of
-            information.   If  <EM>n</EM> is omitted, the default level is
-            1.  If <EM>n</EM> is specified and greater than 1,  the  level
+       <STRONG>-v</STRONG><EM>n</EM>  specifies that (verbose) output be written  to  stan-
+            dard  error trace information showing <STRONG>tic</STRONG>'s progress.
+            The optional parameter <EM>n</EM> is a number from  1  to  10,
+            inclusive,  indicating the desired level of detail of
+            information.  If <EM>n</EM> is omitted, the default  level  is
+            1.   If  <EM>n</EM> is specified and greater than 1, the level
             of detail is increased.
 
-       <STRONG>-w</STRONG><EM>n</EM>  specifies  the width of the output.  The parameter is
+            The debug flag levels are as follows:
+
+            1      Names of files created and linked
+
+            2      Information related to the "use" facility
+
+            3      Statistics from the hashing algorithm
+
+            5      String-table memory allocations
+
+            7      Entries into the string-table
+
+            8      List of tokens encountered by scanner
+
+            9      All values computed  in  construction  of  the
+                   hash table
+
+            If  the debug level <EM>n</EM> is not given, it is taken to be
+            one.
+
+       <STRONG>-w</STRONG><EM>n</EM>  specifies the width of the output.  The parameter  is
             optional.  If it is omitted, it defaults to 60.
 
        <STRONG>-x</STRONG>   Treat unknown capabilities as user-defined.  That is,
-            if  you  supply  a capability name which <STRONG>tic</STRONG> does not
+            if you supply a capability name which  <STRONG>tic</STRONG>  does  not
             recognize, it will infer its type (boolean, number or
-            string)  from  the  syntax and make an extended table
+            string) from the syntax and make  an  extended  table
             entry  for  that.   User-defined  capability  strings
-            whose  name begins with ``k'' are treated as function
+            whose name begins with "k" are  treated  as  function
             keys.
 
-       <EM>file</EM> contains one or more <STRONG>terminfo</STRONG>  terminal  descriptions
-            in source format [see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].  Each description
-            in the file describes the capabilities of a  particu-
-            lar terminal.
 
-       The debug flag levels are as follows:
+</PRE>
+<H3><a name="h3-PARAMETERS">PARAMETERS</a></H3><PRE>
+       <EM>file</EM>   contains one or more <STRONG>terminfo</STRONG> terminal descriptions
+              in source format [see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>].  Each  descrip-
+              tion  in  the  file describes the capabilities of a
+              particular terminal.
 
-       1      Names of files created and linked
+              If <EM>file</EM> is "-", then the  data  is  read  from  the
+              standard input.  The <EM>file</EM> parameter may also be the
+              path of a character-device.
 
-       2      Information related to the ``use'' facility
 
-       3      Statistics from the hashing algorithm
-
-       5      String-table memory allocations
-
-       7      Entries into the string-table
-
-       8      List of tokens encountered by scanner
-
-       9      All values computed in construction of the hash ta-
-              ble
-
-       If the debug level <EM>n</EM> is not given, it is taken to be  one.
-
+</PRE>
+<H3><a name="h3-PROCESSING">PROCESSING</a></H3><PRE>
        All but one of the capabilities recognized by <STRONG>tic</STRONG> are doc-
        umented in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.  The exception is the <STRONG>use</STRONG> capabil-
        ity.
 
-       When  a  <STRONG>use</STRONG>=<EM>entry</EM>-<EM>name</EM>  field is discovered in a terminal
-       entry currently being compiled, <STRONG>tic</STRONG> reads  in  the  binary
-       from  <STRONG>/usr/share/terminfo</STRONG> to complete the entry.  (Entries
-       created from <EM>file</EM> will be used first.  If the  environment
-       variable  <STRONG>TERMINFO</STRONG>  is  set,  that  directory  is searched
-       instead of <STRONG>/usr/share/terminfo</STRONG>.)  <STRONG>tic</STRONG> duplicates the capa-
-       bilities  in  <EM>entry</EM>-<EM>name</EM>  for  the current entry, with the
-       exception  of  those  capabilities  that  explicitly   are
+       When a <STRONG>use</STRONG>=<EM>entry</EM>-<EM>name</EM> field is discovered  in  a  terminal
+       entry  currently  being  compiled, <STRONG>tic</STRONG> reads in the binary
+       from <STRONG>/usr/share/terminfo</STRONG> to complete the entry.   (Entries
+       created  from <EM>file</EM> will be used first.  <STRONG>tic</STRONG> duplicates the
+       capabilities in <EM>entry</EM>-<EM>name</EM> for the current entry, with the
+       exception   of  those  capabilities  that  explicitly  are
        defined in the current entry.
 
-       When    an   entry,   e.g.,   <STRONG>entry_name_1</STRONG>,   contains   a
-       <STRONG>use=</STRONG><EM>entry</EM>_<EM>name</EM>_<EM>2</EM>  field,  any  canceled  capabilities   in
-       <EM>entry</EM>_<EM>name</EM>_<EM>2</EM>  must also appear in <STRONG>entry_name_1</STRONG> before <STRONG>use=</STRONG>
+       When   an   entry,   e.g.,   <STRONG>entry_name_1</STRONG>,   contains    a
+       <STRONG>use=</STRONG><EM>entry</EM>_<EM>name</EM>_<EM>2</EM>   field,  any  canceled  capabilities  in
+       <EM>entry</EM>_<EM>name</EM>_<EM>2</EM> must also appear in <STRONG>entry_name_1</STRONG> before  <STRONG>use=</STRONG>
        for these capabilities to be canceled in <STRONG>entry_name_1</STRONG>.
 
-       If the environment variable <STRONG>TERMINFO</STRONG> is set, the  compiled
-       results are placed there instead of <STRONG>/usr/share/terminfo</STRONG>.
-
        Total compiled entries cannot exceed 4096 bytes.  The name
        field cannot exceed 512 bytes.  Terminal  names  exceeding
        the  maximum  alias  length (32 characters on systems with
@@ -261,64 +347,83 @@
 
 
 </PRE>
-<H2>COMPATIBILITY</H2><PRE>
+<H2><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE>
        There is some evidence that historic  <STRONG>tic</STRONG>  implementations
        treated  description  fields with no whitespace in them as
        additional aliases or short names.  This <STRONG>tic</STRONG> does  not  do
        that,  but  it  does  warn  when description fields may be
-       treated that way and check them for dangerous  characters.
+       treated that way and check them for dangerous characters.
 
 
 </PRE>
-<H2>EXTENSIONS</H2><PRE>
-       Unlike the stock SVr4 <STRONG>tic</STRONG> command, this implementation can
-       actually compile termcap sources.   In  fact,  entries  in
-       terminfo  and  termcap  syntax  can  be  mixed in a single
-       source file.  See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>  for  the  list  of  termcap
-       names taken to be equivalent to terminfo names.
+<H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
+       Unlike the SVr4 <STRONG>tic</STRONG> command, this implementation can actu-
+       ally  compile  termcap  sources.  In fact, entries in ter-
+       minfo and termcap syntax can be mixed in a  single  source
+       file.  See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for the list of termcap names taken
+       to be equivalent to terminfo names.
 
-       The  SVr4  manual  pages  are  not clear on the resolution
-       rules for <STRONG>use</STRONG> capabilities.  This  implementation  of  <STRONG>tic</STRONG>
+       The SVr4 manual pages are  not  clear  on  the  resolution
+       rules  for  <STRONG>use</STRONG>  capabilities.  This implementation of <STRONG>tic</STRONG>
        will find <STRONG>use</STRONG> targets anywhere in the source file, or any-
-       where in the file tree rooted at <STRONG>TERMINFO</STRONG> (if <STRONG>TERMINFO</STRONG>  is
-       defined),  or  in the user's <EM>$HOME/.terminfo</EM> directory (if
-       it exists), or (finally) anywhere  in  the  system's  file
-       tree of compiled entries.
+       where  in the file tree rooted at <STRONG>TERMINFO</STRONG> (if <STRONG>TERMINFO</STRONG> is
+       defined), or in the user's <EM>$HOME/.terminfo</EM> database (if it
+       exists),  or  (finally) anywhere in the system's file tree
+       of compiled entries.
 
-       The  error  messages from this <STRONG>tic</STRONG> have the same format as
-       GNU C error messages, and can be  parsed  by  GNU  Emacs's
+       The error messages from this <STRONG>tic</STRONG> have the same  format  as
+       GNU  C  error  messages,  and can be parsed by GNU Emacs's
        compile facility.
 
-       The  <STRONG>-C</STRONG>,  <STRONG>-G</STRONG>,  <STRONG>-I</STRONG>, <STRONG>-N</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>, <STRONG>-e</STRONG>, <STRONG>-f</STRONG>, <STRONG>-g</STRONG>, <STRONG>-o</STRONG>, <STRONG>-r</STRONG>,
-       <STRONG>-s</STRONG>, <STRONG>-t</STRONG> and <STRONG>-x</STRONG> options are not supported under  SVr4.   The
-       SVr4 <STRONG>-c</STRONG> mode does not report bad use links.
+       The <STRONG>-0</STRONG>, <STRONG>-1</STRONG>, <STRONG>-C</STRONG>, <STRONG>-G</STRONG>, <STRONG>-I</STRONG>, <STRONG>-N</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>,  <STRONG>-e</STRONG>,  <STRONG>-f</STRONG>,  <STRONG>-g</STRONG>,
+       <STRONG>-o</STRONG>,  <STRONG>-r</STRONG>,  <STRONG>-s</STRONG>,  <STRONG>-t</STRONG>  and  <STRONG>-x</STRONG> options are not supported under
+       SVr4.  The SVr4 <STRONG>-c</STRONG> mode does not report bad use links.
 
-       System  V does not compile entries to or read entries from
-       your <EM>$HOME/.terminfo</EM> directory unless TERMINFO is  explic-
+       System V does not compile entries to or read entries  from
+       your  <EM>$HOME/.terminfo</EM>  database unless TERMINFO is explic-
        itly set to it.
 
 
 </PRE>
-<H2>FILES</H2><PRE>
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
        <STRONG>/usr/share/terminfo/?/*</STRONG>
             Compiled terminal description database.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <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="terminfo.5.html">terminfo(5)</A></STRONG>.
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <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 5.6 (patch 20081011).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
+
+
+</PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+       Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
+       Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
 
 
 
                                                                 <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
+<ul>
+<li><a href="#h3-OPTIONS">OPTIONS</a></li>
+<li><a href="#h3-PARAMETERS">PARAMETERS</a></li>
+<li><a href="#h3-PROCESSING">PROCESSING</a></li>
+</ul>
+</li>
+<li><a href="#h2-COMPATIBILITY">COMPATIBILITY</a></li>
+<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/toe.1m.html b/doc/html/man/toe.1m.html
index 7f4372f..98799b7 100644
--- a/doc/html/man/toe.1m.html
+++ b/doc/html/man/toe.1m.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2010,2011 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            *
@@ -27,36 +26,37 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: toe.1m,v 1.21 2008/01/05 20:57:16 tom Exp @
+  * @Id: toe.1m,v 1.26 2012/01/01 00:40:51 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>toe 1m</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>toe 1m</H1>
-<HR>
+<H1 class="no-header">toe 1m</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>                                                         <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>toe</STRONG> - table of (terminfo) entries
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
-       <STRONG>toe</STRONG> [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-ahuUV</STRONG>] <EM>file...</EM>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>toe</STRONG> [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-ahsuUV</STRONG>] <EM>file...</EM>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        With no options, <STRONG>toe</STRONG> lists all available terminal types by
        primary name with descriptions.   File  arguments  specify
        the  directories  to  be scanned; if no such arguments are
@@ -71,6 +71,14 @@
               ncurses would search, rather than  only  the  first
               one that it finds.
 
+              If  the  <STRONG>-s</STRONG> is also given, <STRONG>toe</STRONG> adds a column to the
+              report, showing (like  <STRONG>conflict(1)</STRONG>)  which  entries
+              which  belong to a given terminal database.  An "*"
+              marks entries which differ, and "+"  marks  equiva-
+              lent entries.
+
+       <STRONG>-s</STRONG>     sort the output by the entry names.
+
        <STRONG>-u</STRONG> <EM>file</EM>
               says  to  write  a  report  to the standard output,
               listing dependencies in the given  terminfo/termcap
@@ -101,26 +109,30 @@
 
 
 </PRE>
-<H2>FILES</H2><PRE>
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
        <STRONG>/usr/share/terminfo/?/*</STRONG>
             Compiled terminal description database.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <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><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
-       This describes <STRONG>ncurses</STRONG> version 5.6 (patch 20081011).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
 
 
 
                                                                 <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/tput.1.html b/doc/html/man/tput.1.html
index 2d31aa5..c04f53d 100644
--- a/doc/html/man/tput.1.html
+++ b/doc/html/man/tput.1.html
@@ -1,8 +1,7 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2011,2012 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            *
@@ -28,32 +27,33 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tput.1,v 1.27 2006/12/24 18:11:31 tom Exp @
+  * @Id: tput.1,v 1.32 2012/07/14 21:06:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>tput 1</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>tput 1</H1>
-<HR>
+<H1 class="no-header">tput 1</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>                                                         <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>tput</STRONG>,  <STRONG>reset</STRONG>  -  initialize  a  terminal or query terminfo
        database
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <EM>capname</EM> [<EM>parms</EM> ... ]
        <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>init</STRONG>
        <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>reset</STRONG>
@@ -63,10 +63,10 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        The <STRONG>tput</STRONG> utility uses the <STRONG>terminfo</STRONG> database  to  make  the
        values  of terminal-dependent capabilities and information
-       available to the shell (see <STRONG><A HREF="sh.1.html">sh(1)</A></STRONG>), to initialize or reset
+       available to the shell (see <STRONG>sh(1)</STRONG>), to initialize or reset
        the  terminal,  or  return  the long name of the requested
        terminal type.  The result depends upon  the  capability's
        type:
@@ -87,7 +87,7 @@
 
        Before using a value returned on the standard output,  the
        application  should  test  the  exit  code  (e.g., <STRONG>$?</STRONG>, see
-       <STRONG><A HREF="sh.1.html">sh(1)</A></STRONG>) to be sure it is <STRONG>0</STRONG>.  (See the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> and  <STRONG>DIAG-</STRONG>
+       <STRONG>sh(1)</STRONG>) to be sure it is <STRONG>0</STRONG>.  (See the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> and  <STRONG>DIAG-</STRONG>
        <STRONG>NOSTICS</STRONG>  sections.)   For  a complete list of capabilities
        and the <EM>capname</EM> associated with each, see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
 
@@ -95,54 +95,53 @@
               option is unnecessary, because the default is taken
               from the environment variable <STRONG>TERM</STRONG>.  If <STRONG>-T</STRONG> is spec-
               ified,  then  the shell variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG>
-              will be ignored,and the operating system  will  not
-              be queried for the actual screen size.
+              will also be ignored.
 
        <EM>capname</EM>
-              indicates   the   capability   from   the  <STRONG>terminfo</STRONG>
-              database.  When <STRONG>termcap</STRONG> support is compiled in, the
+              indicates the capability from  the  <STRONG>terminfo</STRONG>  data-
+              base.   When  <STRONG>termcap</STRONG>  support  is compiled in, the
               <STRONG>termcap</STRONG> name for the capability is also accepted.
 
-       <EM>parms</EM>  If  the  capability  is a string that takes parame-
+       <EM>parms</EM>  If the capability is a string  that  takes  parame-
               ters, the arguments <EM>parms</EM> will be instantiated into
               the string.
 
-              Most  parameters  are numbers.  Only a few terminfo
+              Most parameters are numbers.  Only a  few  terminfo
               capabilities require string parameters; <STRONG>tput</STRONG> uses a
               table to decide which to pass as strings.  Normally
-              <STRONG>tput</STRONG> uses <STRONG>tparm</STRONG> (3x) to perform  the  substitution.
+              <STRONG>tput</STRONG>  uses  <STRONG>tparm</STRONG> (3x) to perform the substitution.
               If no parameters are given for the capability, <STRONG>tput</STRONG>
-              writes   the   string   without   performing    the
-              substitution.
+              writes  the string without performing the substitu-
+              tion.
 
-       <STRONG>-S</STRONG>     allows  more  than one capability per invocation of
+       <STRONG>-S</STRONG>     allows more than one capability per  invocation  of
               <STRONG>tput</STRONG>.  The capabilities must be passed to <STRONG>tput</STRONG> from
               the standard input instead of from the command line
-              (see example).  Only one  <EM>capname</EM>  is  allowed  per
-              line.   The  <STRONG>-S</STRONG> option changes the meaning of the <STRONG>0</STRONG>
-              and <STRONG>1</STRONG> boolean and string exit codes (see  the  EXIT
+              (see  example).   Only  one  <EM>capname</EM> is allowed per
+              line.  The <STRONG>-S</STRONG> option changes the meaning of  the  <STRONG>0</STRONG>
+              and  <STRONG>1</STRONG>  boolean and string exit codes (see the EXIT
               CODES section).
 
               Again, <STRONG>tput</STRONG> uses a table and the presence of param-
-              eters in its input to decide whether to  use  <STRONG>tparm</STRONG>
+              eters  in  its input to decide whether to use <STRONG>tparm</STRONG>
               (3x), and how to interpret the parameters.
 
-       <STRONG>-V</STRONG>     reports  the  version  of ncurses which was used in
+       <STRONG>-V</STRONG>     reports the version of ncurses which  was  used  in
               this program, and exits.
 
-       <STRONG>init</STRONG>   If the <STRONG>terminfo</STRONG> database is present  and  an  entry
+       <STRONG>init</STRONG>   If  the  <STRONG>terminfo</STRONG>  database is present and an entry
               for the user's terminal exists (see <STRONG>-T</STRONG><EM>type</EM>, above),
               the following will occur:
 
-              (1)    if present,  the  terminal's  initialization
-                     strings  will  be  output as detailed in the
-                     <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> section on <EM>Tabs</EM> <EM>and</EM>  <EM>Initializa-</EM>
+              (1)    if  present,  the  terminal's initialization
+                     strings will be output as  detailed  in  the
+                     <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>  section on <EM>Tabs</EM> <EM>and</EM> <EM>Initializa-</EM>
                      <EM>tion</EM>,
 
-              (2)    any  delays (e.g., newline) specified in the
+              (2)    any delays (e.g., newline) specified in  the
                      entry will be set in the tty driver,
 
-              (3)    tabs expansion will  be  turned  on  or  off
+              (3)    tabs  expansion  will  be  turned  on or off
                      according to the specification in the entry,
                      and
 
@@ -153,37 +152,37 @@
               for any of the four above activities, that activity
               will silently be skipped.
 
-       <STRONG>reset</STRONG>  Instead  of putting out initialization strings, the
-              terminal's reset strings will be output if  present
-              (<STRONG>rs1</STRONG>,  <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, <STRONG>rf</STRONG>).  If the reset strings are not
-              present, but initialization strings are,  the  ini-
-              tialization  strings  will  be  output.  Otherwise,
+       <STRONG>reset</STRONG>  Instead of putting out initialization strings,  the
+              terminal's  reset strings will be output if present
+              (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, <STRONG>rf</STRONG>).  If the reset strings are  not
+              present,  but  initialization strings are, the ini-
+              tialization strings  will  be  output.   Otherwise,
               <STRONG>reset</STRONG> acts identically to <STRONG>init</STRONG>.
 
        <STRONG>longname</STRONG>
-              If the <STRONG>terminfo</STRONG> database is present  and  an  entry
-              for  the user's terminal exists (see <STRONG>-T</STRONG><EM>type</EM> above),
+              If  the  <STRONG>terminfo</STRONG>  database is present and an entry
+              for the user's terminal exists (see <STRONG>-T</STRONG><EM>type</EM>  above),
               then the long name of the terminal will be put out.
               The long name is the last name in the first line of
               the terminal's description in the <STRONG>terminfo</STRONG> database
               [see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>].
 
-       If  <STRONG>tput</STRONG>  is  invoked  by a link named <STRONG>reset</STRONG>, this has the
+       If <STRONG>tput</STRONG> is invoked by a link named  <STRONG>reset</STRONG>,  this  has  the
        same effect as <STRONG>tput</STRONG> <STRONG>reset</STRONG>.  See <STRONG>tset</STRONG> for comparison, which
        has similar behavior.
 
 
 </PRE>
-<H2>EXAMPLES</H2><PRE>
+<H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE>
        <STRONG>tput</STRONG> <STRONG>init</STRONG>
             Initialize the terminal according to the type of ter-
-            minal in the environmental variable <STRONG>TERM</STRONG>.  This  com-
-            mand  should be included in everyone's .profile after
+            minal  in the environmental variable <STRONG>TERM</STRONG>.  This com-
+            mand should be included in everyone's .profile  after
             the environmental variable <STRONG>TERM</STRONG> has been exported, as
-            illustrated on the <STRONG><A HREF="profile.5.html">profile(5)</A></STRONG> manual page.
+            illustrated on the <STRONG>profile(5)</STRONG> manual page.
 
        <STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG>
-            Reset  an  AT&amp;T 5620 terminal, overriding the type of
+            Reset an AT&amp;T 5620 terminal, overriding the  type  of
             terminal in the environmental variable <STRONG>TERM</STRONG>.
 
        <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>0</STRONG> <STRONG>0</STRONG>
@@ -239,7 +238,7 @@
 
 
 </PRE>
-<H2>FILES</H2><PRE>
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
        <STRONG>/usr/share/terminfo</STRONG>
               compiled terminal description database
 
@@ -252,7 +251,7 @@
 
 
 </PRE>
-<H2>EXIT CODES</H2><PRE>
+<H2><a name="h2-EXIT-CODES">EXIT CODES</a></H2><PRE>
        If the <STRONG>-S</STRONG> option is used, <STRONG>tput</STRONG> checks for errors from each
        line, and if any errors are found, will set the exit  code
        to  4  plus the number of lines with errors.  If no errors
@@ -263,42 +262,41 @@
        type of <EM>capname</EM>:
 
             <EM>boolean</EM>
-                   a value of <STRONG>0</STRONG> is set for TRUE and <STRONG>1</STRONG> for  FALSE.
+                   a value of <STRONG>0</STRONG> is set for TRUE and <STRONG>1</STRONG> for FALSE.
 
-            <EM>string</EM> a  value of <STRONG>0</STRONG> is set if the <EM>capname</EM> is defined
-                   for this terminal <EM>type</EM> (the value  of  <EM>capname</EM>
-                   is  returned on standard output); a value of <STRONG>1</STRONG>
+            <EM>string</EM> a value of <STRONG>0</STRONG> is set if the <EM>capname</EM> is  defined
+                   for  this  terminal <EM>type</EM> (the value of <EM>capname</EM>
+                   is returned on standard output); a value of  <STRONG>1</STRONG>
                    is set if <EM>capname</EM> is not defined for this ter-
-                   minal  <EM>type</EM>  (nothing  is  written to standard
+                   minal <EM>type</EM> (nothing  is  written  to  standard
                    output).
 
             <EM>integer</EM>
-                   a value of <STRONG>0</STRONG> is always  set,  whether  or  not
+                   a  value  of  <STRONG>0</STRONG>  is always set, whether or not
                    <EM>capname</EM> is defined for this terminal <EM>type</EM>.  To
-                   determine if <EM>capname</EM> is defined for this  ter-
+                   determine  if <EM>capname</EM> is defined for this ter-
                    minal <EM>type</EM>, the user must test the value writ-
-                   ten to standard output.  A value of  <STRONG>-1</STRONG>  means
-                   that  <EM>capname</EM> is not defined for this terminal
+                   ten  to  standard output.  A value of <STRONG>-1</STRONG> means
+                   that <EM>capname</EM> is not defined for this  terminal
                    <EM>type</EM>.
 
-            <EM>other</EM>  <STRONG>reset</STRONG> or <STRONG>init</STRONG> may fail to find  their  respec-
-                   tive  files.   In  that case, the exit code is
+            <EM>other</EM>  <STRONG>reset</STRONG>  or  <STRONG>init</STRONG> may fail to find their respec-
+                   tive files.  In that case, the  exit  code  is
                    set to 4 + <STRONG>errno</STRONG>.
 
-       Any other exit code indicates an error; see  the  DIAGNOS-
+       Any  other  exit code indicates an error; see the DIAGNOS-
        TICS section.
 
 
 </PRE>
-<H2>DIAGNOSTICS</H2><PRE>
+<H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE>
        <STRONG>tput</STRONG> prints the following error messages and sets the cor-
        responding exit codes.
 
-
        exit code   error message
        ---------------------------------------------------------------------
-       <STRONG>0</STRONG>           (<EM>capname</EM> is a numeric variable that is not specified  in
-                   the  <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>  database  for this terminal type, e.g.
+       <STRONG>0</STRONG>           (<EM>capname</EM>  is a numeric variable that is not specified in
+                   the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> database for this  terminal  type,  e.g.
                    <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>lines</STRONG> and <STRONG>tput</STRONG> <STRONG>-T2621</STRONG> <STRONG>xmc</STRONG>)
        <STRONG>1</STRONG>           no error message is printed, see the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> section.
        <STRONG>2</STRONG>           usage error
@@ -309,35 +307,55 @@
 
 
 </PRE>
-<H2>PORTABILITY</H2><PRE>
-       The <STRONG>longname</STRONG> and <STRONG>-S</STRONG> options, and  the  parameter-substitu-
-       tion  features  used in the <STRONG>cup</STRONG> example, are not supported
+<H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       The  <STRONG>longname</STRONG>  and <STRONG>-S</STRONG> options, and the parameter-substitu-
+       tion features used in the <STRONG>cup</STRONG> example, are  not  supported
        in BSD curses or in AT&amp;T/USL curses before SVr4.
 
-       X/Open documents only the operands  for  <STRONG>clear</STRONG>,  <STRONG>init</STRONG>  and
-       <STRONG>reset</STRONG>.   In this implementation, <STRONG>clear</STRONG> is part of the <EM>cap-</EM>
+       X/Open  documents  only  the  operands for <STRONG>clear</STRONG>, <STRONG>init</STRONG> and
+       <STRONG>reset</STRONG>.  In this implementation, <STRONG>clear</STRONG> is part of the  <EM>cap-</EM>
        <EM>name</EM> support.  Other implementations of <STRONG>tput</STRONG> on SVr4-based
        systems such as Solaris, IRIX64 and HPUX as well as others
-       such  as  AIX  and  Tru64  provide  support  for   <EM>capname</EM>
-       operands.  A few platforms such as FreeBSD and NetBSD rec-
-       ognize termcap names rather than terminfo capability names
-       in their respective <STRONG>tput</STRONG> commands.
+       such  as  AIX  and Tru64 provide support for <EM>capname</EM> oper-
+       ands.
+
+       A few platforms such as FreeBSD and NetBSD recognize term-
+       cap  names  rather than terminfo capability names in their
+       respective <STRONG>tput</STRONG> commands.
+
+       Most implementations which provide support for <EM>capname</EM> op-
+       erands  use the <EM>tparm</EM> function to expand parameters in it.
+       That function expects a  mixture  of  numeric  and  string
+       parameters,  requiring  <STRONG>tput</STRONG>  to  know  which type to use.
+       This implementation uses a table to determine that for the
+       standard  <EM>capname</EM>  operands, and an internal library func-
+       tion  to  analyze  nonstandard  <EM>capname</EM>  operands.   Other
+       implementations  may simply guess that an operand contain-
+       ing only digits is intended to be a number.
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG><A HREF="stty.1.html">stty(1)</A></STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>.
+<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="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 5.6 (patch 20081011).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
 
 
 
                                                                 <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-EXAMPLES">EXAMPLES</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-EXIT-CODES">EXIT CODES</a></li>
+<li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li>
+<li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/tset.1.html b/doc/html/man/tset.1.html
index 951fd0c..73192cd 100644
--- a/doc/html/man/tset.1.html
+++ b/doc/html/man/tset.1.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2011,2013 Free Software Foundation, Inc.              *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * copy of this software and associated documentation files (the            *
@@ -27,31 +26,32 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: tset.1,v 1.19 2006/12/24 15:00:30 tom Exp @
+  * @Id: tset.1,v 1.29 2013/12/21 22:15:53 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>tset 1</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>tset 1</H1>
-<HR>
+<H1 class="no-header">tset 1</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>                                                         <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>tset</STRONG>, <STRONG>reset</STRONG> - terminal initialization
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>tset</STRONG>  [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>]
        [<EM>terminal</EM>]
        <STRONG>reset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>]
@@ -59,7 +59,7 @@
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
        <STRONG>Tset</STRONG>  initializes  terminals.   <STRONG>Tset</STRONG>  first determines the
        type of terminal that you are using.   This  determination
        is done as follows, using the first terminal type found.
@@ -70,18 +70,18 @@
 
        3.  (BSD  systems only.) The terminal type associated with
        the standard error output device in  the  <EM>/etc/ttys</EM>  file.
-       (On Linux and System-V-like UNIXes, <EM>getty</EM> does this job by
-       setting <STRONG>TERM</STRONG>  according  to  the  type  passed  to  it  by
-       <EM>/etc/inittab</EM>.)
+       (On  System-V-like  UNIXes  and systems using that conven-
+       tion, <EM>getty</EM> does this job by setting <STRONG>TERM</STRONG> according to the
+       type passed to it by <EM>/etc/inittab</EM>.)
 
-       4. The default terminal type, ``unknown''.
+       4. The default terminal type, "unknown".
 
        If  the  terminal  type  was not specified on the command-
        line, the <STRONG>-m</STRONG> option mappings are  then  applied  (see  the
        section  <STRONG>TERMINAL</STRONG>  <STRONG>TYPE</STRONG>  <STRONG>MAPPING</STRONG>  for  more  information).
        Then, if the terminal type begins  with  a  question  mark
-       (``?''), the user is prompted for confirmation of the ter-
-       minal type.  An empty  response  confirms  the  type,  or,
+       ("?"), the user is prompted for confirmation of the termi-
+       nal type.   An  empty  response  confirms  the  type,  or,
        another  type  can be entered to specify a new type.  Once
        the terminal type has been determined, the terminfo  entry
        for  the  terminal  is retrieved.  If no terminfo entry is
@@ -116,8 +116,9 @@
 
        The options are as follows:
 
-       <STRONG>-c</STRONG>   Set  control  characters and modes.  <STRONG>-e</STRONG> Set the erase
-            character to <EM>ch</EM>.
+       <STRONG>-c</STRONG>   Set control characters and modes.
+
+       <STRONG>-e</STRONG>   Set the erase character to <EM>ch</EM>.
 
        <STRONG>-I</STRONG>   Do  not  send  the  terminal  or  tab  initialization
             strings to the terminal.
@@ -126,39 +127,39 @@
 
        <STRONG>-k</STRONG>   Set the line kill character to <EM>ch</EM>.
 
-       <STRONG>-m</STRONG>   Specify  a  mapping  from  a port type to a terminal.
+       <STRONG>-m</STRONG>   Specify a mapping from a port  type  to  a  terminal.
             See the section <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> for more infor-
             mation.
 
-       <STRONG>-Q</STRONG>   Do  not  display  any values for the erase, interrupt
+       <STRONG>-Q</STRONG>   Do not display any values for  the  erase,  interrupt
             and line kill characters.  Normally <STRONG>tset</STRONG> displays the
-            values  for  control characters which differ from the
+            values for control characters which differ  from  the
             system's default values.
 
-       <STRONG>-q</STRONG>   The terminal type is displayed to the  standard  out-
-            put,  and the terminal is not initialized in any way.
+       <STRONG>-q</STRONG>   The  terminal  type is displayed to the standard out-
+            put, and the terminal is not initialized in any  way.
             The option `-' by itself is equivalent but archaic.
 
        <STRONG>-r</STRONG>   Print the terminal type to the standard error output.
 
        <STRONG>-s</STRONG>   Print  the  sequence  of shell commands to initialize
             the environment variable <STRONG>TERM</STRONG> to the standard output.
-            See  the section <STRONG>SETTING</STRONG> <STRONG>THE</STRONG> <STRONG>ENVIRONMENT</STRONG> for details.
+            See the section <STRONG>SETTING</STRONG> <STRONG>THE</STRONG> <STRONG>ENVIRONMENT</STRONG> for details.
 
        <STRONG>-V</STRONG>   reports the version of ncurses which was used in this
             program, and exits.
 
-       <STRONG>-w</STRONG>   Resize  the  window  to  match  the  size deduced via
+       <STRONG>-w</STRONG>   Resize the window  to  match  the  size  deduced  via
             <STRONG>setupterm</STRONG>.   Normally  this  has  no  effect,  unless
             <STRONG>setupterm</STRONG> is not able to detect the window size.
 
        The arguments for the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options may either be
-       entered as actual characters or by using the  `hat'  nota-
-       tion, i.e. control-h may be specified as ``^H'' or ``^h''.
+       entered  as  actual characters or by using the `hat' nota-
+       tion, i.e., control-h may be specified as "^H" or "^h".
 
 
 </PRE>
-<H2>SETTING THE ENVIRONMENT</H2><PRE>
+<H2><a name="h2-SETTING-THE-ENVIRONMENT">SETTING THE ENVIRONMENT</a></H2><PRE>
        It is often desirable  to  enter  the  terminal  type  and
        information  about  the  terminal's  capabilities into the
        shell's environment.  This is done using the <STRONG>-s</STRONG> option.
@@ -166,7 +167,7 @@
        When the <STRONG>-s</STRONG> option is specified, the commands to enter the
        information  into  the  shell's environment are written to
        the standard output.  If the <STRONG>SHELL</STRONG> environmental  variable
-       ends in ``csh'', the commands are for <STRONG>csh</STRONG>, otherwise, they
+       ends  in  "csh", the commands are for <STRONG>csh</STRONG>, otherwise, they
        are for <STRONG>sh</STRONG>.  Note, the <STRONG>csh</STRONG>  commands  set  and  unset  the
        shell  variable  <STRONG>noglob</STRONG>,  leaving it unset.  The following
        line in the <STRONG>.login</STRONG> or <STRONG>.profile</STRONG> files will  initialize  the
@@ -176,7 +177,7 @@
 
 
 </PRE>
-<H2>TERMINAL TYPE MAPPING</H2><PRE>
+<H2><a name="h2-TERMINAL-TYPE-MAPPING">TERMINAL TYPE MAPPING</a></H2><PRE>
        When the terminal is not hardwired into the system (or the
        current system information is incorrect) the terminal type
        derived  from the <EM>/etc/ttys</EM> file or the <STRONG>TERM</STRONG> environmental
@@ -186,21 +187,21 @@
        terminal used on such ports.
 
        The  purpose  of  the <STRONG>-m</STRONG> option is to map from some set of
-       conditions to a terminal type, that is, to tell <STRONG>tset</STRONG>  ``If
+       conditions to a terminal type, that is, to tell  <STRONG>tset</STRONG>  "If
        I'm  on this port at a particular speed, guess that I'm on
-       that kind of terminal''.
+       that kind of terminal".
 
        The argument to the <STRONG>-m</STRONG> option consists of an optional port
        type, an optional operator, an optional baud rate specifi-
-       cation, an optional colon (``:'') character and a terminal
+       cation, an optional colon (":") character and  a  terminal
        type.   The port type is a string (delimited by either the
        operator or the colon character).  The operator may be any
-       combination of ``&gt;'', ``&lt;'', ``@'', and ``!''; ``&gt;'' means
-       greater than, ``&lt;'' means less than, ``@'' means equal  to
-       and ``!'' inverts the sense of the test.  The baud rate is
-       specified as a number and is compared with  the  speed  of
-       the  standard  error  output  (which should be the control
-       terminal).  The terminal type is a string.
+       combination  of  "&gt;", "&lt;", "@", and "!"; "&gt;" means greater
+       than, "&lt;" means less than, "@"  means  equal  to  and  "!"
+       inverts the sense of the test.  The baud rate is specified
+       as a number and is compared with the speed of the standard
+       error  output (which should be the control terminal).  The
+       terminal type is a string.
 
        If the terminal type is not specified on the command line,
        the  <STRONG>-m</STRONG> mappings are applied to the terminal type.  If the
@@ -231,12 +232,12 @@
        argument.  Also, to avoid problems  with  meta-characters,
        it  is  suggested  that  the  entire <STRONG>-m</STRONG> option argument be
        placed within single quote characters, and that <STRONG>csh</STRONG>  users
-       insert  a  backslash character (``\'') before any exclama-
-       tion marks (``!'').
+       insert  a backslash character ("\") before any exclamation
+       marks ("!").
 
 
 </PRE>
-<H2>HISTORY</H2><PRE>
+<H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
        The <STRONG>tset</STRONG> command appeared in BSD 3.0.  The <STRONG>ncurses</STRONG>  imple-
        mentation  was lightly adapted from the 4.4BSD sources for
        a terminfo environment by Eric S. Raymond &lt;esr@snark.thyr-
@@ -244,17 +245,17 @@
 
 
 </PRE>
-<H2>COMPATIBILITY</H2><PRE>
+<H2><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE>
        The  <STRONG>tset</STRONG>  utility has been provided for backward-compati-
        bility with BSD environments (under  most  modern  UNIXes,
-       <STRONG>/etc/inittab</STRONG>  and  <STRONG><A HREF="getty.1.html">getty(1)</A></STRONG> can set <STRONG>TERM</STRONG> appropriately for
+       <STRONG>/etc/inittab</STRONG>  and  <STRONG>getty(1)</STRONG> can set <STRONG>TERM</STRONG> appropriately for
        each dial-up line; this  obviates  what  was  <STRONG>tset</STRONG>'s  most
        important  use).   This implementation behaves like 4.4BSD
        tset, with a few exceptions specified here.
 
        The <STRONG>-S</STRONG> option of BSD tset no longer works;  it  prints  an
        error message to stderr and dies.  The <STRONG>-s</STRONG> option only sets
-       <STRONG>TERM</STRONG>, not <STRONG>TERMCAP</STRONG>.  Both these  changes  are  because  the
+       <STRONG>TERM</STRONG>, not <STRONG>TERMCAP</STRONG>.  Both of these changes are because  the
        <STRONG>TERMCAP</STRONG>  variable  is  no longer supported under terminfo-
        based <STRONG>ncurses</STRONG>, which makes <STRONG>tset</STRONG> <STRONG>-S</STRONG> useless (we made it die
        noisily rather than silently induce lossage).
@@ -270,7 +271,7 @@
        <STRONG>-d</STRONG>, and <STRONG>-p</STRONG> options are similarly not documented or useful,
        but were retained as they appear to be in widespread  use.
        It  is  strongly recommended that any usage of these three
-       options be changed to use the <STRONG>-m</STRONG> option instead.   The  -n
+       options be changed to use the <STRONG>-m</STRONG> option instead.   The  <STRONG>-n</STRONG>
        option  remains, but has no effect.  The <STRONG>-adnp</STRONG> options are
        therefore omitted from the usage summary above.
 
@@ -286,7 +287,7 @@
 
 
 </PRE>
-<H2>ENVIRONMENT</H2><PRE>
+<H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE>
        The <STRONG>tset</STRONG> command uses these environment variables:
 
        SHELL
@@ -304,7 +305,7 @@
 
 
 </PRE>
-<H2>FILES</H2><PRE>
+<H2><a name="h2-FILES">FILES</a></H2><PRE>
        /etc/ttys
             system  port  name  to terminal type mapping database
             (BSD versions only).
@@ -314,20 +315,29 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
-       <STRONG><A HREF="csh.1.html">csh(1)</A></STRONG>, <STRONG><A HREF="sh.1.html">sh(1)</A></STRONG>, <STRONG><A HREF="stty.1.html">stty(1)</A></STRONG>,  <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>,  <STRONG><A HREF="tty.4.html">tty(4)</A></STRONG>,  ter-
-       <STRONG><A HREF="minfo.5.html">minfo(5)</A></STRONG>, <STRONG><A HREF="ttys.5.html">ttys(5)</A></STRONG>, <STRONG><A HREF="environ.7.html">environ(7)</A></STRONG>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
+       <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 5.6 (patch 20081011).
+       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
 
 
 
                                                                 <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-SETTING-THE-ENVIRONMENT">SETTING THE ENVIRONMENT</a></li>
+<li><a href="#h2-TERMINAL-TYPE-MAPPING">TERMINAL TYPE MAPPING</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
+<li><a href="#h2-COMPATIBILITY">COMPATIBILITY</a></li>
+<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a></li>
+<li><a href="#h2-FILES">FILES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
diff --git a/doc/html/man/wresize.3x.html b/doc/html/man/wresize.3x.html
index 3e4ed35..8e986cd 100644
--- a/doc/html/man/wresize.3x.html
+++ b/doc/html/man/wresize.3x.html
@@ -1,7 +1,6 @@
-<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
 <!-- 
   ****************************************************************************
-  * Copyright (c) 1998-2003,2006 Free Software Foundation, Inc.              *
+  * Copyright (c) 1998-2006,2010 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            *
@@ -28,48 +27,49 @@
   * authorization.                                                           *
   ****************************************************************************
   * Author: Thomas E. Dickey 1996
-  * @Id: wresize.3x,v 1.9 2006/02/25 21:47:06 tom Exp @
+  * @Id: wresize.3x,v 1.13 2010/12/04 18:40:45 tom Exp @
 -->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
+<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
 <TITLE>wresize 3x</TITLE>
 <link rev=made href="mailto:bug-ncurses@gnu.org">
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </HEAD>
 <BODY>
-<H1>wresize 3x</H1>
-<HR>
+<H1 class="no-header">wresize 3x</H1>
 <PRE>
-<!-- Manpage converted by man2html 3.0.1 -->
 <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>                                                 <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
 
 
 
 
 </PRE>
-<H2>NAME</H2><PRE>
+<H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>wresize</STRONG> - resize a curses window
 
 
 </PRE>
-<H2>SYNOPSIS</H2><PRE>
+<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
        <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG>
 
        <STRONG>int</STRONG> <STRONG>wresize(WINDOW</STRONG> <STRONG>*win,</STRONG> <STRONG>int</STRONG> <STRONG>lines,</STRONG> <STRONG>int</STRONG> <STRONG>columns);</STRONG>
 
 
 </PRE>
-<H2>DESCRIPTION</H2><PRE>
-       The  <STRONG>wresize</STRONG>  function  reallocates storage for an <STRONG>ncurses</STRONG>
-       window to adjust its dimensions to the  specified  values.
-       If either dimension is larger than the current values, the
-       window's data is filled with blanks that have the  current
-       background  rendition  (as  set  by <STRONG>wbkgndset</STRONG>) merged into
-       them.
+<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
+       This  is  an  extension to the curses library.  It reallo-
+       cates storage for an <STRONG>ncurses</STRONG> window to adjust  its  dimen-
+       sions  to  the  specified  values.  If either dimension is
+       larger than the  current  values,  the  window's  data  is
+       filled with blanks that have the current background rendi-
+       tion (as set by <STRONG>wbkgdset</STRONG>) merged into them.
 
 
 </PRE>
-<H2>RETURN VALUE</H2><PRE>
+<H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        The function returns the integer <STRONG>ERR</STRONG> upon failure  and  <STRONG>OK</STRONG>
        on success.  It will fail if either of the dimensions less
        than or equal  to  zero,  or  if  an  error  occurs  while
@@ -77,7 +77,7 @@
 
 
 </PRE>
-<H2>NOTES</H2><PRE>
+<H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        The only restriction placed on the dimensions is that they
        be greater than zero.  The dimensions are not compared  to
        <STRONG>curses</STRONG>   screen   dimensions  to  simplify  the  logic  of
@@ -86,12 +86,12 @@
 
 
 </PRE>
-<H2>SEE ALSO</H2><PRE>
+<H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
        <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>.
 
 
 </PRE>
-<H2>AUTHOR</H2><PRE>
+<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
        Thomas Dickey (from an equivalent function written in 1988
        for BSD curses).
 
@@ -99,10 +99,16 @@
 
                                                             <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>
 </PRE>
-<HR>
-<ADDRESS>
-Man(1) output converted with
-<a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
-</ADDRESS>
+<div class="nav">
+<ul>
+<li><a href="#h2-NAME">NAME</a></li>
+<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
+<li><a href="#h2-NOTES">NOTES</a></li>
+<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
+<li><a href="#h2-AUTHOR">AUTHOR</a></li>
+</ul>
+</div>
 </BODY>
 </HTML>
