infocmp
compare or print out terminfo descriptions
see also :
captoinfo - infotocap - tic - toe
Synopsis
infocmp
[-1CEFGILTUVcdegilnpqrtux]
[-v n] [-s d| i|
l| c] [-R subset]
[-w width]
[-A directory]
[-B directory]
[termname...]
add an example, a script, a trick and tips
examples
source
if command_exists infocmp
&& ! infocmp
&>/dev/null
then
echo "WARN : this term
($TERM) is unknown, falling back to xterm"
source
infocmp -I xterm > /tmp/xterm.ti
export TERMINFO=~/terminfo
tic /tmp/xterm.ti
echo -en "\033[?1002h"
echo -en "\033[?1002l"
source
infocmp -1 | sed -nu 's/^[
\000\t]*//;s/[ \000\t]*$//;/[^
\t\000]\{1,\}/!d;/acsc/d;s/=.*,//p'|column -c80
source
if infocmp -A $dir $term > /dev/null
2>&1
then
tmp=$(mktemp -d terminfo.XXXXX)
infocmp -1 -A $dir $term | sed \
description
infocmp
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 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
different 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 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.
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 anything 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 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 which were part of termcap will normally 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. Mandatory
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:
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 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. 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 relative 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 capability 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
contain differing entries for the same capabilities will
produce 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
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. 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 location, the system terminfo database, in
/etc/terminfo, 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
-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
commented by prefixing them with a period.
-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 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 -e and
-E options was not needed; but support for
extended names required making the arrays of terminal
capabilities 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 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 -r.
-f
Display complex terminfo strings which contain
if/then/else/endif expressions indented for readability.
-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. 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 recognized: i.
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
Make the comparison listing shorter by omitting
subheadings, 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
incompatible 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, respectively.
-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.
extensions
The -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.
files
/etc/terminfo
Compiled terminal description database.
bugs
The
-F option of infocmp(1) should be a
toe(1) mode.
see also
captoinfo ,
infotocap , tic , toe ,
ncurses(3NCURSES), terminfo.
This describes
ncurses version 5.9 (patch 20110404).
author
Eric S. Raymond
<esr[:at:]snark.thyrsus[:dot:]com> and
Thomas E. Dickey <dickey@invisible-island.net>