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 14 namespace NArchive { 15 namespace N7z { 16 17 /* 18 struct 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 31 struct 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 HasStreamCUpdateItem67 bool HasStream() const { return !IsDir && !IsAnti && Size != 0; } 68 // bool HasStream() const { return !IsDir && !IsAnti /* && Size != 0 */; } // for test purposes 69 CUpdateItemCUpdateItem70 CUpdateItem(): 71 // ParentSortIndex(-1), 72 // IsAltStream(false), 73 IsAnti(false), 74 IsDir(false), 75 AttribDefined(false), 76 CTimeDefined(false), 77 ATimeDefined(false), 78 MTimeDefined(false) 79 // SecureIndex(0) 80 {} SetDirStatusFromAttribCUpdateItem81 void SetDirStatusFromAttrib() { IsDir = ((Attrib & FILE_ATTRIBUTE_DIRECTORY) != 0); } 82 83 // unsigned GetExtensionPos() const; 84 // UString GetExtension() const; 85 }; 86 87 struct CUpdateOptions 88 { 89 const CCompressionMethodMode *Method; 90 const CCompressionMethodMode *HeaderMethod; 91 bool UseFilters; // use additional filters for some files 92 bool MaxFilter; // use BCJ2 filter instead of BCJ 93 int AnalysisLevel; 94 95 CHeaderOptions HeaderOptions; 96 97 UInt64 NumSolidFiles; 98 UInt64 NumSolidBytes; 99 bool SolidExtension; 100 101 bool UseTypeSorting; 102 103 bool RemoveSfxBlock; 104 bool MultiThreadMixer; 105 CUpdateOptionsCUpdateOptions106 CUpdateOptions(): 107 Method(NULL), 108 HeaderMethod(NULL), 109 UseFilters(false), 110 MaxFilter(false), 111 AnalysisLevel(-1), 112 NumSolidFiles((UInt64)(Int64)(-1)), 113 NumSolidBytes((UInt64)(Int64)(-1)), 114 SolidExtension(false), 115 UseTypeSorting(true), 116 RemoveSfxBlock(false), 117 MultiThreadMixer(true) 118 {} 119 }; 120 121 HRESULT Update( 122 DECL_EXTERNAL_CODECS_LOC_VARS 123 IInStream *inStream, 124 const CDbEx *db, 125 const CObjectVector<CUpdateItem> &updateItems, 126 // const CObjectVector<CTreeFolder> &treeFolders, // treeFolders[0] is root 127 // const CUniqBlocks &secureBlocks, 128 COutArchive &archive, 129 CArchiveDatabaseOut &newDatabase, 130 ISequentialOutStream *seqOutStream, 131 IArchiveUpdateCallback *updateCallback, 132 const CUpdateOptions &options 133 #ifndef _NO_CRYPTO 134 , ICryptoGetTextPassword *getDecoderPassword 135 #endif 136 ); 137 }} 138 139 #endif 140