1// Extract.h 2 3#ifndef __EXTRACT_H 4#define __EXTRACT_H 5 6#include "../../../Windows/FileFind.h" 7 8#include "../../Archive/IArchive.h" 9 10#include "ArchiveExtractCallback.h" 11#include "ArchiveOpenCallback.h" 12#include "ExtractMode.h" 13#include "Property.h" 14 15#include "../Common/LoadCodecs.h" 16 17struct CExtractOptionsBase 18{ 19 CBoolPair ElimDup; 20 21 bool PathMode_Force; 22 bool OverwriteMode_Force; 23 NExtract::NPathMode::EEnum PathMode; 24 NExtract::NOverwriteMode::EEnum OverwriteMode; 25 26 FString OutputDir; 27 CExtractNtOptions NtOptions; 28 29 CExtractOptionsBase(): 30 PathMode_Force(false), 31 OverwriteMode_Force(false), 32 PathMode(NExtract::NPathMode::kFullPaths), 33 OverwriteMode(NExtract::NOverwriteMode::kAsk) 34 {} 35}; 36 37struct CExtractOptions: public CExtractOptionsBase 38{ 39 bool StdInMode; 40 bool StdOutMode; 41 bool YesToAll; 42 bool TestMode; 43 44 // bool ShowDialog; 45 // bool PasswordEnabled; 46 // UString Password; 47 #ifndef _SFX 48 CObjectVector<CProperty> Properties; 49 #endif 50 51 #ifdef EXTERNAL_CODECS 52 CCodecs *Codecs; 53 #endif 54 55 CExtractOptions(): 56 TestMode(false), 57 StdInMode(false), 58 StdOutMode(false), 59 YesToAll(false) 60 {} 61}; 62 63struct CDecompressStat 64{ 65 UInt64 NumArchives; 66 UInt64 UnpackSize; 67 UInt64 AltStreams_UnpackSize; 68 UInt64 PackSize; 69 UInt64 NumFolders; 70 UInt64 NumFiles; 71 UInt64 NumAltStreams; 72 73 void Clear() 74 { 75 NumArchives = UnpackSize = AltStreams_UnpackSize = PackSize = NumFolders = NumFiles = NumAltStreams = 0; 76 } 77}; 78 79HRESULT Extract( 80 CCodecs *codecs, 81 const CObjectVector<COpenType> &types, 82 const CIntVector &excludedFormats, 83 UStringVector &archivePaths, UStringVector &archivePathsFull, 84 const NWildcard::CCensorNode &wildcardCensor, 85 const CExtractOptions &options, 86 IOpenCallbackUI *openCallback, 87 IExtractCallbackUI *extractCallback, 88 #ifndef _SFX 89 IHashCalc *hash, 90 #endif 91 UString &errorMessage, 92 CDecompressStat &st); 93 94#endif 95