annotate src/win32/7zip/7z/CPP/7zip/Archive/Tar/TarHeader.h @ 1:f9f4f1b99eed

importing src directory
author Robert McIntyre <rlm@mit.edu>
date Sat, 03 Mar 2012 10:31:27 -0600
parents
children
rev   line source
rlm@1 1 // Archive/Tar/Header.h
rlm@1 2
rlm@1 3 #ifndef __ARCHIVE_TAR_HEADER_H
rlm@1 4 #define __ARCHIVE_TAR_HEADER_H
rlm@1 5
rlm@1 6 #include "Common/Types.h"
rlm@1 7
rlm@1 8 namespace NArchive {
rlm@1 9 namespace NTar {
rlm@1 10
rlm@1 11 namespace NFileHeader
rlm@1 12 {
rlm@1 13 const int kRecordSize = 512;
rlm@1 14 const int kNameSize = 100;
rlm@1 15 const int kUserNameSize = 32;
rlm@1 16 const int kGroupNameSize = 32;
rlm@1 17 const int kPrefixSize = 155;
rlm@1 18
rlm@1 19 /*
rlm@1 20 struct CHeader
rlm@1 21 {
rlm@1 22 char Name[kNameSize];
rlm@1 23 char Mode[8];
rlm@1 24 char UID[8];
rlm@1 25 char GID[8];
rlm@1 26 char Size[12];
rlm@1 27 char ModificationTime[12];
rlm@1 28 char CheckSum[8];
rlm@1 29 char LinkFlag;
rlm@1 30 char LinkName[kNameSize];
rlm@1 31 char Magic[8];
rlm@1 32 char UserName[kUserNameSize];
rlm@1 33 char GroupName[kGroupNameSize];
rlm@1 34 char DeviceMajor[8];
rlm@1 35 char DeviceMinor[8];
rlm@1 36 char Prefix[155];
rlm@1 37 };
rlm@1 38 union CRecord
rlm@1 39 {
rlm@1 40 CHeader Header;
rlm@1 41 Byte Padding[kRecordSize];
rlm@1 42 };
rlm@1 43 */
rlm@1 44
rlm@1 45 namespace NMode
rlm@1 46 {
rlm@1 47 const int kSetUID = 04000; // Set UID on execution
rlm@1 48 const int kSetGID = 02000; // Set GID on execution
rlm@1 49 const int kSaveText = 01000; // Save text (sticky bit)
rlm@1 50 }
rlm@1 51
rlm@1 52 namespace NFilePermissions
rlm@1 53 {
rlm@1 54 const int kUserRead = 00400; // read by owner
rlm@1 55 const int kUserWrite = 00200; // write by owner
rlm@1 56 const int kUserExecute = 00100; // execute/search by owner
rlm@1 57 const int kGroupRead = 00040; // read by group
rlm@1 58 const int kGroupWrite = 00020; // write by group
rlm@1 59 const int kGroupExecute = 00010; // execute/search by group
rlm@1 60 const int kOtherRead = 00004; // read by other
rlm@1 61 const int kOtherWrite = 00002; // write by other
rlm@1 62 const int kOtherExecute = 00001; // execute/search by other
rlm@1 63 }
rlm@1 64
rlm@1 65
rlm@1 66 // The linkflag defines the type of file
rlm@1 67 namespace NLinkFlag
rlm@1 68 {
rlm@1 69 const char kOldNormal = '\0'; // Normal disk file, Unix compatible
rlm@1 70 const char kNormal = '0'; // Normal disk file
rlm@1 71 const char kLink = '1'; // Link to previously dumped file
rlm@1 72 const char kSymbolicLink = '2'; // Symbolic link
rlm@1 73 const char kCharacter = '3'; // Character special file
rlm@1 74 const char kBlock = '4'; // Block special file
rlm@1 75 const char kDirectory = '5'; // Directory
rlm@1 76 const char kFIFO = '6'; // FIFO special file
rlm@1 77 const char kContiguous = '7'; // Contiguous file
rlm@1 78
rlm@1 79 const char kDumpDir = 'D'; /* GNUTYPE_DUMPDIR.
rlm@1 80 data: list of files created by the --incremental (-G) option
rlm@1 81 Each file name is preceded by either
rlm@1 82 - 'Y' (file should be in this archive)
rlm@1 83 - 'N' (file is a directory, or is not stored in the archive.)
rlm@1 84 Each file name is terminated by a null + an additional null after
rlm@1 85 the last file name. */
rlm@1 86
rlm@1 87 }
rlm@1 88 // Further link types may be defined later.
rlm@1 89
rlm@1 90 // The checksum field is filled with this while the checksum is computed.
rlm@1 91 extern const char *kCheckSumBlanks;// = " "; // 8 blanks, no null
rlm@1 92
rlm@1 93 extern const char *kLongLink; // = "././@LongLink";
rlm@1 94 extern const char *kLongLink2; // = "@LongLink";
rlm@1 95
rlm@1 96 // The magic field is filled with this if uname and gname are valid.
rlm@1 97 namespace NMagic
rlm@1 98 {
rlm@1 99 extern const char *kUsTar; // = "ustar"; // 5 chars
rlm@1 100 extern const char *kGNUTar; // = "GNUtar "; // 7 chars and a null
rlm@1 101 extern const char *kEmpty; // = "GNUtar "; // 7 chars and a null
rlm@1 102 }
rlm@1 103
rlm@1 104 }
rlm@1 105
rlm@1 106 }}
rlm@1 107
rlm@1 108 #endif