Zephyr> pourquoi immonde ? C'est un simple tableau de pointeurs à garder, sauf que au lieu d'être des void * ce sont des fpos_t.
Pollux> l'exemple de bob ?
Quant aux systèmes, c'est pas parce que on est habitués à glibc qu'il n'y a que celle là. Et la pratique d'utiliser un handle permet de contourner la limitation à 32 bits pour des fichiers qui sont plus gros. Là où il ne sera pas possible d'utiliser ftell/fseek avec un offset, un handle passera parfaitement.
En connaitre, non tu sais les deux seuls systèmes disposant d'une libc avec lesquels j'ai développé sérieusement en C c'est debian et msvc6. Les autres systèmes n'avaient pas de notion de fichiers, ou alors des fichiers structurés (pas possible à identifier comme des flux, donc pas de fread/fwrite/etc exposé).
uh là je ne suis pas tout à fait d'accord. Il est tout a fait possible de se déplacer dans un fichier gzip comme dans un fichier non compressé. Et la doc de gzip propose des fonctions (gz_seek et gz_tell) qui n'ont aucune mention "déconseillé". fgetpos et fsetpos n'existent pas dans l'API à ma connaissance.
Les fichiers que j'utilise peuvent être très gros.
Le passage sur fgetpos et fsetpos n'avait plus rien à voir avec zlib. Pour revenir à gzlib, non, c'est pas écrit déconseillé. C'est écrit :
If the file is opened for reading, this function is emulated but can be extremely slow.
Traduction : la bibliothèque revient au tout début du fichier, et redécompresse tout jusqu'au point que tu as demandé. Les fichiers que tu utilises peuvent être très gros tu as dit. A toi de voir.
Si tu fais un gzseek() pour aller à la fin d'un fichier de 600Mo, tu te tappes la décompression de 600Mo.
Si tu le fais 10 fois de manière non séquentielle, tu te tappes la décompression de 6Go pour rien.
M'enfin, non c'est pas *marqué* déconseillé. Tu fais comme tu veux.