Termcap
Termcap (terminal capability) est a la fois une bibliotheque logicielle et une base de donnees destinee aux systemes d'exploitation de type Unix qui permet aux programmes d'afficher leurs resultats en mode texte sur toutes sortes d'ecrans de terminaux semi-graphiques au moyen de commandes universelles. Elle simplifie enormement le processus de portage de ces programmes sur differentes plates-formes. La premiere version de termcap a ete ecrite par Bill Joy en 1978[1],[2] pour le systeme d'exploitation Unix Berkeley ; il a depuis ete porte sur la plupart des environnements Unix et assimiles. Joy aurait ete inspire en cela par l'architecture memoire de l'Incompatible Timesharing System[3].
Termcap a ete supplantee par la commande terminfo, adoptee par l'Open Group en 1996 pour la norme POSIX. Elle est maintenue dans Linux pour des raisons de portabilite d'anciens programmes : les editeurs de texte plein-ecran comme vi ou emacs utilisent termcap.
Une base de donnees de termcap contient les fonctionnalites d'affichage graphique de centaines de terminaux semi-graphiques. Grace a ces donnees, les programmes peuvent afficher des resultats ou des messages en mode texte plein-ecran independamment du type du terminal.
Parmi les caracteristiques d'affichage de terminal stockees dans la base de donnees, on trouve notamment:
- le nombre de colonnes de l'ecran
- quel caractere de controle (ou sequence de caracteres ASCII) permet de placer le curseur en un point donne de l'ecran (et comment le ndeg de ligne et le ndeg de colonne doivent etre encodes pour cela) ;
- comment faire defiler l'ecran d'une ou plusieurs lignes a la fois ;
- combien de tabulations sont necessaires pour cette operation de defilement.
Le modele descriptif des caracteristiques d'ecran
[modifier | modifier le code]La base de donnees de Termcap contient les caracteristiques d'affichage d'un ou plusieurs terminaux.
Clefs de recherche
[modifier | modifier le code]Chaque ligne de la base doit comporter le nom de reference d'un terminal (avec eventuellement quelques synonymes). Ces noms sont les clefs de recherche utilises par le moteur termcap.
Valeurs caracteristiques
[modifier | modifier le code]Chaque entree de la base comporte une liste d'actions graphiques possibles, designees par des codes generiques. Elles sont typees en booleen, numerique et chaine de caracteres, mais le typage d'une caracteristique n'est pas predetermine.
- Les caracteristiques de type chaine de caracteres sont decrites par un signe "=" separant le nom et la valeur,
- les caracteristiques de type numerique, par un "#" suivi d'un nombre entier et
- les caracteristiques de type booleennes sont simplement nommees lorsqu'elles existent.
En effet, les programmes semi-graphiques utilisant termcap recherchent les caracteristiques d'affichage disponibles selon l'un de ces trois types exclusivement.
Hierarchisation
[modifier | modifier le code]On peut decrire certaines caracteristiques de terminal en renvoyant a celles d'un terminal deja decrit, lorsque celles-ci sont, meme partiellement, identiques. L'API termcap reconstruit lui-meme la description du terminal demande, supprimant ou corrigeant lui-meme les caracteristiques au cours de l'execution.
Structure du fichier des caracteristiques graphiques
[modifier | modifier le code]Les caracteristiques sont stockees dans un simple fichier texte, ce qui permet de les modifier facilement. On peut retrouver ce fichier grace aux variables environnement du systeme d'exploitation.
Variables d'environnement de termcap
[modifier | modifier le code]La variable d'environnement TERM contient le nom du type de terminal sur lequel la session Linux est active.
La variable d'environnement TERMCAP contient la ligne active puisee dans la base de donnees utilisee par TERMCAP. Elle ne contient le plus souvent que les caracteristiques d'un seul terminal, choisies par l'emulateur de terminal pour permettre au shell et aux commandes LINUX d'afficher la sortie standard.
La variable d'environnementTERMPATH a ete introduite sur les OS Linux pour definir l'arborescence de recherche des fichiers de travail de termcap.
Fichier plat
[modifier | modifier le code]Sous sa forme originale (encore aujourd'hui la plus courante) la bibliotheque termcap lit les caracteristiques graphiques dans un fichier au format texte (<< fichier plat >>) ; lorsqu'il y a un grand nombre de terminaux stockes (plus de 0,5 Mo), cela peut ralentir l'affichage ; aussi, pour ameliorer les performances, on a recours a des utilitaires comme reorder, qui place en debut de fichier les types de terminaux les plus courants.
Integration d'une table de hachage a la base de donnees descriptive
[modifier | modifier le code]Les implementations type BSD-4.4 de termcap accedent aux caracteristiques des terminaux grace a une table de hachage (par ex., celle de Berkeley DB version 1.85). La base de donnees contient pour cela deux types d'enregistrements : l'adresse des types de terminaux, et pour chaque adresse, la liste des caracteristiques d'affichage. Les donnees sont stockees de facon formatee.
Notes
[modifier | modifier le code]- | D'apres Peter H. Salus, << The history of Unix is as much about collaboration as it is about technology >>, Byte, (lire en ligne).
- | Cf. Arnold Amir et Elan Amir, Screen Updating and Cursor Movement Optimization: A Library Package, C.R.C. Press (lire en ligne)
- | alt.sys.pdp10 posting
Source
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalite issu de l'article de Wikipedia en anglais intitule << Termcap >> (voir la liste des auteurs).