xref: /aosp_15_r20/external/lzma/CPP/7zip/Archive/Tar/TarHeader.h (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // Archive/TarHeader.h
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_ARCHIVE_TAR_HEADER_H
4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_ARCHIVE_TAR_HEADER_H
5*f6dc9357SAndroid Build Coastguard Worker 
6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyTypes.h"
7*f6dc9357SAndroid Build Coastguard Worker 
8*f6dc9357SAndroid Build Coastguard Worker namespace NArchive {
9*f6dc9357SAndroid Build Coastguard Worker namespace NTar {
10*f6dc9357SAndroid Build Coastguard Worker 
11*f6dc9357SAndroid Build Coastguard Worker namespace NFileHeader
12*f6dc9357SAndroid Build Coastguard Worker {
13*f6dc9357SAndroid Build Coastguard Worker   const unsigned kRecordSize = 512;
14*f6dc9357SAndroid Build Coastguard Worker   const unsigned kNameSize = 100;
15*f6dc9357SAndroid Build Coastguard Worker   const unsigned kUserNameSize = 32;
16*f6dc9357SAndroid Build Coastguard Worker   const unsigned kGroupNameSize = 32;
17*f6dc9357SAndroid Build Coastguard Worker   const unsigned kPrefixSize = 155;
18*f6dc9357SAndroid Build Coastguard Worker 
19*f6dc9357SAndroid Build Coastguard Worker   const unsigned kUstarMagic_Offset = 257;
20*f6dc9357SAndroid Build Coastguard Worker 
21*f6dc9357SAndroid Build Coastguard Worker   /*
22*f6dc9357SAndroid Build Coastguard Worker   struct CHeader
23*f6dc9357SAndroid Build Coastguard Worker   {
24*f6dc9357SAndroid Build Coastguard Worker     char Name[kNameSize];
25*f6dc9357SAndroid Build Coastguard Worker     char Mode[8];
26*f6dc9357SAndroid Build Coastguard Worker     char UID[8];
27*f6dc9357SAndroid Build Coastguard Worker     char GID[8];
28*f6dc9357SAndroid Build Coastguard Worker     char Size[12];
29*f6dc9357SAndroid Build Coastguard Worker     char ModificationTime[12];
30*f6dc9357SAndroid Build Coastguard Worker     char CheckSum[8];
31*f6dc9357SAndroid Build Coastguard Worker     char LinkFlag;
32*f6dc9357SAndroid Build Coastguard Worker     char LinkName[kNameSize];
33*f6dc9357SAndroid Build Coastguard Worker     char Magic[8];
34*f6dc9357SAndroid Build Coastguard Worker     char UserName[kUserNameSize];
35*f6dc9357SAndroid Build Coastguard Worker     char GroupName[kGroupNameSize];
36*f6dc9357SAndroid Build Coastguard Worker     char DeviceMajor[8];
37*f6dc9357SAndroid Build Coastguard Worker     char DeviceMinor[8];
38*f6dc9357SAndroid Build Coastguard Worker     char Prefix[155];
39*f6dc9357SAndroid Build Coastguard Worker   };
40*f6dc9357SAndroid Build Coastguard Worker   union CRecord
41*f6dc9357SAndroid Build Coastguard Worker   {
42*f6dc9357SAndroid Build Coastguard Worker     CHeader Header;
43*f6dc9357SAndroid Build Coastguard Worker     Byte Padding[kRecordSize];
44*f6dc9357SAndroid Build Coastguard Worker   };
45*f6dc9357SAndroid Build Coastguard Worker   */
46*f6dc9357SAndroid Build Coastguard Worker 
47*f6dc9357SAndroid Build Coastguard Worker   namespace NLinkFlag
48*f6dc9357SAndroid Build Coastguard Worker   {
49*f6dc9357SAndroid Build Coastguard Worker     const char kOldNormal    = 0;   // Normal disk file, Unix compatible
50*f6dc9357SAndroid Build Coastguard Worker     const char kNormal       = '0'; // Normal disk file
51*f6dc9357SAndroid Build Coastguard Worker     const char kHardLink     = '1'; // Link to previously dumped file
52*f6dc9357SAndroid Build Coastguard Worker     const char kSymLink      = '2'; // Symbolic link
53*f6dc9357SAndroid Build Coastguard Worker     const char kCharacter    = '3'; // Character special file
54*f6dc9357SAndroid Build Coastguard Worker     const char kBlock        = '4'; // Block special file
55*f6dc9357SAndroid Build Coastguard Worker     const char kDirectory    = '5'; // Directory
56*f6dc9357SAndroid Build Coastguard Worker     const char kFIFO         = '6'; // FIFO special file
57*f6dc9357SAndroid Build Coastguard Worker     const char kContiguous   = '7'; // Contiguous file
58*f6dc9357SAndroid Build Coastguard Worker     const char kGnu_LongLink = 'K';
59*f6dc9357SAndroid Build Coastguard Worker     const char kGnu_LongName = 'L';
60*f6dc9357SAndroid Build Coastguard Worker     const char kSparse       = 'S';
61*f6dc9357SAndroid Build Coastguard Worker     const char kLabel        = 'V';
62*f6dc9357SAndroid Build Coastguard Worker     const char kPax          = 'x'; // Extended header with meta data for the next file in the archive (POSIX.1-2001)
63*f6dc9357SAndroid Build Coastguard Worker     const char kPax_2        = 'X';
64*f6dc9357SAndroid Build Coastguard Worker     const char kGlobal       = 'g'; //  Global extended header with meta data (POSIX.1-2001)
65*f6dc9357SAndroid Build Coastguard Worker     const char kDumpDir      = 'D'; /* GNUTYPE_DUMPDIR.
66*f6dc9357SAndroid Build Coastguard Worker       data: list of files created by the --incremental (-G) option
67*f6dc9357SAndroid Build Coastguard Worker       Each file name is preceded by either
68*f6dc9357SAndroid Build Coastguard Worker         - 'Y' (file should be in this archive)
69*f6dc9357SAndroid Build Coastguard Worker         - 'N' (file is a directory, or is not stored in the archive.)
70*f6dc9357SAndroid Build Coastguard Worker         Each file name is terminated by a null + an additional null after
71*f6dc9357SAndroid Build Coastguard Worker         the last file name. */
72*f6dc9357SAndroid Build Coastguard Worker     // 'A'-'Z'  Vendor specific extensions (POSIX.1-1988)
73*f6dc9357SAndroid Build Coastguard Worker   }
74*f6dc9357SAndroid Build Coastguard Worker 
75*f6dc9357SAndroid Build Coastguard Worker   extern const char * const kLongLink;  //   = "././@LongLink";
76*f6dc9357SAndroid Build Coastguard Worker   extern const char * const kLongLink2; //   = "@LongLink";
77*f6dc9357SAndroid Build Coastguard Worker 
78*f6dc9357SAndroid Build Coastguard Worker   namespace NMagic
79*f6dc9357SAndroid Build Coastguard Worker   {
80*f6dc9357SAndroid Build Coastguard Worker     // extern const char * const kUsTar;  //  = "ustar"; // 5 chars
81*f6dc9357SAndroid Build Coastguard Worker     // extern const char * const kGNUTar; //  = "GNUtar "; // 7 chars and a null
82*f6dc9357SAndroid Build Coastguard Worker     // extern const char * const kEmpty;  //  = "\0\0\0\0\0\0\0\0"
83*f6dc9357SAndroid Build Coastguard Worker     extern const char k_Posix_ustar_00[8];
84*f6dc9357SAndroid Build Coastguard Worker     extern const char k_GNU_ustar[8];
85*f6dc9357SAndroid Build Coastguard Worker   }
86*f6dc9357SAndroid Build Coastguard Worker }
87*f6dc9357SAndroid Build Coastguard Worker 
88*f6dc9357SAndroid Build Coastguard Worker }}
89*f6dc9357SAndroid Build Coastguard Worker 
90*f6dc9357SAndroid Build Coastguard Worker #endif
91