Page suivante Page précédente Table des matières

7. Pallier les insuffisances d'une base de données

Mais, les choses ne sont pas aussi simples lorsque l'on veut mettre en oeuvre les bases données existant. Il n'est pas rare que certaines capacités ne soient pas définies dans la base de données du terminal que vous utilisez ou que votre système émule.

7.1 Réécrire un fichier source

La première solution qui vient à l'esprit est tout simplement de réécrire un fichier source et de le faire compiler par le programme tic. Pour cela, partez d'un fichier existant pour la famille du terminal que vous utilisez et ajoutez-y les capacités manquantes qui vous semblent importantes, en les retrouvant dans d'autres bases de données dans lesquelles elles sont présentes.

Ainsi vous avez pu constater, dans les chapitres précédents que les capacités de gestion de la visibilté du curseur, étaient absentes de la bases de données du terminal xterm. Reprenez le fichier source terminfo, recopiez la base de données de xterm, renommez la monxterm, ajoutez les capacités civis,cnorm,cvvis, telles que vous pouvez les trouver dans la base de données du terminal linux. Recompilez le fichier source à l'aide du programme tic.

Vous trouverez dans le manuel d'aide de votre distribution tous les renseignements nécessaires pour mettre en oeuvre cette compilation à l'aide du programme tic. Entrez la commande :

man tic

7.2 Pourquoi ne pas utiliser les fonctions de la bibliothèque ncurses ?

Certains penseront qu'il serait plus simple d'utiliser les fonctions disponibles dans la bibliothèque ncurses. Il existe certes une fonction de la bibliothèque ncurses. Il existe bien entendu une fonction, curs_set qui gère la visibilité du curseur. Mais cette fonction teste les capacités du terminal utilisé et ne fonctionne pas si la capacité civis n'est pas définies pour le terminal utilisé. Donc,... retour à la case départ.

7.3 Se créer sa propre bibliothèque de fonctions

Encore un qui réinvente la roue ! penseront certains. Peut-être. Mais c'est une question qui revient souvent chez certains jeunes programmeurs qui ont commencé avec des outils sous DOS, dont le portage des outils GNU. On y trouve des fonctions rassemblées dans le fichier d'en-tête conio.h qui efface l'écran ou rendent le curseur invisible etc...

On pourra ainsi, sans problème récupérer un ensemble de valeurs de capacités à l'aide des fonctions de lecture que nous avons vues précédemment. L'on pourra alors définir une liste de valeurs de capacités. Nous pourrons créer,par exemple les constantes suivantes :

const char * sansCurseur = "\033[?25l\E[?1c";
const char * deplace Curseur = "\033[%i%p1%d;%p2%dH";
const char * effaceEcran="\033[H\E[2J";
Il suffit ensuite de faire produire la séquence de code d'échappement par la fonction tparm
Page suivante Page précédente Table des matières