Section courante

A propos

Section administrative du site

zip_source_function

ZIP : Fonction source
libzip

Syntaxe

zip_source_t * zip_source_function(zip_t *archive, zip_source_callback fn, void *userdata);

Retour

Les commandes doivent renvoyer -1 en cas d'erreur. ZIP_SOURCE_ERROR sera appelé pour récupérer le code d'erreur. En cas de réussite, les commandes renvoient 0, sauf indication contraire dans la description ci-dessus.

Description

Cette fonction permet de créer une source de données ZIP à partir d'une fonction personnalisée.

Remarques

Conventions d'appel

La bibliothèque émettra toujours ZIP_SOURCE_OPEN avant d'émettre ZIP_SOURCE_READ, ZIP_SOURCE_SEEK ou ZIP_SOURCE_TELL. Lorsqu'elle ne souhaite plus lire à partir de cette source, elle émettra ZIP_SOURCE_CLOSE. Si la bibliothèque souhaite relire les données, elle émettra ZIP_SOURCE_OPEN une deuxième fois. Si la fonction n'est pas en mesure de fournir à nouveau les données, elle doit renvoyer -1.

ZIP_SOURCE_BEGIN_WRITE ou ZIP_SOURCE_BEGIN_WRITE_CLONING sera appelé avant ZIP_SOURCE_WRITE, ZIP_SOURCE_SEEK_WRITE ou ZIP_SOURCE_TELL_WRITE. Une fois l'écriture terminée, ZIP_SOURCE_COMMIT_WRITE ou ZIP_SOURCE_ROLLBACK_WRITE sera appelé.

ZIP_SOURCE_ACCEPT_EMPTY, ZIP_SOURCE_GET_FILE_ATTRIBUTES et ZIP_SOURCE_STAT peuvent être émis à tout moment.

ZIP_SOURCE_ERROR ne sera émis qu'en réponse à la fonction renvoyant -1.

ZIP_SOURCE_FREE sera la dernière commande émise ; si ZIP_SOURCE_OPEN a été appelé et a réussi, ZIP_SOURCE_CLOSE sera appelé avant ZIP_SOURCE_FREE, et de même pour ZIP_SOURCE_BEGIN_WRITE ou ZIP_SOURCE_BEGIN_WRITE_CLONING et ZIP_SOURCE_COMMIT_WRITE ou ZIP_SOURCE_ROLLBACK_WRITE.

Valeurs de retour

Une fois l'opération terminée avec succès, la source créée est renvoyée. Sinon, NULL est renvoyé et le code d'erreur dans archive ou error est défini pour indiquer l'erreur (sauf s'il est NULL).

Erreurs

zip_source_function() échoue si :

Constante Description
ZIP_ER_MEMORY La mémoire requise n'a pas pu être allouée.

Historique

zip_source_function() et zip_source_function_create() ont été ajoutés dans libzip 1.0.

Voir également

libzip(), zip_file_add(), zip_file_attributes_init(), zip_file_replace(), zip_source(), zip_stat_init().



Dernière mise à jour : Mercredi, le 5 Février 2025