'\" t
.\"***************************************************************************
.\" Copyright (c) 1998-2004,2006 Free Software Foundation, Inc.              *
.\"                                                                          *
.\" Permission is hereby granted, free of charge, to any person obtaining a  *
.\" copy of this software and associated documentation files (the            *
.\" "Software"), to deal in the Software without restriction, including      *
.\" without limitation the rights to use, copy, modify, merge, publish,      *
.\" distribute, distribute with modifications, sublicense, and/or sell       *
.\" copies of the Software, and to permit persons to whom the Software is    *
.\" furnished to do so, subject to the following conditions:                 *
.\"                                                                          *
.\" The above copyright notice and this permission notice shall be included  *
.\" in all copies or substantial portions of the Software.                   *
.\"                                                                          *
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
.\"                                                                          *
.\" Except as contained in this notice, the name(s) of the above copyright   *
.\" holders shall not be used in advertising or otherwise to promote the     *
.\" sale, use or other dealings in this Software without prior written       *
.\" authorization.                                                           *
.\"***************************************************************************
.\"
.\" $Id: infocmp.1m,v 1.44 2006/12/24 18:16:31 tom Exp $
.TH @INFOCMP@ 1M ""
.ds n 5
.ds d @TERMINFO@
.SH NAME
\fB@INFOCMP@\fR - compare or print out \fIterminfo\fR descriptions
.SH SYNOPSIS
\fB@INFOCMP@\fR [\fB-\
1\
C\
E\
F\
G\
I\
L\
T\
U\
V\
c\
d\
e\
g\
i\
l\
n\
p\
q\
r\
t\
u\
x\
\fR]
.br
      [\fB-v\fR \fIn\fR] [\fB-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB-R \fR\fBsubset\fR]
.br
      [\fB-w\fR\ \fIwidth\fR] [\fB-A\fR\ \fIdirectory\fR] [\fB-B\fR\ \fIdirectory\fR]
.br
      [\fItermname\fR...]
