diff --git a/doc/html/man/infocmp.1m.html b/doc/html/man/infocmp.1m.html
index 9d18c97..44cb12f 100644
--- a/doc/html/man/infocmp.1m.html
+++ b/doc/html/man/infocmp.1m.html
@@ -1,7 +1,8 @@
-<!-- 
+<!--
   * t
   ****************************************************************************
-  * Copyright (c) 1998-2014,2015 Free Software Foundation, Inc.              *
+  * Copyright 2018-2023,2024 Thomas E. Dickey                                *
+  * Copyright 1998-2017,2018 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,377 +28,392 @@
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: infocmp.1m,v 1.56 2015/05/23 20:50:00 tom Exp @
+  * @Id: infocmp.1m,v 1.109 2024/03/16 15:35:01 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">
+<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
+<TITLE>infocmp 1m 2024-03-16 ncurses 6.5 User commands</TITLE>
+<link rel="author" href="mailto:bug-ncurses@gnu.org">
+
 </HEAD>
 <BODY>
-<H1 class="no-header">infocmp 1m</H1>
+<H1 class="no-header">infocmp 1m 2024-03-16 ncurses 6.5 User commands</H1>
 <PRE>
-<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>                                                 <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
+<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>                      User commands                     <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
 
 
 
 
-</PRE>
-<H2><a name="h2-NAME">NAME</a></H2><PRE>
+</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
        <STRONG>infocmp</STRONG> - compare or print out <EM>terminfo</EM> descriptions
 
 
-</PRE>
-<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>]
+</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
+       <STRONG>infocmp</STRONG> [<STRONG>-1cCdDeEFgGiIKlLnpqrtTuUVWx</STRONG>]
+             [<STRONG>-v</STRONG> <EM>n</EM>] [<STRONG>-s</STRONG> <STRONG>d</STRONG>| <STRONG>i</STRONG>| <STRONG>l</STRONG>| <STRONG>c</STRONG>] [<STRONG>-Q</STRONG> <EM>n</EM>] [<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>...]
+             [<EM>terminal-type</EM> ...]
 
 
-</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
-       print out a <STRONG>terminfo</STRONG>  description  from  the  binary  file
-       (<STRONG>term</STRONG>) in a variety of formats.  In all cases, the boolean
-       fields will be printed  first,  followed  by  the  numeric
-       fields, followed by the string fields.
+</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> description to take  advantage  of
+       the  <STRONG>use=</STRONG>  terminfo field, or print out a <STRONG>terminfo</STRONG> description from the
+       binary file (<STRONG>term</STRONG>) in a variety of formats.  In all cases, the  Boolean
+       fields  will be printed first, followed by the numeric fields, followed
+       by the string fields.
 
 
-</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.
+</PRE><H3><a name="h3-Default-Options">Default Options</a></H3><PRE>
+       If no  options  are  specified  and  zero  or  one  <EM>terminal-types</EM>  are
+       specified,  the  <STRONG>-I</STRONG> option will be assumed.  If more than one <EM>terminal-</EM>
+       <EM>type</EM> is specified, the <STRONG>-d</STRONG> option will be assumed.
 
 
-</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.
+</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>terminal-type</EM>  with  each  of the descriptions given by the entries for
+       the other terminal's <EM>terminal-types</EM>.  If a capability  is  defined  for
+       only  one  of  the terminals, the value returned depends on the type of
+       the capability:
 
-       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.
+       <STRONG>o</STRONG>   <STRONG>F</STRONG> for missing Boolean variables
 
-       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.
+       <STRONG>o</STRONG>   <STRONG>NULL</STRONG> for missing integer or string variables
 
