4. Les fonctions principales de la zlib

L'ouverture de fichier se fait avec gzopen au lieu de open ou fopen. Le second argument garde son rôle mais change de type. Les auteurs de zlib ont préféré le mode d'ouverture utilisé par l'instruction fopen de la librairie stdio. Ainsi, on spécifie une chaîne de caractères dont le premier caractère est "r" pour la lecture et "w" pour l'écriture, le "b" que j'ai ajouté dans l'exemple plus haut est un "b" qui assure la compatibilité ANSI avec fopen. Et lors de l'écriture d'un fichier, on peut ajouter le taux de compression, qui est un chiffre entre 0 (compression=0; vitesse=MAX) et 9 (compression=MAX; vitesse=LENTE). Cela donnera par exemple "wb6" pour une écriture de fichier compressé avec le même taux de compression que gzip lorsqu'on ne lui spécifie pas un taux de compression.

L'écriture dans un fichier se fait avec gzwrite. Les arguments sont les mêmes que ceux de write (man 2 write)

La lecture dans un fichier se fait avec gzread. Ici aussi, les arguments sont les mêmes que ceux de read.

La fermeture du fichier se fait avec gzclose. Comme on pouvait s'y attendre, ce n'est pas le descripteur de fichier au format int qu'on fournit en argument, mais celui au format gzFile donné par gzopen. Il en résulte que si l'on n'a pas changé le nom du descripteur du fichier mais seulement son type lors d'une conversion de code vers la zlib, alors il n'y a rien a changer pour close ou fclose.

Les autres instructions, fprinf, fputs, fgets, fputc, fgetc, fflush, fseek, ftell, rewind et feof sont respectivement à remplacer par gzprintf, gzputs, gzgets, gzputc, gzgetc, gzflush, gzseek, gzrewind et gzeof. Les arguments sont les mêmes pour chaque instruction et son instruction correspondante dans la librairie zlib, à l'exception dont vous vous doutez : le descripteur de fichiers qui est de type gzFile.

Il reste une instruction qui peut être intéressante pour la lecture et l'écriture de fichiers, c'est-à-dire la conversion d'un descripteur de fichiers fourni par open vers un descripteur de fichier de type gzFile. Cette instruction est gzFile gzdopen(int fd, const char *mode), qui prend en argument le descripteur de fichiers d'open et le mode que l'on aurait fourni à gzopen. C'est le correspondant de fdopen.

création est mise à disposition sous un contrat Creative Commons