TermCap

Content

Modelo de dados

Os bancos de dados do TermCap consistem em uma ou mais descrições de terminais.

Índices

Cada descrição deve conter o nome canônico do terminal. Também pode conter um ou mais aliases para o nome do terminal. O nome canônico ou aliases são as chaves pelas quais a biblioteca procura o banco de dados TermCap.

Valores de dados

A descrição contém um ou mais recursos, que têm nomes convencionais. Os recursos são digitados: booleano, numérico e string. A biblioteca TermCap não possui tipo predeterminado para cada nome de capacidade. Ele determina os tipos de cada capacidade pela sintaxe:

string capabilities have an "=" between the capability name and its value,numeric capabilities have a "#" between the capability name and its value, andboolean capabilities have no associated value (they are always true if specified).

Os aplicativos que usam o TermCap esperam tipos específicos para os recursos comumente usados ​​e obtendo os valores dos recursos do banco de dados TermCap usando chamadas da biblioteca que retornam com sucesso somente quando o conteúdo do banco de dados corresponde ao tipo assumido.

Hierarquia

As descrições do TermCap podem ser construídas, incluindo o conteúdo de uma descrição em outra, suprimindo recursos da descrição incluída ou substituindo ou adicionando recursos. Independentemente do modelo de armazenamento usado, a Biblioteca TermCap constrói a descrição do terminal a partir da descrição solicitada, incluindo, suprimindo ou substituindo no momento da solicitação.

Modelo de armazenamento

Os dados do TermCap são armazenados como texto, simplificando a modificação. O texto pode ser recuperado pela biblioteca TermCap a partir de arquivos ou variáveis ​​de ambiente.

Variáveis ​​ambientais

A variável de ambiente de termo contém o nome do tipo de terminal.

A variável de ambiente TermCap pode conter um banco de dados TermCap. É mais frequentemente usado para armazenar uma única descrição de termos, definida por um emulador de terminal para fornecer as características do terminal ao shell e aos programas dependentes.

A variável de ambiente do TermPath é suportada pelas implementações mais recentes do TermCap e define um caminho de pesquisa para arquivos de TermCap.

Arquivo plano

A implementação original (e mais comum) da biblioteca TermCap recupera dados de um arquivo de texto plano. Pesquisar um arquivo de termos grandes, por exemplo, 500 kb, pode ser lento. Para ajudar no desempenho, um utilitário como reordenação é usado para colocar as entradas mais frequentemente usadas perto do início do arquivo.

Hashed Bathabase

4.4 Implementações baseadas no TermCap armazenam a descrição do terminal em um banco de dados de hash (por exemplo, algo como Berkeley DB versão 1.85). Esses armazenam dois tipos de registros: aliases que apontam para a entrada canônica e a própria entrada canônica. O texto da entrada do TermCap é armazenado literalmente.

Limitações e extensões

A implementação original do TermCap foi projetada para usar pouca memória:

the first name is two characters, to fit in 16 bitscapability names are two charactersdescriptions are limited to 1023 characters.only one termcap entry with its definitions can be included, and must be at the end.

As implementações mais recentes da interface TermCap geralmente não exigem o nome de dois caracteres no início da entrada.

Os nomes de capacidade ainda são dois caracteres em todas as implementações.

A função tgetent usada para ler a descrição do terminal usa um buffer cujo tamanho deve ser grande o suficiente para os dados e é considerado 1024 caracteres. As implementações mais recentes da interface do TermCap podem relaxar essa restrição, permitindo um ponteiro nulo no lugar do buffer fixo ou ocultando os dados que não se encaixariam, por exemplo, através da capacidade ZZ no NetBSD TermCap. A interface da biblioteca Terminfo também emula a interface do TermCap e na verdade não usa o buffer de tamanho fixo.

A emulação do TermCap pela Biblioteca Terminfo permite que várias outras entradas sejam incluídas sem restringir a posição. Algumas outras implementações mais recentes da Biblioteca TermCap também podem fornecer essa capacidade, embora não esteja bem documentada.

Recursos obsoletos

Uma capacidade especial, a capacidade "Hz", foi definida especificamente para apoiar o terminal Hazeltine 1500, que tinha a característica infeliz de usar o caractere ascii tilde ('~') como uma sequência de controle introdutor. [Discutir] para apoiar que Terminal, o código não apenas usou o banco de dados precisava saber sobre o uso da tilde para introduzir certas seqüências de controle, mas também precisava saber para substituir outro caractere imprimível por qualquer tildes no texto exibido, uma vez que uma tilde no texto seria Interpretado pelo terminal como o início de uma sequência de controle, resultando em texto e tela ausentes. Além disso, os marcadores de atributos (como início e final de sublinhamento) ocuparam espaço na tela. [Citação necessária] Comentários no código -fonte do banco de dados frequentemente se referiam a isso como "Hazeltine BrainDamage". Como o Hazeltine 1500 era um terminal amplamente utilizado no final da década de 1970, [citação necessária] era importante que as aplicações pudessem lidar com suas limitações.

Veja também

Computer terminalsCurses (programming library)TerminfoANSI escape sequences, attempts to unify the many sequences