version 1.16, 2013/03/24 00:09:30 |
version 1.17, 2023/10/17 09:52:10 |
|
|
.\" $OpenBSD$ |
.\" $OpenBSD$ |
.\" |
.\" |
.\"*************************************************************************** |
.\"*************************************************************************** |
.\" Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. * |
.\" Copyright 2018-2022,2023 Thomas E. Dickey * |
|
.\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * |
.\" * |
.\" * |
.\" Permission is hereby granted, free of charge, to any person obtaining a * |
.\" Permission is hereby granted, free of charge, to any person obtaining a * |
.\" copy of this software and associated documentation files (the * |
.\" copy of this software and associated documentation files (the * |
|
|
.\"*************************************************************************** |
.\"*************************************************************************** |
.\" |
.\" |
.\" $Id$ |
.\" $Id$ |
.TH tic 1 "" |
.TH tic 1 2023-08-19 "ncurses 6.4" "User commands" |
|
.ie \n(.g .ds `` \(lq |
|
.el .ds `` `` |
|
.ie \n(.g .ds '' \(rq |
|
.el .ds '' '' |
.ds n 5 |
.ds n 5 |
.ds d /usr/share/terminfo |
.ds d /usr/share/terminfo |
|
.de bP |
|
.ie n .IP \(bu 4 |
|
.el .IP \(bu 2 |
|
.. |
.SH NAME |
.SH NAME |
\fBtic\fR - the \fIterminfo\fR entry-description compiler |
\fBtic\fP \- the \fIterminfo\fP entry-description compiler |
.SH SYNOPSIS |
.SH SYNOPSIS |
\fBtic\fR |
\fBtic\fP |
[\fB-\ |
[\fB\-\ |
|
0\ |
1\ |
1\ |
C\ |
C\ |
|
D\ |
G\ |
G\ |
I\ |
I\ |
|
K\ |
L\ |
L\ |
N\ |
N\ |
T\ |
T\ |
U\ |
U\ |
V\ |
V\ |
|
W\ |
a\ |
a\ |
c\ |
c\ |
f\ |
f\ |
g\ |
g\ |
|
q\ |
r\ |
r\ |
s\ |
s\ |
t\ |
t\ |
x\ |
x\ |
\fR] |
\fP] |
[\fB-e\fR \fInames\fR] |
[\fB\-e\fP \fInames\fP] |
[\fB-o\fR \fIdir\fR] |
[\fB\-o\fP \fIdir\fP] |
[\fB-R\fR \fIsubset\fR] |
[\fB\-Q\fP[\fIn\fP]] |
[\fB-v\fR[\fIn\fR]] |
[\fB\-R\fP \fIsubset\fP] |
[\fB-w\fR[\fIn\fR]] |
[\fB\-v\fP[\fIn\fP]] |
\fIfile\fR |
[\fB\-w\fP[\fIn\fP]] |
.br |
\fIfile\fP |
.SH DESCRIPTION |
.SH DESCRIPTION |
The command \fBtic\fR translates a \fBterminfo\fR file from source |
The \fBtic\fP command translates a \fBterminfo\fP file from source |
format into compiled format. The compiled format is necessary for use with |
format into compiled format. |
the library routines in \fBncurses\fR(3X). |
The compiled format is necessary for use with |
|
the library routines in \fBncurses\fP(3). |
.PP |
.PP |
The results are normally placed in the system terminfo |
As described in \fBterm\fP(\*n), the database may be either a directory |
directory \fB\*d\fR. There are two ways to change this behavior. |
tree (one file per terminal entry) or a hashed database (one record per entry). |
|
The \fBtic\fP command writes only one type of entry, |
|
depending on how it was built: |
|
.bP |
|
For directory trees, the top-level directory, e.g., /usr/share/terminfo, |
|
specifies the location of the database. |
|
.bP |
|
For hashed databases, a filename is needed. |
|
If the given file is not found by that name, |
|
but can be found by adding the suffix ".db", |
|
then that is used. |
|
.IP |
|
The default name for the hashed database is the same as the |
|
default directory name (only adding a ".db" suffix). |
.PP |
.PP |
First, you may override the system default by setting the variable |
In either case (directory or hashed database), |
\fBTERMINFO\fR in your shell environment to a valid (existing) directory name. |
\fBtic\fP will create the container if it does not exist. |
|
For a directory, this would be the \*(``terminfo\*('' leaf, |
|
versus a "terminfo.db" file. |
.PP |
.PP |
Secondly, if \fBtic\fR cannot get access to \fI\*d\fR or your TERMINFO |
The results are normally placed in the system terminfo database \fB\*d\fP. |
directory, it looks for the directory \fI$HOME/.terminfo\fR; if that directory |
The compiled terminal description can be placed |
exists, the entry is placed there. |
in a different terminfo database. |
|
There are two ways to achieve this: |
|
.bP |
|
First, you may override the system default either by |
|
using the \fB\-o\fP option, |
|
or by setting the variable \fBTERMINFO\fP |
|
in your shell environment to a valid database location. |
|
.bP |
|
Secondly, if \fBtic\fP cannot write in \fI\*d\fP |
|
or the location specified using your TERMINFO variable, |
|
it looks for the directory \fI$HOME/.terminfo\fP |
|
(or hashed database \fI$HOME/.terminfo.db)\fP; |
|
if that location exists, the entry is placed there. |
.PP |
.PP |
Libraries that read terminfo entries are expected to check for a TERMINFO |
Libraries that read terminfo entries are expected to check in succession |
directory first, look at \fI$HOME/.terminfo\fR if TERMINFO is not set, and |
.bP |
finally look in \fI\*d\fR. |
a location specified with the TERMINFO environment variable, |
|
.bP |
|
\fI$HOME/.terminfo\fP, |
|
.bP |
|
directories listed in the TERMINFO_DIRS environment variable, |
|
.bP |
|
a compiled-in list of directories (?), and |
|
.bP |
|
the system terminfo database (\fI\*d\fP). |
|
.SS ALIASES |
|
This is the same program as infotocap and captoinfo; |
|
usually those are linked to, or copied from this program: |
|
.bP |
|
When invoked as infotocap, tic sets the \fB\-I\fP option. |
|
.bP |
|
When invoked as captoinfo, tic sets the \fB\-C\fP option. |
|
.SS OPTIONS |
.TP |
.TP |
\fB-1\fR |
\fB\-0\fP |
|
restricts the output to a single line |
|
.TP |
|
\fB\-1\fP |
restricts the output to a single column |
restricts the output to a single column |
.TP |
.TP |
\fB-a\fR |
\fB\-a\fP |
tells \fBtic\fP to retain commented-out capabilities rather than discarding |
tells \fBtic\fP to retain commented-out capabilities rather than discarding |
them. Capabilities are commented by prefixing them with a period. |
them. |
This sets the \fB-x\fR option, because it treats the commented-out |
Capabilities are commented by prefixing them with a period. |
|
This sets the \fB\-x\fP option, because it treats the commented-out |
entries as user-defined names. |
entries as user-defined names. |
If the source is termcap, accept the 2-character names required by version 6. |
If the source is termcap, accept the 2-character names required by version 6. |
Otherwise these are ignored. |
Otherwise these are ignored. |
.TP |
.TP |
\fB-C\fR |
\fB\-C\fP |
Force source translation to termcap format. Note: this differs from the \fB-C\fR |
Force source translation to termcap format. |
option of \fBinfocmp\fR(1M) in that it does not merely translate capability |
Note: this differs from the \fB\-C\fP |
names, but also translates terminfo strings to termcap format. Capabilities |
option of \fBinfocmp\fP(1) 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 |
that are not translatable are left in the entry under their terminfo names |
but commented out with two preceding dots. |
but commented out with two preceding dots. |
|
The actual format used incorporates some improvements for escaped characters |
|
from terminfo format. |
|
For a stricter BSD-compatible translation, add the \fB\-K\fP option. |
|
.IP |
|
If this is combined with \fB\-c\fP, \fBtic\fP makes additional checks |
|
to report cases where the terminfo values do not have an exact equivalent |
|
in termcap form. |
|
For example: |
|
.RS |
|
.bP |
|
\fBsgr\fP usually will not convert, because termcap lacks the ability to |
|
work with more than two parameters, and because termcap lacks many of |
|
the arithmetic/logical operators used in terminfo. |
|
.bP |
|
capabilities with more than one delay or with delays before the end of |
|
the string will not convert completely. |
|
.RE |
.TP |
.TP |
\fB-c\fR |
\fB\-c\fP |
tells \fBtic\fP to only check \fIfile\fR for errors, including syntax problems and |
tells \fBtic\fP to only check \fIfile\fP for errors, |
bad use links. If you specify \fB-C\fR (\fB-I\fR) with this option, the code |
including syntax problems and bad use-links. |
|
If you specify \fB\-C\fP (\fB\-I\fP) with this option, the code |
will print warnings about entries which, after use resolution, are more than |
will print warnings about entries which, after use resolution, are more than |
1023 (4096) bytes long. Due to a fixed buffer length in older termcap |
1023 (4096) bytes long. |
libraries (and a documented limit in terminfo), these entries may cause core |
Due to a fixed buffer length in older termcap libraries, |
dumps. |
as well as buggy checking for the buffer length |
|
(and a documented limit in terminfo), |
|
these entries may cause core |
|
dumps with other implementations. |
|
.IP |
|
\fBtic\fP checks string capabilities to ensure that those with parameters |
|
will be valid expressions. |
|
It does this check only for the predefined string capabilities; |
|
those which are defined with the \fB\-x\fP option are ignored. |
.TP |
.TP |
\fB-e \fR\fInames\fR |
\fB\-D\fP |
|
tells \fBtic\fP to print the database locations that it knows about, and exit. |
|
The first location shown is the one to which it would write compiled |
|
terminal descriptions. |
|
If \fBtic\fP is not able to find a writable database location |
|
according to the rules summarized above, |
|
it will print a diagnostic and exit with an error rather than |
|
printing a list of database locations. |
|
.TP |
|
\fB\-e \fInames\fR |
Limit writes and translations to the following comma-separated list of |
Limit writes and translations to the following comma-separated list of |
terminals. |
terminals. |
If any name or alias of a terminal matches one of the names in |
If any name or alias of a terminal matches one of the names in |
|
|
Otherwise no output will be generated for it. |
Otherwise no output will be generated for it. |
The option value is interpreted as a file containing the list if it |
The option value is interpreted as a file containing the list if it |
contains a '/'. |
contains a '/'. |
(Note: depending on how tic was compiled, this option may require \fB-I\fR or \fB-C\fR.) |
(Note: depending on how tic was compiled, |
|
this option may require \fB\-I\fP or \fB\-C\fP.) |
.TP |
.TP |
\fB-f\fR |
\fB\-f\fP |
Display complex terminfo strings which contain if/then/else/endif expressions |
Display complex terminfo strings which contain if/then/else/endif expressions |
indented for readability. |
indented for readability. |
.TP |
.TP |
\fB-G\fR |
\fB\-G\fP |
Display constant literals in decimal form |
Display constant literals in decimal form |
rather than their character equivalents. |
rather than their character equivalents. |
.TP |
.TP |
\fB-g\fR |
\fB\-g\fP |
Display constant character literals in quoted form |
Display constant character literals in quoted form |
rather than their decimal equivalents. |
rather than their decimal equivalents. |
.TP |
.TP |
\fB-I\fR |
\fB\-I\fP |
Force source translation to terminfo format. |
Force source translation to terminfo format. |
.TP |
.TP |
\fB-L\fR |
\fB\-K\fP |
|
Suppress some longstanding ncurses extensions to termcap format, |
|
e.g., "\\s" for space. |
|
.TP |
|
\fB\-L\fP |
Force source translation to terminfo format |
Force source translation to terminfo format |
using the long C variable names listed in <\fBterm.h\fR> |
using the long C variable names listed in <\fBterm.h\fP> |
.TP |
.TP |
\fB-N\fR |
\fB\-N\fP |
Disable smart defaults. |
Disable smart defaults. |
Normally, when translating from termcap to terminfo, the compiler makes |
Normally, when translating from termcap to terminfo, the compiler makes |
a number of assumptions about the defaults of string capabilities |
a number of assumptions about the defaults of string capabilities |
\fBreset1_string\fR, \fBcarriage_return\fR, \fBcursor_left\fR, |
\fBreset1_string\fP, \fBcarriage_return\fP, \fBcursor_left\fP, |
\fBcursor_down\fR, \fBscroll_forward\fR, \fBtab\fR, \fBnewline\fR, |
\fBcursor_down\fP, \fBscroll_forward\fP, \fBtab\fP, \fBnewline\fP, |
\fBkey_backspace\fR, \fBkey_left\fR, and \fBkey_down\fR, then attempts |
\fBkey_backspace\fP, \fBkey_left\fP, and \fBkey_down\fP, then attempts |
to use obsolete termcap capabilities to deduce correct values. It also |
to use obsolete termcap capabilities to deduce correct values. |
normally suppresses output of obsolete termcap capabilities such as \fBbs\fR. |
It also |
|
normally suppresses output of obsolete termcap capabilities such as \fBbs\fP. |
This option forces a more literal translation that also preserves the |
This option forces a more literal translation that also preserves the |
obsolete capabilities. |
obsolete capabilities. |
.TP |
.TP |
\fB-o\fR\fIdir\fR |
\fB\-o\fIdir\fR |
Write compiled entries to given directory. Overrides the TERMINFO environment |
Write compiled entries to given database location. |
variable. |
Overrides the TERMINFO environment variable. |
.TP |
.TP |
\fB-R\fR\fIsubset\fR |
\fB\-Q\fIn\fR |
Restrict output to a given subset. This option is for use with archaic |
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 |
|
.TP |
|
\fB\-q\fP |
|
Suppress comments and blank lines when showing translated source. |
|
.TP |
|
\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 |
versions of terminfo like those on SVr1, Ultrix, or HP-UX that do not support |
the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX 3.x |
the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX 3.x |
that have their own extensions incompatible with SVr4/XSI. Available subsets |
that have their own extensions incompatible with SVr4/XSI. |
are "SVr1", "Ultrix", "HP", "BSD" and "AIX"; see \fBterminfo\fR(\*n) for details. |
.IP |
|
Available subsets are |
|
.RS |
|
\*(``SVr1\*('', |
|
\*(``Ultrix\*('', |
|
\*(``HP\*('', |
|
\*(``BSD\*('', and |
|
\*(``AIX\*('' |
|
.RE |
|
.IP |
|
See \fBterminfo\fP(\*n) for details. |
.TP |
.TP |
\fB-r\fR |
\fB\-r\fP |
Force entry resolution (so there are no remaining tc capabilities) even |
Force entry resolution (so there are no remaining tc capabilities) even |
when doing translation to termcap format. This may be needed if you are |
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 |
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 multiple |
version 1.3 or BSD termcap through 4.3BSD) that does not handle multiple |
tc capabilities per entry. |
tc capabilities per entry. |
.TP |
.TP |
\fB-s\fR |
\fB\-s\fP |
Summarize the compile by showing the directory into which entries |
Summarize the compile by showing the database location into which entries |
are written, and the number of entries which are compiled. |
are written, and the number of entries which are compiled. |
.TP |
.TP |
\fB-T\fR |
\fB\-T\fP |
eliminates size-restrictions on the generated text. |
eliminates size-restrictions on the generated text. |
This is mainly useful for testing and analysis, since the compiled |
This is mainly useful for testing and analysis, since the compiled |
descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo). |
descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo). |
.TP |
.TP |
\fB-t\fR |
\fB\-t\fP |
tells \fBtic\fP to discard commented-out capabilities. |
tells \fBtic\fP to discard commented-out capabilities. |
Normally when translating from terminfo to termcap, |
Normally when translating from terminfo to termcap, |
untranslatable capabilities are commented-out. |
untranslatable capabilities are commented-out. |
.TP 5 |
.TP 5 |
\fB-U\fR |
\fB\-U\fP |
tells \fBtic\fP to not post-process the data after parsing the source file. |
tells \fBtic\fP to not post-process the data after parsing the source file. |
Normally, it infers data which is commonly missing in older terminfo data, |
Normally, it infers data which is commonly missing in older terminfo data, |
or in termcaps. |
or in termcaps. |
.TP |
.TP |
\fB-V\fR |
\fB\-V\fP |
reports the version of ncurses which was used in this program, and exits. |
reports the version of ncurses which was used in this program, and exits. |
.TP |
.TP |
\fB-v\fR\fIn\fR |
\fB\-v\fIn\fR |
specifies that (verbose) output be written to standard error trace |
specifies that (verbose) output be written to standard error trace |
information showing \fBtic\fR's progress. |
information showing \fBtic\fP's progress. |
The optional parameter \fIn\fR is a number from 1 to 10, inclusive, |
.IP |
|
The optional parameter \fIn\fP is a number from 1 to 9, inclusive, |
indicating the desired level of detail of information. |
indicating the desired level of detail of information. |
If \fIn\fR is omitted, the default level is 1. |
.RS |
If \fIn\fR is specified and greater than 1, the level of |
.bP |
detail is increased. |
If ncurses is built without tracing support, the optional parameter is ignored. |
.TP |
.bP |
\fB-w\fR\fIn\fR |
If \fIn\fP is omitted, the default level is 1. |
specifies the width of the output. |
.bP |
The parameter is optional. |
If \fIn\fP is specified and greater than 1, the level of |
If it is omitted, it defaults to 60. |
detail is increased, and the output is written (with tracing information) |
.TP |
to the \*(``trace\*('' file. |
\fB-x\fR |
.RE |
Treat unknown capabilities as user-defined. |
.RS |
That is, if you supply a capability name which \fBtic\fP does not recognize, |
|
it will infer its type (boolean, number or string) from the syntax and |
|
make an extended table entry for that. |
|
User-defined capability strings |
|
whose name begins with ``k'' are treated as function keys. |
|
.TP |
|
\fIfile\fR |
|
contains one or more \fBterminfo\fR terminal descriptions in source |
|
format [see \fBterminfo\fR(\*n)]. Each description in the file |
|
describes the capabilities of a particular terminal. |
|
.PP |
.PP |
The debug flag levels are as follows: |
The debug flag levels are as follows: |
.TP |
.TP 4 |
1 |
1 |
Names of files created and linked |
Names of files created and linked |
.TP |
.TP |
2 |
2 |
Information related to the ``use'' facility |
Information related to the \*(``use\*('' facility |
.TP |
.TP |
3 |
3 |
Statistics from the hashing algorithm |
Statistics from the hashing algorithm |
.TP |
.TP |
|
4 |
|
Details of extended capabilities |
|
.TP |
5 |
5 |
String-table memory allocations |
(unused) |
.TP |
.TP |
|
6 |
|
(unused) |
|
.TP |
7 |
7 |
Entries into the string-table |
Entries into the string-table |
.TP |
.TP |
|
|
.TP |
.TP |
9 |
9 |
All values computed in construction of the hash table |
All values computed in construction of the hash table |
.LP |
.RE |
If the debug level \fIn\fR is not given, it is taken to be one. |
.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. |
|
.IP |
|
If you specify both \fB\-f\fP and \fB\-W\fP options, |
|
the latter is ignored when \fB\-f\fP has already split the line. |
|
.TP |
|
\fB\-w\fIn\fR |
|
specifies the width of the output. |
|
The parameter is optional. |
|
If it is omitted, it defaults to 60. |
|
.TP |
|
\fB\-x\fP |
|
Treat unknown capabilities as user-defined (see \fBuser_caps(\*n)\fP). |
|
That is, if you supply a capability name which \fBtic\fP does not recognize, |
|
it will infer its type (boolean, number or string) from the syntax and |
|
make an extended table entry for that. |
|
User-defined capability strings |
|
whose name begins with \*(``k\*('' are treated as function keys. |
|
.SS PARAMETERS |
|
.TP |
|
\fIfile\fP |
|
contains one or more \fBterminfo\fP terminal descriptions in source |
|
format [see \fBterminfo\fP(\*n)]. |
|
Each description in the file |
|
describes the capabilities of a particular terminal. |
|
.IP |
|
If \fIfile\fP is \*(``-\*('', then the data is read from the standard input. |
|
The \fIfile\fP parameter may also be the path of a character-device. |
|
.SS PROCESSING |
|
All but one of the capabilities recognized by \fBtic\fP are documented |
|
in \fBterminfo\fP(\*n). |
|
The exception is the \fBuse\fP capability. |
.PP |
.PP |
All but one of the capabilities recognized by \fBtic\fR are documented |
When a \fBuse\fP=\fIentry\fP\-\fIname\fP field is discovered in a |
in \fBterminfo\fR(\*n). The exception is the \fBuse\fR capability. |
terminal entry currently being compiled, \fBtic\fP reads in the binary |
.PP |
from \fB\*d\fP to complete the entry. |
When a \fBuse\fR=\fIentry\fR-\fIname\fR field is discovered in a |
(Entries created from |
terminal entry currently being compiled, \fBtic\fR reads in the binary |
\fIfile\fP will be used first. |
from \fB\*d\fR to complete the entry. (Entries created from |
\fBtic\fP duplicates the capabilities in |
\fIfile\fR will be used first. If the environment variable |
\fIentry\fP\-\fIname\fP for the current entry, with the exception of |
\fBTERMINFO\fR is set, that directory is searched instead of |
|
\fB\*d\fR.) \fBtic\fR duplicates the capabilities in |
|
\fIentry\fR-\fIname\fR for the current entry, with the exception of |
|
those capabilities that explicitly are defined in the current entry. |
those capabilities that explicitly are defined in the current entry. |
.PP |
.PP |
When an entry, e.g., \fBentry_name_1\fR, contains a |
When an entry, e.g., \fBentry_name_1\fP, contains a |
\fBuse=\fR\fIentry\fR_\fIname\fR_\fI2\fR field, any canceled |
\fBuse=\fIentry\fR_\fIname\fR_\fI2\fR field, any canceled |
capabilities in \fIentry\fR_\fIname\fR_\fI2\fR must also appear in |
capabilities in \fIentry\fR_\fIname\fR_\fI2\fP must also appear in |
\fBentry_name_1\fR before \fBuse=\fR for these capabilities to be |
\fBentry_name_1\fP before \fBuse=\fP for these capabilities to be |
canceled in \fBentry_name_1\fR. |
canceled in \fBentry_name_1\fP. |
.PP |
.PP |
If the environment variable \fBTERMINFO\fR is set, the compiled |
Total compiled entries cannot exceed 4096 bytes. |
results are placed there instead of \fB\*d\fR. |
The name field cannot |
.PP |
exceed 512 bytes. |
Total compiled entries cannot exceed 4096 bytes. The name field cannot |
Terminal names exceeding the maximum alias length |
exceed 512 bytes. Terminal names exceeding the maximum alias length |
|
(32 characters on systems with long filenames, 14 characters otherwise) |
(32 characters on systems with long filenames, 14 characters otherwise) |
will be truncated to the maximum alias length and a warning message will be printed. |
will be truncated to the maximum alias length |
.SH COMPATIBILITY |
and a warning message will be printed. |
There is some evidence that historic \fBtic\fR implementations treated |
.SH HISTORY |
|
System V Release 2 provided a \fBtic\fP utility. |
|
It accepted a single option: \fB\-v\fP (optionally followed by a number). |
|
According to Ross Ridge's comment in \fImytinfo\fP, |
|
this version of \fBtic\fP was |
|
unable to represent cancelled capabilities. |
|
.PP |
|
System V Release 3 provided a different \fBtic\fP utility, |
|
written by Pavel Curtis, |
|
(originally named \*(``compile\*('' in \fIpcurses\fP). |
|
This added an option \fB\-c\fP to check the file for |
|
errors, with the caveat that errors in \*(``use=\*('' links |
|
would not be reported. |
|
System V Release 3 documented a few warning messages which |
|
did not appear in \fIpcurses\fP. |
|
While the program itself was changed little as development |
|
continued with System V Release 4, |
|
the table of capabilities grew from 180 (\fIpcurses\fP) to 464 (Solaris). |
|
.PP |
|
In early development of ncurses (1993), |
|
Zeyd Ben-Halim used the table from \fImytinfo\fP to |
|
extend the \fIpcurses\fP table to 469 capabilities |
|
(456 matched SVr4, 8 were only in SVr4, 13 were not in SVr4). |
|
Of those 13, 11 were ultimately discarded |
|
(perhaps to match the draft of X/Open Curses). |
|
The exceptions were |
|
\fBmemory_lock_above\fP and |
|
\fBmemory_unlock\fP (see \fBuser_caps\fP(5)). |
|
.PP |
|
Eric Raymond incorporated parts of \fImytinfo\fP into ncurses |
|
to implement the termcap-to-terminfo source conversion, |
|
and extended that to begin development of |
|
the corresponding terminfo-to-termcap source conversion, |
|
Thomas Dickey completed that development over the course of several years. |
|
.PP |
|
In 1999, Thomas Dickey added the \fB\-x\fP option |
|
to support user-defined capabilities. |
|
.PP |
|
In 2010, Roy Marples provided a \fBtic\fP program |
|
and terminfo library for NetBSD. |
|
That implementation adapts several features from ncurses, |
|
including \fBtic\fP's \fB\-x\fP option. |
|
.PP |
|
The \fB\-c\fP option tells \fBtic\fP to check for problems in the |
|
terminfo source file. |
|
Continued development provides additional checks: |
|
.bP |
|
\fIpcurses\fP had 8 warnings |
|
.bP |
|
ncurses in 1996 had 16 warnings |
|
.bP |
|
Solaris (SVr4) curses has 28 warnings |
|
.bP |
|
NetBSD tic in 2019 has 19 warnings. |
|
.bP |
|
ncurses in 2019 has 96 warnings |
|
.PP |
|
The checking done in ncurses' \fBtic\fP helps with the conversion to |
|
termcap, as well as pointing out errors and inconsistencies. |
|
It is also used to ensure consistency with the user-defined capabilities. |
|
There are 527 distinct capabilities in ncurses' terminal database; |
|
128 of those are user-defined. |
|
.SH PORTABILITY |
|
X/Open Curses, Issue 7 (2009) provides a brief description of \fBtic\fP. |
|
It lists one option: \fB\-c\fP. |
|
The omission of \fB\-v\fP is unexpected. |
|
The change history states that the description is derived from True64 UNIX. |
|
According to its manual pages, that system also supported the \fB\-v\fP option. |
|
.PP |
|
Shortly after Issue 7 was released, Tru64 was discontinued. |
|
As of 2019, the surviving implementations of \fBtic\fP |
|
are SVr4 (AIX, HP-UX and Solaris), |
|
ncurses |
|
and NetBSD curses. |
|
The SVr4 \fBtic\fP programs all support the \fB\-v\fP option. |
|
The NetBSD \fBtic\fP program follows X/Open's documentation, |
|
omitting the \fB\-v\fP option. |
|
.PP |
|
The X/Open rationale states that some implementations of \fBtic\fP |
|
read terminal descriptions from the standard input if the \fIfile\fP |
|
parameter is omitted. |
|
None of these implementations do that. |
|
Further, it comments that some may choose to read from \*(''./terminfo.src\*('' |
|
but that is obsolescent behavior from SVr2, |
|
and is not (for example) a documented feature of SVr3. |
|
.SS COMPATIBILITY |
|
There is some evidence that historic \fBtic\fP implementations treated |
description fields with no whitespace in them as additional aliases or |
description fields with no whitespace in them as additional aliases or |
short names. This \fBtic\fR does not do that, but it does warn when |
short names. |
|
This \fBtic\fP does not do that, but it does warn when |
description fields may be treated that way and check them for dangerous |
description fields may be treated that way and check them for dangerous |
characters. |
characters. |
.SH EXTENSIONS |
.SS EXTENSIONS |
Unlike the stock SVr4 \fBtic\fR command, this implementation can actually |
Unlike the SVr4 \fBtic\fP command, this implementation can actually |
compile termcap sources. In fact, entries in terminfo and termcap syntax can |
compile termcap sources. |
be mixed in a single source file. See \fBterminfo\fR(\*n) for the list of |
In fact, entries in terminfo and termcap syntax can |
|
be mixed in a single source file. |
|
See \fBterminfo\fP(\*n) for the list of |
termcap names taken to be equivalent to terminfo names. |
termcap names taken to be equivalent to terminfo names. |
.PP |
.PP |
The SVr4 manual pages are not clear on the resolution rules for \fBuse\fR |
The SVr4 manual pages are not clear on the resolution rules for \fBuse\fP |
capabilities. |
capabilities. |
This implementation of \fBtic\fR will find \fBuse\fR targets anywhere |
This implementation of \fBtic\fP will find \fBuse\fP targets anywhere |
in the source file, or anywhere in the file tree rooted at \fBTERMINFO\fR (if |
in the source file, or anywhere in the file tree rooted at \fBTERMINFO\fP (if |
\fBTERMINFO\fR is defined), or in the user's \fI$HOME/.terminfo\fR directory |
\fBTERMINFO\fP is defined), |
(if it exists), or (finally) anywhere in the system's file tree of |
or in the user's \fI$HOME/.terminfo\fP database |
|
(if it exists), |
|
or (finally) anywhere in the system's file tree of |
compiled entries. |
compiled entries. |
.PP |
.PP |
The error messages from this \fBtic\fR have the same format as GNU C |
The error messages from this \fBtic\fP have the same format as GNU C |
error messages, and can be parsed by GNU Emacs's compile facility. |
error messages, and can be parsed by GNU Emacs's compile facility. |
.PP |
.PP |
The |
Aside from \fB\-c\fP and \fB\-v\fP, options are not portable: |
\fB-C\fR, |
.bP |
\fB-G\fR, |
Most of tic's options |
\fB-I\fR, |
are not supported by SVr4 \fBtic\fP: |
\fB-N\fR, |
.sp |
\fB-R\fR, |
.RS |
\fB-T\fR, |
\fB\-0\fP |
\fB-V\fR, |
\fB\-1\fP |
\fB-a\fR, |
\fB\-C\fP |
\fB-e\fR, |
\fB\-G\fP |
\fB-f\fR, |
\fB\-I\fP |
\fB-g\fR, |
\fB\-N\fP |
\fB-o\fR, |
\fB\-R\fP |
\fB-r\fR, |
\fB\-T\fP |
\fB-s\fR, |
\fB\-V\fP |
\fB-t\fR and |
\fB\-a\fP |
\fB-x\fR |
\fB\-e\fP |
options |
\fB\-f\fP |
are not supported under SVr4. |
\fB\-g\fP |
The SVr4 \fB-c\fR mode does not report bad use links. |
\fB\-o\fP |
|
\fB\-r\fP |
|
\fB\-s\fP |
|
\fB\-t\fP |
|
\fB\-x\fP |
|
.RE |
|
.bP |
|
The NetBSD \fBtic\fP supports a few of the ncurses options |
|
.sp |
|
.RS |
|
\fB\-a\fP |
|
\fB\-o\fP |
|
\fB\-x\fP |
|
.RE |
|
.IP |
|
and adds \fB\-S\fP |
|
(a feature which does the same thing |
|
as infocmp's \fB\-e\fP and \fB\-E\fP options). |
.PP |
.PP |
|
The SVr4 \fB\-c\fP mode does not report bad \*(``use=\*('' links. |
|
.PP |
System V does not compile entries to or read entries from your |
System V does not compile entries to or read entries from your |
\fI$HOME/.terminfo\fR directory unless TERMINFO is explicitly set to it. |
\fI$HOME/.terminfo\fP database unless TERMINFO is explicitly set to it. |
.SH FILES |
.SH FILES |
.TP 5 |
.TP 5 |
\fB\*d/?/*\fR |
\fB\*d/?/*\fP |
Compiled terminal description database. |
Compiled terminal description database. |
.SH SEE ALSO |
.SH SEE ALSO |
\fBinfocmp\fR(1), |
\fBcaptoinfo\fP(1), |
\fBcaptoinfo\fR(1), |
\fBinfocmp\fP(1), |
\fBinfotocap\fR(1), |
\fBinfotocap\fP(1), |
\fBcurses\fR(3), |
\fBtoe\fP(1), |
\fBterminfo\fR(\*n). |
\fBcurses\fP(3), |
|
\fBterm\fP(\*n). |
|
\fBterminfo\fP(\*n). |
|
\fBuser_caps\fP(\*n). |
.PP |
.PP |
This describes \fBncurses\fR |
This describes \fBncurses\fP |
version 5.7. |
version 6.4 (patch 20230826). |
.\"# |
.SH AUTHOR |
.\"# The following sets edit modes for GNU EMACS |
Eric S. Raymond <esr@snark.thyrsus.com> |
.\"# Local Variables: |
and |
.\"# mode:nroff |
.br |
.\"# fill-column:79 |
Thomas E. Dickey <dickey@invisible-island.net> |
.\"# End: |
|