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>
