1baa3858d3f5d128a5c8466b700098109edcad5f2repo sync// Extract.h
2baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
3baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#ifndef __EXTRACT_H
4baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#define __EXTRACT_H
5baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
6baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "Windows/FileFind.h"
7baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
8baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../../Archive/IArchive.h"
9baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
10baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "ArchiveExtractCallback.h"
11baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "ArchiveOpenCallback.h"
12baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "ExtractMode.h"
13baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "Property.h"
14baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
15baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#include "../Common/LoadCodecs.h"
16baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
17baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CExtractOptions
18baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{
19baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  bool StdInMode;
20baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  bool StdOutMode;
21baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  bool YesToAll;
22baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  bool TestMode;
23baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  bool CalcCrc;
24baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  NExtract::NPathMode::EEnum PathMode;
25baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  NExtract::NOverwriteMode::EEnum OverwriteMode;
26baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  UString OutputDir;
27baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
28baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  // bool ShowDialog;
29baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  // bool PasswordEnabled;
30baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  // UString Password;
31baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  #if !defined(_7ZIP_ST) && !defined(_SFX)
32baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CObjectVector<CProperty> Properties;
33baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  #endif
34baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
35baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  #ifdef EXTERNAL_CODECS
36baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CCodecs *Codecs;
37baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  #endif
38baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
39baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  CExtractOptions():
40baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      StdInMode(false),
41baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      StdOutMode(false),
42baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      YesToAll(false),
43baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      TestMode(false),
44baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      CalcCrc(false),
45baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      PathMode(NExtract::NPathMode::kFullPathnames),
46baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      OverwriteMode(NExtract::NOverwriteMode::kAskBefore)
47baa3858d3f5d128a5c8466b700098109edcad5f2repo sync      {}
48baa3858d3f5d128a5c8466b700098109edcad5f2repo sync};
49baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
50baa3858d3f5d128a5c8466b700098109edcad5f2repo syncstruct CDecompressStat
51baa3858d3f5d128a5c8466b700098109edcad5f2repo sync{
52baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  UInt64 NumArchives;
53baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  UInt64 UnpackSize;
54baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  UInt64 PackSize;
55baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  UInt64 NumFolders;
56baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  UInt64 NumFiles;
57baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  UInt32 CrcSum;
58baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
59baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  void Clear()
60baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  {
61baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    NumArchives = UnpackSize = PackSize = NumFolders = NumFiles = 0;
62baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    CrcSum = 0;
63baa3858d3f5d128a5c8466b700098109edcad5f2repo sync  }
64baa3858d3f5d128a5c8466b700098109edcad5f2repo sync};
65baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
66baa3858d3f5d128a5c8466b700098109edcad5f2repo syncHRESULT DecompressArchives(
67baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    CCodecs *codecs, const CIntVector &formatIndices,
68baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    UStringVector &archivePaths, UStringVector &archivePathsFull,
69baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    const NWildcard::CCensorNode &wildcardCensor,
70baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    const CExtractOptions &options,
71baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    IOpenCallbackUI *openCallback,
72baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    IExtractCallbackUI *extractCallback,
73baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    UString &errorMessage,
74baa3858d3f5d128a5c8466b700098109edcad5f2repo sync    CDecompressStat &stat);
75baa3858d3f5d128a5c8466b700098109edcad5f2repo sync
76baa3858d3f5d128a5c8466b700098109edcad5f2repo sync#endif
77