-       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.
+       Use the <STRONG>-q</STRONG> option to show the distinction between <EM>absent</EM> and  <EM>cancelled</EM>
+       capabilities.
+
+       These  options  produce a list which you can use to compare two or more
+       terminal descriptions:
+
+       <STRONG>-d</STRONG>   produces a list of each capability that is <EM>different</EM>  between  two
+            entries.   Each  item  in  the list shows ":" after the capability
+            name, followed by the capability values, separated by a comma.
+
+       <STRONG>-c</STRONG>   produces a list of each capability that is <EM>common</EM> between  two  or
+            more entries.  Missing capabilities are ignored.  Each item in the
+            list  shows  "="  after  the  capability  name,  followed  by  the
+            capability value.
+
+            The  <STRONG>-u</STRONG>  option  provides  a  related  output,  showing  the first
+            terminal description rewritten to use the  second  as  a  building
+            block via the "use=" clause.
+
+       <STRONG>-n</STRONG>   produces  a  list  of each capability that is in <EM>none</EM> of the given
+            entries.  Each item in the list shows "!"  before  the  capability
+            name.
+
+            Normally only the conventional capabilities are shown.  Use the <STRONG>-x</STRONG>
+            option to add the BSD-compatibility capabilities  (names  prefixed
+            with "OT").
+
+            If  no  <EM>terminal-types</EM>  are  given,  <STRONG>infocmp</STRONG>  uses the environment
+            variable <EM>TERM</EM> for each of the <EM>terminal-types</EM>.
 
 
-</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.
+</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.
+                   <STRONG>-I</STRONG>   use <EM>terminfo</EM> capability codes
+                   <STRONG>-L</STRONG>   use "long" capability names
+                   <STRONG>-C</STRONG>   use <EM>termcap</EM> capability codes
+                   <STRONG>-r</STRONG>   with <STRONG>-C</STRONG>, include nonstandard capabilities
+                   <STRONG>-K</STRONG>   with <STRONG>-C</STRONG>, improve BSD compatibility
 
-       If no <EM>termnames</EM> are given, the environment  variable  <STRONG>TERM</STRONG>
-       will be used for the terminal name.
+       If  no  <EM>terminal-types</EM> are given, the environment variable <EM>TERM</EM> 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
-       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
-       and commented out.  These should be edited by hand.
+       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  anything not converted will be plainly marked in the
+       output and commented out.  These should be edited by hand.
 
-       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).
+       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.
+       <STRONG>infocmp</STRONG> trims away less essential 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 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 information 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.  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>.
+       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 normally 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
-       original <STRONG>terminfo</STRONG> source.
+       Note  that  because  padding  is  collected  to  the  beginning  of the
+       capability, not all capabilities are output.  Mandatory 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
-       such sequences, are:
+       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
-     ---------------------------------------------------------------
-     <STRONG>%p1%c</STRONG>                       <STRONG>%.</STRONG>        adm
-     <STRONG>%p1%d</STRONG>                       <STRONG>%d</STRONG>        hp, ANSI standard, vt100
-     <STRONG>%p1%'x'%+%c</STRONG>                 <STRONG>%+x</STRONG>       concept
-     <STRONG>%i</STRONG>                          <STRONG>%i</STRONG>q       ANSI standard, vt100
-     <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><EM>terminfo</EM></STRONG>                   <STRONG><EM>termcap</EM></STRONG>   Terminal Types
+                 ----------------------------------------------------
+                 <STRONG>%p1%c</STRONG>                      <STRONG>%.</STRONG>        ansi-m
+                 <STRONG>%p1%d</STRONG>                      <STRONG>%d</STRONG>        ansi, vt100
+                 <STRONG>%p1%'</STRONG> <STRONG>'%+%c</STRONG>                <STRONG>%+x</STRONG>       vt52
+                 <STRONG>%i</STRONG>                         <STRONG>%iq</STRONG>       ansi, vt100
+                 <STRONG>%p1%?%'x'%&gt;%t%p1%'y'%+%;</STRONG>   <STRONG>%&gt;xy</STRONG>      annarbor4080
+                 <STRONG>%p2</STRONG>...<STRONG>%p1</STRONG>                  <STRONG>%r</STRONG>        hpgeneric
 
 
-</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
-       description.  Or, if two similar terminals exist, but were
-       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.
+</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>terminal-type</EM> which is relative to the sum of the descriptions
+       given by the entries for the other <EM>terminal-types</EM>.   It  does  this  by
+       analyzing  the  differences  between  the  first <EM>terminal-types</EM> and the
+       other <EM>terminal-types</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  description.   Or,  if  two
+       similar  terminals  exist,  but  were  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
+       relative 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
-       first of the other <EM>termname</EM> entries that has this capabil-
-       ity gives a different value for the capability  than  that
-       in the first <EM>termname</EM>.
+       A capability will be printed with an at-sign (@) if it no longer exists
+       in  the first <EM>terminal-type</EM>, but one of the other <EM>terminal-type</EM> entries
+       contains a value for it.  A capability's value will be printed  if  the
+       value  in  the  first  <EM>terminal-type</EM>  is  not found in any of the other
+       <EM>terminal-type</EM> entries, or if  the  first  of  the  other  <EM>terminal-type</EM>
+       entries  that  has  this  capability  gives  a  different value for the
+       capability than that in the first <EM>terminal-type</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
-       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
-       found.
+       The order of the other <EM>terminal-type</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 contain differing entries for the same
+       capabilities will produce different results depending on the order that
+       the entries are given in.  <STRONG>infocmp</STRONG> will flag any  such  inconsistencies
+       between the other <EM>terminal-type</EM> entries as they are found.
 
