Mercurial > vba-linux
comparison src/win32/7zip/7z/CPP/7zip/Archive/Tar/TarItem.h @ 1:f9f4f1b99eed
importing src directory
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sat, 03 Mar 2012 10:31:27 -0600 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:8ced16adf2e1 | 1:f9f4f1b99eed |
---|---|
1 // Archive/Tar/Item.h | |
2 | |
3 #ifndef __ARCHIVE_TAR_ITEM_H | |
4 #define __ARCHIVE_TAR_ITEM_H | |
5 | |
6 #include "Common/Types.h" | |
7 #include "Common/MyString.h" | |
8 | |
9 #include "../Common/ItemNameUtils.h" | |
10 #include "TarHeader.h" | |
11 | |
12 namespace NArchive { | |
13 namespace NTar { | |
14 | |
15 struct CItem | |
16 { | |
17 AString Name; | |
18 UInt64 Size; | |
19 | |
20 UInt32 Mode; | |
21 UInt32 UID; | |
22 UInt32 GID; | |
23 UInt32 MTime; | |
24 UInt32 DeviceMajor; | |
25 UInt32 DeviceMinor; | |
26 | |
27 AString LinkName; | |
28 AString UserName; | |
29 AString GroupName; | |
30 | |
31 char Magic[8]; | |
32 char LinkFlag; | |
33 bool DeviceMajorDefined; | |
34 bool DeviceMinorDefined; | |
35 | |
36 bool IsDir() const | |
37 { | |
38 switch(LinkFlag) | |
39 { | |
40 case NFileHeader::NLinkFlag::kDirectory: | |
41 case NFileHeader::NLinkFlag::kDumpDir: | |
42 return true; | |
43 case NFileHeader::NLinkFlag::kOldNormal: | |
44 case NFileHeader::NLinkFlag::kNormal: | |
45 return NItemName::HasTailSlash(Name, CP_OEMCP); | |
46 } | |
47 return false; | |
48 } | |
49 | |
50 bool IsMagic() const | |
51 { | |
52 for (int i = 0; i < 5; i++) | |
53 if (Magic[i] != NFileHeader::NMagic::kUsTar[i]) | |
54 return false; | |
55 return true; | |
56 } | |
57 | |
58 UInt64 GetPackSize() const { return (Size + 0x1FF) & (~((UInt64)0x1FF)); } | |
59 }; | |
60 | |
61 struct CItemEx: public CItem | |
62 { | |
63 UInt64 HeaderPosition; | |
64 unsigned LongLinkSize; | |
65 UInt64 GetDataPosition() const { return HeaderPosition + LongLinkSize + NFileHeader::kRecordSize; } | |
66 UInt64 GetFullSize() const { return LongLinkSize + NFileHeader::kRecordSize + Size; } | |
67 }; | |
68 | |
69 }} | |
70 | |
71 #endif |