diff 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
line wrap: on
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/src/win32/7zip/7z/CPP/7zip/Archive/Tar/TarItem.h	Sat Mar 03 10:31:27 2012 -0600
     1.3 @@ -0,0 +1,71 @@
     1.4 +// Archive/Tar/Item.h
     1.5 +
     1.6 +#ifndef __ARCHIVE_TAR_ITEM_H
     1.7 +#define __ARCHIVE_TAR_ITEM_H
     1.8 +
     1.9 +#include "Common/Types.h"
    1.10 +#include "Common/MyString.h"
    1.11 +
    1.12 +#include "../Common/ItemNameUtils.h"
    1.13 +#include "TarHeader.h"
    1.14 +
    1.15 +namespace NArchive {
    1.16 +namespace NTar {
    1.17 +
    1.18 +struct CItem
    1.19 +{
    1.20 +  AString Name;
    1.21 +  UInt64 Size;
    1.22 +
    1.23 +  UInt32 Mode;
    1.24 +  UInt32 UID;
    1.25 +  UInt32 GID;
    1.26 +  UInt32 MTime;
    1.27 +  UInt32 DeviceMajor;
    1.28 +  UInt32 DeviceMinor;
    1.29 +
    1.30 +  AString LinkName;
    1.31 +  AString UserName;
    1.32 +  AString GroupName;
    1.33 +
    1.34 +  char Magic[8];
    1.35 +  char LinkFlag;
    1.36 +  bool DeviceMajorDefined;
    1.37 +  bool DeviceMinorDefined;
    1.38 +
    1.39 +  bool IsDir() const
    1.40 +  {
    1.41 +    switch(LinkFlag)
    1.42 +    {
    1.43 +      case NFileHeader::NLinkFlag::kDirectory:
    1.44 +      case NFileHeader::NLinkFlag::kDumpDir:
    1.45 +        return true;
    1.46 +      case NFileHeader::NLinkFlag::kOldNormal:
    1.47 +      case NFileHeader::NLinkFlag::kNormal:
    1.48 +        return NItemName::HasTailSlash(Name, CP_OEMCP);
    1.49 +    }
    1.50 +    return false;
    1.51 +  }
    1.52 +
    1.53 +  bool IsMagic() const
    1.54 +  {
    1.55 +    for (int i = 0; i < 5; i++)
    1.56 +      if (Magic[i] != NFileHeader::NMagic::kUsTar[i])
    1.57 +        return false;
    1.58 +    return true;
    1.59 +  }
    1.60 +
    1.61 +  UInt64 GetPackSize() const { return (Size + 0x1FF) & (~((UInt64)0x1FF)); }
    1.62 +};
    1.63 +
    1.64 +struct CItemEx: public CItem
    1.65 +{
    1.66 +  UInt64 HeaderPosition;
    1.67 +  unsigned LongLinkSize;
    1.68 +  UInt64 GetDataPosition() const { return HeaderPosition + LongLinkSize + NFileHeader::kRecordSize; }
    1.69 +  UInt64 GetFullSize() const { return LongLinkSize + NFileHeader::kRecordSize + Size; }
    1.70 +};
    1.71 +
    1.72 +}}
    1.73 +
    1.74 +#endif