-       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
-       description can be a useful check to make sure that every-
-       thing was  specified  correctly  in  the  original  source
+       Alternatively, specifying a capability <EM>after</EM> a <STRONG>use=</STRONG> entry that contains
+       that capability will cause the  second  specification  to  be  ignored.
+       Using  <STRONG>infocmp</STRONG>  to recreate a description can be a useful check to make
+       sure that everything 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
-       needed.
+       Another  error  that  does not cause incorrect compiled files, but will
+       slow down the compilation time, is specifying extra  <STRONG>use=</STRONG>  fields  that
+       are superfluous.  <STRONG>infocmp</STRONG> will flag any other <EM>terminal-type</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>]
-       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).
+       Like  other  <EM>ncurses</EM>  utilities,  <STRONG>infocmp</STRONG>  looks   for   the   terminal
+       descriptions   in  several  places.   You  can  use  the  <EM>TERMINFO</EM>  and
+       <EM>TERMINFO</EM><STRONG>_</STRONG><EM>DIRS</EM> environment variables to override the compiled-in default
+       list  of  places  to  search.   See <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, as well as the <EM>Fetching</EM>
+       <EM>Compiled</EM> <EM>Descriptions</EM> section in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></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:
+       You can also use the options <STRONG>-A</STRONG> and <STRONG>-B</STRONG> to override the list  of  places
+       to search when comparing terminal descriptions:
 
-       <STRONG>o</STRONG>   The <STRONG>-A</STRONG> option sets the location for the first <EM>termname</EM>
+       <STRONG>o</STRONG>   The <STRONG>-A</STRONG> option sets the location for the first <EM>terminal-type</EM>
 
-       <STRONG>o</STRONG>   The   <STRONG>-B</STRONG>  option  sets  the  location  for  the  other
-           <EM>termnames</EM>.
+       <STRONG>o</STRONG>   The <STRONG>-B</STRONG> option sets the location for the other <EM>terminal-types</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.
+       Using  these  options,  it  is  possible  to compare descriptions for a
+       terminal with the same name located in two  different  databases.   For
+       instance,  you  can use this feature for comparing descriptions for the
+       same terminal created 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.
+</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.
+       <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.
 
-       <STRONG>-a</STRONG>   tells  <STRONG>infocmp</STRONG>  to  retain commented-out capabilities
-            rather than discarding them.  Capabilities  are  com-
-            mented by prefixing them with a period.
+       <STRONG>-a</STRONG>   tells <STRONG>infocmp</STRONG> to retain  commented-out  capabilities  rather  than
+            discarding  them.   Capabilities  are  commented 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>-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
-            the corresponding terminal entry.
+       <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 versions 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
-            names required making the arrays of terminal capabil-
-            ities separate from the TERMTYPE structure.
+            Before  <EM>ncurses</EM>  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  capabilities  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
-            is  useful  for  preparing  versions  of  the  curses
-            library hardwired for a given terminal type.
+       <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
-            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-
-            ferences, but resolution can be forced by also speci-
-            fying <STRONG>-r</STRONG>.
+       <STRONG>-F</STRONG>   compare terminfo files.  This assumes that two following 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  differences,
+            but resolution can be forced by also specifying <STRONG>-r</STRONG>.
 
-       <STRONG>-f</STRONG>   Display   complex   terminfo  strings  which  contain
-            if/then/else/endif expressions indented for readabil-
-            ity.
+       <STRONG>-f</STRONG>   Display  complex terminfo strings which contain if/then/else/endif
+            expressions indented for readability.
 
-       <STRONG>-G</STRONG>   Display constant literals in decimal form rather than
-            their character equivalents.
+       <STRONG>-G</STRONG>   Display constant  literals  in  decimal  form  rather  than  their
+            character equivalents.
 
