diff options
Diffstat (limited to 'CPP/7zip/Archive/Zip/ZipIn.h')
-rwxr-xr-x | CPP/7zip/Archive/Zip/ZipIn.h | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/CPP/7zip/Archive/Zip/ZipIn.h b/CPP/7zip/Archive/Zip/ZipIn.h index b5a5a3ef..750095d6 100755 --- a/CPP/7zip/Archive/Zip/ZipIn.h +++ b/CPP/7zip/Archive/Zip/ZipIn.h @@ -25,7 +25,7 @@ public: kMultiVolumeArchiveAreNotSupported, kReadStreamError, kSeekStreamError - } + } Cause; CInArchiveException(ECauseType cause): Cause(cause) {} }; @@ -37,18 +37,19 @@ public: UInt64 StartPosition; CByteBuffer Comment; CInArchiveInfo(): Base(0), StartPosition(0) {} - void Clear() - { + void Clear() + { Base = 0; StartPosition = 0; - Comment.SetCapacity(0); + Comment.SetCapacity(0); } }; class CProgressVirt { public: - STDMETHOD(SetCompleted)(const UInt64 *numFiles) PURE; + STDMETHOD(SetTotal)(UInt64 numFiles) PURE; + STDMETHOD(SetCompleted)(UInt64 numFiles) PURE; }; struct CCdInfo @@ -68,7 +69,7 @@ class CInArchive HRESULT Seek(UInt64 offset); - bool FindAndReadMarker(const UInt64 *searchHeaderSizeLimit); + HRESULT FindAndReadMarker(IInStream *stream, const UInt64 *searchHeaderSizeLimit); bool ReadUInt32(UInt32 &signature); AString ReadFileName(UInt32 nameSize); @@ -83,15 +84,15 @@ class CInArchive void IncreaseRealPosition(UInt64 addValue); - void ReadExtra(UInt32 extraSize, CExtraBlock &extraBlock, + void ReadExtra(UInt32 extraSize, CExtraBlock &extraBlock, UInt64 &unpackSize, UInt64 &packSize, UInt64 &localHeaderOffset, UInt32 &diskStartNumber); HRESULT ReadLocalItem(CItemEx &item); HRESULT ReadLocalItemDescriptor(CItemEx &item); HRESULT ReadCdItem(CItemEx &item); HRESULT TryEcd64(UInt64 offset, CCdInfo &cdInfo); HRESULT FindCd(CCdInfo &cdInfo); - HRESULT TryReadCd(CObjectVector<CItemEx> &items, UInt64 cdOffset, UInt64 cdSize); - HRESULT ReadCd(CObjectVector<CItemEx> &items, UInt64 &cdOffset, UInt64 &cdSize); + HRESULT TryReadCd(CObjectVector<CItemEx> &items, UInt64 cdOffset, UInt64 cdSize, CProgressVirt *progress); + HRESULT ReadCd(CObjectVector<CItemEx> &items, UInt64 &cdOffset, UInt64 &cdSize, CProgressVirt *progress); HRESULT ReadLocalsAndCd(CObjectVector<CItemEx> &items, CProgressVirt *progress, UInt64 &cdOffset); public: CInArchiveInfo m_ArchiveInfo; @@ -100,12 +101,14 @@ public: HRESULT ReadHeaders(CObjectVector<CItemEx> &items, CProgressVirt *progress); HRESULT ReadLocalItemAfterCdItem(CItemEx &item); HRESULT ReadLocalItemAfterCdItemFull(CItemEx &item); - bool Open(IInStream *inStream, const UInt64 *searchHeaderSizeLimit); + HRESULT Open(IInStream *stream, const UInt64 *searchHeaderSizeLimit); void Close(); void GetArchiveInfo(CInArchiveInfo &archiveInfo) const; bool SeekInArchive(UInt64 position); ISequentialInStream *CreateLimitedStream(UInt64 position, UInt64 size); IInStream* CreateStream(); + + bool IsOpen() const { return m_Stream != NULL; } }; }} |