You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.0 KiB
95 lines
2.0 KiB
// Extract.h
|
|
|
|
#ifndef __EXTRACT_H
|
|
#define __EXTRACT_H
|
|
|
|
#include "../../../Windows/FileFind.h"
|
|
|
|
#include "../../Archive/IArchive.h"
|
|
|
|
#include "ArchiveExtractCallback.h"
|
|
#include "ArchiveOpenCallback.h"
|
|
#include "ExtractMode.h"
|
|
#include "Property.h"
|
|
|
|
#include "../Common/LoadCodecs.h"
|
|
|
|
struct CExtractOptionsBase
|
|
{
|
|
CBoolPair ElimDup;
|
|
|
|
bool PathMode_Force;
|
|
bool OverwriteMode_Force;
|
|
NExtract::NPathMode::EEnum PathMode;
|
|
NExtract::NOverwriteMode::EEnum OverwriteMode;
|
|
|
|
FString OutputDir;
|
|
CExtractNtOptions NtOptions;
|
|
|
|
CExtractOptionsBase():
|
|
PathMode_Force(false),
|
|
OverwriteMode_Force(false),
|
|
PathMode(NExtract::NPathMode::kFullPaths),
|
|
OverwriteMode(NExtract::NOverwriteMode::kAsk)
|
|
{}
|
|
};
|
|
|
|
struct CExtractOptions: public CExtractOptionsBase
|
|
{
|
|
bool StdInMode;
|
|
bool StdOutMode;
|
|
bool YesToAll;
|
|
bool TestMode;
|
|
|
|
// bool ShowDialog;
|
|
// bool PasswordEnabled;
|
|
// UString Password;
|
|
#ifndef _SFX
|
|
CObjectVector<CProperty> Properties;
|
|
#endif
|
|
|
|
#ifdef EXTERNAL_CODECS
|
|
CCodecs *Codecs;
|
|
#endif
|
|
|
|
CExtractOptions():
|
|
TestMode(false),
|
|
StdInMode(false),
|
|
StdOutMode(false),
|
|
YesToAll(false)
|
|
{}
|
|
};
|
|
|
|
struct CDecompressStat
|
|
{
|
|
UInt64 NumArchives;
|
|
UInt64 UnpackSize;
|
|
UInt64 AltStreams_UnpackSize;
|
|
UInt64 PackSize;
|
|
UInt64 NumFolders;
|
|
UInt64 NumFiles;
|
|
UInt64 NumAltStreams;
|
|
|
|
void Clear()
|
|
{
|
|
NumArchives = UnpackSize = AltStreams_UnpackSize = PackSize = NumFolders = NumFiles = NumAltStreams = 0;
|
|
}
|
|
};
|
|
|
|
HRESULT Extract(
|
|
CCodecs *codecs,
|
|
const CObjectVector<COpenType> &types,
|
|
const CIntVector &excludedFormats,
|
|
UStringVector &archivePaths, UStringVector &archivePathsFull,
|
|
const NWildcard::CCensorNode &wildcardCensor,
|
|
const CExtractOptions &options,
|
|
IOpenCallbackUI *openCallback,
|
|
IExtractCallbackUI *extractCallback,
|
|
#ifndef _SFX
|
|
IHashCalc *hash,
|
|
#endif
|
|
UString &errorMessage,
|
|
CDecompressStat &st);
|
|
|
|
#endif
|