Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/7zip/Archive/Tar/TarItem.h')
-rwxr-xr-xCPP/7zip/Archive/Tar/TarItem.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/CPP/7zip/Archive/Tar/TarItem.h b/CPP/7zip/Archive/Tar/TarItem.h
new file mode 100755
index 00000000..71fff7ba
--- /dev/null
+++ b/CPP/7zip/Archive/Tar/TarItem.h
@@ -0,0 +1,69 @@
+// Archive/Tar/Item.h
+
+#ifndef __ARCHIVE_TAR_ITEM_H
+#define __ARCHIVE_TAR_ITEM_H
+
+#include <time.h>
+
+#include "Common/Types.h"
+#include "Common/String.h"
+
+#include "../Common/ItemNameUtils.h"
+#include "TarHeader.h"
+
+namespace NArchive {
+namespace NTar {
+
+class CItem
+{
+public:
+ AString Name;
+ UInt32 Mode;
+ UInt32 UID;
+ UInt32 GID;
+ UInt64 Size;
+ UInt32 ModificationTime;
+ char LinkFlag;
+ AString LinkName;
+ char Magic[8];
+ AString UserName;
+ AString GroupName;
+
+ bool DeviceMajorDefined;
+ UInt32 DeviceMajor;
+ bool DeviceMinorDefined;
+ UInt32 DeviceMinor;
+
+ bool IsDirectory() const
+ {
+ if (LinkFlag == NFileHeader::NLinkFlag::kDirectory)
+ return true;
+ if (LinkFlag == NFileHeader::NLinkFlag::kOldNormal ||
+ LinkFlag == NFileHeader::NLinkFlag::kNormal)
+ {
+ return NItemName::HasTailSlash(Name, CP_OEMCP);
+ }
+ return false;
+ }
+
+ bool IsMagic() const
+ {
+ for (int i = 0; i < 5; i++)
+ if (Magic[i] != NFileHeader::NMagic::kUsTar[i])
+ return false;
+ return true;
+ }
+};
+
+class CItemEx: public CItem
+{
+public:
+ UInt64 HeaderPosition;
+ UInt64 LongLinkSize;
+ UInt64 GetDataPosition() const { return HeaderPosition + LongLinkSize + NFileHeader::kRecordSize; };
+ UInt64 GetFullSize() const { return LongLinkSize + NFileHeader::kRecordSize + Size; };
+};
+
+}}
+
+#endif