Bonjour,
Voila pour les cours je dois coder un tar like, en avançant dans le projet on nous demande que notre application soit compatible avec le "vrai" tar, (donc un fichier archiver avec notre programme doit etre desarchivable avec le tar officiel, et vice versa) et le tout posix.
Quelque coup de hedump plus tard le fonctionnement d'un fichier tar est approximativement comprise.
un man(5) tar nous renseigne sur une structure que voici:
Une bonne partie de la structure se rempli en octal, néanmoins j'ai beau chercher je ne comprend pas comment calculer le checksum.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 struct header_posix_ustar { char name[100]; char mode[8]; char uid[8]; char gid[8]; char size[12]; char mtime[12]; char checksum[8]; char typeflag[1]; char linkname[100]; char magic[6]; char version[2]; char uname[32]; char gname[32]; char devmajor[8]; char devminor[8]; char prefix[155]; char pad[12]; };
Mon anglais est un peu rouille et même si j'utilise des outils de traduction il me faut être le plus précis possible et mes différentes interprétation de cette definition ce sont assez mal finie, je ne peux helas plus avance tant que je n'ai pas reussi a faire ce calcul, c'est pourquoi je vous demande votre aide.checksum
Header checksum, stored as an octal number in ASCII. To compute
the checksum, set the checksum field to all spaces, then sum all
bytes in the header using unsigned arithmetic. This field should
be stored as six octal digits followed by a null and a space
character. Note that many early implementations of tar used
signed arithmetic for the checksum field, which can cause inter-
operability problems when transferring archives between systems.
Modern robust readers compute the checksum both ways and accept
the header if either computation matches.
Partager