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