#ifndef ROOT_TZIPFile
#define ROOT_TZIPFile
#ifndef ROOT_TArchiveFile
#include "TArchiveFile.h"
#endif
class TZIPMember;
class TZIPFile : public TArchiveFile {
protected:
Long64_t fDirPos;
Long64_t fDirSize;
Long64_t fDirOffset;
TString fComment;
Long64_t FindEndHeader();
Int_t ReadEndHeader(Long64_t pos);
Int_t ReadDirectory();
Int_t ReadMemberHeader(TZIPMember *member);
UInt_t Get(const void *buffer, Int_t bytes);
enum EZIPConstants {
kARCHIVE_VERSION = 20,
kDIR_HEADER_MAGIC = 0x02014b50,
kENTRY_HEADER_MAGIC = 0x04034b50,
kEND_HEADER_MAGIC = 0x06054b50,
kZIP_MAGIC_LEN = 4,
kMAX_VAR_LEN = 0xffff,
kMAX_SIZE = 0xffffffff,
kDIR_MAGIC_OFF = 0,
kDIR_VMADE_OFF = 4, kDIR_VMADE_LEN = 2,
kDIR_VREQD_OFF = 6, kDIR_VREQD_LEN = 2,
kDIR_FLAG_OFF = 8, kDIR_FLAG_LEN = 2,
kDIR_METHOD_OFF = 10, kDIR_METHOD_LEN = 2,
kDIR_DATE_OFF = 12, kDIR_DATE_LEN = 4,
kDIR_CRC32_OFF = 16, kDIR_CRC32_LEN = 4,
kDIR_CSIZE_OFF = 20, kDIR_CSIZE_LEN = 4,
kDIR_USIZE_OFF = 24, kDIR_USIZE_LEN = 4,
kDIR_NAMELEN_OFF = 28, kDIR_NAMELEN_LEN = 2,
kDIR_EXTRALEN_OFF = 30, kDIR_EXTRALEN_LEN = 2,
kDIR_COMMENTLEN_OFF = 32, kDIR_COMMENTLEN_LEN = 2,
kDIR_DISK_START_OFF = 34, kDIR_DISK_START_LEN = 2,
kDIR_INT_ATTR_OFF = 36, kDIR_INT_ATTR_LEN = 2,
kDIR_EXT_ATTR_OFF = 38, kDIR_EXT_ATTR_LEN = 4,
kDIR_ENTRY_POS_OFF = 42, kDIR_ENTRY_POS_LEN = 4,
kDIR_HEADER_SIZE = 46,
kEND_MAGIC_OFF = 0,
kEND_DISK_OFF = 4, kEND_DISK_LEN = 2,
kEND_DIR_DISK_OFF = 6, kEND_DIR_DISK_LEN = 2,
kEND_DISK_HDRS_OFF = 8, kEND_DISK_HDRS_LEN = 2,
kEND_TOTAL_HDRS_OFF = 10, kEND_TOTAL_HDRS_LEN = 2,
kEND_DIR_SIZE_OFF = 12, kEND_DIR_SIZE_LEN = 4,
kEND_DIR_OFFSET_OFF = 16, kEND_DIR_OFFSET_LEN = 4,
kEND_COMMENTLEN_OFF = 20, kEND_COMMENTLEN_LEN = 2,
kEND_HEADER_SIZE = 22,
kENTRY_MAGIC_OFF = 0,
kENTRY_VREQD_OFF = 4, kENTRY_VREQD_LEN = 2,
kENTRY_FLAG_OFF = 6, kENTRY_FLAG_LEN = 2,
kENTRY_METHOD_OFF = 8, kENTRY_METHOD_LEN = 2,
kENTRY_DATE_OFF = 10, kENTRY_DATE_LEN = 4,
kENTRY_CRC32_OFF = 14, kENTRY_CRC32_LEN = 4,
kENTRY_CSIZE_OFF = 18, kENTRY_CSIZE_LEN = 4,
kENTRY_USIZE_OFF = 22, kENTRY_USIZE_LEN = 4,
kENTRY_NAMELEN_OFF = 26, kENTRY_NAMELEN_LEN = 2,
kENTRY_EXTRALEN_OFF = 28, kENTRY_EXTRALEN_LEN = 2,
kENTRY_HEADER_SIZE = 30,
kSTORED = 0,
kDEFLATED = 8
};
TZIPFile(const TZIPFile&);
TZIPFile& operator=(const TZIPFile&);
public:
TZIPFile();
TZIPFile(const char *archive, const char *member, TFile *file);
virtual ~TZIPFile() { }
virtual Int_t OpenArchive();
virtual Int_t SetCurrentMember();
void Print(Option_t *option = "") const;
ClassDef(TZIPFile,1)
};
class TZIPMember : public TArchiveMember {
friend class TZIPFile;
private:
void *fLocal;
Long64_t fLocalLen;
void *fGlobal;
Long64_t fGlobalLen;
UInt_t fCRC32;
UInt_t fAttrInt;
UInt_t fAttrExt;
UInt_t fMethod;
UInt_t fLevel;
public:
TZIPMember();
TZIPMember(const char *name);
TZIPMember(const TZIPMember &member);
TZIPMember &operator=(const TZIPMember &rhs);
virtual ~TZIPMember();
void *GetLocal() const { return fLocal; }
Long64_t GetLocalLen() const { return fLocalLen; }
void *GetGlobal() const { return fGlobal; }
Long64_t GetGlobalLen() const { return fGlobalLen; }
UInt_t GetCRC32() const { return fCRC32; }
UInt_t GetAttrInt() const { return fAttrInt; }
UInt_t GetAttrExt() const { return fAttrExt; }
UInt_t GetMethod() const { return fMethod; }
UInt_t GetLevel() const { return fLevel; }
void Print(Option_t *option = "") const;
ClassDef(TZIPMember,1)
};
#endif
Last change: Wed Jun 25 08:55:25 2008
Last generated: 2008-06-25 08:55
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.