]> ncurses.scripts.mit.edu Git - ncurses.git/blob - man/infocmp.1m
ncurses 6.5 - patch 20240511
[ncurses.git] / man / infocmp.1m
1 '\" t
2 .\"***************************************************************************
3 .\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
4 .\" Copyright 1998-2017,2018 Free Software Foundation, Inc.                  *
5 .\"                                                                          *
6 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
7 .\" copy of this software and associated documentation files (the            *
8 .\" "Software"), to deal in the Software without restriction, including      *
9 .\" without limitation the rights to use, copy, modify, merge, publish,      *
10 .\" distribute, distribute with modifications, sublicense, and/or sell       *
11 .\" copies of the Software, and to permit persons to whom the Software is    *
12 .\" furnished to do so, subject to the following conditions:                 *
13 .\"                                                                          *
14 .\" The above copyright notice and this permission notice shall be included  *
15 .\" in all copies or substantial portions of the Software.                   *
16 .\"                                                                          *
17 .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
18 .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
19 .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
20 .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
21 .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
22 .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
23 .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
24 .\"                                                                          *
25 .\" Except as contained in this notice, the name(s) of the above copyright   *
26 .\" holders shall not be used in advertising or otherwise to promote the     *
27 .\" sale, use or other dealings in this Software without prior written       *
28 .\" authorization.                                                           *
29 .\"***************************************************************************
30 .\"
31 .\" $Id: infocmp.1m,v 1.110 2024/05/11 20:39:53 tom Exp $
32 .TH @INFOCMP@ 1M 2024-05-11 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "User commands"
33 .ie \n(.g \{\
34 .ds `` \(lq
35 .ds '' \(rq
36 .ds '  \(aq
37 .\}
38 .el \{\
39 .ie t .ds `` ``
40 .el   .ds `` ""
41 .ie t .ds '' ''
42 .el   .ds '' ""
43 .ie t .ds '  \(aq
44 .el   .ds '  '
45 .\}
46 .
47 .de bP
48 .ie n  .IP \(bu 4
49 .el    .IP \(bu 2
50 ..
51 .
52 .SH NAME
53 \fB@INFOCMP@\fP \-
54 compare or print out \fIterminfo\fP descriptions
55 .SH SYNOPSIS
56 \fB@INFOCMP@\fP [\fB\-\
57 1\
58 c\
59 C\
60 d\
61 D\
62 e\
63 E\
64 F\
65 g\
66 G\
67 i\
68 I\
69 K\
70 l\
71 L\
72 n\
73 p\
74 q\
75 r\
76 t\
77 T\
78 u\
79 U\
80 V\
81 W\
82 x\
83 \fP]
84       [\fB\-v\fR \fIn\fR] [\fB\-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB\-Q\fR \fIn\fR] [\fB\-R \fBsubset\fR]
85       [\fB\-w\fP\ \fIwidth\fP] [\fB\-A\fP\ \fIdirectory\fP] [\fB\-B\fP\ \fIdirectory\fP]
86       [\fIterminal-type\fP ...]
87 .SH DESCRIPTION
88 \fB@INFOCMP@\fP can be used to compare a binary \fBterminfo\fP entry with other
89 terminfo entries, rewrite a \fBterminfo\fP description to take advantage of the
90 \fBuse=\fP terminfo field, or print out a \fBterminfo\fP description from the
91 binary file (\fBterm\fP) in a variety of formats.
92 In all cases, the Boolean
93 fields will be printed first, followed by the numeric fields, followed by the
94 string fields.
95 .SS "Default Options"
96 If no options are specified and zero or one \fIterminal-types\fP are
97 specified,
98 the
99 \fB\-I\fP option will be assumed.
100 If more than one \fIterminal-type\fP is specified,
101 the \fB\-d\fP option will be assumed.
102 .SS "Comparison Options [\-d] [\-c] [\-n]"
103 \fB@INFOCMP@\fP compares the \fBterminfo\fP description of the first terminal
104 \fIterminal-type\fP with each of the descriptions given by the entries
105 for the other terminal's \fIterminal-types\fP.
106 If a capability is defined for only one of the
107 terminals, the value returned depends on the type of the capability:
108 .bP
109 \fBF\fP for missing Boolean variables
110 .bP
111 \fBNULL\fP for missing integer or string variables
112 .PP
113 Use the \fB\-q\fP option to show the distinction between
114 \fIabsent\fP and \fIcancelled\fP capabilities.
115 .PP
116 These options produce a list which you can use to compare two
117 or more terminal descriptions:
118 .TP 5
119 \fB\-d\fP
120 produces a list of each capability that is \fIdifferent\fP
121 between two entries.
122 Each item in the list shows \*(``:\*('' after the capability name,
123 followed by the capability values, separated by a comma.
124 .TP
125 \fB\-c\fP
126 produces a list of each capability that is \fIcommon\fP between
127 two or more entries.
128 Missing capabilities are ignored.
129 Each item in the list shows \*(``=\*('' after the capability name,
130 followed by the capability value.
131 .IP
132 The \fB\-u\fP option provides a related output,
133 showing the first terminal description rewritten to use the second
134 as a building block via the \*(``use=\*('' clause.
135 .TP
136 \fB\-n\fP
137 produces a list of each capability that is in \fInone\fP of the given entries.
138 Each item in the list shows \*(``!\*('' before the capability name.
139 .IP
140 Normally only the conventional capabilities are shown.
141 Use the \fB\-x\fP option to add the BSD-compatibility
142 capabilities (names prefixed with \*(``OT\*('').
143 .IP
144 If no \fIterminal-types\fP are given,
145 \fB@INFOCMP@\fP uses the environment variable \fITERM\fP
146 for each of the \fIterminal-types\fP.
147 .SS "Source Listing Options [\-I] [\-L] [\-C] [\-r]"
148 The \fB\-I\fP, \fB\-L\fP, and \fB\-C\fP options will produce
149 a source listing for each terminal named.
150 .PP
151 .TS
152 center;
153 Lb L.
154 \-I     use \fIterminfo\fP capability codes
155 \-L     use \*(``long\*('' capability names
156 \-C     use \fItermcap\fP capability codes
157 \-r     with \fB\-C\fP, include nonstandard capabilities
158 \-K     with \fB\-C\fP, improve BSD compatibility
159 .TE
160 .PP
161 If no \fIterminal-types\fP are given,
162 the environment variable \fITERM\fP will be used for the terminal name.
163 .PP
164 The source produced by the \fB\-C\fP option may be used directly as a
165 \fBtermcap\fP entry, but not all parameterized strings can be changed to
166 the \fBtermcap\fP format.
167 \fB@INFOCMP@\fP will attempt to convert most of the
168 parameterized information, and anything not converted will be plainly marked in
169 the output and commented out.
170 These should be edited by hand.
171 .PP
172 For best results when converting to \fBtermcap\fP format,
173 you should use both \fB\-C\fP and \fB\-r\fP.
174 Normally a termcap description is limited to 1023 bytes.
175 \fB@INFOCMP@\fP trims away less essential parts to make it fit.
176 If you are converting to one of the (rare) termcap implementations
177 which accept an unlimited size of termcap,
178 you may want to add the \fB\-T\fP option.
179 More often however, you must help the termcap implementation,
180 and trim excess whitespace (use the \fB\-0\fP option for that).
181 .PP
182 All padding information for strings will be collected together and placed
183 at the beginning of the string where \fBtermcap\fP expects it.
184 Mandatory
185 padding (padding information with a trailing \*(``/\*('') will become optional.
186 .PP
187 All \fBtermcap\fP variables no longer supported by \fBterminfo\fP, but which
188 are derivable from other \fBterminfo\fP variables, will be output.
189 Not all
190 \fBterminfo\fP capabilities will be translated; only those variables which were
191 part of \fBtermcap\fP will normally be output.
192 Specifying the \fB\-r\fP option
193 will take off this restriction, allowing all capabilities to be output in
194 \fItermcap\fP form.
195 Normally you would use both the \fB\-C\fP and \fB\-r\fP options.
196 The actual format used incorporates some improvements for escaped characters
197 from terminfo format.
198 For a stricter BSD-compatible translation, use the \fB\-K\fP option
199 rather than \fB\-C\fP.
200 .PP
201 Note that because padding is collected to the beginning of the capability, not
202 all capabilities are output.
203 Mandatory padding is not supported.
204 Because
205 \fBtermcap\fP strings are not as flexible, it is not always possible to convert
206 a \fBterminfo\fP string capability into an equivalent \fBtermcap\fP format.
207 A subsequent conversion of the \fBtermcap\fP file
208 back into \fBterminfo\fP format
209 will not necessarily reproduce the original \fBterminfo\fP source.
210 .PP
211 Some common \fBterminfo\fP parameter sequences, their \fBtermcap\fP
212 equivalents, and some terminal types which commonly have such sequences, are:
213 .PP
214 .TS
215 center;
216 Lf(BI) Lf(BI) L
217 Lb     Lb     L.
218 terminfo        termcap Terminal Types
219 _
220 .\" ansi-m cup (adm3a has other stuff in between, more like concept)
221 %p1%c   %.      ansi\-m
222 .\" ansi cub, vt100 cub
223 %p1%d   %d      ansi, vt100
224 .\" vt52 cup (via vt52-basic)
225 %p1%\*' \*'%+%c %+x     vt52
226 .\" ansi cup, vt100 cup
227 %i      %iq     ansi, vt100
228 .\" annarbor4080 cup
229 %p1%?%\*'x\*'%>%t%p1%\*'y\*'%+%;        %>xy    annarbor4080
230 .\" hpgeneric cup
231 %p2\fR\|.\|.\|.\|\fP%p1 %r      hpgeneric
232 .TE
233 .SS "Use= Option [\-u]"
234 The \fB\-u\fP option produces a \fBterminfo\fP source description of the first
235 terminal \fIterminal-type\fP which is relative to the sum of the
236 descriptions given by the entries for the other \fIterminal-types\fP.
237 It does this by
238 analyzing the differences between the first \fIterminal-types\fP and the
239 other \fIterminal-types\fP and producing a description with \fBuse=\fP
240 fields for the other terminals.
241 In this manner, it is possible to retrofit generic terminfo
242 entries into a terminal's description.
243 Or, if two similar terminals exist, but
244 were coded at different times or by different people so that each description
245 is a full description, using \fB@INFOCMP@\fP
246 will show what can be done to change
247 one description to be relative to the other.
248 .PP
249 A capability will be printed with an at-sign (@) if it no longer exists in the
250 first \fIterminal-type\fP,
251 but one of the other \fIterminal-type\fP entries contains a value for
252 it.
253 A capability's value will be printed if the value in the first
254 \fIterminal-type\fP is not found in any of the other \fIterminal-type\fP
255 entries,
256 or if the first of the other \fIterminal-type\fP entries that has this
257 capability gives a different value for the capability than that in the
258 first \fIterminal-type\fP.
259 .PP
260 The order of the other \fIterminal-type\fP entries is significant.
261 Since the
262 terminfo compiler \fB@TIC@\fP does a left-to-right scan of the capabilities,
263 specifying two \fBuse=\fP entries that contain differing entries for the same
264 capabilities will produce different results depending on the order that the
265 entries are given in.
266 \fB@INFOCMP@\fP will flag any such inconsistencies between
267 the other \fIterminal-type\fP entries as they are found.
268 .PP
269 Alternatively, specifying a capability \fIafter\fP a \fBuse=\fP entry that
270 contains that capability will cause the second specification to be ignored.
271 Using \fB@INFOCMP@\fP to recreate a description can be a useful check to make
272 sure that everything was specified correctly in the original source
273 description.
274 .PP
275 Another error that does not cause incorrect compiled files, but will slow down
276 the compilation time, is specifying extra \fBuse=\fP fields that are
277 superfluous.
278 \fB@INFOCMP@\fP will flag any other \fIterminal-type use=\fP fields that
279 were not needed.
280 .SS "Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR]"
281 Like other \fI\%ncurses\fP utilities,
282 \fB@INFOCMP@\fP looks for the terminal descriptions in several places.
283 You can use the \fI\%TERMINFO\fP and \fI\%TERMINFO_DIRS\fP environment
284 variables to override the compiled-in default list of places to search.
285 See \fBcurses\fP(3X), as well as
286 the \fIFetching Compiled Descriptions\fP section in \fBterminfo\fR(5).
287 .PP
288 You can also use the options \fB\-A\fP
289 and \fB\-B\fP to override the list of places to search
290 when comparing terminal descriptions:
291 .bP
292 The \fB\-A\fP option sets the location for the first \fIterminal-type\fP
293 .bP
294 The \fB\-B\fP option sets the location for the other
295 \fIterminal-types\fP.
296 .PP
297 Using these options, it is possible to
298 compare descriptions for a terminal with the same name located in two different
299 databases.
300 For instance,
301 you can use this feature for comparing descriptions for the same terminal
302 created by different people.
303 .SS "Other Options"
304 .TP 5
305 \fB\-0\fP
306 causes the fields to be printed on one line, without wrapping.
307 .TP 5
308 \fB\-1\fP
309 causes the fields to be printed out one to a line.
310 Otherwise,
311 the fields will be printed several to a line to a maximum width
312 of 60 characters.
313 .TP
314 \fB\-a\fP
315 tells \fB@INFOCMP@\fP to retain commented-out capabilities
316 rather than discarding them.
317 Capabilities are commented by prefixing them with a period.
318 .TP
319 \fB\-D\fP
320 tells \fB@INFOCMP@\fP to print the database locations that it knows about,
321 and exit.
322 .TP 5
323 \fB\-E\fP
324 Dump the capabilities of the given terminal as tables, needed in
325 the C initializer for a
326 TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fP).
327 This option is useful for preparing versions of the curses library hardwired
328 for a given terminal type.
329 The tables are all declared static, and are named according to the type
330 and the name of the corresponding terminal entry.
331 .sp
332 Before \fI\%ncurses\fP 5.0,
333 the split between the \fB\-e\fP and \fB\-E\fP options was not needed;
334 but support for extended names required making the arrays of terminal
335 capabilities separate from the TERMTYPE structure.
336 .TP 5
337 \fB\-e\fP
338 Dump the capabilities of the given terminal as a C initializer for a
339 TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fP).
340 This option is useful for preparing versions of the curses library hardwired
341 for a given terminal type.
342 .TP 5
343 \fB\-F\fP
344 compare terminfo files.
345 This assumes that two following arguments are filenames.
346 The files are searched for pairwise matches between
347 entries, with two entries considered to match if any of their names do.
348 The report printed to standard output lists entries with no matches in
349 the other file, and entries with more than one match.
350 For entries
351 with exactly one match it includes a difference report.
352 Normally,
353 to reduce the volume of the report, use references are
354 not resolved before looking for differences, but resolution can be forced
355 by also specifying \fB\-r\fP.
356 .TP 5
357 \fB\-f\fP
358 Display complex terminfo strings which contain if/then/else/endif expressions
359 indented for readability.
360 .TP 5
361 \fB\-G\fP
362 Display constant literals in decimal form
363 rather than their character equivalents.
364 .TP 5
365 \fB\-g\fP
366 Display constant character literals in quoted form
367 rather than their decimal equivalents.
368 .TP 5
369 \fB\-i\fP
370 Analyze the initialization (\fBis1\fP, \fBis2\fP, \fBis3\fP), and reset
371 (\fBrs1\fP, \fBrs2\fP, \fBrs3\fP), strings in the entry,
372 as well as those used for starting/stopping cursor-positioning mode
373 (\fBsmcup\fP, \fBrmcup\fP) as well as starting/stopping keymap mode
374 (\fBsmkx\fP, \fBrmkx\fP).
375 .IP
376 For each string, the
377 code tries to analyze it into actions in terms of the other capabilities in the
378 entry, certain X3.64/ISO 6429/ECMA\-48 capabilities, and certain DEC VT-series
379 private modes (the set of recognized special sequences has been selected for
380 completeness over the existing terminfo database).
381 Each report line consists
382 of the capability name, followed by a colon and space, followed by a printable
383 expansion of the capability string with sections matching recognized actions
384 translated into {}-bracketed descriptions.
385 .IP
386 Here is a list of the DEC/ANSI
387 special sequences recognized:
388 .PP
389 .TS
390 center;
391 L L.
392 Action  Meaning
393 _
394 RIS     full reset
395 SC      save cursor
396 RC      restore cursor
397 LL      home-down
398 RSR     reset scroll region
399 _
400 DECSTR  soft reset (VT320)
401 S7C1T   7-bit controls (VT220)
402 _
403 ISO DEC G0      enable DEC graphics for G0
404 ISO UK G0       enable UK chars for G0
405 ISO US G0       enable US chars for G0
406 ISO DEC G1      enable DEC graphics for G1
407 ISO UK G1       enable UK chars for G1
408 ISO US G1       enable US chars for G1
409 _
410 DECPAM  application keypad mode
411 DECPNM  normal keypad mode
412 DECANSI enter ANSI mode
413 _
414 ECMA[+\-]AM     keyboard action mode
415 ECMA[+\-]IRM    insert replace mode
416 ECMA[+\-]SRM    send receive mode
417 ECMA[+\-]LNM    linefeed mode
418 _
419 DEC[+\-]CKM     application cursor keys
420 DEC[+\-]ANM     set VT52 mode
421 DEC[+\-]COLM    132-column mode
422 DEC[+\-]SCLM    smooth scroll
423 DEC[+\-]SCNM    reverse video mode
424 DEC[+\-]OM      origin mode
425 DEC[+\-]AWM     wraparound mode
426 DEC[+\-]ARM     auto-repeat mode
427 .TE
428 .sp
429 It also recognizes a SGR action corresponding to ANSI/ISO 6429/ECMA Set
430 Graphics Rendition, with the values NORMAL, BOLD, UNDERLINE, BLINK, and
431 REVERSE.
432 All but NORMAL may be prefixed with
433 .RS
434 .bP
435 \*(``+\*('' (turn on) or
436 .bP
437 \*(``\-\*('' (turn off).
438 .RE
439 .IP
440 An SGR0 designates an empty highlight sequence (equivalent to {SGR:NORMAL}).
441 .TP 5
442 \fB\-l\fP
443 Set output format to terminfo.
444 .TP 5
445 \fB\-p\fP
446 Ignore padding specifications when comparing strings.
447 .TP 5
448 \fB\-Q\fP \fIn\fP
449 Rather than show source in terminfo (text) format,
450 print the compiled (binary) format in hexadecimal or base64 form,
451 depending on the option's value:
452 .RS 8
453 .TP 3
454 1
455 hexadecimal
456 .TP 3
457 2
458 base64
459 .TP 3
460 3
461 hexadecimal and base64
462 .RE
463 .IP
464 For example, this prints the compiled terminfo value as a string
465 which could be assigned to the \fI\%TERMINFO\fP environment variable:
466 .PP
467 .RS 9
468 .EX
469 @INFOCMP@ \-0 \-q \-Q2
470 .EE
471 .RE
472 .TP 5
473 \fB\-q\fP
474 This makes the output a little shorter:
475 .RS
476 .bP
477 Make the comparison listing shorter by omitting subheadings, and using
478 \*(``\-\*('' for absent capabilities, \*(``@\*(''
479 for canceled rather than \*(``NULL\*(''.
480 .bP
481 However, show differences between absent and cancelled capabilities.
482 .bP
483 Omit the \*(``Reconstructed from\*('' comment for source listings.
484 .RE
485 .TP 5
486 \fB\-R\fIsubset\fR
487 Restrict output to a given subset.
488 This option is for use with archaic
489 versions of terminfo like those on SVr1, Ultrix, or HP-UX that do not support
490 the full set of SVR4/XSI Curses terminfo; and variants such as AIX
491 that have their own extensions incompatible with SVr4/XSI.
492 .RS
493 .bP
494 Available terminfo
495 subsets are \*(``SVr1\*('', \*(``Ultrix\*('', \*(``HP\*('', and \*(``AIX\*('';
496 see \fBterminfo\fP(5) for details.
497 .bP
498 You can also choose the subset \*(``BSD\*('' which selects only capabilities
499 with termcap equivalents recognized by 4.4BSD.
500 .bP
501 If you select any other value for \fB\-R\fP,
502 it is the same as no subset, i.e., all capabilities are used.
503 .RE
504 .IP
505 A few options override the subset selected with \fB\-R\fP,
506 if they are processed later in the command parameters:
507 .RS
508 .TP 5
509 \fB\-C\fP
510 sets the \*(``BSD\*('' subset as a side-effect.
511 .TP 5
512 \fB\-I\fP
513 sets the subset to all capabilities.
514 .TP 5
515 \fB\-r\fP
516 sets the subset to all capabilities.
517 .RE
518 .TP
519 \fB\-s \fI[d|i|l|c]\fR
520 The \fB\-s\fP option sorts the fields within each type according to the argument
521 below:
522 .br
523 .RS 5
524 .TP 5
525 \fBd\fP
526 leave fields in the order that they are stored in the \fIterminfo\fP database.
527 .TP 5
528 \fBi\fP
529 sort by \fIterminfo\fP name.
530 .TP 5
531 \fBl\fP
532 sort by the long C variable name.
533 .TP 5
534 \fBc\fP
535 sort by the \fItermcap\fP name.
536 .RE
537 .IP
538 If the \fB\-s\fP option is not given, the fields printed out will be
539 sorted alphabetically by the \fBterminfo\fP name within each type,
540 except in the case of the \fB\-C\fP or the \fB\-L\fP options, which cause the
541 sorting to be done by the \fBtermcap\fP name or the long C variable
542 name, respectively.
543 .TP 5
544 \fB\-T\fP
545 eliminates size-restrictions on the generated text.
546 This is mainly useful for testing and analysis, since the compiled
547 descriptions are limited (e.g., 1023 for termcap, 4096 for terminfo).
548 .TP
549 \fB\-t\fP
550 tells \fB@TIC@\fP to discard commented-out capabilities.
551 Normally when translating from terminfo to termcap,
552 untranslatable capabilities are commented-out.
553 .TP 5
554 \fB\-U\fP
555 tells \fB@INFOCMP@\fP to not post-process the data
556 after parsing the source file.
557 This feature helps when comparing the actual contents of two source files,
558 since it excludes the inferences that \fB@INFOCMP@\fP makes to fill in missing
559 data.
560 .TP 5
561 \fB\-V\fP
562 reports the version of \fI\%ncurses\fP which was used in this program,
563 and exits.
564 .TP 5
565 \fB\-v\fP \fIn\fP
566 prints out tracing information on standard error as the program runs.
567 .IP
568 The optional parameter \fIn\fP is a number from 1 to 10, inclusive,
569 indicating the desired level of detail of information.
570 If \fI\%ncurses\fP is built without tracing support,
571 the optional parameter is ignored.
572 .TP
573 \fB\-W\fP
574 By itself, the \fB\-w\fP option will not force long strings to be wrapped.
575 Use the \fB\-W\fP option to do this.
576 .TP 5
577 \fB\-w\fP \fIwidth\fP
578 changes the output to \fIwidth\fP characters.
579 .TP
580 \fB\-x\fP
581 print information for user-defined capabilities (see \fBuser_caps\fP(5).
582 These are extensions to the terminfo repertoire which can be loaded
583 using the \fB\-x\fP option of \fB@TIC@\fP.
584 .SH FILES
585 .TP
586 .I @TERMINFO@
587 compiled terminal description database
588 .SH EXTENSIONS
589 The
590 \fB\-0\fP,
591 \fB\-1\fP,
592 \fB\-E\fP,
593 \fB\-F\fP,
594 \fB\-G\fP,
595 \fB\-Q\fP,
596 \fB\-R\fP,
597 \fB\-T\fP,
598 \fB\-V\fP,
599 \fB\-a\fP,
600 \fB\-e\fP,
601 \fB\-f\fP,
602 \fB\-g\fP,
603 \fB\-i\fP,
604 \fB\-l\fP,
605 \fB\-p\fP,
606 \fB\-q\fP and
607 \fB\-t\fP
608 options are not supported in SVr4 curses.
609 .PP
610 SVr4 infocmp does not distinguish between absent and cancelled capabilities.
611 Also, it shows missing integer capabilities as \fB\-1\fP
612 (the internal value used to represent missing integers).
613 This implementation shows those as \*(``NULL\*('',
614 for consistency with missing strings.
615 .PP
616 The \fB\-r\fP option's notion of \*(``termcap\*('' capabilities
617 is System V Release 4's.
618 Actual BSD curses versions will have a more restricted set.
619 To see only the
620 4.4BSD set, use \fB\-r\fP \fB\-RBSD\fP.
621 .SH PORTABILITY
622 X/Open Curses, Issue 7 (2009) provides a description of \fBinfocmp\fP.
623 It does not mention the options used for converting to termcap format.
624 .SH HISTORY
625 Although System V Release 2 provided a terminfo library,
626 it had no documented tool for decompiling the terminal descriptions.
627 Tony Hansen (AT&T) wrote the first \fBinfocmp\fP in early 1984,
628 for System V Release 3.
629 .PP
630 Eric Raymond used the AT&T documentation in 1995 to provide an equivalent
631 \fB@INFOCMP@\fP for \fI\%ncurses\fP.
632 In addition, he added a few new features such as:
633 .bP
634 the \fB\-e\fP option, to support \fIfallback\fP
635 (compiled-in) terminal descriptions
636 .bP
637 the \fB\-i\fP option, to help with analysis
638 .PP
639 Later, Thomas Dickey added the \fB\-x\fP (user-defined capabilities)
640 option, and the \fB\-E\fP option to support fallback entries with
641 user-defined capabilities.
642 .PP
643 For a complete list, see the \fIEXTENSIONS\fP section.
644 .PP
645 In 2010, Roy Marples provided an \fBinfocmp\fP program for NetBSD.
646 It is less capable than the SVr4 or \fI\%ncurses\fP versions
647 (e.g., it lacks the sorting options documented in X/Open),
648 but does include the \fB\-x\fP option adapted from \fI\%ncurses\fP.
649 .SH BUGS
650 The \fB\-F\fP option of \fB\%@INFOCMP@\fP(1M) should be a
651 \fB\%@TOE@\fP(1M) mode.
652 .SH AUTHORS
653 Eric S. Raymond <esr@snark.thyrsus.com>
654 and
655 .br
656 Thomas E. Dickey <dickey@invisible\-island.net>
657 .SH SEE ALSO
658 \fB\%@CAPTOINFO@\fP(1M),
659 \fB\%@INFOTOCAP@\fP(1M),
660 \fB\%@TIC@\fP(1M),
661 \fB\%@TOE@\fP(1M),
662 \fB\%curses\fP(3X),
663 \fB\%terminfo\fP(5),
664 \fB\%user_caps\fP(5)
665 .PP
666 https://invisible\-island.net/ncurses/tctest.html