# infocmp 1m

    infocmp(1m)                                                 infocmp(1m)

## NAME

           infocmp - compare or print out terminfo descriptions

## SYNOPSIS

           infocmp [-1CDEFGIKLTUVcdegilnpqrtux]
                 [-v n] [-s d| i| l| c] [-Q n] [-R subset]
                 [-w width] [-A directory] [-B directory]
                 [termname...]

## DESCRIPTION

           infocmp  can  be  used  to compare a binary terminfo entry
           with other terminfo entries, rewrite a  terminfo  descrip-
           tion  to  take  advantage  of  the use= terminfo field, or
           print out a terminfo  description  from  the  binary  file
           (term) 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.

### Default Options

           If  no options are specified and zero or one termnames are
           specified, the -I option will be assumed.   If  more  than
           one termname is specified, the -d option will be assumed.

### Comparison Options [-d] [-c] [-n]

           infocmp  compares  the  terminfo  description of the first
           terminal termname with each of the descriptions  given  by
           the  entries  for  the  other  terminal's termnames.  If a
           capability is defined for only one of the  terminals,  the
           value  returned will depend on the type of the capability:
           F for boolean variables, -1  for  integer  variables,  and
           NULL for string variables.

           The  -d  option produces a list of each capability that is
           different between two entries.  This option is  useful  to
           show  the  difference between two entries, created by dif-
           ferent people, for the same or similar terminals.

           The -c 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 -u option is worth using.

           The  -n  option produces a list of each capability that is
           in none of the given entries.  If no termnames are  given,
           the environment variable TERM will be used for both of the
           termnames.  This can be used as a quick check  to  see  if
           anything was left out of a description.

### Source Listing Options [-I] [-L] [-C] [-r]

           The  -I,  -L, and -C options will produce a source listing
           for each terminal named.

          -I   use the terminfo names
          -L   use the long C variable name listed in <term.h>
          -C   use the termcap names
          -r   when using -C, put out all capabilities in termcap form
          -K   modifies the -C option, improving BSD-compatibility.

           If no termnames are given, the environment  variable  TERM
           will be used for the terminal name.

           The  source produced by the -C option may be used directly
           as a termcap entry, but not all parameterized strings  can
           be changed to the termcap format.  infocmp 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.

           For best results when converting to  termcap  format,  you
           should use both -C and -r.  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 -T
           option.  More often however, you  must  help  the  termcap
           implementation,  and  trim  excess  whitespace (use the -0
           option for that).

           All padding information  for  strings  will  be  collected
           together  and  placed at the beginning of the string where
           termcap expects it.  Mandatory padding  (padding  informa-
           tion with a trailing '/') will become optional.

           All termcap variables no longer supported by terminfo, but
           which are derivable from other terminfo variables, will be
           output.  Not all terminfo capabilities will be translated;
           only those variables which were part of termcap will  nor-
           mally  be  output.  Specifying the -r option will take off
           this restriction, allowing all capabilities to  be  output
           in  termcap  form.  Normally you would use both the -C and
           -r options.  The  actual  format  used  incorporates  some
           improvements  for escaped characters from terminfo format.
           For a stricter  BSD-compatible  translation,  use  the  -K
           option rather than -C.

           Note that because padding is collected to the beginning of
           the capability, not all capabilities are  output.   Manda-
           tory  padding  is  not supported.  Because termcap strings
           are not as flexible, it is not always possible to  convert
           a  terminfo  string  capability into an equivalent termcap
           format.  A subsequent conversion of the termcap file  back
           into  terminfo  format  will not necessarily reproduce the
           original terminfo source.

           Some common terminfo parameter  sequences,  their  termcap
           equivalents,  and  some terminal types which commonly have
           such sequences, are:

         terminfo                    termcap   Representative Terminals
         ---------------------------------------------------------------
         %p1%c                       %.        adm
         %p1%d                       %d        hp, ANSI standard, vt100
         %p1%'x'%+%c                 %+x       concept
         %i                          %iq       ANSI standard, vt100
         %p1%?%'x'%>%t%p1%'y'%+%;    %>xy      concept
         %p2 is printed before %p1   %r        hp

