X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fterm.5.html;h=7afb2b08638d7fad162b3ad56f92d47b9f7f79e0;hp=394d0f7c4da5108e965c89d0c1f45eed8c6a9df7;hb=302a066a01e4de40f08b397e87ca0e97f20870a7;hpb=46722468f47c2b77b3987729b4bcf2321cccfd01 diff --git a/doc/html/man/term.5.html b/doc/html/man/term.5.html index 394d0f7c..7afb2b08 100644 --- a/doc/html/man/term.5.html +++ b/doc/html/man/term.5.html @@ -1,7 +1,6 @@ - +
-- +term(5) term(5) --
+ + + +
term - format of compiled term file. --
+
term --
- Compiled terminfo descriptions are placed under the direc- - tory /usr/share/terminfo. In order to avoid a linear - search of a huge UNIX system directory, a two-level scheme - is used: /usr/share/terminfo/c/name where name is the name - of the terminal, and c is the first character of name. - Thus, act4 can be found in the file /usr/share/ter- - minfo/a/act4. Synonyms for the same terminal are imple- - mented by multiple links to the same compiled file. +
+
+ Compiled terminfo descriptions are placed under the direc- + tory /usr/share/terminfo. Two configurations are sup- + ported (when building the ncurses libraries): + + directory tree + A two-level scheme is used to avoid a linear search + of a huge UNIX system directory: /usr/share/ter- + minfo/c/name where name is the name of the terminal, + and c is the first character of name. Thus, act4 can + be found in the file /usr/share/terminfo/a/act4. + Synonyms for the same terminal are implemented by + multiple links to the same compiled file. + + hashed database + Using Berkeley database, two types of records are + stored: the terminfo data in the same format as + stored in a directory tree with the terminfo's pri- + mary name as a key, and records containing only + aliases pointing to the primary name. + + If built to write hashed databases, ncurses can still + read terminfo databases organized as a directory + tree, but cannot write entries into the directory + tree. It can write (or rewrite) entries in the + hashed database. + + ncurses distinguishes the two cases in the TERMINFO + and TERMINFO_DIRS environment variable by assuming a + directory tree for entries that correspond to an + existing directory, and hashed database otherwise. + + +
The format has been chosen so that it will be the same on all hardware. An 8 or more bit byte is assumed, but no assumptions about byte ordering or sign extension are made. - The compiled file is created with the tic program, and - read by the routine setupterm. The file is divided into - six parts: the header, terminal names, boolean flags, num- - bers, strings, and string table. + The compiled file is created with the tic program, and + read by the routine setupterm(3x). The file is divided + into six parts: the header, terminal names, boolean flags, + numbers, strings, and string table. The header section begins the file. This section contains six short integers in the format described below. These - integers are (1) the magic number (octal 0432); (2) the - size, in bytes, of the names section; (3) the number of - bytes in the boolean section; (4) the number of short - integers in the numbers section; (5) the number of offsets - (short integers) in the strings section; (6) the size, in - bytes, of the string table. - - Short integers are stored in two 8-bit bytes. The first - byte contains the least significant 8 bits of the value, - and the second byte contains the most significant 8 bits. - (Thus, the value represented is 256*second+first.) The + integers are + + (1) the magic number (octal 0432); + + (2) the size, in bytes, of the names section; + + (3) the number of bytes in the boolean section; + + (4) the number of short integers in the numbers sec- + tion; + + (5) the number of offsets (short integers) in the + strings section; + + (6) the size, in bytes, of the string table. + + Short integers are stored in two 8-bit bytes. The first + byte contains the least significant 8 bits of the value, + and the second byte contains the most significant 8 bits. + (Thus, the value represented is 256*second+first.) The value -1 is represented by the two bytes 0377, 0377; other - negative values are illegal. This value generally means - that the corresponding capability is missing from this - terminal. Note that this format corresponds to the hard- + negative values are illegal. This value generally means + that the corresponding capability is missing from this + terminal. Note that this format corresponds to the hard- ware of the VAX and PDP-11 (that is, little-endian machines). Machines where this does not correspond to the - hardware must read the integers as two bytes and compute + hardware must read the integers as two bytes and compute the little-endian value. - The terminal names section comes next. It contains the - first line of the terminfo description, listing the vari- - ous names for the terminal, separated by the `|' charac- - ter. The section is terminated with an ASCII NUL charac- + The terminal names section comes next. It contains the + first line of the terminfo description, listing the vari- + ous names for the terminal, separated by the `|' charac- + ter. The section is terminated with an ASCII NUL charac- ter. - The boolean flags have one byte for each flag. This byte - is either 0 or 1 as the flag is present or absent. The + The boolean flags have one byte for each flag. This byte + is either 0 or 1 as the flag is present or absent. The capabilities are in the same order as the file <term.h>. Between the boolean section and the number section, a null - byte will be inserted, if necessary, to ensure that the - number section begins on an even byte (this is a relic of - the PDP-11's word-addressed architecture, originally - designed in to avoid IOT traps induced by addressing a - word on an odd byte boundary). All short integers are + byte will be inserted, if necessary, to ensure that the + number section begins on an even byte (this is a relic of + the PDP-11's word-addressed architecture, originally + designed in to avoid IOT traps induced by addressing a + word on an odd byte boundary). All short integers are aligned on a short word boundary. The numbers section is similar to the flags section. Each - capability takes up two bytes, and is stored as a little- + capability takes up two bytes, and is stored as a little- endian short integer. If the value represented is -1, the capability is taken to be missing. - The strings section is also similar. Each capability is - stored as a short integer, in the format above. A value - of -1 means the capability is missing. Otherwise, the - value is taken as an offset from the beginning of the + The strings section is also similar. Each capability is + stored as a short integer, in the format above. A value + of -1 means the capability is missing. Otherwise, the + value is taken as an offset from the beginning of the string table. Special characters in ^X or \c notation are - stored in their interpreted form, not the printing repre- + stored in their interpreted form, not the printing repre- sentation. Padding information $<nn> and parameter infor- mation %x are stored intact in uninterpreted form. - The final section is the string table. It contains all + The final section is the string table. It contains all the values of string capabilities referenced in the string section. Each string is null terminated. - Note that it is possible for setupterm to expect a differ- + +
+ The previous section describes the conventional terminfo + binary format. With some minor variations of the offsets + (see PORTABILITY), the same binary format is used in all + modern UNIX systems. Each system uses a predefined set of + boolean, number or string capabilities. + + The ncurses libraries and applications support extended + terminfo binary format, allowing users to define capabili- + ties which are loaded at runtime. This extension is made + possible by using the fact that the other implementations + stop reading the terminfo data when they have reached the + end of the size given in the header. ncurses checks the + size, and if it exceeds that due to the predefined data, + continues to parse according to its own scheme. + + First, it reads the extended header (5 short integers): + + (1) count of extended boolean capabilities + + (2) count of extended numeric capabilities + + (3) count of extended string capabilities + + (4) size of the extended string table in bytes. + + (5) last offset of the extended string table in + bytes. + + Using the counts and sizes, ncurses allocates arrays and + reads data for the extended capabilities in the same order + as the header information. + + The extended string table contains values for string capa- + bilities. After the end of these values, it contains the + names for each of the extended capabilities in order, + e.g., booleans, then numbers and finally strings. + + +
+ Note that it is possible for setupterm to expect a differ- ent set of capabilities than are actually present in the file. Either the database may have been updated since - setupterm has been recompiled (resulting in extra unrecog- + setupterm has been recompiled (resulting in extra unrecog- nized entries in the file) or the program may have been recompiled more recently than the database was updated - (resulting in missing entries). The routine setupterm + (resulting in missing entries). The routine setupterm must be prepared for both possibilities - this is why the numbers and sizes are included. Also, new capabilities must always be added at the end of the lists of boolean, @@ -153,6 +230,8 @@ Curses extensions. See terminfo(5) for detailed discus- sion of terminfo source compatibility issues. + +
As an example, here is a hex dump of the description for the Lear-Siegler ADM-3, a popular though rather stupid early terminal: @@ -188,35 +267,50 @@ 0150 00 08 00 0c 00 0b 00 0a 00 ........ . + +
Some limitations: total compiled entries cannot exceed 4096 bytes. The name field cannot exceed 128 bytes. --
+
/usr/share/terminfo/*/* compiled terminal capability data base --
+
curses(3x), terminfo(5). +
+ Thomas E. Dickey + extended terminfo format for ncurses 5.0 + hashed database support for ncurses 5.6 + Eric S. Raymond - - - - - + term(5)-