// 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