infocmp(1M)                                           infocmp(1M)



NAME
       infocmp - compare or print out terminfo descriptions

SYNOPSIS
       infocmp [-dceEGgnpqrILCuV1] [-v n] [-s d| i| l| c]
             [-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 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 neither entry.  If no termnames are given, the environ-
       ment 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.

       center  tab(/)  ;  l l .  -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

       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.

       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.

       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:

       center tab(/) ; l c l l l l.  terminfo/termcap/Representa-
       tive  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
       inconsistencies 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]
       The  location  of  the compiled terminfo database is taken
       from the environment variable TERMINFO .  If the  variable
       is not defined, or the terminal is not found in that loca-
       tion, the system  terminfo  database,  in  /usr/share/ter-
       minfo, will be used.  The options -A and -B may be used to
       override this location.  The -A option will  set  TERMINFO
       for the first termname and the -B option will set TERMINFO
       for the other termnames.  With this,  it  is  possible  to
       compare  descriptions  for  a  terminal with the same name
       located in two different databases.  This  is  useful  for
       comparing  descriptions  for  the same terminal created by
       different people.

   Other Options [-s d|i|l|c] [-1FTVefip] [-Rsubset] [-v  n]  [-w
       width]
       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.

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

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

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

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

       -q   Make the comparison listing shorter by omitting  sub-
            headings,  and using "-" for absent capabilities, "@"
            for canceled rather than "NULL".

       -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  equiva-
            lents recognized by 4.4BSD.

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

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

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

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

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

       -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.  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  recog-
            nized  actions  translated into {}-bracketed descrip-
            tions.  Here  is  a  list  of  the  DEC/ANSI  special
            sequences recognized:

            center  tab(/)  ; l l l l.  Action/Meaning = RIS/full
            reset SC/save cursor RC/restore  cursor  LL/home-down
            RSR/reset scroll region

            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

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

       -p   Ignore padding specifications when comparing strings.

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

FILES
       /usr/share/terminfo Compiled     terminal      description
                           database.

EXTENSIONS
       The -E, -F, -G, -R, -T, -V, -a, -e, -f, -g, -i, -p, and -q
       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
       infocmp(1M),    captoinfo(1M),   infotocap(1M),   tic(1M),
       toe(1M), curses(3X), terminfo(5).

AUTHOR
       Eric S.  Raymond  <esr@snark.thyrsus.com>  and  Thomas  E.
       Dickey <dickey@herndon4.his.com>



                                                      infocmp(1M)