'\" t
.\"***************************************************************************
.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
.\" Copyright 1998-2017,2018 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.109 2024/03/16 15:35:01 tom Exp $
.TH @INFOCMP@ 1M 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
.ds '  \(aq
.\}
.el \{\
.ie t .ds `` ``
.el   .ds `` ""
.ie t .ds '' ''
.el   .ds '' ""
.ie t .ds '  \(aq
.el   .ds '  '
.\}
.
.de bP
.ie n  .IP \(bu 4
.el    .IP \(bu 2
..
.
.ds d @TERMINFO@
.SH NAME
\fB@INFOCMP@\fP \-
compare or print out \fIterminfo\fP descriptions
.SH SYNOPSIS
\fB@INFOCMP@\fP [\fB\-\
1\
c\
C\
d\
D\
e\
E\
F\
g\
G\
i\
I\
K\
l\
L\
n\
p\
q\
r\
t\
T\
u\
U\
V\
W\
x\
\fP]
      [\fB\-v\fR \fIn\fR] [\fB\-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB\-Q\fR \fIn\fR] [\fB\-R \fBsubset\fR]
      [\fB\-w\fP\ \fIwidth\fP] [\fB\-A\fP\ \fIdirectory\fP] [\fB\-B\fP\ \fIdirectory\fP]
      [\fIterminal-type\fP ...]
.SH DESCRIPTION
\fB@INFOCMP@\fP can be used to compare a binary \fBterminfo\fP entry with other
terminfo entries, rewrite a \fBterminfo\fP description to take advantage of the
\fBuse=\fP terminfo field, or print out a \fBterminfo\fP description from the
binary file (\fBterm\fP) 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 \fIterminal-types\fP are
specified,
the
\fB\-I\fP option will be assumed.
If more than one \fIterminal-type\fP is specified,
the \fB\-d\fP option will be assumed.
.SS "Comparison Options [\-d] [\-c] [\-n]"
\fB@INFOCMP@\fP compares the \fBterminfo\fP description of the first terminal
\fIterminal-type\fP with each of the descriptions given by the entries
for the other terminal's \fIterminal-types\fP.
If a capability is defined for only one of the
terminals, the value returned depends on the type of the capability:
.bP
\fBF\fP for missing Boolean variables
.bP
\fBNULL\fP for missing integer or string variables
.PP
Use the \fB\-q\fP option to show the distinction between
\fIabsent\fP and \fIcancelled\fP capabilities.
.PP
These options produce a list which you can use to compare two
or more terminal descriptions:
.TP 5
\fB\-d\fP
produces a list of each capability that is \fIdifferent\fP
between two entries.
Each item in the list shows \*(``:\*('' after the capability name,
followed by the capability values, separated by a comma.
.TP
\fB\-c\fP
produces a list of each capability that is \fIcommon\fP between
two or more entries.
Missing capabilities are ignored.
Each item in the list shows \*(``=\*('' after the capability name,
followed by the capability value.
.IP
The \fB\-u\fP option provides a related output,
showing the first terminal description rewritten to use the second
as a building block via the \*(``use=\*('' clause.
.TP
\fB\-n\fP
produces a list of each capability that is in \fInone\fP of the given entries.
Each item in the list shows \*(``!\*('' before the capability name.
.IP
Normally only the conventional capabilities are shown.
Use the \fB\-x\fP option to add the BSD-compatibility
capabilities (names prefixed with \*(``OT\*('').
.IP
If no \fIterminal-types\fP are given,
\fB@INFOCMP@\fP uses the environment variable \fITERM\fP
for each of the \fIterminal-types\fP.
.SS "Source Listing Options [\-I] [\-L] [\-C] [\-r]"
The \fB\-I\fP, \fB\-L\fP, and \fB\-C\fP options will produce
a source listing for each terminal named.
.PP
.TS
center;
Lb L.
\-I	use \fIterminfo\fP capability codes
\-L	use \*(``long\*('' capability names
\-C	use \fItermcap\fP capability codes
\-r	with \fB\-C\fP, include nonstandard capabilities
\-K	with \fB\-C\fP, improve BSD compatibility
.TE
.PP
If no \fIterminal-types\fP are given,
the environment variable \fITERM\fP will be used for the terminal name.
.PP
The source produced by the \fB\-C\fP option may be used directly as a
\fBtermcap\fP entry, but not all parameterized strings can be changed to
the \fBtermcap\fP format.
\fB@INFOCMP@\fP 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
For best results when converting to \fBtermcap\fP format,
you should use both \fB\-C\fP and \fB\-r\fP.
Normally a termcap description is limited to 1023 bytes.
\fB@INFOCMP@\fP trims away less essential parts to make it fit.
If you are converting to one of the (rare) termcap implementations
which accept an unlimited size of termcap,
you may want to add the \fB\-T\fP option.
More often however, you must help the termcap implementation,
and trim excess whitespace (use the \fB\-0\fP option for that).
.PP
All padding information for strings will be collected together and placed
at the beginning of the string where \fBtermcap\fP expects it.
Mandatory
padding (padding information with a trailing \*(``/\*('') will become optional.
.PP
All \fBtermcap\fP variables no longer supported by \fBterminfo\fP, but which
are derivable from other \fBterminfo\fP variables, will be output.
Not all
\fBterminfo\fP capabilities will be translated; only those variables which were
part of \fBtermcap\fP will normally be output.
Specifying the \fB\-r\fP option
will take off this restriction, allowing all capabilities to be output in
\fItermcap\fP form.
Normally you would use both the \fB\-C\fP and \fB\-r\fP options.
The actual format used incorporates some improvements for escaped characters
from terminfo format.
For a stricter BSD-compatible translation, use the \fB\-K\fP option
rather than \fB\-C\fP.
.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\fP strings are not as flexible, it is not always possible to convert
a \fBterminfo\fP string capability into an equivalent \fBtermcap\fP format.
A subsequent conversion of the \fBtermcap\fP file
back into \fBterminfo\fP format
will not necessarily reproduce the original \fBterminfo\fP source.
.PP
Some common \fBterminfo\fP parameter sequences, their \fBtermcap\fP
equivalents, and some terminal types which commonly have such sequences, are:
.PP
.TS
center;
Lf(BI) Lf(BI) L
Lb     Lb     L.
terminfo	termcap	Terminal Types
_
.\" ansi-m cup (adm3a has other stuff in between, more like concept)
%p1%c	%.	ansi\-m
.\" ansi cub, vt100 cub
%p1%d	%d	ansi, vt100
.\" vt52 cup (via vt52-basic)
%p1%\*' \*'%+%c	%+x	vt52
.\" ansi cup, vt100 cup
%i	%iq	ansi, vt100
.\" annarbor4080 cup
%p1%?%\*'x\*'%>%t%p1%\*'y\*'%+%;	%>xy	annarbor4080
.\" hpgeneric cup
%p2\fR\|.\|.\|.\|\fP%p1	%r	hpgeneric
.TE
.SS "Use= Option [\-u]"
The \fB\-u\fP option produces a \fBterminfo\fP source description of the first
terminal \fIterminal-type\fP which is relative to the sum of the
descriptions given by the entries for the other \fIterminal-types\fP.
It does this by
analyzing the differences between the first \fIterminal-types\fP and the
other \fIterminal-types\fP and producing a description with \fBuse=\fP
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@\fP
will show what can be done to change
one description to be relative to the other.
.PP
A capability will be printed with an at-sign (@) if it no longer exists in the
first \fIterminal-type\fP,
but one of the other \fIterminal-type\fP entries contains a value for
it.
A capability's value will be printed if the value in the first
\fIterminal-type\fP is not found in any of the other \fIterminal-type\fP
entries,
or if the first of the other \fIterminal-type\fP entries that has this
capability gives a different value for the capability than that in the
first \fIterminal-type\fP.
.PP
The order of the other \fIterminal-type\fP entries is significant.
Since the
terminfo compiler \fB@TIC@\fP does a left-to-right scan of the capabilities,
specifying two \fBuse=\fP 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@\fP will flag any such inconsistencies between
the other \fIterminal-type\fP entries as they are found.
.PP
Alternatively, specifying a capability \fIafter\fP a \fBuse=\fP entry that
contains that capability will cause the second specification to be ignored.
Using \fB@INFOCMP@\fP 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=\fP fields that are
superfluous.
\fB@INFOCMP@\fP will flag any other \fIterminal-type use=\fP fields that
were not needed.
.SS "Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR]"
Like other \fI\%ncurses\fP utilities,
\fB@INFOCMP@\fP looks for the terminal descriptions in several places.
You can use the \fI\%TERMINFO\fP and \fI\%TERMINFO_DIRS\fP environment
variables to override the compiled-in default list of places to search.
See \fBcurses\fP(3X), as well as
the \fIFetching Compiled Descriptions\fP section in \fBterminfo\fR(5).
.PP
You can also use the options \fB\-A\fP
and \fB\-B\fP to override the list of places to search
when comparing terminal descriptions:
.bP
The \fB\-A\fP option sets the location for the first \fIterminal-type\fP
.bP
The \fB\-B\fP option sets the location for the other
\fIterminal-types\fP.
.PP
Using these options, it is possible to
compare descriptions for a terminal with the same name located in two different
databases.
For instance,
you can use this feature for comparing descriptions for the same terminal
created by different people.
.SS "Other Options"
.TP 5
\fB\-0\fP
causes the fields to be printed on one line, without wrapping.
.TP 5
\fB\-1\fP
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\fP
tells \fB@INFOCMP@\fP to retain commented-out capabilities
rather than discarding them.
Capabilities are commented by prefixing them with a period.
.TP
\fB\-D\fP
tells \fB@INFOCMP@\fP to print the database locations that it knows about,
and exit.
.TP 5
\fB\-E\fP
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>\fP).
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 \fI\%ncurses\fP 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\fP
Dump the capabilities of the given terminal as a C initializer for a
TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fP).
This option is useful for preparing versions of the curses library hardwired
for a given terminal type.
.TP 5
\fB\-F\fP
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\fP.
.TP 5
\fB\-f\fP
Display complex terminfo strings which contain if/then/else/endif expressions
indented for readability.
.TP 5
\fB\-G\fP
Display constant literals in decimal form
rather than their character equivalents.
.TP 5
\fB\-g\fP
Display constant character literals in quoted form
rather than their decimal equivalents.
.TP 5
\fB\-i\fP
Analyze the initialization (\fBis1\fP, \fBis2\fP, \fBis3\fP), and reset
(\fBrs1\fP, \fBrs2\fP, \fBrs3\fP), strings in the entry,
as well as those used for starting/stopping cursor-positioning mode
(\fBsmcup\fP, \fBrmcup\fP) as well as starting/stopping keymap mode
(\fBsmkx\fP, \fBrmkx\fP).
.IP
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.
.IP
Here is a list of the DEC/ANSI
special sequences recognized:
.PP
.TS
center;
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
.RS
.bP
\*(``+\*('' (turn on) or
.bP
\*(``\-\*('' (turn off).
.RE
.IP
An SGR0 designates an empty highlight sequence (equivalent to {SGR:NORMAL}).
.TP 5
\fB\-l\fP
Set output format to terminfo.
.TP 5
\fB\-p\fP
Ignore padding specifications when comparing strings.
.TP 5
\fB\-Q\fP \fIn\fP
Rather than show source in terminfo (text) format,
print the compiled (binary) format in hexadecimal or base64 form,
depending on the option's value:
.RS 8
.TP 3
1
hexadecimal
.TP 3
2
base64
.TP 3
3
hexadecimal and base64
.RE
.IP
For example, this prints the compiled terminfo value as a string
which could be assigned to the \fI\%TERMINFO\fP environment variable:
.PP
.RS 9
.EX
@INFOCMP@ \-0 \-q \-Q2
.EE
.RE
.TP 5
\fB\-q\fP
This makes the output a little shorter:
.RS
.bP
Make the comparison listing shorter by omitting subheadings, and using
\*(``\-\*('' for absent capabilities, \*(``@\*(''
for canceled rather than \*(``NULL\*(''.
.bP
However, show differences between absent and cancelled capabilities.
.bP
Omit the \*(``Reconstructed from\*('' comment for source listings.
.RE
.TP 5
\fB\-R\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.
.RS
.bP
Available terminfo
subsets are \*(``SVr1\*('', \*(``Ultrix\*('', \*(``HP\*('', and \*(``AIX\*('';
see \fBterminfo\fP(5) for details.
.bP
You can also choose the subset \*(``BSD\*('' which selects only capabilities
with termcap equivalents recognized by 4.4BSD.
.bP
If you select any other value for \fB\-R\fP,
it is the same as no subset, i.e., all capabilities are used.
.RE
.IP
A few options override the subset selected with \fB\-R\fP,
if they are processed later in the command parameters:
.RS
.TP 5
\fB\-C\fP
sets the \*(``BSD\*('' subset as a side-effect.
.TP 5
\fB\-I\fP
sets the subset to all capabilities.
.TP 5
\fB\-r\fP
sets the subset to all capabilities.
.RE
.TP
\fB\-s \fI[d|i|l|c]\fR
The \fB\-s\fP option sorts the fields within each type according to the argument
below:
.br
.RS 5
.TP 5
\fBd\fP
leave fields in the order that they are stored in the \fIterminfo\fP database.
.TP 5
\fBi\fP
sort by \fIterminfo\fP name.
.TP 5
\fBl\fP
sort by the long C variable name.
.TP 5
\fBc\fP
sort by the \fItermcap\fP name.
.RE
.IP
If the \fB\-s\fP option is not given, the fields printed out will be
sorted alphabetically by the \fBterminfo\fP name within each type,
except in the case of the \fB\-C\fP or the \fB\-L\fP options, which cause the
sorting to be done by the \fBtermcap\fP name or the long C variable
name, respectively.
.TP 5
\fB\-T\fP
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\fP
tells \fB@TIC@\fP to discard commented-out capabilities.
Normally when translating from terminfo to termcap,
untranslatable capabilities are commented-out.
.TP 5
\fB\-U\fP
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\fP
reports the version of \fI\%ncurses\fP which was used in this program,
and exits.
.TP 5
\fB\-v\fP \fIn\fP
prints out tracing information on standard error as the program runs.
.IP
The optional parameter \fIn\fP is a number from 1 to 10, inclusive,
indicating the desired level of detail of information.
If \fI\%ncurses\fP is built without tracing support,
the optional parameter is ignored.
.TP
\fB\-W\fP
By itself, the \fB\-w\fP option will not force long strings to be wrapped.
Use the \fB\-W\fP option to do this.
.TP 5
\fB\-w\fP \fIwidth\fP
changes the output to \fIwidth\fP characters.
.TP
\fB\-x\fP
print information for user-defined capabilities (see \fBuser_caps\fP(5).
These are extensions to the terminfo repertoire which can be loaded
using the \fB\-x\fP option of \fB@TIC@\fP.
.SH FILES
.TP
.I \*d
compiled terminal description database
.SH EXTENSIONS
The
\fB\-0\fP,
\fB\-1\fP,
\fB\-E\fP,
\fB\-F\fP,
\fB\-G\fP,
\fB\-Q\fP,
\fB\-R\fP,
\fB\-T\fP,
\fB\-V\fP,
\fB\-a\fP,
\fB\-e\fP,
\fB\-f\fP,
\fB\-g\fP,
\fB\-i\fP,
\fB\-l\fP,
\fB\-p\fP,
\fB\-q\fP and
\fB\-t\fP
options are not supported in SVr4 curses.
.PP
SVr4 infocmp does not distinguish between absent and cancelled capabilities.
Also, it shows missing integer capabilities as \fB\-1\fP
(the internal value used to represent missing integers).
This implementation shows those as \*(``NULL\*('',
for consistency with missing strings.
.PP
The \fB\-r\fP 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\fP \fB\-RBSD\fP.
.SH PORTABILITY
X/Open Curses, Issue 7 (2009) provides a description of \fBinfocmp\fP.
It does not mention the options used for converting to termcap format.
.SH HISTORY
Although System V Release 2 provided a terminfo library,
it had no documented tool for decompiling the terminal descriptions.
Tony Hansen (AT&T) wrote the first \fBinfocmp\fP in early 1984,
for System V Release 3.
.PP
Eric Raymond used the AT&T documentation in 1995 to provide an equivalent
\fB@INFOCMP@\fP for \fI\%ncurses\fP.
In addition, he added a few new features such as:
.bP
the \fB\-e\fP option, to support \fIfallback\fP
(compiled-in) terminal descriptions
.bP
the \fB\-i\fP option, to help with analysis
.PP
Later, Thomas Dickey added the \fB\-x\fP (user-defined capabilities)
option, and the \fB\-E\fP option to support fallback entries with
user-defined capabilities.
.PP
For a complete list, see the \fIEXTENSIONS\fP section.
.PP
In 2010, Roy Marples provided an \fBinfocmp\fP program for NetBSD.
It is less capable than the SVr4 or \fI\%ncurses\fP versions
(e.g., it lacks the sorting options documented in X/Open),
but does include the \fB\-x\fP option adapted from \fI\%ncurses\fP.
.SH BUGS
The \fB\-F\fP option of \fB\%@INFOCMP@\fP(1M) should be a
\fB\%@TOE@\fP(1M) mode.
.SH AUTHORS
Eric S. Raymond <esr@snark.thyrsus.com>
and
.br
Thomas E. Dickey <dickey@invisible\-island.net>
.SH SEE ALSO
\fB\%@CAPTOINFO@\fP(1M),
\fB\%@INFOTOCAP@\fP(1M),
\fB\%@TIC@\fP(1M),
\fB\%@TOE@\fP(1M),
\fB\%curses\fP(3X),
\fB\%terminfo\fP(5),
\fB\%user_caps\fP(5)
.PP
https://invisible\-island.net/ncurses/tctest.html
