infocmp(1M)                                           infocmp(1M)

NAME
       infocmp - compare or print out terminfo descriptions

SYNOPSIS
       infocmp [-dcnpILCuV1] [-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.

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

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

       -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 don't support the full
            set of SVR4/XSI Curses terminfo; and outright  broken
            ports  like AIX that have their own extensions incom-
            patible with SVr4/XSI.   Available  terminfo  subsets
            are  "SVr1",  "Ultrix",  "HP",  and  "AIX";  see ter-
            minfo(5) for details.  You can also choose the subset
            "BSD"  which  selects  only capabilities with termcap
            equivalents 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   prints out the version of the program in use on stan-
            dard error 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.

       -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  spe-
            cial  sequences  has  been  selected for completeness
            over the existing terminfo  database).   Each  report
            line  consists  of the capability name, followed by a
            colon and space, followed by a printable expansion of
            the  capability  string with sections matching recog-
            nized actions translated into  {}-bracketed  descrip-
            tions.   Here  is  a  list  of  the  DEC/ANSI special
            sequences recognized:

                  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  -F,  -R,  -T,  -e, -f, -g, -i, and -p 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>

                                                                1