Lister le contenu d'une archive tar SANS les commandes TAR

Fermé
frozzen - 25 oct. 2016 à 12:07
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 27 oct. 2016 à 18:16
Bonjour,
pour un projet de C je dois programmer un extracteur de fichier tar, pour commencer je veux juste lister les fichiers de mon archive et là un phénomène étrange se passe : si l'archive ne contient qu'un seul dossier dans la racine, mon programme affiche le nom du dossier mais si j'extrais l'archive et que que je la recompressse en rajoutant un dossier à la source alors là mon programme affiche le premier dossier de cet archive puis le premier sous dossier de ce dossier et ainsi de suite.

voici mon code :


int main(int argc, char* argv[]) {



/*OUVERTURE DE L'ARCHIVE TAR EN LECTURE SEULE*/
int fd;
fd = open(argv[1],O_RDONLY,0);

if (fd < 3) {
printf("Impossible d'ouvrir le fichier\n");
exit(1);
} else {
printf("le fichier %s a bien été ouvert\n", argv[1]);
struct header_posix_ustar ma_struct;
int nb_bits_lus=0;


/*LECTURE DE L'ENTETE DU PREMIER FICHIER (bloc de 512 octets) */
nb_bits_lus=read(fd, &ma_struct, 512);
printf("nom du premier fichier : %s\n", ma_struct.name);
printf("Nombre de bits lus : %d\n", nb_bits_lus);
}

close(fd);
return 0;
}


il faut savoir que si j'essaie de revenir en arrière en supprimant le dossier que j'ai rajouté et que je reviens donc au cas de base avec un dossier à la racine l'anomalie persiste.

Cordialement,

A voir également:

1 réponse

[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
27 oct. 2016 à 15:19
Salut,

tu ne fournis pas suffisamment d'informations pour comprendre quel est exactement ton problème, ni pour le reproduire.

Cela dit, si ton code attend un format ustar et que tu es sous Linux avec GNU tar, tu devrais créer ton fichier tar avec l'option
--format=ustar
sinon, ton entête ne sera pas au format GNU tar.

tar --help
à la fin t'indique comment a été compilée la version de tar que tu utilises.

Voir
man tar
également


Dal
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
27 oct. 2016 à 18:16
il y a une coquille... je veux dire "sinon, ton entête sera au format GNU tar."

le format GNU tar, par exemple, permet d'archiver des fichiers avec un nom dont la longueur est illimitée, ce qui n'est pas le cas de UStar.
0