Lister le contenu d'une archive tar SANS les commandes TAR
frozzen
-
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
[Dal] Messages postés 6205 Date d'inscription Statut Contributeur Dernière intervention -
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,
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:
- Lister le contenu d'une archive tar SANS les commandes TAR
- Invite de commandes - Guide
- Commandes terminal mac - Guide
- Créer une liste déroulante excel - Guide
- Fusionner deux cellules excel en gardant le contenu - Guide
- Word a trouvé du contenu illisible - Guide
1 réponse
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
Voir
Dal
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=ustarsinon, 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
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.