1*f6dc9357SAndroid Build Coastguard Worker // 7z/Handler.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_7Z_HANDLER_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_7Z_HANDLER_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../ICoder.h" 7*f6dc9357SAndroid Build Coastguard Worker #include "../IArchive.h" 8*f6dc9357SAndroid Build Coastguard Worker 9*f6dc9357SAndroid Build Coastguard Worker #include "../../Common/CreateCoder.h" 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_7Z_SET_PROPERTIES 12*f6dc9357SAndroid Build Coastguard Worker 13*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_EXTRACT_ONLY 14*f6dc9357SAndroid Build Coastguard Worker #if !defined(Z7_ST) && !defined(Z7_SFX) 15*f6dc9357SAndroid Build Coastguard Worker #define Z7_7Z_SET_PROPERTIES 16*f6dc9357SAndroid Build Coastguard Worker #endif 17*f6dc9357SAndroid Build Coastguard Worker #else 18*f6dc9357SAndroid Build Coastguard Worker #define Z7_7Z_SET_PROPERTIES 19*f6dc9357SAndroid Build Coastguard Worker #endif 20*f6dc9357SAndroid Build Coastguard Worker 21*f6dc9357SAndroid Build Coastguard Worker #endif 22*f6dc9357SAndroid Build Coastguard Worker 23*f6dc9357SAndroid Build Coastguard Worker // #ifdef Z7_7Z_SET_PROPERTIES 24*f6dc9357SAndroid Build Coastguard Worker #include "../Common/HandlerOut.h" 25*f6dc9357SAndroid Build Coastguard Worker // #endif 26*f6dc9357SAndroid Build Coastguard Worker 27*f6dc9357SAndroid Build Coastguard Worker #include "7zCompressionMode.h" 28*f6dc9357SAndroid Build Coastguard Worker #include "7zIn.h" 29*f6dc9357SAndroid Build Coastguard Worker 30*f6dc9357SAndroid Build Coastguard Worker namespace NArchive { 31*f6dc9357SAndroid Build Coastguard Worker namespace N7z { 32*f6dc9357SAndroid Build Coastguard Worker 33*f6dc9357SAndroid Build Coastguard Worker 34*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_EXTRACT_ONLY 35*f6dc9357SAndroid Build Coastguard Worker 36*f6dc9357SAndroid Build Coastguard Worker class COutHandler: public CMultiMethodProps 37*f6dc9357SAndroid Build Coastguard Worker { 38*f6dc9357SAndroid Build Coastguard Worker HRESULT SetSolidFromString(const UString &s); 39*f6dc9357SAndroid Build Coastguard Worker HRESULT SetSolidFromPROPVARIANT(const PROPVARIANT &value); 40*f6dc9357SAndroid Build Coastguard Worker public: 41*f6dc9357SAndroid Build Coastguard Worker UInt64 _numSolidFiles; 42*f6dc9357SAndroid Build Coastguard Worker UInt64 _numSolidBytes; 43*f6dc9357SAndroid Build Coastguard Worker bool _numSolidBytesDefined; 44*f6dc9357SAndroid Build Coastguard Worker bool _solidExtension; 45*f6dc9357SAndroid Build Coastguard Worker bool _useTypeSorting; 46*f6dc9357SAndroid Build Coastguard Worker 47*f6dc9357SAndroid Build Coastguard Worker bool _compressHeaders; 48*f6dc9357SAndroid Build Coastguard Worker bool _encryptHeadersSpecified; 49*f6dc9357SAndroid Build Coastguard Worker bool _encryptHeaders; 50*f6dc9357SAndroid Build Coastguard Worker // bool _useParents; 9.26 51*f6dc9357SAndroid Build Coastguard Worker 52*f6dc9357SAndroid Build Coastguard Worker CHandlerTimeOptions TimeOptions; 53*f6dc9357SAndroid Build Coastguard Worker 54*f6dc9357SAndroid Build Coastguard Worker CBoolPair Write_Attrib; 55*f6dc9357SAndroid Build Coastguard Worker 56*f6dc9357SAndroid Build Coastguard Worker bool _useMultiThreadMixer; 57*f6dc9357SAndroid Build Coastguard Worker bool _removeSfxBlock; 58*f6dc9357SAndroid Build Coastguard Worker // bool _volumeMode; 59*f6dc9357SAndroid Build Coastguard Worker 60*f6dc9357SAndroid Build Coastguard Worker UInt32 _decoderCompatibilityVersion; 61*f6dc9357SAndroid Build Coastguard Worker CUIntVector _enabledFilters; 62*f6dc9357SAndroid Build Coastguard Worker CUIntVector _disabledFilters; 63*f6dc9357SAndroid Build Coastguard Worker InitSolidFiles()64*f6dc9357SAndroid Build Coastguard Worker void InitSolidFiles() { _numSolidFiles = (UInt64)(Int64)(-1); } InitSolidSize()65*f6dc9357SAndroid Build Coastguard Worker void InitSolidSize() { _numSolidBytes = (UInt64)(Int64)(-1); } InitSolid()66*f6dc9357SAndroid Build Coastguard Worker void InitSolid() 67*f6dc9357SAndroid Build Coastguard Worker { 68*f6dc9357SAndroid Build Coastguard Worker InitSolidFiles(); 69*f6dc9357SAndroid Build Coastguard Worker InitSolidSize(); 70*f6dc9357SAndroid Build Coastguard Worker _solidExtension = false; 71*f6dc9357SAndroid Build Coastguard Worker _numSolidBytesDefined = false; 72*f6dc9357SAndroid Build Coastguard Worker } 73*f6dc9357SAndroid Build Coastguard Worker 74*f6dc9357SAndroid Build Coastguard Worker void InitProps7z(); 75*f6dc9357SAndroid Build Coastguard Worker void InitProps(); 76*f6dc9357SAndroid Build Coastguard Worker COutHandler()77*f6dc9357SAndroid Build Coastguard Worker COutHandler() { InitProps7z(); } 78*f6dc9357SAndroid Build Coastguard Worker 79*f6dc9357SAndroid Build Coastguard Worker HRESULT SetProperty(const wchar_t *name, const PROPVARIANT &value); 80*f6dc9357SAndroid Build Coastguard Worker }; 81*f6dc9357SAndroid Build Coastguard Worker 82*f6dc9357SAndroid Build Coastguard Worker #endif 83*f6dc9357SAndroid Build Coastguard Worker 84*f6dc9357SAndroid Build Coastguard Worker class CHandler Z7_final: 85*f6dc9357SAndroid Build Coastguard Worker public IInArchive, 86*f6dc9357SAndroid Build Coastguard Worker public IArchiveGetRawProps, 87*f6dc9357SAndroid Build Coastguard Worker 88*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_7Z_SET_PROPERTIES 89*f6dc9357SAndroid Build Coastguard Worker public ISetProperties, 90*f6dc9357SAndroid Build Coastguard Worker #endif 91*f6dc9357SAndroid Build Coastguard Worker 92*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_EXTRACT_ONLY 93*f6dc9357SAndroid Build Coastguard Worker public IOutArchive, 94*f6dc9357SAndroid Build Coastguard Worker #endif 95*f6dc9357SAndroid Build Coastguard Worker 96*f6dc9357SAndroid Build Coastguard Worker Z7_PUBLIC_ISetCompressCodecsInfo_IFEC 97*f6dc9357SAndroid Build Coastguard Worker 98*f6dc9357SAndroid Build Coastguard Worker public CMyUnknownImp, 99*f6dc9357SAndroid Build Coastguard Worker 100*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_EXTRACT_ONLY 101*f6dc9357SAndroid Build Coastguard Worker public COutHandler 102*f6dc9357SAndroid Build Coastguard Worker #else 103*f6dc9357SAndroid Build Coastguard Worker public CCommonMethodProps 104*f6dc9357SAndroid Build Coastguard Worker #endif 105*f6dc9357SAndroid Build Coastguard Worker { 106*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_BEGIN2(IInArchive) 107*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(IArchiveGetRawProps) 108*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_7Z_SET_PROPERTIES 109*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(ISetProperties) 110*f6dc9357SAndroid Build Coastguard Worker #endif 111*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_EXTRACT_ONLY 112*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY(IOutArchive) 113*f6dc9357SAndroid Build Coastguard Worker #endif 114*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_ENTRY_ISetCompressCodecsInfo_IFEC 115*f6dc9357SAndroid Build Coastguard Worker Z7_COM_QI_END 116*f6dc9357SAndroid Build Coastguard Worker Z7_COM_ADDREF_RELEASE 117*f6dc9357SAndroid Build Coastguard Worker 118*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IInArchive) 119*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IArchiveGetRawProps) 120*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_7Z_SET_PROPERTIES 121*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(ISetProperties) 122*f6dc9357SAndroid Build Coastguard Worker #endif 123*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_EXTRACT_ONLY 124*f6dc9357SAndroid Build Coastguard Worker Z7_IFACE_COM7_IMP(IOutArchive) 125*f6dc9357SAndroid Build Coastguard Worker #endif 126*f6dc9357SAndroid Build Coastguard Worker DECL_ISetCompressCodecsInfo 127*f6dc9357SAndroid Build Coastguard Worker 128*f6dc9357SAndroid Build Coastguard Worker private: 129*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<IInStream> _inStream; 130*f6dc9357SAndroid Build Coastguard Worker NArchive::N7z::CDbEx _db; 131*f6dc9357SAndroid Build Coastguard Worker 132*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_NO_CRYPTO 133*f6dc9357SAndroid Build Coastguard Worker bool _isEncrypted; 134*f6dc9357SAndroid Build Coastguard Worker bool _passwordIsDefined; 135*f6dc9357SAndroid Build Coastguard Worker UString _password; // _Wipe 136*f6dc9357SAndroid Build Coastguard Worker #endif 137*f6dc9357SAndroid Build Coastguard Worker 138*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_EXTRACT_ONLY 139*f6dc9357SAndroid Build Coastguard Worker 140*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_7Z_SET_PROPERTIES 141*f6dc9357SAndroid Build Coastguard Worker bool _useMultiThreadMixer; 142*f6dc9357SAndroid Build Coastguard Worker #endif 143*f6dc9357SAndroid Build Coastguard Worker 144*f6dc9357SAndroid Build Coastguard Worker UInt32 _crcSize; 145*f6dc9357SAndroid Build Coastguard Worker 146*f6dc9357SAndroid Build Coastguard Worker #else 147*f6dc9357SAndroid Build Coastguard Worker 148*f6dc9357SAndroid Build Coastguard Worker CRecordVector<CBond2> _bonds; 149*f6dc9357SAndroid Build Coastguard Worker 150*f6dc9357SAndroid Build Coastguard Worker HRESULT PropsMethod_To_FullMethod(CMethodFull &dest, const COneMethodInfo &m); 151*f6dc9357SAndroid Build Coastguard Worker HRESULT SetHeaderMethod(CCompressionMethodMode &headerMethod); 152*f6dc9357SAndroid Build Coastguard Worker HRESULT SetMainMethod(CCompressionMethodMode &method); 153*f6dc9357SAndroid Build Coastguard Worker 154*f6dc9357SAndroid Build Coastguard Worker #endif 155*f6dc9357SAndroid Build Coastguard Worker 156*f6dc9357SAndroid Build Coastguard Worker bool IsFolderEncrypted(CNum folderIndex) const; 157*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_SFX 158*f6dc9357SAndroid Build Coastguard Worker 159*f6dc9357SAndroid Build Coastguard Worker CRecordVector<UInt64> _fileInfoPopIDs; 160*f6dc9357SAndroid Build Coastguard Worker void FillPopIDs(); 161*f6dc9357SAndroid Build Coastguard Worker void AddMethodName(AString &s, UInt64 id); 162*f6dc9357SAndroid Build Coastguard Worker HRESULT SetMethodToProp(CNum folderIndex, PROPVARIANT *prop) const; 163*f6dc9357SAndroid Build Coastguard Worker 164*f6dc9357SAndroid Build Coastguard Worker #endif 165*f6dc9357SAndroid Build Coastguard Worker 166*f6dc9357SAndroid Build Coastguard Worker DECL_EXTERNAL_CODECS_VARS 167*f6dc9357SAndroid Build Coastguard Worker 168*f6dc9357SAndroid Build Coastguard Worker public: 169*f6dc9357SAndroid Build Coastguard Worker CHandler(); ~CHandler()170*f6dc9357SAndroid Build Coastguard Worker ~CHandler() 171*f6dc9357SAndroid Build Coastguard Worker { 172*f6dc9357SAndroid Build Coastguard Worker Close(); 173*f6dc9357SAndroid Build Coastguard Worker } 174*f6dc9357SAndroid Build Coastguard Worker }; 175*f6dc9357SAndroid Build Coastguard Worker 176*f6dc9357SAndroid Build Coastguard Worker }} 177*f6dc9357SAndroid Build Coastguard Worker 178*f6dc9357SAndroid Build Coastguard Worker #endif 179