.SH DESCRIPTION
\fB@INFOCMP@\fR can be used to compare a binary \fBterminfo\fR entry with other
terminfo entries, rewrite a \fBterminfo\fR description to take advantage of the
\fBuse=\fR terminfo field, or print out a \fBterminfo\fR description from the
binary file (\fBterm\fR) 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.
.SS Default Options
If no options are specified and zero or one \fItermnames\fR are specified, the
\fB-I\fR option will be assumed.  If more than one \fItermname\fR is specified,
the \fB-d\fR option will be assumed.
.SS Comparison Options [-d] [-c] [-n]
\fB@INFOCMP@\fR compares the \fBterminfo\fR description of the first terminal
\fItermname\fR with each of the descriptions given by the entries for the other
terminal's \fItermnames\fR.  If a capability is defined for only one of the
terminals, the value returned will depend on the type of the capability:
\fBF\fR for boolean variables, \fB-1\fR for integer variables, and \fBNULL\fR
for string variables.
.PP
The \fB-d\fR 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.
.PP
The \fB-c\fR 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 \fB-u\fR option is worth using.
.PP
The \fB-n\fR option produces a list of each capability that is in neither
entry.  If no \fItermnames\fR are given, the environment variable \fBTERM\fR
will be used for both of the \fItermnames\fR.  This can be used as a quick
check to see if anything was left out of a description.
.SS Source Listing Options [-I] [-L] [-C] [-r]
The \fB-I\fR, \fB-L\fR, and \fB-C\fR options will produce a source listing for
each terminal named.
.
.TS
center tab(/) ;
l l .
\fB-I\fR/use the \fBterminfo\fR names
\fB-L\fR/use the long C variable name listed in <\fBterm.h\fR>
\fB-C\fR/use the \fBtermcap\fR names
\fB-r\fR/when using \fB-C\fR, put out all capabilities in \fBtermcap\fR form
.TE
.PP
If no \fItermnames\fR are given, the environment variable \fBTERM\fR will be
used for the terminal name.
.PP
The source produced by the \fB-C\fR option may be used directly as a
\fBtermcap\fR entry, but not all parameterized strings can be changed to
the \fBtermcap\fR format.  \fB@INFOCMP@\fR 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.
.PP
All padding information for strings will be collected together and placed
at the beginning of the string where \fBtermcap\fR expects it.  Mandatory
padding (padding information with a trailing '/') will become optional.
.PP
All \fBtermcap\fR variables no longer supported by \fBterminfo\fR, but which
are derivable from other \fBterminfo\fR variables, will be output.  Not all
\fBterminfo\fR capabilities will be translated; only those variables which were
part of \fBtermcap\fR will normally be output.  Specifying the \fB-r\fR option
will take off this restriction, allowing all capabilities to be output in
\fItermcap\fR form.
.PP
Note that because padding is collected to the beginning of the capability, not
all capabilities are output.  Mandatory padding is not supported.  Because
\fBtermcap\fR strings are not as flexible, it is not always possible to convert
a \fBterminfo\fR string capability into an equivalent \fBtermcap\fR format.  A
subsequent conversion of the \fBtermcap\fR file back into \fBterminfo\fR format
will not necessarily reproduce the original \fBterminfo\fR
source.
.PP
Some common \fBterminfo\fR parameter sequences, their \fBtermcap\fR
equivalents, and some terminal types which commonly have such sequences, are:
.
.TS
center tab(/) ;
l c l
l l l.
\fBterminfo/termcap\fR/Representative Terminals
=
\fB%p1%c/%.\fR/adm
\fB%p1%d/%d\fR/hp, ANSI standard, vt100
\fB%p1%'x'%+%c/%+x\fR/concept
\fB%i/%i\fRq/ANSI standard, vt100
\fB%p1%?%'x'%>%t%p1%'y'%+%;/%>xy\fR/concept
\fB%p2\fR is printed before \fB%p1/%r\fR/hp
.TE
.SS Use= Option [-u]
The \fB-u\fR option produces a \fBterminfo\fR source description of the first
terminal \fItermname\fR which is relative to the sum of the descriptions given
by the entries for the other terminals \fItermnames\fR.  It does this by
analyzing the differences between the first \fItermname\fR and the other
\fItermnames\fR and producing a description with \fBuse=\fR 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 \fB@INFOCMP@\fR will show what can be done to change
one description to be relative to the other.
.PP
A capability will get printed with an at-sign (@) if it no longer exists in the
first \fItermname\fR, but one of the other \fItermname\fR entries contains a
value for it.  A capability's value gets printed if the value in the first
\fItermname\fR is not found in any of the other \fItermname\fR entries, or if
the first of the other \fItermname\fR entries that has this capability gives a
different value for the capability than that in the first \fItermname\fR.
.PP
The order of the other \fItermname\fR entries is significant.  Since the
terminfo compiler \fBtic\fR does a left-to-right scan of the capabilities,
specifying two \fBuse=\fR entries that contain differing entries for the same
capabilities will produce different results depending on the order that the
entries are given in.  \fB@INFOCMP@\fR will flag any such inconsistencies between
the other \fItermname\fR entries as they are found.
.PP
Alternatively, specifying a capability \fIafter\fR a \fBuse=\fR entry that
contains that capability will cause the second specification to be ignored.
Using \fB@INFOCMP@\fR to recreate a description can be a useful check to make
sure that everything was specified correctly in the original source
description.
.PP
Another error that does not cause incorrect compiled files, but will slow down
the compilation time, is specifying extra \fBuse=\fR fields that are
superfluous.  \fB@INFOCMP@\fR will flag any other \fItermname use=\fR fields that
were not needed.
.SS Changing Databases [-A \fIdirectory\fR] [-B \fIdirectory\fR]
The location of the compiled \fBterminfo\fR database is taken from the
environment variable \fBTERMINFO\fR .  If the variable is not defined, or the
terminal is not found in that location, the system \fBterminfo\fR database,
in \fB@TERMINFO@\fR, will be used.  The options \fB-A\fR
and \fB-B\fR may be used to override this location.  The \fB-A\fR option will
set \fBTERMINFO\fR for the first \fItermname\fR and the \fB-B\fR option will
set \fBTERMINFO\fR for the other \fItermnames\fR.  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.
.SS Other Options
.TP 5
\fB-1\fR
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.
.TP
\fB-a\fR
tells \fB@INFOCMP@\fP to retain commented-out capabilities rather than discarding
them.  Capabilities are commented by prefixing them with a period.
.TP 5
\fB-E\fR
Dump the capabilities of the given terminal as tables, needed in
the C initializer for a
TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fR).
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.
.sp
Before ncurses 5.0, the split between the \fB-e\fP and \fB-E\fP
options was not needed; but support for extended names required making
the arrays of terminal capabilities separate from the TERMTYPE structure.
.TP 5
\fB-e\fR
Dump the capabilities of the given terminal as a C initializer for a
TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fR).
This option is useful for preparing versions of the curses library hardwired
for a given terminal type.
.TP 5
\fB-F\fR
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 \fB-r\fR.
.TP 5
\fB-f\fR
Display complex terminfo strings which contain if/then/else/endif expressions
indented for readability.
.TP 5
\fB-G\fR
Display constant literals in decimal form
rather than their character equivalents.
.TP 5
\fB-g\fR
Display constant character literals in quoted form
rather than their decimal equivalents.
.TP 5
\fB-i\fR
Analyze the initialization (\fBis1\fR, \fBis2\fR, \fBis3\fR), and reset
(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR), 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.
.TS
center tab(/) ;
l l
l l.
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
.TE
.sp
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).
.PP
An SGR0 designates an empty highlight sequence (equivalent to {SGR:NORMAL}).
.TP 5
\fB-l\fR
Set output format to terminfo.
.TP 5
\fB-p\fR
Ignore padding specifications when comparing strings.
.TP 5
\fB-q\fR
Make the comparison listing shorter by omitting subheadings, and using
"-" for absent capabilities, "@" for canceled rather than "NULL".
.TP 5
\fB-R\fR\fIsubset\fR
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 \fBterminfo\fR(\*n) for
details.  You can also choose the subset "BSD" which selects only capabilities
with termcap equivalents recognized by 4.4BSD.
.TP
\fB-s \fR\fI[d|i|l|c]\fR
The \fB-s\fR option sorts the fields within each type according to the argument
below:
.br
.RS 5
.TP 5
\fBd\fR
leave fields in the order that they are stored in the \fIterminfo\fR database.
.TP 5
\fBi\fR
sort by \fIterminfo\fR name.
.TP 5
\fBl\fR
sort by the long C variable name.
.TP 5
\fBc\fR
sort by the \fItermcap\fR name.
.RE
.IP
If the \fB-s\fR option is not given, the fields printed out will be
sorted alphabetically by the \fBterminfo\fR name within each type,
except in the case of the \fB-C\fR or the \fB-L\fR options, which cause the
sorting to be done by the \fBtermcap\fR name or the long C variable
name, respectively.
.TP 5
\fB-T\fR
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).
.TP
\fB-t\fR
tells \fBtic\fP to discard commented-out capabilities.
Normally when translating from terminfo to termcap,
untranslatable capabilities are commented-out.
.TP 5
\fB-U\fR
tells \fB@INFOCMP@\fP 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 \fB@INFOCMP@\fP makes to fill in missing
data.
.TP 5
\fB-V\fR
reports the version of ncurses which was used in this program, and exits.
.TP 5
\fB-v\fR \fIn\fR
prints out tracing information on standard error as the program runs.
Higher values of n induce greater verbosity.
.TP 5
\fB-w\fR \fIwidth\fR
changes the output to \fIwidth\fR characters.
.TP
\fB-x\fR
print information for user-defined capabilities.
These are extensions to the terminfo repertoire which can be loaded
using the \fB-x\fR option of \fBtic\fP.
.SH FILES
.TP 20
\*d
Compiled terminal description database.
.SH EXTENSIONS
The
\fB-E\fR,
\fB-F\fR,
\fB-G\fR,
\fB-R\fR,
\fB-T\fR,
\fB-V\fR,
\fB-a\fR,
\fB-e\fR,
\fB-f\fR,
\fB-g\fR,
\fB-i\fR,
\fB-l\fR,
\fB-p\fR,
\fB-q\fR and
\fB-t\fR
options are not supported in SVr4 curses.
.PP
The \fB-r\fR 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 \fB-r\fR \fB-RBSD\fR.
.SH BUGS
The \fB-F\fR option of \fB@INFOCMP@\fR(1M) should be a \fB@TOE@\fR(1M) mode.
.SH SEE ALSO
\fB@CAPTOINFO@\fR(1M),
\fB@INFOTOCAP@\fR(1M),
\fB@TIC@\fR(1M),
\fB@TOE@\fR(1M),
\fBcurses\fR(3X),
\fBterminfo\fR(\*n).
.PP
This describes \fBncurses\fR
version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
.SH AUTHOR
Eric S. Raymond <esr@snark.thyrsus.com>
and
.br
Thomas E. Dickey <dickey@invisible-island.net>
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
.\"# mode:nroff
.\"# fill-column:79
.\"# End:
