5 Exemple
L'exemple introductif suivant illustre l'utilisation de
dotg. Je désire générer le fichier de configuration de mon
shell de connexion (fichier $HOME/.login) pour deux
configurations : ma machine personnelle et mon compte sur le réseau
enseignement au FIL.
Dans le fichier common.dotg je définis différents prédicats :
;;;------------------------------
;;; common.dotg
;;; definitions de prédcicats et macros DOTG
;;; fichier inclus par mes differents fichiers DOTG
;;;------------------------------------------------------------
#predicate MAISON hostname *.homelinux.net
#predicate LIFL hostanme *.lifl.fr
#predicate FIL hostname *.fil.univ-lille1.fr
#predicate PORTABLE hostname baroudeur.*
#predicate LINUX uname Linux
#predicate CYGWIN uname CYGWIN*
#if PORTABLE MAISON
#define OUTPUTDIR /duchmol
#endif
#if FIL
#define OUTPUTDIR /home/licence/duchmol
#endif
#define Dotg_OLDSUFFIX ~
Ce fichier suppose le comportement suivant des commandes
hostname et uname :
-
sur ma machine personnelle :
% hostname
duchmol.homelinux.net
% uname
Linux
- sur une machine du réseau du FIL :
% hostname
lxo4.fil.univ-lille1.fr
% uname
Linux
Dans mon fichier .login je désire :
-
définir mon éditeur préféré en positionnant la variable
EDITOR ;
- définir mon imprimante préférée en positionnant ou non
la variable PRINTER ;
- utiliser le fichier de configuration fourni par les
administrateurs sur le réseau du FIL.
Je n'ai qu'un éditeur préféré, mais l'imprimante que j'utilise à la
maison est nommée didot [Les Didot
sont une célèbre famille d'imprimeurs des xviiie et
xixe .], alors que le système des salles TP est prévu
pour fonctionner sans définition de PRINTER. Le fichier de
configuration pour Linux fourni par les administrateurs est
/home/admin/var/envi/envi.std.linux.
Soit le fichier dot-login.csh suivant
###------------------------------
### dot-login.csh
### source dotg de mon .login
###------------------------------------------------------------
#include common.dotg
#define DotG_OUTPUTFILE <<OUTPUTDIR>>/.login
#define DotG_OUTPUTMODE 444
#define DotG_COMMENTCHAR #
#openfile
###------------------------------
### My dot login file
###------------------------------------------------------------
#info
# Mon editeur : emacs ....
setenv EDITOR emacs
#if MAISON
# L'imprimante qui jouxte mon bureau
setenv PRINTER didot
#endif
#if FIL
# Utilisation de l'imprimante par defaut
unsetenv PRINTER
#endif
#if FIL
#if LINUX
# Environnement du FIL
source /home/admin/var/envi/envi.std.linux
#endif
#endif
La commande dotg générera dans mon fichier .login
###------------------------------
### My dot login file
###------------------------------------------------------------
### Do not edit, this is an AUTOMATICALLY GENERATED file
### Generated by dotg for duchmol from dot-login.csh
# Mon editeur : emacs ....
setenv EDITOR emacs
# L'imprimante qui jouxte mon bureau
setenv PRINTER didot
à la maison, et
###------------------------------
### My dot login file
###------------------------------------------------------------
### Do not edit, this is an AUTOMATICALLY GENERATED file
### Generated by dotg for duchmol from dot-login.csh
# Mon editeur : emacs ....
setenv EDITOR emacs
# Utilisation de l'imprimante par defaut
unsetenv PRINTER
# Environnement du FIL
source /home/admin/var/envi/envi.std.linux
en salle TP.