diff options
Diffstat (limited to 'src/libs/7zip/win/CPP/7zip/UI/Common/ArchiveExtractCallback.h')
-rw-r--r-- | src/libs/7zip/win/CPP/7zip/UI/Common/ArchiveExtractCallback.h | 299 |
1 files changed, 0 insertions, 299 deletions
diff --git a/src/libs/7zip/win/CPP/7zip/UI/Common/ArchiveExtractCallback.h b/src/libs/7zip/win/CPP/7zip/UI/Common/ArchiveExtractCallback.h deleted file mode 100644 index fe7ef42bb..000000000 --- a/src/libs/7zip/win/CPP/7zip/UI/Common/ArchiveExtractCallback.h +++ /dev/null @@ -1,299 +0,0 @@ -// ArchiveExtractCallback.h - -#ifndef __ARCHIVE_EXTRACT_CALLBACK_H -#define __ARCHIVE_EXTRACT_CALLBACK_H - -#include "../../../Common/MyCom.h" -#include "../../../Common/Wildcard.h" - -#include "../../IPassword.h" - -#include "../../Common/FileStreams.h" -#include "../../Common/ProgressUtils.h" - -#include "../../Archive/IArchive.h" - -#include "ExtractMode.h" -#include "IFileExtractCallback.h" -#include "OpenArchive.h" - -#include "HashCalc.h" - -#ifndef _SFX - -class COutStreamWithHash: - public ISequentialOutStream, - public CMyUnknownImp -{ - CMyComPtr<ISequentialOutStream> _stream; - UInt64 _size; - bool _calculate; -public: - IHashCalc *_hash; - - MY_UNKNOWN_IMP - STDMETHOD(Write)(const void *data, UInt32 size, UInt32 *processedSize); - void SetStream(ISequentialOutStream *stream) { _stream = stream; } - void ReleaseStream() { _stream.Release(); } - void Init(bool calculate = true) - { - InitCRC(); - _size = 0; - _calculate = calculate; - } - void EnableCalc(bool calculate) { _calculate = calculate; } - void InitCRC() { _hash->InitForNewFile(); } - UInt64 GetSize() const { return _size; } -}; - -#endif - -struct CExtractNtOptions -{ - CBoolPair NtSecurity; - CBoolPair SymLinks; - CBoolPair HardLinks; - CBoolPair AltStreams; - bool ReplaceColonForAltStream; - bool WriteToAltStreamIfColon; - - CExtractNtOptions(): - ReplaceColonForAltStream(false), - WriteToAltStreamIfColon(false) - { - SymLinks.Val = true; - HardLinks.Val = true; - AltStreams.Val = true; - } -}; - -#ifndef _SFX - -class CGetProp: - public IGetProp, - public CMyUnknownImp -{ -public: - const CArc *Arc; - UInt32 IndexInArc; - UString Name; // relative path - - MY_UNKNOWN_IMP1(IGetProp) - INTERFACE_IGetProp(;) -}; - -#endif - -#ifndef _SFX -#ifndef UNDER_CE - -#define SUPPORT_LINKS - -#endif -#endif - - -#ifdef SUPPORT_LINKS - -struct CHardLinkNode -{ - UInt64 StreamId; - UInt64 INode; - - int Compare(const CHardLinkNode &a) const; -}; - -class CHardLinks -{ -public: - CRecordVector<CHardLinkNode> IDs; - CObjectVector<FString> Links; - - void Clear() - { - IDs.Clear(); - Links.Clear(); - } - - void PrepareLinks() - { - while (Links.Size() < IDs.Size()) - Links.AddNew(); - } -}; - -#endif - -class CArchiveExtractCallback: - public IArchiveExtractCallback, - // public IArchiveVolumeExtractCallback, - public ICryptoGetTextPassword, - public ICompressProgressInfo, - public CMyUnknownImp -{ - const CArc *_arc; - CExtractNtOptions _ntOptions; - - const NWildcard::CCensorNode *_wildcardCensor; - CMyComPtr<IFolderArchiveExtractCallback> _extractCallback2; - CMyComPtr<ICompressProgressInfo> _compressProgress; - CMyComPtr<ICryptoGetTextPassword> _cryptoGetTextPassword; - FString _directoryPath; - FString _directoryPathFull; - NExtract::NPathMode::EEnum _pathMode; - NExtract::NOverwriteMode::EEnum _overwriteMode; - - #ifndef _SFX - - CMyComPtr<IFolderExtractToStreamCallback> ExtractToStreamCallback; - CGetProp *GetProp_Spec; - CMyComPtr<IGetProp> GetProp; - - #endif - - FString _diskFilePath; - UString _filePath; - UInt64 _position; - bool _isSplit; - bool _isAltStream; - - bool _extractMode; - - bool WriteCTime; - bool WriteATime; - bool WriteMTime; - - bool _encrypted; - - struct CProcessedFileInfo - { - FILETIME CTime; - FILETIME ATime; - FILETIME MTime; - UInt32 Attrib; - - bool CTimeDefined; - bool ATimeDefined; - bool MTimeDefined; - bool AttribDefined; - - bool IsDir; - } _fi; - - UInt32 _index; - UInt64 _curSize; - bool _curSizeDefined; - COutFileStream *_outFileStreamSpec; - CMyComPtr<ISequentialOutStream> _outFileStream; - - #ifndef _SFX - - COutStreamWithHash *_hashStreamSpec; - CMyComPtr<ISequentialOutStream> _hashStream; - bool _hashStreamWasUsed; - - #endif - - UStringVector _removePathParts; - bool _use_baseParentFolder_mode; - UInt32 _baseParentFolder; - - bool _stdOutMode; - bool _testMode; - bool _multiArchives; - - CMyComPtr<ICompressProgressInfo> _localProgress; - UInt64 _packTotal; - UInt64 _unpTotal; - - FStringVector _extractedFolderPaths; - CRecordVector<UInt32> _extractedFolderIndices; - - #if defined(_WIN32) && !defined(UNDER_CE) && !defined(_SFX) - bool _saclEnabled; - #endif - - void CreateComplexDirectory(const UStringVector &dirPathParts, FString &fullPath); - HRESULT GetTime(int index, PROPID propID, FILETIME &filetime, bool &filetimeIsDefined); - HRESULT GetUnpackSize(); - - HRESULT SendMessageError(const char *message, const FString &path); - HRESULT SendMessageError2(const char *message, const FString &path1, const FString &path2); - -public: - - CLocalProgress *LocalProgressSpec; - - UInt64 NumFolders; - UInt64 NumFiles; - UInt64 NumAltStreams; - UInt64 UnpackSize; - UInt64 AltStreams_UnpackSize; - - MY_UNKNOWN_IMP2(ICryptoGetTextPassword, ICompressProgressInfo) - // COM_INTERFACE_ENTRY(IArchiveVolumeExtractCallback) - - INTERFACE_IArchiveExtractCallback(;) - - STDMETHOD(SetRatioInfo)(const UInt64 *inSize, const UInt64 *outSize); - - // IArchiveVolumeExtractCallback - // STDMETHOD(GetInStream)(const wchar_t *name, ISequentialInStream **inStream); - - STDMETHOD(CryptoGetTextPassword)(BSTR *password); - - CArchiveExtractCallback(); - - void InitForMulti(bool multiArchives, - NExtract::NPathMode::EEnum pathMode, - NExtract::NOverwriteMode::EEnum overwriteMode) - { - _multiArchives = multiArchives; - _pathMode = pathMode; - _overwriteMode = overwriteMode; - NumFolders = NumFiles = NumAltStreams = UnpackSize = AltStreams_UnpackSize = 0; - } - - #ifndef _SFX - - void SetHashMethods(IHashCalc *hash) - { - if (!hash) - return; - _hashStreamSpec = new COutStreamWithHash; - _hashStream = _hashStreamSpec; - _hashStreamSpec->_hash = hash; - } - - #endif - - void Init( - const CExtractNtOptions &ntOptions, - const NWildcard::CCensorNode *wildcardCensor, - const CArc *arc, - IFolderArchiveExtractCallback *extractCallback2, - bool stdOutMode, bool testMode, - const FString &directoryPath, - const UStringVector &removePathParts, - UInt64 packSize); - - #ifdef SUPPORT_LINKS -private: - CHardLinks _hardLinks; -public: - // call PrepareHardLinks() after Init() - HRESULT PrepareHardLinks(const CRecordVector<UInt32> *realIndices); // NULL means all items - #endif - - // call it after Init() - - void SetBaseParentFolderIndex(UInt32 indexInArc) - { - _use_baseParentFolder_mode = true; - _baseParentFolder = indexInArc; - } - - HRESULT SetDirsTimes(); -}; - -#endif |