Vous pouvez récupérer :
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 :
murlib.c
et murlib.h
: la librairie elle-même.
accents.c
: un filtre qui
retire les accents à la lecture (à linker avec murlib.o).
rotiso.c
: un filtre qui fait
ROT13 et des isométries (à linker avec murlib.o).
stack.c
: un programme qui permet
de faire toute la plomberie au lancement.
fmur
permet de lancer le mur avec le filtre
rotiso
.