1// 7zUpdate.h 2 3#ifndef __7Z_UPDATE_H 4#define __7Z_UPDATE_H 5 6#include "../IArchive.h" 7 8// #include "../../Common/UniqBlocks.h" 9 10#include "7zCompressionMode.h" 11#include "7zIn.h" 12#include "7zOut.h" 13 14namespace NArchive { 15namespace N7z { 16 17/* 18struct CTreeFolder 19{ 20 UString Name; 21 int Parent; 22 CIntVector SubFolders; 23 int UpdateItemIndex; 24 int SortIndex; 25 int SortIndexEnd; 26 27 CTreeFolder(): UpdateItemIndex(-1) {} 28}; 29*/ 30 31struct CUpdateItem 32{ 33 int IndexInArchive; 34 int IndexInClient; 35 36 UInt64 CTime; 37 UInt64 ATime; 38 UInt64 MTime; 39 40 UInt64 Size; 41 UString Name; 42 /* 43 bool IsAltStream; 44 int ParentFolderIndex; 45 int TreeFolderIndex; 46 */ 47 48 // that code is not used in 9.26 49 // int ParentSortIndex; 50 // int ParentSortIndexEnd; 51 52 UInt32 Attrib; 53 54 bool NewData; 55 bool NewProps; 56 57 bool IsAnti; 58 bool IsDir; 59 60 bool AttribDefined; 61 bool CTimeDefined; 62 bool ATimeDefined; 63 bool MTimeDefined; 64 65 // int SecureIndex; // 0 means (no_security) 66 67 bool HasStream() const { return !IsDir && !IsAnti && Size != 0; } 68 69 CUpdateItem(): 70 // ParentSortIndex(-1), 71 // IsAltStream(false), 72 IsAnti(false), 73 IsDir(false), 74 AttribDefined(false), 75 CTimeDefined(false), 76 ATimeDefined(false), 77 MTimeDefined(false) 78 // SecureIndex(0) 79 {} 80 void SetDirStatusFromAttrib() { IsDir = ((Attrib & FILE_ATTRIBUTE_DIRECTORY) != 0); }; 81 82 int GetExtensionPos() const; 83 UString GetExtension() const; 84}; 85 86struct CUpdateOptions 87{ 88 const CCompressionMethodMode *Method; 89 const CCompressionMethodMode *HeaderMethod; 90 bool UseFilters; 91 bool MaxFilter; 92 93 CHeaderOptions HeaderOptions; 94 95 UInt64 NumSolidFiles; 96 UInt64 NumSolidBytes; 97 bool SolidExtension; 98 bool RemoveSfxBlock; 99 bool VolumeMode; 100}; 101 102HRESULT Update( 103 DECL_EXTERNAL_CODECS_LOC_VARS 104 IInStream *inStream, 105 const CDbEx *db, 106 const CObjectVector<CUpdateItem> &updateItems, 107 // const CObjectVector<CTreeFolder> &treeFolders, // treeFolders[0] is root 108 // const CUniqBlocks &secureBlocks, 109 COutArchive &archive, 110 CArchiveDatabaseOut &newDatabase, 111 ISequentialOutStream *seqOutStream, 112 IArchiveUpdateCallback *updateCallback, 113 const CUpdateOptions &options 114 #ifndef _NO_CRYPTO 115 , ICryptoGetTextPassword *getDecoderPassword 116 #endif 117 ); 118}} 119 120#endif 121