zip_source_file |
ZIP : Fichier source |
---|---|
libzip |
Syntaxe
zip_source_t * zip_source_file(zip_t *archive, const char *fname, zip_uint64_t start, zip_int64_t len); |
Retour
Une fois l'opération terminée avec succès, la source créée est renvoyée. Sinon, la valeur NULL est renvoyée et le code d'erreur dans archive ou error est défini pour indiquer l'erreur.
Description
Cette fonction permet de créer une source de données ZIP à partir d'un fichier.
Remarques
- Les fonctions zip_source_file() et zip_source_file_create() créent une source zip à partir d'un fichier. Elles ouvrent fname et lisent len ?? octets à partir du déplacement start à partir de celui-ci.
- Lors de la transmission de ZIP_LENGTH_TO_END (ou -1, ce qui est obsolète) comme len, zip_source_file détermine la taille du fichier lorsqu'il est appelé et l'utilise comme taille de fichier attendue. Si la taille du fichier augmente entre la création et la lecture à partir de la source, les données supplémentaires sont ignorées. Si le fichier diminue, libzip le traite comme une erreur (ZIP_ER_DATA_LENGTH).
- Lors de la transmission de ZIP_LENGTH_UNCHECKED comme len, zip_source_file suppose que la taille du fichier est inconnue. La lecture à partir de la source renvoie autant de données qu'il y en a à ce moment-là (généralement lors de l'appel de zip_close()).
- libzip peut effectuer diverses optimisations si la taille d'une source est connue lors de sa création, donc ZIP_LENGTH_TO_END est préférable. Si vous traitez des fichiers susceptibles de changer pendant que vous les traitez, vous pouvez utiliser ZIP_LENGTH_UNCHECKED, moins efficace.
- Si le fichier prend en charge la recherche, la source peut être utilisée pour ouvrir une archive zip.
- Le fichier est ouvert et lu lorsque les données de la source sont utilisées, généralement par zip_close() ou zip_open_from_source().
Erreurs
zip_source_file() et zip_source_file_create() échouent si :
Constante | Description |
---|---|
ZIP_ER_INVAL | fname, start ou len ne sont pas valides. |
ZIP_ER_MEMORY | La mémoire requise n'a pas pu être allouée. |
ZIP_ER_OPEN | L'ouverture de fname a échoué. |
Historique
zip_source_file() et zip_source_file_create() ont été ajoutés dans libzip 1.0.
ZIP_LENGTH_TO_END et ZIP_LENGTH_UNCHECKED ont été ajoutés dans libzip 1.10.1.
Voir également
libzip(), zip_file_add(), zip_file_replace(), zip_source()
Dernière mise à jour : Mercredi, le 5 Février 2025