Bonjour
J'ai le code précédent qui marche sous Linux, mais pas sous windows.
Le problème, c'est que sous windows, il compile, s'exécute et ne fait RIEN ! Le fichier dont le chemin est ch est inchangé.
Ceci m'envoie dans le " printf("Erreur lors de la fermeture du fichier %s : %s\n",ch,zip_strerror(f_zip));". L'erruer est "Renaming temporary file lailed: File existe".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 f_zip=zip_open(ch,ZIP_CREATE,NULL); n_zip=zip_source_filep(f_zip,fichier,0,0); /* récupération du fichier sous forme FILE * sans avoir à le copier sur le disque */ zip_replace(f_zip,zip_name_locate(f_zip,"content.xml",ZIP_FL_NOCASE) ,n_zip); /* on l'injecte dans l'archive en lui donnant un nom */ if (zip_close(f_zip)!=0) /* on ferme l'archive */ { printf("Erreur lors de la fermeture du fichier %s : %s\n",ch,zip_strerror(f_zip)); } else { /* l'enregistrement c'est bien fait */ }
Si je mets un point d'arrêt avant la sauvegarde et que je passe par le navigateur de fichier, je ne peux supprimer le fichier qui est déjà là : la version avant modification.
Je ne suis pas le premier à avoir ce problème : http://www.nih.at/listarchive/libzip.../msg00602.html
nb : Je modifie petit à petit...
Partager