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