5c3a63fa9cbd6afcd81e14d59b01a3122a0429e9
[ncurses.git] / man / tic.1m
1 .\"***************************************************************************
2 .\" Copyright (c) 1998-2012,2013 Free Software Foundation, Inc.              *
3 .\"                                                                          *
4 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
5 .\" copy of this software and associated documentation files (the            *
6 .\" "Software"), to deal in the Software without restriction, including      *
7 .\" without limitation the rights to use, copy, modify, merge, publish,      *
8 .\" distribute, distribute with modifications, sublicense, and/or sell       *
9 .\" copies of the Software, and to permit persons to whom the Software is    *
10 .\" furnished to do so, subject to the following conditions:                 *
11 .\"                                                                          *
12 .\" The above copyright notice and this permission notice shall be included  *
13 .\" in all copies or substantial portions of the Software.                   *
14 .\"                                                                          *
15 .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
16 .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
17 .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
18 .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
19 .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
20 .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
21 .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
22 .\"                                                                          *
23 .\" Except as contained in this notice, the name(s) of the above copyright   *
24 .\" holders shall not be used in advertising or otherwise to promote the     *
25 .\" sale, use or other dealings in this Software without prior written       *
26 .\" authorization.                                                           *
27 .\"***************************************************************************
28 .\"
29 .\" $Id: tic.1m,v 1.58 2013/07/20 19:31:25 tom Exp $
30 .TH @TIC@ 1M ""
31 .ie \n(.g .ds `` \(lq
32 .el       .ds `` ``
33 .ie \n(.g .ds '' \(rq
34 .el       .ds '' ''
35 .ds n 5
36 .ds d @TERMINFO@
37 .de bP
38 .IP \(bu 4
39 ..
40 .SH NAME
41 \fB@TIC@\fR \- the \fIterminfo\fR entry-description compiler
42 .SH SYNOPSIS
43 \fB@TIC@\fR
44 [\fB\-\
45 0\
46 1\
47 C\
48 D\
49 G\
50 I\
51 K\
52 L\
53 N\
54 T\
55 U\
56 V\
57 a\
58 c\
59 f\
60 g\
61 r\
62 s\
63 t\
64 x\
65 \fR]
66 [\fB\-e\fR \fInames\fR]
67 [\fB\-o\fR \fIdir\fR]
68 [\fB\-R\fR \fIsubset\fR]
69 [\fB\-v\fR[\fIn\fR]]
70 [\fB\-w\fR[\fIn\fR]]
71 \fIfile\fR
72 .br
73 .SH DESCRIPTION
74 The \fB@TIC@\fR command translates a \fBterminfo\fR file from source
75 format into compiled format.
76 The compiled format is necessary for use with
77 the library routines in \fBncurses\fR(3X).
78 .PP
79 As described in \fBterm\fR(\*n), the database may be either a directory
80 tree (one file per terminal entry) or a hashed database (one record per entry).
81 The \fB@TIC@\fR command writes only one type of entry,
82 depending on how it was built:
83 .bP
84 For directory trees, the top-level directory, e.g., /usr/share/terminfo,
85 specifies the location of the database.
86 .bP
87 For hashed databases, a filename is needed.
88 If the given file is not found by that name,
89 but can be found by adding the suffix ".db",
90 then that is used.
91 .IP
92 The default name for the hashed database is the same as the
93 default directory name (only adding a ".db" suffix).
94 .PP
95 In either case (directory or hashed database),
96 \fB@TIC@\fP will create the container if it does not exist.
97 For a directory, this would be the "terminfo" leaf,
98 versus a "terminfo.db" file.
99 .PP
100 The results are normally placed in the system terminfo database \fB\*d\fR.
101 The compiled terminal description can be placed
102 in a different terminfo database.
103 There are two ways to achieve this:
104 .bP
105 First, you may override the system default either by
106 using the \fB\-o\fP option,
107 or by setting the variable \fBTERMINFO\fR
108 in your shell environment to a valid database location.
109 .bP
110 Secondly, if \fB@TIC@\fR cannot write in \fI\*d\fR
111 or the location specified using your TERMINFO variable,
112 it looks for the directory \fI$HOME/.terminfo\fR
113 (or hashed database \fI$HOME/.terminfo.db)\fR;
114 if that location exists, the entry is placed there.
115 .PP
116 Libraries that read terminfo entries are expected to check in succession
117 .bP
118 a location specified with the TERMINFO environment variable,
119 .bP
120 \fI$HOME/.terminfo\fR,
121 .bP
122 directories listed in the TERMINFO_DIRS environment variable,
123 .bP
124 a compiled-in list of directories (@TERMINFO_DIRS@), and
125 .bP
126 the system terminfo database (\fI\*d\fR).
127 .SS OPTIONS
128 .TP
129 \fB\-0\fR
130 restricts the output to a single line
131 .TP
132 \fB\-1\fR
133 restricts the output to a single column
134 .TP
135 \fB\-a\fR
136 tells \fB@TIC@\fP to retain commented-out capabilities rather than discarding
137 them.
138 Capabilities are commented by prefixing them with a period.
139 This sets the \fB\-x\fR option, because it treats the commented-out
140 entries as user-defined names.
141 If the source is termcap, accept the 2-character names required by version 6.
142 Otherwise these are ignored.
143 .TP
144 \fB\-C\fR
145 Force source translation to termcap format.
146 Note: this differs from the \fB\-C\fR
147 option of \fB@INFOCMP@\fR(1M) in that it does not merely translate capability
148 names, but also translates terminfo strings to termcap format.
149 Capabilities
150 that are not translatable are left in the entry under their terminfo names
151 but commented out with two preceding dots.
152 The actual format used incorporates some improvements for escaped characters
153 from terminfo format.
154 For a stricter BSD-compatible translation, add the \fB\-K\fR option.
155 .TP
156 \fB\-c\fR
157 tells \fB@TIC@\fP to only check \fIfile\fR for errors, including syntax problems and
158 bad use links.
159 If you specify \fB\-C\fR (\fB\-I\fR) with this option, the code
160 will print warnings about entries which, after use resolution, are more than
161 1023 (4096) bytes long.
162 Due to a fixed buffer length in older termcap libraries,
163 as well as buggy checking for the buffer length
164 (and a documented limit in terminfo),
165 these entries may cause core
166 dumps with other implementations.
167 .TP
168 \fB\-D\fR
169 tells \fB@TIC@\fP to print the database locations that it knows about, and exit.
170 The first location shown is the one to which it would write compiled
171 terminal descriptions.
172 If \fB@TIC@\fP is not able to find a writable database location
173 according to the rules summarized above,
174 it will print a diagnostic and exit with an error rather than
175 printing a list of database locations.
176 .TP
177 \fB\-e \fR\fInames\fR
178 Limit writes and translations to the following comma-separated list of
179 terminals.
180 If any name or alias of a terminal matches one of the names in
181 the list, the entry will be written or translated as normal.
182 Otherwise no output will be generated for it.
183 The option value is interpreted as a file containing the list if it
184 contains a '/'.
185 (Note: depending on how tic was compiled, this option may require \fB\-I\fR or \fB\-C\fR.)
186 .TP
187 \fB\-f\fR
188 Display complex terminfo strings which contain if/then/else/endif expressions
189 indented for readability.
190 .TP
191 \fB\-G\fR
192 Display constant literals in decimal form
193 rather than their character equivalents.
194 .TP
195 \fB\-g\fR
196 Display constant character literals in quoted form
197 rather than their decimal equivalents.
198 .TP
199 \fB\-I\fR
200 Force source translation to terminfo format.
201 .TP
202 \fB\-K\fR
203 Suppress some longstanding ncurses extensions to termcap format,
204 e.g., "\\s" for space.
205 .TP
206 \fB\-L\fR
207 Force source translation to terminfo format
208 using the long C variable names listed in <\fBterm.h\fR>
209 .TP
210 \fB\-N\fR
211 Disable smart defaults.
212 Normally, when translating from termcap to terminfo, the compiler makes
213 a number of assumptions about the defaults of string capabilities
214 \fBreset1_string\fR, \fBcarriage_return\fR, \fBcursor_left\fR,
215 \fBcursor_down\fR, \fBscroll_forward\fR, \fBtab\fR, \fBnewline\fR,
216 \fBkey_backspace\fR, \fBkey_left\fR, and \fBkey_down\fR, then attempts
217 to use obsolete termcap capabilities to deduce correct values.
218 It also
219 normally suppresses output of obsolete termcap capabilities such as \fBbs\fR.
220 This option forces a more literal translation that also preserves the
221 obsolete capabilities.
222 .TP
223 \fB\-o\fR\fIdir\fR
224 Write compiled entries to given database location.
225 Overrides the TERMINFO environment variable.
226 .TP
227 \fB\-R\fR\fIsubset\fR
228 Restrict output to a given subset.
229 This option is for use with archaic
230 versions of terminfo like those on SVr1, Ultrix, or HP/UX that do not support
231 the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX 3.x
232 that have their own extensions incompatible with SVr4/XSI.
233 Available subsets
234 are "SVr1", "Ultrix", "HP", "BSD" and "AIX"; see \fBterminfo\fR(\*n) for details.
235 .TP
236 \fB\-r\fR
237 Force entry resolution (so there are no remaining tc capabilities) even
238 when doing translation to termcap format.
239 This may be needed if you are
240 preparing a termcap file for a termcap library (such as GNU termcap through
241 version 1.3 or BSD termcap through 4.3BSD) that does not handle multiple
242 tc capabilities per entry.
243 .TP
244 \fB\-s\fR
245 Summarize the compile by showing the database location into which entries
246 are written, and the number of entries which are compiled.
247 .TP
248 \fB\-T\fR
249 eliminates size-restrictions on the generated text.
250 This is mainly useful for testing and analysis, since the compiled
251 descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
252 .TP
253 \fB\-t\fR
254 tells \fB@TIC@\fP to discard commented-out capabilities.
255 Normally when translating from terminfo to termcap,
256 untranslatable capabilities are commented-out.
257 .TP 5
258 \fB\-U\fR
259 tells \fB@TIC@\fP to not post-process the data after parsing the source file.
260 Normally, it infers data which is commonly missing in older terminfo data,
261 or in termcaps.
262 .TP
263 \fB\-V\fR
264 reports the version of ncurses which was used in this program, and exits.
265 .TP
266 \fB\-v\fR\fIn\fR
267 specifies that (verbose) output be written to standard error trace
268 information showing \fB@TIC@\fR's progress.
269 The optional parameter \fIn\fR is a number from 1 to 10, inclusive,
270 indicating the desired level of detail of information.
271 If \fIn\fR is omitted, the default level is 1.
272 If \fIn\fR is specified and greater than 1, the level of
273 detail is increased.
274 .RS
275 .PP
276 The debug flag levels are as follows:
277 .TP
278 1
279 Names of files created and linked
280 .TP
281 2
282 Information related to the \*(``use\*('' facility
283 .TP
284 3
285 Statistics from the hashing algorithm
286 .TP
287 5
288 String-table memory allocations
289 .TP
290 7
291 Entries into the string-table
292 .TP
293 8
294 List of tokens encountered by scanner
295 .TP
296 9
297 All values computed in construction of the hash table
298 .LP
299 If the debug level \fIn\fR is not given, it is taken to be one.
300 .RE
301 .TP
302 \fB\-w\fR\fIn\fR
303 specifies the width of the output.
304 The parameter is optional.
305 If it is omitted, it defaults to 60.
306 .TP
307 \fB\-x\fR
308 Treat unknown capabilities as user-defined.
309 That is, if you supply a capability name which \fB@TIC@\fP does not recognize,
310 it will infer its type (boolean, number or string) from the syntax and
311 make an extended table entry for that.
312 User-defined capability strings
313 whose name begins with \*(``k\*('' are treated as function keys.
314 .SS PARAMETERS
315 .TP
316 \fIfile\fR
317 contains one or more \fBterminfo\fR terminal descriptions in source
318 format [see \fBterminfo\fR(\*n)].
319 Each description in the file
320 describes the capabilities of a particular terminal.
321 .IP
322 If \fIfile\fR is \*(``-\*('', then the data is read from the standard input.
323 The \fIfile\fR parameter may also be the path of a character-device.
324 .SS PROCESSING
325 .PP
326 All but one of the capabilities recognized by \fB@TIC@\fR are documented
327 in \fBterminfo\fR(\*n).
328 The exception is the \fBuse\fR capability.
329 .PP
330 When a \fBuse\fR=\fIentry\fR\-\fIname\fR field is discovered in a
331 terminal entry currently being compiled, \fB@TIC@\fR reads in the binary
332 from \fB\*d\fR to complete the entry.
333 (Entries created from
334 \fIfile\fR will be used first.
335 \fB@TIC@\fR duplicates the capabilities in
336 \fIentry\fR\-\fIname\fR for the current entry, with the exception of
337 those capabilities that explicitly are defined in the current entry.
338 .PP
339 When an entry, e.g., \fBentry_name_1\fR, contains a
340 \fBuse=\fR\fIentry\fR_\fIname\fR_\fI2\fR field, any canceled
341 capabilities in \fIentry\fR_\fIname\fR_\fI2\fR must also appear in
342 \fBentry_name_1\fR before \fBuse=\fR for these capabilities to be
343 canceled in \fBentry_name_1\fR.
344 .PP
345 Total compiled entries cannot exceed 4096 bytes.
346 The name field cannot
347 exceed 512 bytes.
348 Terminal names exceeding the maximum alias length
349 (32 characters on systems with long filenames, 14 characters otherwise)
350 will be truncated to the maximum alias length and a warning message will be printed.
351 .SH COMPATIBILITY
352 There is some evidence that historic \fB@TIC@\fR implementations treated
353 description fields with no whitespace in them as additional aliases or
354 short names.
355 This \fB@TIC@\fR does not do that, but it does warn when
356 description fields may be treated that way and check them for dangerous
357 characters.
358 .SH EXTENSIONS
359 Unlike the SVr4 \fB@TIC@\fR command, this implementation can actually
360 compile termcap sources.
361 In fact, entries in terminfo and termcap syntax can
362 be mixed in a single source file.
363 See \fBterminfo\fR(\*n) for the list of
364 termcap names taken to be equivalent to terminfo names.
365 .PP
366 The SVr4 manual pages are not clear on the resolution rules for \fBuse\fR
367 capabilities.
368 This implementation of \fB@TIC@\fR will find \fBuse\fR targets anywhere
369 in the source file, or anywhere in the file tree rooted at \fBTERMINFO\fR (if
370 \fBTERMINFO\fR is defined),
371 or in the user's \fI$HOME/.terminfo\fR database
372 (if it exists),
373 or (finally) anywhere in the system's file tree of
374 compiled entries.
375 .PP
376 The error messages from this \fB@TIC@\fR have the same format as GNU C
377 error messages, and can be parsed by GNU Emacs's compile facility.
378 .PP
379 The
380 \fB\-0\fR,
381 \fB\-1\fR,
382 \fB\-C\fR,
383 \fB\-G\fR,
384 \fB\-I\fR,
385 \fB\-N\fR,
386 \fB\-R\fR,
387 \fB\-T\fR,
388 \fB\-V\fR,
389 \fB\-a\fR,
390 \fB\-e\fR,
391 \fB\-f\fR,
392 \fB\-g\fR,
393 \fB\-o\fR,
394 \fB\-r\fR,
395 \fB\-s\fR,
396 \fB\-t\fR and
397 \fB\-x\fR
398 options
399 are not supported under SVr4.
400 The SVr4 \fB\-c\fR mode does not report bad use links.
401 .PP
402 System V does not compile entries to or read entries from your
403 \fI$HOME/.terminfo\fR database unless TERMINFO is explicitly set to it.
404 .SH FILES
405 .TP 5
406 \fB\*d/?/*\fR
407 Compiled terminal description database.
408 .SH SEE ALSO
409 \fB@INFOCMP@\fR(1M),
410 \fB@CAPTOINFO@\fR(1M),
411 \fB@INFOTOCAP@\fR(1M),
412 \fB@TOE@\fR(1M),
413 \fBcurses\fR(3X),
414 \fBterm\fR(\*n).
415 \fBterminfo\fR(\*n).
416 .PP
417 This describes \fBncurses\fR
418 version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).
419 .SH AUTHOR
420 Eric S. Raymond <esr@snark.thyrsus.com>
421 and
422 .br
423 Thomas E. Dickey <dickey@invisible-island.net>