### Use= Option [-u]

           The -u option produces a terminfo  source  description  of
           the  first  terminal termname which is relative to the sum
           of the descriptions given by the  entries  for  the  other
           terminals  termnames.   It does this by analyzing the dif-
           ferences  between  the  first  termname  and   the   other
           termnames and producing a description with use= 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 infocmp will
           show what can be done to change one description to be rel-
           ative to the other.

           A capability will get printed with an at-sign (@) if it no
           longer  exists in the first termname, but one of the other
           termname entries contains a value for it.  A  capability's
           value  gets  printed if the value in the first termname is
           not found in any of the other termname entries, or if  the
           first of the other termname entries that has this capabil-
           ity gives a different value for the capability  than  that
           in the first termname.

           The  order  of  the other termname entries is significant.
           Since the terminfo compiler tic does a left-to-right  scan
           of the capabilities, specifying two use= 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.  infocmp will flag any  such  incon-
           sistencies  between the other termname entries as they are
           found.

           Alternatively, specifying a capability after a use=  entry
           that contains that capability will cause the second speci-
           fication to be  ignored.   Using  infocmp  to  recreate  a
           description can be a useful check to make sure that every-
           thing was  specified  correctly  in  the  original  source
           description.

           Another  error  that  does  not  cause  incorrect compiled
           files, but will slow down the compilation time, is  speci-
           fying  extra  use=  fields  that are superfluous.  infocmp
           will flag any other termname use=  fields  that  were  not
           needed.

       Changing Databases [-A directory] [-B directory]
           Like other ncurses utilities, infocmp looks for the termi-
           nal descriptions in several places.  You can use the  TER-
           MINFO  and TERMINFO_DIRS environment variables to override
           the compiled-in default list  of  places  to  search  (see
           curses(3x) for details).

           You  can  also  use  the options -A and -B to override the
           list of places to search when comparing terminal  descrip-
           tions:

           o   The -A option sets the location for the first termname

           o   The   -B  option  sets  the  location  for  the  other
               termnames.

           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.

