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