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
|