Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2392 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Compresser un fichier en gzip à partir de code C ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Compresser un fichier en gzip à partir de code C ?

n°185347
Poulou
Posté le 29-07-2002 à 15:30:36  profilanswer
 

Comment faire pour éxécuter le plus proprement possible une compression gzip à partir d'un code C ? Est-ce qu'on a un retour pour savoir si celle-ci s'est bien déroulé ?
Merci

mood
Publicité
Posté le 29-07-2002 à 15:30:36  profilanswer
 

n°185356
lamatrice
Posté le 29-07-2002 à 15:39:36  profilanswer
 
n°185359
Carbon_14
Posté le 29-07-2002 à 15:41:32  profilanswer
 

Si le code est bien écrit, on doit pouvoir le savoir !! C'est au développeur de le gérer.
 
Cf http://www.gnu.org/software/gzip/gzip.html (par google)
 
dont http://www.gzip.org/#sources

n°185362
Carbon_14
Posté le 29-07-2002 à 15:42:50  profilanswer
 

Je pense avoir mal lu :pt1cable:. C'est pour lancer gzip.exe par shell à partir d'un code perso ?

n°185365
Poulou
Posté le 29-07-2002 à 15:43:55  profilanswer
 

ct une pub perso, parce que je vois pas bien le rapport...

n°185377
Poulou
Posté le 29-07-2002 à 15:49:05  profilanswer
 

carbon_14 : ouaip ce serait pour lancer gzip à partir d'un code C perso.
Y'a t-il un moyen propre de le faire (c plutôt déconseillé d'appeler un éxécutable à partir d'un autre...)

n°185379
LetoII
Le dormeur doit se réveiller
Posté le 29-07-2002 à 15:51:05  profilanswer
 

Poulou a écrit a écrit :

carbon_14 : ouaip ce serait pour lancer gzip à partir d'un code C perso.
Y'a t-il un moyen propre de le faire (c plutôt déconseillé d'appeler un éxécutable à partir d'un autre...)




 
 
system("gzip" );
 
System doit renvoyer la valeur de retour de gzip si je me souvient bien, donc 0 si tout c bien passé.
 


---------------
Le Tyran
n°185386
bb138
La vie est belle ...
Posté le 29-07-2002 à 15:56:30  profilanswer
 

Ben sinon il y a la zlib qui existe et qui ne doit pas être trop difficile à utiliser.
Je l'utilise mais pas sur des fichiers mais il me semble qu'il y a les fonction nécessaires... oui oui elles y sont !!!

n°185393
LetoII
Le dormeur doit se réveiller
Posté le 29-07-2002 à 16:05:51  profilanswer
 

BB138 a écrit a écrit :

Ben sinon il y a la zlib qui existe et qui ne doit pas être trop difficile à utiliser.
Je l'utilise mais pas sur des fichiers mais il me semble qu'il y a les fonction nécessaires... oui oui elles y sont !!!




 
Heu si, c une usine à gaz :D
 
T'aurais pas qq bon tutauriaux ?


Message édité par LetoII le 29-07-2002 à 16:06:24

---------------
Le Tyran
n°185433
bb138
La vie est belle ...
Posté le 29-07-2002 à 16:27:13  profilanswer
 

Désolé pour les tutoriaux, je n'en ai pas... j'ai fait avec la documentation des fonctions et comme pour l'instant je n'utilise que compress() et uncompress() je n'ai pas eu trop de soucis...

mood
Publicité
Posté le 29-07-2002 à 16:27:13  profilanswer
 

n°185434
Carbon_14
Posté le 29-07-2002 à 16:28:09  profilanswer
 

Les fonctions de zlib sont sur http://www.gzip.org/zlib/manual.html

n°1192951
yolanc
Posté le 06-09-2005 à 02:29:39  profilanswer
 

bb138 a écrit :

Désolé pour les tutoriaux, je n'en ai pas... j'ai fait avec la documentation des fonctions et comme pour l'instant je n'utilise que compress() et uncompress() je n'ai pas eu trop de soucis...


