infocmp(8) CLIX infocmp(8)
NAME
infocmp - Compares or displays terminfo descriptions
SYNOPSIS
infocmp [-d] [-c] [-n] [-I] [-L] [-C] [-r] [-u] [-s d|i|1|c] [-v] [-V] [-
1] [-w width] [-A directory] [-B directory] [termname ... ]
FLAGS
Default Flags
If no flags are specified and zero or one termname(s) are specified, the
-I flag will be assumed. If more than one termname is specified, the -d
flag will be assumed.
Comparison Flags [-d] [-c] [-n]
The infocmp command compares the terminfo description of the first
terminal termname with each of the descriptions given by the entries for
the other terminal's termname(s). 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.
-d Produce a list of each capability that is different. In this
manner, if one has two entries for the same terminal or similar
terminals, using infocmp will show what is different between the
two entries. This is sometimes necessary when more than one person
produces an entry for the same terminal and one wants to see what
is different between the two.
-c Produce a list of each capability that is common between the two
entries. Capabilities that are not set are ignored. This flag can
be used as a quick check to see if the -u flag is worth using.
-n Produce a list of each capability that is in neither entry. If no
termnames are given, the environment variable TERM will be used for
both of the termname(s). This can be used as a quick check to see
if anything was left out of the description.
Source Listing Flags [-I] [-L] [-C] [-r]
The -I, -L, and -C flags will produce a source listing for each terminal
named.
2/94 - Intergraph Corporation 1
infocmp(8) CLIX infocmp(8)
-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 flag can be used directly as a termcap
entry, but not all of the parameterized strings can be changed to the
termcap format. The infocmp command will attempt to convert most of the
parameterized information, but that which it does not convert will be
plainly marked in the output and commented out. These parameterized
strings 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 information 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 that were part of
termcap will normally be output. Specifying the -r flag will take off
this restriction, allowing all capabilities to be output in termcap form.
Note: it is not always possible to convert a terminfo string capability
into an equivalent termcap format for several reasons:
⊕ The padding is collected toward the beginning of the capability.
⊕ Not all capabilities are output.
⊕ Mandatory padding is not supported and.
⊕ The termcap strings lack flexibility.
In addition, 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 that commonly have such sequences, are:
Terminfo Termcap Representative Terminals
%p1%c %. adm
2 Intergraph Corporation - 2/94
infocmp(8) CLIX infocmp(8)
%p1%d %d hp, ANSI standard, vt100
%p1%'x'%+%c %+x concept
%i %i ANSI standard, vt100
%p1%?%'x'%>%t%p1%'y'%+%; %>xy concept
%p2 is printed before %p1 %r hp
Use= Option [-u]
-u Produce a terminfo source description of the first terminal termname
that is relative to the sum of the descriptions given by the entries
for the other terminals' termname(s). This relative description is
accomplished by analyzing the differences 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.
Alternatively, 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 so that it is relative to the other.
A capability will be displayed 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 is displayed 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 capability gives a
different value for the capability than that in the first termname.
The order of the other termname entries is significant. Because the
terminfo compiler tic(8) does a left-to-right scan of the capabilities,
specifying two use= entries that contain differing entries for the same
capabilities will produce different results depending on the order in
which the entries are given. The infocmp command 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 specification to be ignored. Using
infocmp 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 specifying extra use= fields that are
superfluous. The infocmp command will flag any other termname use= fields
that were not needed.
Other Flags [-s d|i|l|c] [-v] [-V] [-1] [-w width]
-s sort the fields within each type according to the argument below:
d Leave fields in the order that they are stored in the terminfo
database.
2/94 - Intergraph Corporation 3
infocmp(8) CLIX infocmp(8)
i Sort by terminfo name.
l Sort by the long C variable name.
c Sort by the termcap name.
If no -s flag is given, the fields displayed will be sorted
alphabetically by the terminfo name within each type, except in
the case of the -C or the -L flags, which cause the sorting to be
done by the termcap name or the long C variable name,
respectively.
-v Display tracing information on stderr as the program runs.
-V Display the version of the program in use on stderr and exit.
-1 Cause the fields to displayed one to a line. Otherwise, the fields
will be displayed several to a line to a maximum width of 60
characters.
-w Change the output to width characters.
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 location, the system terminfo database,
usually in /usr/lib/terminfo, will be used. The flags -A and -B may be
used to override this location. The -A flag will set TERMINFO for the
first termname and the -B flag 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.
Otherwise the terminals would have to be named differently in the terminfo
database for a comparison to be made.
DESCRIPTION
The infocmp command can be used to compare a binary terminfo entry with
other terminfo entries, rewrite a terminfo description to take advantage
of the use= terminfo field, or display a terminfo description from the
binary file (term) in a variety of formats. In all cases, the boolean
fields will be displayed first, followed by the numeric fields, followed
by the string fields.
EXAMPLES
To display to stdout the common capabilities of a vt100 and a vt220, enter
the following:
infocmp -c vt100 vt200
4 Intergraph Corporation - 2/94
infocmp(8) CLIX infocmp(8)
FILES
/usr/lib/terminfo/?/* Compiled terminal description database
NOTES
The termcap database (from earlier releases of UNIX System V) may not be
supplied in future releases.
DIAGNOSTICS
malloc is out of space!
There was not enough memory available to process all the terminal
descriptions requested. Run infocmp several times, each time
including a subset of the desired termnames.
use= order dependency found:
A value specified in one relative terminal specification was
different from that in another relative terminal specification.
'use=term' did not add anything to the description.
A relative terminal name did not contribute anything to the final
description.
must have at least two terminal names for a comparison
to be done.
The -u, -d, and -c flags require at least two terminal names.
EXIT VALUES
The infocmp command exits with a nonzero value when it fails.
RELATED INFORMATION
Commands: tic(8), captoinfo(8)
Functions: curses(3)
Files: term(4), terminfo(4)
Chapter 10 of the Programmer's Guide
2/94 - Intergraph Corporation 5