| // 7zUpdate.h | |
| #ifndef __7Z_UPDATE_H | |
| #define __7Z_UPDATE_H | |
| #include "../IArchive.h" | |
| // #include "../../Common/UniqBlocks.h" | |
| #include "7zCompressionMode.h" | |
| #include "7zIn.h" | |
| #include "7zOut.h" | |
| namespace NArchive { | |
| namespace N7z { | |
| /* | |
| struct CTreeFolder | |
| { | |
| UString Name; | |
| int Parent; | |
| CIntVector SubFolders; | |
| int UpdateItemIndex; | |
| int SortIndex; | |
| int SortIndexEnd; | |
| CTreeFolder(): UpdateItemIndex(-1) {} | |
| }; | |
| */ | |
| struct CUpdateItem | |
| { | |
| int IndexInArchive; | |
| int IndexInClient; | |
| UInt64 CTime; | |
| UInt64 ATime; | |
| UInt64 MTime; | |
| UInt64 Size; | |
| UString Name; | |
| /* | |
| bool IsAltStream; | |
| int ParentFolderIndex; | |
| int TreeFolderIndex; | |
| */ | |
| // that code is not used in 9.26 | |
| // int ParentSortIndex; | |
| // int ParentSortIndexEnd; | |
| UInt32 Attrib; | |
| bool NewData; | |
| bool NewProps; | |
| bool IsAnti; | |
| bool IsDir; | |
| bool AttribDefined; | |
| bool CTimeDefined; | |
| bool ATimeDefined; | |
| bool MTimeDefined; | |
| // int SecureIndex; // 0 means (no_security) | |
| bool HasStream() const { return !IsDir && !IsAnti && Size != 0; } | |
| CUpdateItem(): | |
| // ParentSortIndex(-1), | |
| // IsAltStream(false), | |
| IsAnti(false), | |
| IsDir(false), | |
| AttribDefined(false), | |
| CTimeDefined(false), | |
| ATimeDefined(false), | |
| MTimeDefined(false) | |
| // SecureIndex(0) | |
| {} | |
| void SetDirStatusFromAttrib() { IsDir = ((Attrib & FILE_ATTRIBUTE_DIRECTORY) != 0); }; | |
| int GetExtensionPos() const; | |
| UString GetExtension() const; | |
| }; | |
| struct CUpdateOptions | |
| { | |
| const CCompressionMethodMode *Method; | |
| const CCompressionMethodMode *HeaderMethod; | |
| bool UseFilters; | |
| bool MaxFilter; | |
| CHeaderOptions HeaderOptions; | |
| UInt64 NumSolidFiles; | |
| UInt64 NumSolidBytes; | |
| bool SolidExtension; | |
| bool RemoveSfxBlock; | |
| bool VolumeMode; | |
| }; | |
| HRESULT Update( | |
| DECL_EXTERNAL_CODECS_LOC_VARS | |
| IInStream *inStream, | |
| const CDbEx *db, | |
| const CObjectVector<CUpdateItem> &updateItems, | |
| // const CObjectVector<CTreeFolder> &treeFolders, // treeFolders[0] is root | |
| // const CUniqBlocks &secureBlocks, | |
| COutArchive &archive, | |
| CArchiveDatabaseOut &newDatabase, | |
| ISequentialOutStream *seqOutStream, | |
| IArchiveUpdateCallback *updateCallback, | |
| const CUpdateOptions &options | |
| #ifndef _NO_CRYPTO | |
| , ICryptoGetTextPassword *getDecoderPassword | |
| #endif | |
| ); | |
| }} | |
| #endif |