xref: /aosp_15_r20/external/lzma/CPP/7zip/UI/Common/CompressCall2.cpp (revision f6dc9357d832569d4d1f5d24eacdb3935a1ae8e6)
1*f6dc9357SAndroid Build Coastguard Worker // CompressCall2.cpp
2*f6dc9357SAndroid Build Coastguard Worker 
3*f6dc9357SAndroid Build Coastguard Worker #include "StdAfx.h"
4*f6dc9357SAndroid Build Coastguard Worker 
5*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_EXTERNAL_CODECS
6*f6dc9357SAndroid Build Coastguard Worker 
7*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyException.h"
8*f6dc9357SAndroid Build Coastguard Worker 
9*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/Common/EnumDirItems.h"
10*f6dc9357SAndroid Build Coastguard Worker 
11*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/FileManager/LangUtils.h"
12*f6dc9357SAndroid Build Coastguard Worker 
13*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/GUI/BenchmarkDialog.h"
14*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/GUI/ExtractGUI.h"
15*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/GUI/UpdateGUI.h"
16*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/GUI/HashGUI.h"
17*f6dc9357SAndroid Build Coastguard Worker 
18*f6dc9357SAndroid Build Coastguard Worker #include "../../UI/GUI/ExtractRes.h"
19*f6dc9357SAndroid Build Coastguard Worker 
20*f6dc9357SAndroid Build Coastguard Worker #include "CompressCall.h"
21*f6dc9357SAndroid Build Coastguard Worker 
22*f6dc9357SAndroid Build Coastguard Worker extern HWND g_HWND;
23*f6dc9357SAndroid Build Coastguard Worker 
24*f6dc9357SAndroid Build Coastguard Worker #define MY_TRY_BEGIN  HRESULT result; try {
25*f6dc9357SAndroid Build Coastguard Worker #define MY_TRY_FINISH } \
26*f6dc9357SAndroid Build Coastguard Worker   catch(CSystemException &e) { result = e.ErrorCode; } \
27*f6dc9357SAndroid Build Coastguard Worker   catch(UString &s) { ErrorMessage(s); result = E_FAIL; } \
28*f6dc9357SAndroid Build Coastguard Worker   catch(...) { result = E_FAIL; } \
29*f6dc9357SAndroid Build Coastguard Worker   if (result != S_OK && result != E_ABORT) \
30*f6dc9357SAndroid Build Coastguard Worker     ErrorMessageHRESULT(result);
31*f6dc9357SAndroid Build Coastguard Worker 
ThrowException_if_Error(HRESULT res)32*f6dc9357SAndroid Build Coastguard Worker static void ThrowException_if_Error(HRESULT res)
33*f6dc9357SAndroid Build Coastguard Worker {
34*f6dc9357SAndroid Build Coastguard Worker   if (res != S_OK)
35*f6dc9357SAndroid Build Coastguard Worker     throw CSystemException(res);
36*f6dc9357SAndroid Build Coastguard Worker }
37*f6dc9357SAndroid Build Coastguard Worker 
38*f6dc9357SAndroid Build Coastguard Worker #ifdef Z7_EXTERNAL_CODECS
39*f6dc9357SAndroid Build Coastguard Worker 
40*f6dc9357SAndroid Build Coastguard Worker #define CREATE_CODECS \
41*f6dc9357SAndroid Build Coastguard Worker   CCodecs *codecs = new CCodecs; \
42*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr<ICompressCodecsInfo> compressCodecsInfo = codecs; \
43*f6dc9357SAndroid Build Coastguard Worker   ThrowException_if_Error(codecs->Load()); \
44*f6dc9357SAndroid Build Coastguard Worker   Codecs_AddHashArcHandler(codecs);
45*f6dc9357SAndroid Build Coastguard Worker 
46*f6dc9357SAndroid Build Coastguard Worker #define LOAD_EXTERNAL_CODECS \
47*f6dc9357SAndroid Build Coastguard Worker     CExternalCodecs _externalCodecs; \
48*f6dc9357SAndroid Build Coastguard Worker     _externalCodecs.GetCodecs = codecs; \
49*f6dc9357SAndroid Build Coastguard Worker     _externalCodecs.GetHashers = codecs; \
50*f6dc9357SAndroid Build Coastguard Worker     ThrowException_if_Error(_externalCodecs.Load());
51*f6dc9357SAndroid Build Coastguard Worker 
52*f6dc9357SAndroid Build Coastguard Worker #else
53*f6dc9357SAndroid Build Coastguard Worker 
54*f6dc9357SAndroid Build Coastguard Worker #define CREATE_CODECS \
55*f6dc9357SAndroid Build Coastguard Worker   CCodecs *codecs = new CCodecs; \
56*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr<IUnknown> compressCodecsInfo = codecs; \
57*f6dc9357SAndroid Build Coastguard Worker   ThrowException_if_Error(codecs->Load()); \
58*f6dc9357SAndroid Build Coastguard Worker   Codecs_AddHashArcHandler(codecs);
59*f6dc9357SAndroid Build Coastguard Worker 
60*f6dc9357SAndroid Build Coastguard Worker #define LOAD_EXTERNAL_CODECS
61*f6dc9357SAndroid Build Coastguard Worker 
62*f6dc9357SAndroid Build Coastguard Worker #endif
63*f6dc9357SAndroid Build Coastguard Worker 
64*f6dc9357SAndroid Build Coastguard Worker 
65*f6dc9357SAndroid Build Coastguard Worker 
66*f6dc9357SAndroid Build Coastguard Worker 
GetQuotedString(const UString & s)67*f6dc9357SAndroid Build Coastguard Worker UString GetQuotedString(const UString &s)
68*f6dc9357SAndroid Build Coastguard Worker {
69*f6dc9357SAndroid Build Coastguard Worker   UString s2 ('\"');
70*f6dc9357SAndroid Build Coastguard Worker   s2 += s;
71*f6dc9357SAndroid Build Coastguard Worker   s2.Add_Char('\"');
72*f6dc9357SAndroid Build Coastguard Worker   return s2;
73*f6dc9357SAndroid Build Coastguard Worker }
74*f6dc9357SAndroid Build Coastguard Worker 
ErrorMessage(LPCWSTR message)75*f6dc9357SAndroid Build Coastguard Worker static void ErrorMessage(LPCWSTR message)
76*f6dc9357SAndroid Build Coastguard Worker {
77*f6dc9357SAndroid Build Coastguard Worker   MessageBoxW(g_HWND, message, L"7-Zip", MB_ICONERROR);
78*f6dc9357SAndroid Build Coastguard Worker }
79*f6dc9357SAndroid Build Coastguard Worker 
ErrorMessageHRESULT(HRESULT res)80*f6dc9357SAndroid Build Coastguard Worker static void ErrorMessageHRESULT(HRESULT res)
81*f6dc9357SAndroid Build Coastguard Worker {
82*f6dc9357SAndroid Build Coastguard Worker   ErrorMessage(HResultToMessage(res));
83*f6dc9357SAndroid Build Coastguard Worker }
84*f6dc9357SAndroid Build Coastguard Worker 
ErrorLangMessage(UINT resourceID)85*f6dc9357SAndroid Build Coastguard Worker static void ErrorLangMessage(UINT resourceID)
86*f6dc9357SAndroid Build Coastguard Worker {
87*f6dc9357SAndroid Build Coastguard Worker   ErrorMessage(LangString(resourceID));
88*f6dc9357SAndroid Build Coastguard Worker }
89*f6dc9357SAndroid Build Coastguard Worker 
CompressFiles(const UString & arcPathPrefix,const UString & arcName,const UString & arcType,bool addExtension,const UStringVector & names,bool email,bool showDialog,bool)90*f6dc9357SAndroid Build Coastguard Worker HRESULT CompressFiles(
91*f6dc9357SAndroid Build Coastguard Worker     const UString &arcPathPrefix,
92*f6dc9357SAndroid Build Coastguard Worker     const UString &arcName,
93*f6dc9357SAndroid Build Coastguard Worker     const UString &arcType,
94*f6dc9357SAndroid Build Coastguard Worker     bool addExtension,
95*f6dc9357SAndroid Build Coastguard Worker     const UStringVector &names,
96*f6dc9357SAndroid Build Coastguard Worker     bool email, bool showDialog, bool /* waitFinish */)
97*f6dc9357SAndroid Build Coastguard Worker {
98*f6dc9357SAndroid Build Coastguard Worker   MY_TRY_BEGIN
99*f6dc9357SAndroid Build Coastguard Worker 
100*f6dc9357SAndroid Build Coastguard Worker   CREATE_CODECS
101*f6dc9357SAndroid Build Coastguard Worker 
102*f6dc9357SAndroid Build Coastguard Worker   CUpdateCallbackGUI callback;
103*f6dc9357SAndroid Build Coastguard Worker 
104*f6dc9357SAndroid Build Coastguard Worker   callback.Init();
105*f6dc9357SAndroid Build Coastguard Worker 
106*f6dc9357SAndroid Build Coastguard Worker   CUpdateOptions uo;
107*f6dc9357SAndroid Build Coastguard Worker   uo.EMailMode = email;
108*f6dc9357SAndroid Build Coastguard Worker   uo.SetActionCommand_Add();
109*f6dc9357SAndroid Build Coastguard Worker 
110*f6dc9357SAndroid Build Coastguard Worker   uo.ArcNameMode = (addExtension ? k_ArcNameMode_Add : k_ArcNameMode_Exact);
111*f6dc9357SAndroid Build Coastguard Worker 
112*f6dc9357SAndroid Build Coastguard Worker   CObjectVector<COpenType> formatIndices;
113*f6dc9357SAndroid Build Coastguard Worker   if (!ParseOpenTypes(*codecs, arcType, formatIndices))
114*f6dc9357SAndroid Build Coastguard Worker   {
115*f6dc9357SAndroid Build Coastguard Worker     ErrorLangMessage(IDS_UNSUPPORTED_ARCHIVE_TYPE);
116*f6dc9357SAndroid Build Coastguard Worker     return E_FAIL;
117*f6dc9357SAndroid Build Coastguard Worker   }
118*f6dc9357SAndroid Build Coastguard Worker   const UString arcPath = arcPathPrefix + arcName;
119*f6dc9357SAndroid Build Coastguard Worker   if (!uo.InitFormatIndex(codecs, formatIndices, arcPath) ||
120*f6dc9357SAndroid Build Coastguard Worker       !uo.SetArcPath(codecs, arcPath))
121*f6dc9357SAndroid Build Coastguard Worker   {
122*f6dc9357SAndroid Build Coastguard Worker     ErrorLangMessage(IDS_UPDATE_NOT_SUPPORTED);
123*f6dc9357SAndroid Build Coastguard Worker     return E_FAIL;
124*f6dc9357SAndroid Build Coastguard Worker   }
125*f6dc9357SAndroid Build Coastguard Worker 
126*f6dc9357SAndroid Build Coastguard Worker   NWildcard::CCensor censor;
127*f6dc9357SAndroid Build Coastguard Worker   FOR_VECTOR (i, names)
128*f6dc9357SAndroid Build Coastguard Worker   {
129*f6dc9357SAndroid Build Coastguard Worker     censor.AddPreItem_NoWildcard(names[i]);
130*f6dc9357SAndroid Build Coastguard Worker   }
131*f6dc9357SAndroid Build Coastguard Worker 
132*f6dc9357SAndroid Build Coastguard Worker   bool messageWasDisplayed = false;
133*f6dc9357SAndroid Build Coastguard Worker 
134*f6dc9357SAndroid Build Coastguard Worker   result = UpdateGUI(codecs,
135*f6dc9357SAndroid Build Coastguard Worker       formatIndices, arcPath,
136*f6dc9357SAndroid Build Coastguard Worker       censor, uo, showDialog, messageWasDisplayed, &callback, g_HWND);
137*f6dc9357SAndroid Build Coastguard Worker 
138*f6dc9357SAndroid Build Coastguard Worker   if (result != S_OK)
139*f6dc9357SAndroid Build Coastguard Worker   {
140*f6dc9357SAndroid Build Coastguard Worker     if (result != E_ABORT && messageWasDisplayed)
141*f6dc9357SAndroid Build Coastguard Worker       return E_FAIL;
142*f6dc9357SAndroid Build Coastguard Worker     throw CSystemException(result);
143*f6dc9357SAndroid Build Coastguard Worker   }
144*f6dc9357SAndroid Build Coastguard Worker   if (callback.FailedFiles.Size() > 0)
145*f6dc9357SAndroid Build Coastguard Worker   {
146*f6dc9357SAndroid Build Coastguard Worker     if (!messageWasDisplayed)
147*f6dc9357SAndroid Build Coastguard Worker       throw CSystemException(E_FAIL);
148*f6dc9357SAndroid Build Coastguard Worker     return E_FAIL;
149*f6dc9357SAndroid Build Coastguard Worker   }
150*f6dc9357SAndroid Build Coastguard Worker 
151*f6dc9357SAndroid Build Coastguard Worker   MY_TRY_FINISH
152*f6dc9357SAndroid Build Coastguard Worker   return S_OK;
153*f6dc9357SAndroid Build Coastguard Worker }
154*f6dc9357SAndroid Build Coastguard Worker 
155*f6dc9357SAndroid Build Coastguard Worker 
ExtractGroupCommand(const UStringVector & arcPaths,bool showDialog,CExtractOptions & eo,const char * kType=NULL)156*f6dc9357SAndroid Build Coastguard Worker static HRESULT ExtractGroupCommand(const UStringVector &arcPaths,
157*f6dc9357SAndroid Build Coastguard Worker     bool showDialog, CExtractOptions &eo, const char *kType = NULL)
158*f6dc9357SAndroid Build Coastguard Worker {
159*f6dc9357SAndroid Build Coastguard Worker   MY_TRY_BEGIN
160*f6dc9357SAndroid Build Coastguard Worker 
161*f6dc9357SAndroid Build Coastguard Worker   CREATE_CODECS
162*f6dc9357SAndroid Build Coastguard Worker 
163*f6dc9357SAndroid Build Coastguard Worker   CExtractCallbackImp *ecs = new CExtractCallbackImp;
164*f6dc9357SAndroid Build Coastguard Worker   CMyComPtr<IFolderArchiveExtractCallback> extractCallback = ecs;
165*f6dc9357SAndroid Build Coastguard Worker 
166*f6dc9357SAndroid Build Coastguard Worker   ecs->Init();
167*f6dc9357SAndroid Build Coastguard Worker 
168*f6dc9357SAndroid Build Coastguard Worker   // eo.CalcCrc = options.CalcCrc;
169*f6dc9357SAndroid Build Coastguard Worker 
170*f6dc9357SAndroid Build Coastguard Worker   UStringVector arcPathsSorted;
171*f6dc9357SAndroid Build Coastguard Worker   UStringVector arcFullPathsSorted;
172*f6dc9357SAndroid Build Coastguard Worker   {
173*f6dc9357SAndroid Build Coastguard Worker     NWildcard::CCensor arcCensor;
174*f6dc9357SAndroid Build Coastguard Worker     FOR_VECTOR (i, arcPaths)
175*f6dc9357SAndroid Build Coastguard Worker     {
176*f6dc9357SAndroid Build Coastguard Worker       arcCensor.AddPreItem_NoWildcard(arcPaths[i]);
177*f6dc9357SAndroid Build Coastguard Worker     }
178*f6dc9357SAndroid Build Coastguard Worker     arcCensor.AddPathsToCensor(NWildcard::k_RelatPath);
179*f6dc9357SAndroid Build Coastguard Worker     CDirItemsStat st;
180*f6dc9357SAndroid Build Coastguard Worker     EnumerateDirItemsAndSort(arcCensor, NWildcard::k_RelatPath, UString(),
181*f6dc9357SAndroid Build Coastguard Worker         arcPathsSorted, arcFullPathsSorted,
182*f6dc9357SAndroid Build Coastguard Worker         st,
183*f6dc9357SAndroid Build Coastguard Worker         NULL // &scan: change it!!!!
184*f6dc9357SAndroid Build Coastguard Worker         );
185*f6dc9357SAndroid Build Coastguard Worker   }
186*f6dc9357SAndroid Build Coastguard Worker 
187*f6dc9357SAndroid Build Coastguard Worker   CObjectVector<COpenType> formatIndices;
188*f6dc9357SAndroid Build Coastguard Worker   if (kType)
189*f6dc9357SAndroid Build Coastguard Worker   {
190*f6dc9357SAndroid Build Coastguard Worker     if (!ParseOpenTypes(*codecs, UString(kType), formatIndices))
191*f6dc9357SAndroid Build Coastguard Worker     {
192*f6dc9357SAndroid Build Coastguard Worker       throw CSystemException(E_INVALIDARG);
193*f6dc9357SAndroid Build Coastguard Worker       // ErrorLangMessage(IDS_UNSUPPORTED_ARCHIVE_TYPE);
194*f6dc9357SAndroid Build Coastguard Worker       // return E_INVALIDARG;
195*f6dc9357SAndroid Build Coastguard Worker     }
196*f6dc9357SAndroid Build Coastguard Worker   }
197*f6dc9357SAndroid Build Coastguard Worker 
198*f6dc9357SAndroid Build Coastguard Worker   NWildcard::CCensor censor;
199*f6dc9357SAndroid Build Coastguard Worker   {
200*f6dc9357SAndroid Build Coastguard Worker     censor.AddPreItem_Wildcard();
201*f6dc9357SAndroid Build Coastguard Worker   }
202*f6dc9357SAndroid Build Coastguard Worker 
203*f6dc9357SAndroid Build Coastguard Worker   censor.AddPathsToCensor(NWildcard::k_RelatPath);
204*f6dc9357SAndroid Build Coastguard Worker 
205*f6dc9357SAndroid Build Coastguard Worker   bool messageWasDisplayed = false;
206*f6dc9357SAndroid Build Coastguard Worker 
207*f6dc9357SAndroid Build Coastguard Worker   ecs->MultiArcMode = (arcPathsSorted.Size() > 1);
208*f6dc9357SAndroid Build Coastguard Worker 
209*f6dc9357SAndroid Build Coastguard Worker   result = ExtractGUI(codecs,
210*f6dc9357SAndroid Build Coastguard Worker       formatIndices, CIntVector(),
211*f6dc9357SAndroid Build Coastguard Worker       arcPathsSorted, arcFullPathsSorted,
212*f6dc9357SAndroid Build Coastguard Worker       censor.Pairs.Front().Head, eo, NULL, showDialog, messageWasDisplayed, ecs, g_HWND);
213*f6dc9357SAndroid Build Coastguard Worker 
214*f6dc9357SAndroid Build Coastguard Worker   if (result != S_OK)
215*f6dc9357SAndroid Build Coastguard Worker   {
216*f6dc9357SAndroid Build Coastguard Worker     if (result != E_ABORT && messageWasDisplayed)
217*f6dc9357SAndroid Build Coastguard Worker       return E_FAIL;
218*f6dc9357SAndroid Build Coastguard Worker     throw CSystemException(result);
219*f6dc9357SAndroid Build Coastguard Worker   }
220*f6dc9357SAndroid Build Coastguard Worker   return ecs->IsOK() ? S_OK : E_FAIL;
221*f6dc9357SAndroid Build Coastguard Worker 
222*f6dc9357SAndroid Build Coastguard Worker   MY_TRY_FINISH
223*f6dc9357SAndroid Build Coastguard Worker   return result;
224*f6dc9357SAndroid Build Coastguard Worker }
225*f6dc9357SAndroid Build Coastguard Worker 
ExtractArchives(const UStringVector & arcPaths,const UString & outFolder,bool showDialog,bool elimDup,UInt32 writeZone)226*f6dc9357SAndroid Build Coastguard Worker void ExtractArchives(const UStringVector &arcPaths, const UString &outFolder,
227*f6dc9357SAndroid Build Coastguard Worker     bool showDialog, bool elimDup, UInt32 writeZone)
228*f6dc9357SAndroid Build Coastguard Worker {
229*f6dc9357SAndroid Build Coastguard Worker   CExtractOptions eo;
230*f6dc9357SAndroid Build Coastguard Worker   eo.OutputDir = us2fs(outFolder);
231*f6dc9357SAndroid Build Coastguard Worker   eo.TestMode = false;
232*f6dc9357SAndroid Build Coastguard Worker   eo.ElimDup.Val = elimDup;
233*f6dc9357SAndroid Build Coastguard Worker   eo.ElimDup.Def = elimDup;
234*f6dc9357SAndroid Build Coastguard Worker   if (writeZone != (UInt32)(Int32)-1)
235*f6dc9357SAndroid Build Coastguard Worker     eo.ZoneMode = (NExtract::NZoneIdMode::EEnum)writeZone;
236*f6dc9357SAndroid Build Coastguard Worker   ExtractGroupCommand(arcPaths, showDialog, eo);
237*f6dc9357SAndroid Build Coastguard Worker }
238*f6dc9357SAndroid Build Coastguard Worker 
TestArchives(const UStringVector & arcPaths,bool hashMode)239*f6dc9357SAndroid Build Coastguard Worker void TestArchives(const UStringVector &arcPaths, bool hashMode)
240*f6dc9357SAndroid Build Coastguard Worker {
241*f6dc9357SAndroid Build Coastguard Worker   CExtractOptions eo;
242*f6dc9357SAndroid Build Coastguard Worker   eo.TestMode = true;
243*f6dc9357SAndroid Build Coastguard Worker   ExtractGroupCommand(arcPaths,
244*f6dc9357SAndroid Build Coastguard Worker       true, // showDialog
245*f6dc9357SAndroid Build Coastguard Worker       eo,
246*f6dc9357SAndroid Build Coastguard Worker       hashMode ? "hash" : NULL);
247*f6dc9357SAndroid Build Coastguard Worker }
248*f6dc9357SAndroid Build Coastguard Worker 
CalcChecksum(const UStringVector & paths,const UString & methodName,const UString & arcPathPrefix,const UString & arcFileName)249*f6dc9357SAndroid Build Coastguard Worker void CalcChecksum(const UStringVector &paths,
250*f6dc9357SAndroid Build Coastguard Worker     const UString &methodName,
251*f6dc9357SAndroid Build Coastguard Worker     const UString &arcPathPrefix,
252*f6dc9357SAndroid Build Coastguard Worker     const UString &arcFileName)
253*f6dc9357SAndroid Build Coastguard Worker {
254*f6dc9357SAndroid Build Coastguard Worker   MY_TRY_BEGIN
255*f6dc9357SAndroid Build Coastguard Worker 
256*f6dc9357SAndroid Build Coastguard Worker   if (!arcFileName.IsEmpty())
257*f6dc9357SAndroid Build Coastguard Worker   {
258*f6dc9357SAndroid Build Coastguard Worker     CompressFiles(
259*f6dc9357SAndroid Build Coastguard Worker       arcPathPrefix,
260*f6dc9357SAndroid Build Coastguard Worker       arcFileName,
261*f6dc9357SAndroid Build Coastguard Worker       UString("hash"),
262*f6dc9357SAndroid Build Coastguard Worker       false, // addExtension,
263*f6dc9357SAndroid Build Coastguard Worker       paths,
264*f6dc9357SAndroid Build Coastguard Worker       false, // email,
265*f6dc9357SAndroid Build Coastguard Worker       false, // showDialog,
266*f6dc9357SAndroid Build Coastguard Worker       false  // waitFinish
267*f6dc9357SAndroid Build Coastguard Worker       );
268*f6dc9357SAndroid Build Coastguard Worker     return;
269*f6dc9357SAndroid Build Coastguard Worker   }
270*f6dc9357SAndroid Build Coastguard Worker 
271*f6dc9357SAndroid Build Coastguard Worker   CREATE_CODECS
272*f6dc9357SAndroid Build Coastguard Worker   LOAD_EXTERNAL_CODECS
273*f6dc9357SAndroid Build Coastguard Worker 
274*f6dc9357SAndroid Build Coastguard Worker   NWildcard::CCensor censor;
275*f6dc9357SAndroid Build Coastguard Worker   FOR_VECTOR (i, paths)
276*f6dc9357SAndroid Build Coastguard Worker   {
277*f6dc9357SAndroid Build Coastguard Worker     censor.AddPreItem_NoWildcard(paths[i]);
278*f6dc9357SAndroid Build Coastguard Worker   }
279*f6dc9357SAndroid Build Coastguard Worker 
280*f6dc9357SAndroid Build Coastguard Worker   censor.AddPathsToCensor(NWildcard::k_RelatPath);
281*f6dc9357SAndroid Build Coastguard Worker   bool messageWasDisplayed = false;
282*f6dc9357SAndroid Build Coastguard Worker 
283*f6dc9357SAndroid Build Coastguard Worker   CHashOptions options;
284*f6dc9357SAndroid Build Coastguard Worker   options.Methods.Add(methodName);
285*f6dc9357SAndroid Build Coastguard Worker 
286*f6dc9357SAndroid Build Coastguard Worker   /*
287*f6dc9357SAndroid Build Coastguard Worker   if (!arcFileName.IsEmpty())
288*f6dc9357SAndroid Build Coastguard Worker     options.HashFilePath = arcPathPrefix + arcFileName;
289*f6dc9357SAndroid Build Coastguard Worker   */
290*f6dc9357SAndroid Build Coastguard Worker 
291*f6dc9357SAndroid Build Coastguard Worker   result = HashCalcGUI(EXTERNAL_CODECS_VARS_L censor, options, messageWasDisplayed);
292*f6dc9357SAndroid Build Coastguard Worker   if (result != S_OK)
293*f6dc9357SAndroid Build Coastguard Worker   {
294*f6dc9357SAndroid Build Coastguard Worker     if (result != E_ABORT && messageWasDisplayed)
295*f6dc9357SAndroid Build Coastguard Worker       return; //  E_FAIL;
296*f6dc9357SAndroid Build Coastguard Worker     throw CSystemException(result);
297*f6dc9357SAndroid Build Coastguard Worker   }
298*f6dc9357SAndroid Build Coastguard Worker 
299*f6dc9357SAndroid Build Coastguard Worker   MY_TRY_FINISH
300*f6dc9357SAndroid Build Coastguard Worker   return; //  result;
301*f6dc9357SAndroid Build Coastguard Worker }
302*f6dc9357SAndroid Build Coastguard Worker 
Benchmark(bool totalMode)303*f6dc9357SAndroid Build Coastguard Worker void Benchmark(bool totalMode)
304*f6dc9357SAndroid Build Coastguard Worker {
305*f6dc9357SAndroid Build Coastguard Worker   MY_TRY_BEGIN
306*f6dc9357SAndroid Build Coastguard Worker 
307*f6dc9357SAndroid Build Coastguard Worker   CREATE_CODECS
308*f6dc9357SAndroid Build Coastguard Worker   LOAD_EXTERNAL_CODECS
309*f6dc9357SAndroid Build Coastguard Worker 
310*f6dc9357SAndroid Build Coastguard Worker   CObjectVector<CProperty> props;
311*f6dc9357SAndroid Build Coastguard Worker   if (totalMode)
312*f6dc9357SAndroid Build Coastguard Worker   {
313*f6dc9357SAndroid Build Coastguard Worker     CProperty prop;
314*f6dc9357SAndroid Build Coastguard Worker     prop.Name = "m";
315*f6dc9357SAndroid Build Coastguard Worker     prop.Value = "*";
316*f6dc9357SAndroid Build Coastguard Worker     props.Add(prop);
317*f6dc9357SAndroid Build Coastguard Worker   }
318*f6dc9357SAndroid Build Coastguard Worker   result = Benchmark(
319*f6dc9357SAndroid Build Coastguard Worker       EXTERNAL_CODECS_VARS_L
320*f6dc9357SAndroid Build Coastguard Worker       props,
321*f6dc9357SAndroid Build Coastguard Worker       k_NumBenchIterations_Default,
322*f6dc9357SAndroid Build Coastguard Worker       g_HWND);
323*f6dc9357SAndroid Build Coastguard Worker 
324*f6dc9357SAndroid Build Coastguard Worker   MY_TRY_FINISH
325*f6dc9357SAndroid Build Coastguard Worker }
326*f6dc9357SAndroid Build Coastguard Worker 
327*f6dc9357SAndroid Build Coastguard Worker #endif
328