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

  FORUM HardWare.fr
  Programmation
  C

  Lister un fichier .tar

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lister un fichier .tar

n°1756388
NaKiLu
Posté le 07-07-2008 à 15:59:24  profilanswer
 

Bonjour pour un projet je souhaiterai lister les fichiers present dans une tarball (compresser a l'aide de gnu tar (.tar)) en langage C ^^, je souhaiterais savoir s'il existe une bibliotheque pour sa. laquelle ?
Sinon comment puis-je faire sa proprement (sous unix) ?
 
Merci
Bonne journée
 
ps : sa fait un moment que je cherche et j'ai toujours rien trouvé


---------------
Mieux vaux tar que gz
mood
Publicité
Posté le 07-07-2008 à 15:59:24  profilanswer
 

n°1756417
Elmoricq
Modérateur
Posté le 07-07-2008 à 16:33:49  profilanswer
 
n°1756420
NaKiLu
Posté le 07-07-2008 à 16:39:21  profilanswer
 

Oui merci mais je n'es pas le droit d'utiliser sa , je dois vraiment tout refaire merci

n°1756422
Elmoricq
Modérateur
Posté le 07-07-2008 à 16:43:21  profilanswer
 

Ah.
 
Ben dans ce cas tu regardes le format du TAR ( http://www.google.fr/search?q=tar+format => page wikipedia par exemple), tu lis le premier bloc d'information, tu l'interprètes, tu passes le bloc de données grace à l'information sur la taille, tu lis le nouveau bloc d'information que tu y trouves, rinse & repeat.

n°1756427
NaKiLu
Posté le 07-07-2008 à 16:49:37  profilanswer
 

oui ce que je suis entrain de faire la , merci bcp
 
Bonne journée

n°1756481
Elmoricq
Modérateur
Posté le 07-07-2008 à 18:13:09  profilanswer
 

Je m'ennuyais alors j'ai écrit ça viteuf :

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct tarheader {
  6.   char filename[100];
  7.   char mode[8];
  8.   char uid[8];
  9.   char gid[8];
  10.   char size[12];
  11.   char last[12];
  12.   char cksum[8];
  13.   char typeflag;
  14.   char linkname[100];
  15.   char ustar[8];
  16.   char uname[32];
  17.   char gname[32];
  18.   char devicemajor[8];
  19.   char deviceminor[8];
  20.   char prefix[155];
  21.   char padding[12];
  22. } ;
  23.  
  24. void listContent(FILE * f) {
  25.   struct tarheader h;
  26.  
  27.   while ( fread(&h, sizeof(struct tarheader), 1, f) != 0 ) {
  28.      /* Blague de barbu : les numeriques sont codes en octal [:petrus75] */
  29.      long size = strtol(h.size, NULL, 8);
  30.      /* chaque bloc pese 512 bytes tout rond, a prendre en compte avant lecture du fichier suivant */
  31.      long padding = 512-size%512;
  32.  
  33.      printf("%s\n", h.filename);
  34.      fseek(f, size  + padding, SEEK_CUR);
  35.   }
  36. }
  37.  
  38. int main(int argc, char **argv) {
  39.   if ( argc == 2 ) {
  40.      FILE * tarfile = fopen(argv[1], "rb" );
  41.      
  42.      if ( tarfile ) {
  43.         listContent(tarfile);
  44.         fclose(tarfile);
  45.      }
  46.      else {
  47.         fprintf(stderr, "Unable to open '%s'\n", argv[1]);
  48.         return EXIT_FAILURE;
  49.      }
  50.   }
  51.   else {
  52.      fprintf(stderr, "Usage : %s <tarfile>\n",argv[0]);
  53.      return EXIT_FAILURE;
  54.   }
  55.      
  56.   return EXIT_SUCCESS;
  57. }


Message édité par Elmoricq le 07-07-2008 à 18:15:48

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

  Lister un fichier .tar

 

Sujets relatifs
convetir fichier excel /html puis l'envoyer.tout cela en ligne de cmdeBesoin aide en PHP,lister un fichier
[Batch] Lister et copier les fichier d'une date préciseLister les fichier d'un disque dur et faire correspondre le fichier
lister les fichier d'un dossier[c#] lister les processus liés a un fichier ?
[shell] commande pour lister les fichier executableslister le dernier fichier d'un répertoire
Lister les occurences d'un terme dans un fichier ?Faire lister dans un fichier les authorisations d'un fichier sous NTFS
Plus de sujets relatifs à : Lister un fichier .tar


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