1 // 7zUpdate.h 2 3 #ifndef __7Z_UPDATE_H 4 #define __7Z_UPDATE_H 5 6 #include "7zCompressionMode.h" 7 #include "7zIn.h" 8 #include "7zOut.h" 9 10 #include "../IArchive.h" 11 12 namespace NArchive { 13 namespace N7z { 14 15 struct CUpdateItem 16 { 17 int IndexInArchive; 18 int IndexInClient; 19 20 UInt64 CTime; 21 UInt64 ATime; 22 UInt64 MTime; 23 24 UInt64 Size; 25 UString Name; 26 27 UInt32 Attrib; 28 29 bool NewData; 30 bool NewProps; 31 32 bool IsAnti; 33 bool IsDir; 34 35 bool AttribDefined; 36 bool CTimeDefined; 37 bool ATimeDefined; 38 bool MTimeDefined; 39 HasStreamCUpdateItem40 bool HasStream() const { return !IsDir && !IsAnti && Size != 0; } 41 CUpdateItemCUpdateItem42 CUpdateItem(): 43 IsAnti(false), 44 IsDir(false), 45 AttribDefined(false), 46 CTimeDefined(false), 47 ATimeDefined(false), 48 MTimeDefined(false) 49 {} SetDirStatusFromAttribCUpdateItem50 void SetDirStatusFromAttrib() { IsDir = ((Attrib & FILE_ATTRIBUTE_DIRECTORY) != 0); }; 51 52 int GetExtensionPos() const; 53 UString GetExtension() const; 54 }; 55 56 struct CUpdateOptions 57 { 58 const CCompressionMethodMode *Method; 59 const CCompressionMethodMode *HeaderMethod; 60 bool UseFilters; 61 bool MaxFilter; 62 63 CHeaderOptions HeaderOptions; 64 65 UInt64 NumSolidFiles; 66 UInt64 NumSolidBytes; 67 bool SolidExtension; 68 bool RemoveSfxBlock; 69 bool VolumeMode; 70 }; 71 72 HRESULT Update( 73 DECL_EXTERNAL_CODECS_LOC_VARS 74 IInStream *inStream, 75 const CArchiveDatabaseEx *db, 76 const CObjectVector<CUpdateItem> &updateItems, 77 COutArchive &archive, 78 CArchiveDatabase &newDatabase, 79 ISequentialOutStream *seqOutStream, 80 IArchiveUpdateCallback *updateCallback, 81 const CUpdateOptions &options 82 #ifndef _NO_CRYPTO 83 , ICryptoGetTextPassword *getDecoderPassword 84 #endif 85 ); 86 }} 87 88 #endif 89