Je déterre cette vieille discussion ^^,  
j'essaie d'utiliser la zlib et plus particulièrement la fonction uncompress() sans grand succès...
Le prototype est :

Code :
  1. int uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);


et moi j'utilise en gros

Code :
  1. u_char *payload;
  2. // payload = les données compressées
  3. unsigned long ldestination = 10000 ;
  4. unsigned char destination[ldestination] ; // pas bo mais c'est pour tester
  5. cout << uncompress (destination, &ldestination, payload, ldestination ) ;  // là ça m'affiche -3 ("erreur de donnée" )
  6. cout << destination << endl ; // et là évidemment ça m'affiche n'importe quoi


Je suis sur (ou presque) de la variable 'payload', je pense que je me goure dans les paramètres mais où? ... Quelqu'un a un exemple d'utilisation ? si quelqu'un voit l'erreur ou a une indic, qu'il n'hésite pas !  :)

n°1192985
olivthill
Posté le 06-09-2005 à 08:47:17  profilanswer
 

:hello:  
Les paramètres sont peut-être bons, car le programme ne plante pas, et le code d'erreur ne concerne pas les paramètres. Le code d'erreur semble plutôt indiquer que le format des données à décompresser n'est pas le bon.
 
Il est spécifié dans la doc sur http://www.gzip.org/zlib/manual.html

Citation :

The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files rfc1950.txt (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).

Il existe bien d'autres formats.
 
Connais-tu les premiers octets du fichier à décompresser ?
 
Si les deux premiers octets sont "PK", le fichier ne pourra pas être décompressé par zlib, car "PK" (initiales du regretté Phil Katz, mort le 14 avril 2000, à l'age de 37 ans) identifie un fichier PKziped qui n'est pas traité par zlib, ce qui est dommage car le format PKZip est utilisé dans près de 90 pourcent des cas sous Windows.

n°1193385
yolanc
Posté le 06-09-2005 à 17:08:39  profilanswer
 


En fait j'essaie de lire une page HTML, un des paramètres du serveur est : "Content-Encoding: gzip"
donc la trame qu'il envoie est compressée. Ethereal arrive bien à la lire mais mon programme ... :non:
 
Ethereal m'affiche "............[o.8.." pour les premiers octets, donc je pense que la zlib devrait pouvoir décoder.  :sarcastic:  
 
Tiens je viens de me rendre compte que les premiers messages de la trame non compressés ne s'affichent pas (comme "Server: Apache/2.0.54 (Unix) PHP/4.3.11" par exemple), mon problème ne vient pas de zlib  :sweat: , je vais enquêter, je reviens  :bounce:

n°1193529
el muchach​o
Comfortably Numb
Posté le 06-09-2005 à 20:12:34  profilanswer
 

Déjà, si tu appelais ta fonction correctement...

n°1193619
yolanc
Posté le 06-09-2005 à 21:41:24  profilanswer
 

Je t'en prie ne fais pas le timide...

n°1193864
blackgodde​ss
vive le troll !
Posté le 07-09-2005 à 10:40:47  profilanswer
 

yolanc a écrit :


int uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
 
...
 
cout << uncompress (destination, &ldestination, payload, ldestination ) ;  // là ça m'affiche -3 ("erreur de donnée" )


 
:??:


---------------
-( BlackGoddess )-

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Compresser un fichier en gzip à partir de code C ?

 

Sujets relatifs
[MySQL] comment donner l'acces a partir d'un PC distant?Inclusion fichier , repertoire a la meme "hauteur"
[HTML, CSS] Couleur d'un tableau sur fichier .css ?[HTML,JS] Quel code html utilisez vous ?
[MySQL] Insertion massive d?info SQL situé dans un fichier sur le serv[Script] Recup de la taille d un fichier et passer ca ds un parametre
[VBA] qqun aurait un Mac pour tester un fichier Excel dev. sous PC?[ PHP ] - intercepter la fin du telechargement d'un fichier
[java] envoi de fichier par socketFichier Words .DOT ...
Plus de sujets relatifs à : Compresser un fichier en gzip à partir de code C ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR