tic - the terminfo entry-description compiler
tic [-1CGILNTVacfgrstx] [-e names] [-o dir] [-R subset]
[-v[n]] [-w[n]] file
The command tic translates a terminfo file from source
format into compiled format. The compiled format is nec-
essary for use with the library routines in ncurses(3x).
The results are normally placed in the system terminfo
directory /usr/share/terminfo. There are two ways to
change this behavior.
First, you may override the system default by setting the
variable TERMINFO in your shell environment to a valid
(existing) directory name.
Secondly, if tic cannot get access to /usr/share/terminfo
or your TERMINFO directory, it looks for the directory
$HOME/.terminfo; if that directory exists, the entry is
Libraries that read terminfo entries are expected to check
for a TERMINFO directory first, look at $HOME/.terminfo if
TERMINFO is not set, and finally look in /usr/share/ter-
-1 restricts the output to a single column
-a tells tic to retain commented-out capabilities
rather than discarding them. Capabilities are com-
mented by prefixing them with a period. This sets
the -x option, because it treats the commented-out
entries as user-defined names.
-C Force source translation to termcap format. Note:
this differs from the -C option of infocmp(1m) in
that it does not merely translate capability names,
but also translates terminfo strings to termcap
format. Capabilities that are not translatable are
left in the entry under their terminfo names but
commented out with two preceding dots.
-c tells tic to only check file for errors, including
syntax problems and bad use links. If you specify
-C (-I) with this option, the code will print warn-
ings about entries which, after use resolution, are
more than 1023 (4096) bytes long. Due to a fixed
buffer length in older termcap libraries (and a
documented limit in terminfo), these entries may
cause core dumps.
Limit writes and translations to the following
comma-separated list of terminals. If any name or
alias of a terminal matches one of the names in the
list, the entry will be written or translated as
normal. Otherwise no output will be generated for
it. The option value is interpreted as a file con-
taining the list if it contains a '/'. (Note:
depending on how tic was compiled, this option may
require -I or -C.)
-f Display complex terminfo strings which contain
if/then/else/endif expressions indented for read-
-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 Force source translation to terminfo format.
-L Force source translation to terminfo format using
the long C variable names listed in <term.h>
-N Disable smart defaults. Normally, when translating
from termcap to terminfo, the compiler makes a num-
ber of assumptions about the defaults of string
capabilities reset1_string, carriage_return, cur-
sor_left, cursor_down, scroll_forward, tab, new-
line, key_backspace, key_left, and key_down, then
attempts to use obsolete termcap capabilities to
deduce correct values. It also normally suppresses
output of obsolete termcap capabilities such as bs.
This option forces a more literal translation that
also preserves the obsolete capabilities.
-odir Write compiled entries to given directory. Over-
rides the TERMINFO environment variable.
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 out-
right broken ports like AIX 3.x that have their own
extensions incompatible with SVr4/XSI. Available
subsets are "SVr1", "Ultrix", "HP", "BSD" and
"AIX"; see terminfo(5) for details.
-r Force entry resolution (so there are no remaining
tc capabilities) even when doing translation to
termcap format. This may be needed if you are
preparing a termcap file for a termcap library
(such as GNU termcap through version 1.3 or BSD
termcap through 4.3BSD) that does not handle multi-
ple tc capabilities per entry.
-s Summarize the compile by showing the directory into
which entries are written, and the number of
entries which are compiled.
-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.
-V reports the version of ncurses which was used in
this program, and exits.
-vn specifies that (verbose) output be written to stan-
dard error trace information showing tic's
progress. The optional integer n is a number from
1 to 10, inclusive, indicating the desired level of
detail of information. If n is omitted, the
default level is 1. If n is specified and greater
than 1, the level of detail is increased.
-wn specifies the width of the output.
-x Treat unknown capabilities as user-defined. That
is, if you supply a capability name which tic does
not recognize, it will infer its type (boolean,
number or string) from the syntax and make an
extended table entry for that.
file contains one or more terminfo terminal descriptions
in source format [see terminfo(5)]. Each descrip-
tion in the file describes the capabilities of a
The debug flag levels are as follows:
1 Names of files created and linked
2 Information related to the ``use'' facility
3 Statistics from the hashing algorithm
5 String-table memory allocations
7 Entries into the string-table
8 List of tokens encountered by scanner
9 All values computed in construction of the hash
If the debug level n is not given, it is taken to be one.
All but one of the capabilities recognized by tic are doc-
umented in terminfo(5). The exception is the use capabil-
When a use=entry-name field is discovered in a terminal
entry currently being compiled, tic reads in the binary
from /usr/share/terminfo to complete the entry. (Entries
created from file will be used first. If the environment
variable TERMINFO is set, that directory is searched
instead of /usr/share/terminfo.) tic duplicates the capa-
bilities in entry-name for the current entry, with the
exception of those capabilities that explicitly are
defined in the current entry.
When an entry, e.g., entry_name_1, contains a
use=entry_name_2 field, any canceled capabilities in
entry_name_2 must also appear in entry_name_1 before use=
for these capabilities to be canceled in entry_name_1.
If the environment variable TERMINFO is set, the compiled
results are placed there instead of /usr/share/terminfo.
Total compiled entries cannot exceed 4096 bytes. The name
field cannot exceed 512 bytes. Terminal names exceeding
the maximum alias length (32 characters on systems with
long filenames, 14 characters otherwise) will be truncated
to the maximum alias length and a warning message will be
There is some evidence that historic tic implementations
treated description fields with no whitespace in them as
additional aliases or short names. This tic does not do
that, but it does warn when description fields may be
treated that way and check them for dangerous characters.
Unlike the stock SVr4 tic command, this implementation can
actually compile termcap sources. In fact, entries in
terminfo and termcap syntax can be mixed in a single
source file. See terminfo(5) for the list of termcap
names taken to be equivalent to terminfo names.
The SVr4 manual pages are not clear on the resolution
rules for use capabilities. This implementation of tic
will find use targets anywhere in the source file, or any-
where in the file tree rooted at TERMINFO (if TERMINFO is
defined), or in the user's $HOME/.terminfo directory (if
it exists), or (finally) anywhere in the system's file
tree of compiled entries.
The error messages from this tic have the same format as
GNU C error messages, and can be parsed by GNU Emacs's
The -C, -G, -I, -N, -R, -T, -V, -a, -e, -f, -g, -o, -r,
-s, -t and -x options are not supported under SVr4. The
SVr4 -c mode does not report bad use links.
System V does not compile entries to or read entries from
your $HOME/.terminfo directory unless TERMINFO is explic-
itly set to it.
Compiled terminal description database.
infocmp(1m), captoinfo(1m), infotocap(1m), toe(1m),
Man(1) output converted with