-       <STRONG>-g</STRONG>   Display constant character literals  in  quoted  form
-            rather than their decimal equivalents.
+       <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,  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>).
+       <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,  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.
+            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 printable expansion of the capability string
+            with  sections  matching  recognized   actions   translated   into
+            {}-bracketed descriptions.
 
-            Here is a list of the DEC/ANSI special sequences rec-
-            ognized:
+            Here is a list of the DEC/ANSI special sequences recognized:
 
-                  Action        Meaning
-                  -----------------------------------------
-                  RIS           full reset
-                  SC            save cursor
-                  RC            restore cursor
-                  LL            home-down
-                  RSR           reset scroll region
-                  -----------------------------------------
-                  DECSTR        soft reset (VT320)
-                  S7C1T         7-bit controls (VT220)
-                  -----------------------------------------
-                  ISO DEC G0    enable DEC graphics for G0
-                  ISO UK G0     enable UK chars for G0
-                  ISO US G0     enable US chars for G0
-                  ISO DEC G1    enable DEC graphics for G1
-                  ISO UK G1     enable UK chars for G1
-                  ISO US G1     enable US chars for G1
-                  -----------------------------------------
-                  DECPAM        application keypad mode
-                  DECPNM        normal keypad mode
-                  DECANSI       enter ANSI mode
-                  -----------------------------------------
-                  ECMA[+-]AM    keyboard action mode
-                  ECMA[+-]IRM   insert replace mode
-                  ECMA[+-]SRM   send receive mode
-                  ECMA[+-]LNM   linefeed mode
-                  -----------------------------------------
-                  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
+                      Action        Meaning
+                      -----------------------------------------
+                      RIS           full reset
+                      SC            save cursor
+                      RC            restore cursor
+                      LL            home-down
+                      RSR           reset scroll region
+                      -----------------------------------------
 
-            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).
+                      DECSTR        soft reset (VT320)
+                      S7C1T         7-bit controls (VT220)
+                      -----------------------------------------
+                      ISO DEC G0    enable DEC graphics for G0
+                      ISO UK G0     enable UK chars for G0
+                      ISO US G0     enable US chars for G0
+                      ISO DEC G1    enable DEC graphics for G1
+                      ISO UK G1     enable UK chars for G1
+                      ISO US G1     enable US chars for G1
+                      -----------------------------------------
+                      DECPAM        application keypad mode
+                      DECPNM        normal keypad mode
+                      DECANSI       enter ANSI mode
+                      -----------------------------------------
+                      ECMA[+-]AM    keyboard action mode
+                      ECMA[+-]IRM   insert replace mode
+                      ECMA[+-]SRM   send receive mode
+                      ECMA[+-]LNM   linefeed mode
+                      -----------------------------------------
+                      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
 
-            An  SGR0  designates  an  empty  highlight   sequence
-            (equivalent to {SGR:NORMAL}).
+       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
+
+              <STRONG>o</STRONG>   "+" (turn on) or
+
+              <STRONG>o</STRONG>   "-" (turn off).
+
+              An  SGR0  designates  an empty highlight sequence (equivalent to
+              {SGR:NORMAL}).
 
        <STRONG>-l</STRONG>   Set output format to terminfo.
 
        <STRONG>-p</STRONG>   Ignore padding specifications when comparing strings.
 
-       <STRONG>-q</STRONG>   Make  the comparison listing shorter by omitting sub-
-            headings, and using "-" for absent capabilities,  "@"
-            for canceled rather than "NULL".
+       <STRONG>-Q</STRONG> <EM>n</EM> Rather than show source  in  terminfo  (text)  format,  print  the
+            compiled  (binary) format in hexadecimal or base64 form, depending
+            on the option's value:
+
+               1  hexadecimal
+
+               2  base64
+
+               3  hexadecimal and base64
+
+            For example, this prints the compiled terminfo value as  a  string
+            which could be assigned to the <EM>TERMINFO</EM> environment variable:
+
+                infocmp -0 -q -Q2
+
+       <STRONG>-q</STRONG>   This makes the output a little shorter:
+
+            <STRONG>o</STRONG>   Make  the  comparison listing shorter by omitting subheadings,
+                and using "-" for absent capabilities, "@" for canceled rather
+                than "NULL".
+
+            <STRONG>o</STRONG>   However,   show   differences  between  absent  and  cancelled
+                capabilities.
+
+            <STRONG>o</STRONG>   Omit the "Reconstructed from" comment for source listings.
 
        <STRONG>-R</STRONG><EM>subset</EM>
-            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  variants
-            such as AIX that have their own extensions incompati-
-            ble with SVr4/XSI.
+            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
+            variants  such  as AIX that have their own extensions incompatible
+            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>o</STRONG>   Available terminfo subsets are  "SVr1",  "Ultrix",  "HP",  and
+                "AIX"; see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details.
+
+            <STRONG>o</STRONG>   You  can  also  choose  the  subset  "BSD"  which selects only
+                capabilities with termcap equivalents recognized by 4.4BSD.
+
+            <STRONG>o</STRONG>   If you select any other value for <STRONG>-R</STRONG>, it is  the  same  as  no
+                subset, i.e., all capabilities are used.
+
+            A  few  options  override the subset selected with <STRONG>-R</STRONG>, if they are
+            processed later in the command parameters:
+
+            <STRONG>-C</STRONG>   sets the "BSD" subset as a side-effect.
+
+            <STRONG>-I</STRONG>   sets the subset to all capabilities.
+
+            <STRONG>-r</STRONG>   sets the subset to all capabilities.
 
        <STRONG>-s</STRONG> <EM>[d|i|l|c]</EM>
-            The <STRONG>-s</STRONG> option  sorts  the  fields  within  each  type
-            according to the argument below:
+            The <STRONG>-s</STRONG> option sorts the fields within each type according  to  the
+            argument below:
 
-            <STRONG>d</STRONG>    leave  fields  in the order that they are stored
-                 in the <EM>terminfo</EM> database.
+            <STRONG>d</STRONG>    leave  fields  in  the  order  that  they  are  stored in the
+                 <EM>terminfo</EM> database.
 
             <STRONG>i</STRONG>    sort by <EM>terminfo</EM> name.
 
@@ -405,84 +421,117 @@
 
             <STRONG>c</STRONG>    sort by the <EM>termcap</EM> name.
 
-            If the <STRONG>-s</STRONG> option is not given, the fields printed out
-            will  be  sorted  alphabetically by the <STRONG>terminfo</STRONG> name
-            within each type, except in the case of the <STRONG>-C</STRONG> or the
-            <STRONG>-L</STRONG> options, which cause the sorting to be done by the
-            <STRONG>termcap</STRONG> name or the long  C  variable  name,  respec-
-            tively.
+            If the <STRONG>-s</STRONG> option is not given, the  fields  printed  out  will  be
+            sorted  alphabetically  by  the  <STRONG>terminfo</STRONG>  name  within each type,
+            except in the case of the <STRONG>-C</STRONG> or the <STRONG>-L</STRONG> options,  which  cause  the
+            sorting  to  be  done  by  the <STRONG>termcap</STRONG> name or the long C variable
+            name, respectively.
 
-       <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., 1023 for
-            termcap, 4096 for terminfo).
+       <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.,  1023  for  termcap,  4096  for
+            terminfo).
 
-       <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>-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>infocmp</STRONG> to  not  post-process  the  data  after
-            parsing  the  source  file.   This feature helps when
-            comparing the actual contents of  two  source  files,
-            since  it  excludes the inferences that <STRONG>infocmp</STRONG> makes
-            to fill in missing data.
+       <STRONG>-U</STRONG>   tells  <STRONG>infocmp</STRONG>  to  not  post-process  the  data after parsing the
+            source  file.   This  feature  helps  when  comparing  the  actual
+            contents  of  two  source  files, since it excludes the inferences
+            that <STRONG>infocmp</STRONG> makes to fill in missing data.
 
-       <STRONG>-V</STRONG>   reports the version of ncurses which was used in this
-            program, and exits.
+       <STRONG>-V</STRONG>   reports the version of <EM>ncurses</EM> which was used in this program, and
+            exits.
 
-       <STRONG>-v</STRONG> <EM>n</EM> prints  out  tracing information on standard error as
-            the program runs.  Higher values of n induce  greater
-            verbosity.
+       <STRONG>-v</STRONG> <EM>n</EM> prints  out  tracing  information on standard error as the program
+            runs.
+
+            The optional parameter <EM>n</EM> is a number  from  1  to  10,  inclusive,
+            indicating the desired level of detail of information.  If <EM>ncurses</EM>
+            is built  without  tracing  support,  the  optional  parameter  is
+            ignored.
+
+       <STRONG>-W</STRONG>   By  itself,  the  <STRONG>-w</STRONG>  option  will  not  force  long strings to be
+            wrapped.  Use the <STRONG>-W</STRONG> option to do this.
 
        <STRONG>-w</STRONG> <EM>width</EM>
             changes the output to <EM>width</EM> characters.
 
-       <STRONG>-x</STRONG>   print   information  for  user-defined  capabilities.
-            These are extensions to the terminfo repertoire which
-            can be loaded using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>.
+       <STRONG>-x</STRONG>   print information for user-defined capabilities (see <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>.
+            These  are  extensions  to  the  terminfo  repertoire which can be
+            loaded using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>.
 
 
-</PRE>
-<H2><a name="h2-FILES">FILES</a></H2><PRE>
-       /usr/share/terminfo Compiled  terminal  description  data-
-                           base.
+</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE>
+       <EM>/usr/share/terminfo</EM>
+              compiled terminal description database
 
 
-</PRE>
-<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.
+</PRE><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>-Q</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>
-       <STRONG>-RBSD</STRONG>.
+       SVr4   infocmp  does  not  distinguish  between  absent  and  cancelled
+       capabilities.  Also, it shows missing integer capabilities as  <STRONG>-1</STRONG>  (the
+       internal   value   used   to   represent   missing   integers).    This
+       implementation shows those as  "NULL",  for  consistency  with  missing
+       strings.
+
+       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> <STRONG>-RBSD</STRONG>.
 
 
-</PRE>
-<H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open  Curses,  Issue  7 (2009) provides a description of <STRONG>infocmp</STRONG>.  It
+       does not mention the options used for converting to termcap format.
+
+
+</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE>
+       Although System V Release 2 provided a  terminfo  library,  it  had  no
+       documented tool for decompiling the terminal descriptions.  Tony Hansen
+       (AT&amp;T) wrote the first <STRONG>infocmp</STRONG> in early 1984, for System V Release 3.
+
+       Eric Raymond  used  the  AT&amp;T  documentation  in  1995  to  provide  an
+       equivalent  <STRONG>infocmp</STRONG>  for  <EM>ncurses</EM>.   In  addition,  he  added a few new
+       features such as:
+
+       <STRONG>o</STRONG>   the  <STRONG>-e</STRONG>  option,  to  support   <EM>fallback</EM>   (compiled-in)   terminal
+           descriptions
+
+       <STRONG>o</STRONG>   the <STRONG>-i</STRONG> option, to help with analysis
+
+       Later,  Thomas  Dickey added the <STRONG>-x</STRONG> (user-defined capabilities) option,
+       and the  <STRONG>-E</STRONG>  option  to  support  fallback  entries  with  user-defined
+       capabilities.
+
+       For a complete list, see the <EM>EXTENSIONS</EM> section.
+
+       In  2010,  Roy  Marples  provided an <STRONG>infocmp</STRONG> program for NetBSD.  It is
+       less capable than the SVr4 or <EM>ncurses</EM>  versions  (e.g.,  it  lacks  the
+       sorting  options  documented in X/Open), but does include the <STRONG>-x</STRONG> option
+       adapted from <EM>ncurses</EM>.
+
+
+</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><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>.
-
-       http://invisible-island.net/ncurses/tctest.html
-
-       This describes <STRONG>ncurses</STRONG> version 6.0 (patch 20150808).
-
-
-</PRE>
-<H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE>
+</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE>
        Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and
        Thomas E. Dickey &lt;dickey@invisible-island.net&gt;
 
 
+</PRE><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>, <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>
 
-                                                            <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
+       https://invisible-island.net/ncurses/tctest.html
+
+
+
+ncurses 6.5                       2024-03-16                       <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
@@ -491,17 +540,19 @@
 <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-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-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-HISTORY">HISTORY</a></li>
 <li><a href="#h2-BUGS">BUGS</a></li>
+<li><a href="#h2-AUTHORS">AUTHORS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
-<li><a href="#h2-AUTHOR">AUTHOR</a></li>
 </ul>
 </div>
 </BODY>
