20 class TZIPFile :
public TArchiveFile {
28 Long64_t FindEndHeader();
29 Int_t ReadEndHeader(Long64_t pos);
30 Long64_t ReadZip64EndLocator(Long64_t pos);
31 Int_t ReadZip64EndRecord(Long64_t pos);
32 Int_t ReadDirectory();
33 Int_t ReadMemberHeader(TZIPMember *member);
34 UInt_t Get(
const void *buffer, Int_t bytes);
35 ULong64_t Get64(
const void *buffer, Int_t bytes);
36 Int_t DecodeZip64ExtendedExtraField(TZIPMember *m, Bool_t global = kTRUE);
41 kARCHIVE_VERSION = 45,
44 kDIR_HEADER_MAGIC = 0x02014b50,
45 kENTRY_HEADER_MAGIC = 0x04034b50,
46 kEND_HEADER_MAGIC = 0x06054b50,
47 kZIP64_EDR_HEADER_MAGIC = 0x06064b50,
48 kZIP64_EDL_HEADER_MAGIC = 0x07064b50,
49 kZIP64_EXTENDED_MAGIC = 0x0001,
51 kMAX_VAR_LEN = 0xffff,
52 kMAX_SIZE = 0xffffffff,
56 kDIR_VMADE_OFF = 4, kDIR_VMADE_LEN = 2,
57 kDIR_VREQD_OFF = 6, kDIR_VREQD_LEN = 2,
58 kDIR_FLAG_OFF = 8, kDIR_FLAG_LEN = 2,
59 kDIR_METHOD_OFF = 10, kDIR_METHOD_LEN = 2,
60 kDIR_DATE_OFF = 12, kDIR_DATE_LEN = 4,
61 kDIR_CRC32_OFF = 16, kDIR_CRC32_LEN = 4,
62 kDIR_CSIZE_OFF = 20, kDIR_CSIZE_LEN = 4,
63 kDIR_USIZE_OFF = 24, kDIR_USIZE_LEN = 4,
64 kDIR_NAMELEN_OFF = 28, kDIR_NAMELEN_LEN = 2,
65 kDIR_EXTRALEN_OFF = 30, kDIR_EXTRALEN_LEN = 2,
66 kDIR_COMMENTLEN_OFF = 32, kDIR_COMMENTLEN_LEN = 2,
67 kDIR_DISK_START_OFF = 34, kDIR_DISK_START_LEN = 2,
68 kDIR_INT_ATTR_OFF = 36, kDIR_INT_ATTR_LEN = 2,
69 kDIR_EXT_ATTR_OFF = 38, kDIR_EXT_ATTR_LEN = 4,
70 kDIR_ENTRY_POS_OFF = 42, kDIR_ENTRY_POS_LEN = 4,
71 kDIR_HEADER_SIZE = 46,
74 kZIP64_EDR_MAGIC_OFF = 0,
75 kZIP64_EDR_SIZE_OFF = 4, kZIP64_EDR_SIZE_LEN = 8,
76 kZIP64_EDR_VERS_MADE_OFF = 12, kZIP64_EDR_VERS_MADE_LEN = 2,
77 kZIP64_EDR_VERS_EXT_OFF = 14, kZIP64_EDR_VERS_EXT_LEN = 2,
78 kZIP64_EDR_DISK_OFF = 16, kZIP64_EDR_DISK_LEN = 4,
79 kZIP64_EDR_DIR_DISK_OFF = 20, kZIP64_EDR_DIR_DISK_LEN = 4,
80 kZIP64_EDR_DISK_HDRS_OFF = 24, kZIP64_EDR_DISK_HDRS_LEN = 8,
81 kZIP64_EDR_TOTAL_HDRS_OFF = 32, kZIP64_EDR_TOTAL_HDRS_LEN = 8,
82 kZIP64_EDR_DIR_SIZE_OFF = 40, kZIP64_EDR_DIR_SIZE_LEN = 8,
83 kZIP64_EDR_DIR_OFFSET_OFF = 48, kZIP64_EDR_DIR_OFFSET_LEN = 8,
84 kZIP64_EDR_HEADER_SIZE = 56,
87 kZIP64_EDL_MAGIC_OFF = 0,
88 kZIP64_EDL_DISK_OFF = 4, kZIP64_EDL_DISK_LEN = 4,
89 kZIP64_EDL_REC_OFFSET_OFF = 8, kZIP64_EDL_REC_OFFSET_LEN = 8,
90 kZIP64_EDL_TOTAL_DISK_OFF = 16, kZIP64_EDL_TOTAL_DISK_LEN = 4,
91 kZIP64_EDL_HEADER_SIZE = 20,
95 kEND_DISK_OFF = 4, kEND_DISK_LEN = 2,
96 kEND_DIR_DISK_OFF = 6, kEND_DIR_DISK_LEN = 2,
97 kEND_DISK_HDRS_OFF = 8, kEND_DISK_HDRS_LEN = 2,
98 kEND_TOTAL_HDRS_OFF = 10, kEND_TOTAL_HDRS_LEN = 2,
99 kEND_DIR_SIZE_OFF = 12, kEND_DIR_SIZE_LEN = 4,
100 kEND_DIR_OFFSET_OFF = 16, kEND_DIR_OFFSET_LEN = 4,
101 kEND_COMMENTLEN_OFF = 20, kEND_COMMENTLEN_LEN = 2,
102 kEND_HEADER_SIZE = 22,
105 kENTRY_MAGIC_OFF = 0,
106 kENTRY_VREQD_OFF = 4, kENTRY_VREQD_LEN = 2,
107 kENTRY_FLAG_OFF = 6, kENTRY_FLAG_LEN = 2,
108 kENTRY_METHOD_OFF = 8, kENTRY_METHOD_LEN = 2,
109 kENTRY_DATE_OFF = 10, kENTRY_DATE_LEN = 4,
110 kENTRY_CRC32_OFF = 14, kENTRY_CRC32_LEN = 4,
111 kENTRY_CSIZE_OFF = 18, kENTRY_CSIZE_LEN = 4,
112 kENTRY_USIZE_OFF = 22, kENTRY_USIZE_LEN = 4,
113 kENTRY_NAMELEN_OFF = 26, kENTRY_NAMELEN_LEN = 2,
114 kENTRY_EXTRALEN_OFF = 28, kENTRY_EXTRALEN_LEN = 2,
115 kENTRY_HEADER_SIZE = 30,
118 kZIP64_EXTENDED_MAGIC_OFF = 0, kZIP64_EXTENDED_MAGIC_LEN = 2,
119 kZIP64_EXTENDED_SIZE_OFF = 2, kZIP64_EXTENDED_SIZE_LEN = 2,
120 kZIP64_EXTENDED_USIZE_OFF = 4, kZIP64_EXTENDED_USIZE_LEN = 8,
121 kZIP64_EXTENTED_CSIZE_OFF = 12, kZIP64_EXTENDED_CSIZE_LEN = 8,
122 kZIP64_EXTENDED_HDR_OFFSET_OFF = 20, kZIP64_EXTENDED_HDR_OFFSET_LEN = 8,
123 kZIP64_EXTENDED_DISK_OFF = 28, kZIP64_EXTENDED_DISK_LEN = 4,
124 kZIP64_EXTENDED_SIZE = 32,
131 TZIPFile(
const TZIPFile&) =
delete;
132 TZIPFile& operator=(
const TZIPFile&) =
delete;
136 TZIPFile(
const char *archive,
const char *member, TFile *file);
137 virtual ~TZIPFile() { }
139 virtual Int_t OpenArchive();
140 virtual Int_t SetCurrentMember();
142 void Print(Option_t *option =
"")
const;
156 class TZIPMember :
public TArchiveMember {
158 friend class TZIPFile;
173 TZIPMember(
const char *name);
174 TZIPMember(
const TZIPMember &member);
175 TZIPMember &operator=(
const TZIPMember &rhs);
176 virtual ~TZIPMember();
178 void *GetLocal()
const {
return fLocal; }
179 UInt_t GetLocalLen()
const {
return fLocalLen; }
180 void *GetGlobal()
const {
return fGlobal; }
181 UInt_t GetGlobalLen()
const {
return fGlobalLen; }
182 UInt_t GetCRC32()
const {
return fCRC32; }
183 UInt_t GetAttrInt()
const {
return fAttrInt; }
184 UInt_t GetAttrExt()
const {
return fAttrExt; }
185 UInt_t GetMethod()
const {
return fMethod; }
186 UInt_t GetLevel()
const {
return fLevel; }
188 void Print(Option_t *option =
"")
const;
190 ClassDef(TZIPMember, 0);