### Other Options

           -0   causes the fields to be printed on one line,  without
                wrapping.

           -1   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.

           -a   tells  infocmp  to  retain commented-out capabilities
                rather than discarding them.  Capabilities  are  com-
                mented by prefixing them with a period.

           -D   tells infocmp to print the database locations that it
                knows about, and exit.

           -E   Dump  the  capabilities  of  the  given  terminal  as
                tables,  needed  in  the C initializer for a TERMTYPE
                structure (the terminal capability structure  in  the
                <term.h>).   This option is useful for preparing ver-
                sions of the curses library  hardwired  for  a  given
                terminal  type.   The tables are all declared static,
                and are named according to the type and the  name  of
                the corresponding terminal entry.

                Before  ncurses  5.0, the split between the -e and -E
                options was not  needed;  but  support  for  extended
                names required making the arrays of terminal capabil-
                ities separate from the TERMTYPE structure.

           -e   Dump the capabilities of the given terminal  as  a  C
                initializer  for  a  TERMTYPE structure (the terminal
                capability structure in the <term.h>).   This  option
                is  useful  for  preparing  versions  of  the  curses
                library hardwired for a given terminal type.

           -F   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 -r.

           -f   Display   complex   terminfo  strings  which  contain
                if/then/else/endif expressions indented for readabil-
                ity.

           -G   Display constant literals in decimal form rather than
                their character equivalents.

           -g   Display constant character literals  in  quoted  form
                rather than their decimal equivalents.

           -i   Analyze the initialization (is1, is2, is3), and reset
                (rs1, rs2, rs3), strings in the  entry,  as  well  as
                those  used  for starting/stopping cursor-positioning
                mode (smcup,  rmcup)  as  well  as  starting/stopping
                keymap mode (smkx, rmkx).

                For  each  string,  the code tries to analyze it into
                actions in terms of the  other  capabilities  in  the
                entry,  certain  X3.64/ISO 6429/ECMA-48 capabilities,
                and certain DEC VT-series private modes (the  set  of
                recognized  special  sequences  has been selected for
                completeness over the  existing  terminfo  database).
                Each  report  line  consists  of the capability name,
                followed by a colon and space, followed by  a  print-
                able expansion of the capability string with sections
                matching recognized actions translated into {}-brack-
                eted descriptions.

                Here is a list of the DEC/ANSI special sequences rec-
                ognized:

                      Action        Meaning
                      -----------------------------------------
                      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

                It also recognizes  a  SGR  action  corresponding  to
                ANSI/ISO  6429/ECMA  Set Graphics Rendition, with the
                values NORMAL, BOLD, UNDERLINE, BLINK,  and  REVERSE.
                All  but NORMAL may be prefixed with `+' (turn on) or
                `-' (turn off).

                An  SGR0  designates  an  empty  highlight   sequence
                (equivalent to {SGR:NORMAL}).

           -l   Set output format to terminfo.

           -p   Ignore padding specifications when comparing strings.

           -Q n 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

           -q   This makes the output a little shorter:

                o   Make  the  comparison listing shorter by omitting
                    subheadings, and using "-" for  absent  capabili-
                    ties, "@" for canceled rather than "NULL".

                o   Omit  the "Reconstructed from" comment for source
                    listings.

           -Rsubset
                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.

                Available  terminfo  subsets  are  "SVr1",  "Ultrix",
                "HP", and "AIX"; see terminfo(5)  for  details.   You
                can  also  choose the subset "BSD" which selects only
                capabilities with termcap equivalents  recognized  by
                4.4BSD.

           -s [d|i|l|c]
                The  -s  option  sorts  the  fields  within each type
                according to the argument below:

                d    leave fields in the order that they  are  stored
                     in the terminfo database.

                i    sort by terminfo name.

                l    sort by the long C variable name.

                c    sort by the termcap name.

                If the -s option is not given, the fields printed out
                will be sorted alphabetically by  the  terminfo  name
                within each type, except in the case of the -C or the
                -L options, which cause the sorting to be done by the
                termcap  name  or  the  long C variable name, respec-
                tively.

           -T   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).

           -t   tells  tic  to  discard  commented-out  capabilities.
                Normally when translating from terminfo  to  termcap,
                untranslatable capabilities are commented-out.

           -U   tells  infocmp  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  infocmp  makes
                to fill in missing data.

           -V   reports the version of ncurses which was used in this
                program, and exits.

           -v n prints out tracing information on standard  error  as
                the  program runs.  Higher values of n induce greater
                verbosity.

           -w width
                changes the output to width characters.

           -x   print  information  for  user-defined   capabilities.
                These are extensions to the terminfo repertoire which
                can be loaded using the -x option of tic.

## FILES

           /usr/share/terminfo Compiled  terminal  description  data-
                               base.

## EXTENSIONS

           The  -0,  -1,  -E, -F, -G, -R, -T, -V, -a, -e, -f, -g, -i,
           -l, -p, -q and  -t  options  are  not  supported  in  SVr4
           curses.

           The -r 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 -r
           -RBSD.

## BUGS

           The -F option of infocmp(1m) should be a toe(1m) mode.

## SEE ALSO

           captoinfo(1m),    infotocap(1m),     tic(1m),     toe(1m),
           curses(3x), terminfo(5).

           http://invisible-island.net/ncurses/tctest.html

           This describes ncurses version 6.0 (patch 20160611).

## AUTHOR

           Eric S. Raymond <esr@snark.thyrsus.com> and
           Thomas E. Dickey <dickey@invisible-island.net>

                                                                infocmp(1m)