Le Mur


Sorry, if you can't read French, you'll have to use some online translation service here...
Le mur est un espace plan pratiquement infini dans lequel on peut écrire comme on veut. C'est une sorte de grande feuille blanche pleine de gribouillis (en mode texte).

Vous pouvez récupérer :

NOTE: Tous ces programmes ont été écrits il y a bien longtemps, une mise au point sera sûrement nécessaire pour les compiler. Merci de me communiquer vos modifications.

Les filtres

Un filtre est un processus qui est placé entre le client et le serveur, et qui s'occupe de filtrer les briques. Il est vu comme un serveur par le client, et comme un client par le serveur.

Par exemple, on peut imaginer un filtre qui fasse un ROT13 : l'interface voit le mur décodé par ROT13. Ou bien un filtre qui tourne le mur de 90 degrés, ou bien des symétries...

Pour programmer un filtre, il faut donc comprendre comment sont organisées les communications entre l'interface et le gardien, en comprenant bien la spec et notamment la notion de brique.

Dans le protocole, une commande filt est prévue exprès pour être interceptée par des filtres, elle ne sera jamais interprétée par le gardien lui-même. L'interface sait envoyer des commandes filt à la demande, et donc contrôler les filtres.

Il est important de voir que le filtre doit traduire les briques que le gardien envoie à l'interface, mais il doit aussi effectuer l'opération inverse quand l'interface écrit une brique. Les opérations réalisées par le filtre doivent donc être d'une certaine façon "inversibles"..

Planar a écrit une librairie (murlib) qui permet d'écrire facilement des filtres :

Les programmes qui utilisent murlib sont prévus pour être connectés au gardien sur stdin/stdout et au client par les fd 3 et 4. Il est donc important de faire un peu de plomberie au lancement de tous ces processus, c'est le rôle du programme stack.

Vous pouvez donc récupérer :

L'interface doit alors être lancée en ayant comme gardien non pas le véritable gardien, mais un pile de filtres. Le script fmur permet de lancer le mur avec le filtre rotiso.

Auteurs


Efgé