1*f6dc9357SAndroid Build Coastguard Worker // UpdateCallbackFar.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_ST
6*f6dc9357SAndroid Build Coastguard Worker #include "../../../Windows/Synchronization.h"
7*f6dc9357SAndroid Build Coastguard Worker #endif
8*f6dc9357SAndroid Build Coastguard Worker
9*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/StringConvert.h"
10*f6dc9357SAndroid Build Coastguard Worker
11*f6dc9357SAndroid Build Coastguard Worker #include "FarUtils.h"
12*f6dc9357SAndroid Build Coastguard Worker #include "UpdateCallbackFar.h"
13*f6dc9357SAndroid Build Coastguard Worker
14*f6dc9357SAndroid Build Coastguard Worker using namespace NWindows;
15*f6dc9357SAndroid Build Coastguard Worker using namespace NFar;
16*f6dc9357SAndroid Build Coastguard Worker
17*f6dc9357SAndroid Build Coastguard Worker #ifndef Z7_ST
18*f6dc9357SAndroid Build Coastguard Worker static NSynchronization::CCriticalSection g_CriticalSection;
19*f6dc9357SAndroid Build Coastguard Worker #define MT_LOCK NSynchronization::CCriticalSectionLock lock(g_CriticalSection);
20*f6dc9357SAndroid Build Coastguard Worker #else
21*f6dc9357SAndroid Build Coastguard Worker #define MT_LOCK
22*f6dc9357SAndroid Build Coastguard Worker #endif
23*f6dc9357SAndroid Build Coastguard Worker
CheckBreak2()24*f6dc9357SAndroid Build Coastguard Worker static HRESULT CheckBreak2()
25*f6dc9357SAndroid Build Coastguard Worker {
26*f6dc9357SAndroid Build Coastguard Worker return WasEscPressed() ? E_ABORT : S_OK;
27*f6dc9357SAndroid Build Coastguard Worker }
28*f6dc9357SAndroid Build Coastguard Worker
29*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::ScanProgress (UInt64 numFolders,UInt64 numFiles,UInt64 totalSize,const wchar_t * path,Int32))30*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::ScanProgress(UInt64 numFolders, UInt64 numFiles, UInt64 totalSize, const wchar_t *path, Int32 /* isDir */))
31*f6dc9357SAndroid Build Coastguard Worker {
32*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
33*f6dc9357SAndroid Build Coastguard Worker
34*f6dc9357SAndroid Build Coastguard Worker if (_percent)
35*f6dc9357SAndroid Build Coastguard Worker {
36*f6dc9357SAndroid Build Coastguard Worker _percent->FilesTotal = numFolders + numFiles;
37*f6dc9357SAndroid Build Coastguard Worker _percent->Total = totalSize;
38*f6dc9357SAndroid Build Coastguard Worker _percent->Command = "Scanning";
39*f6dc9357SAndroid Build Coastguard Worker _percent->FileName = path;
40*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
41*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
42*f6dc9357SAndroid Build Coastguard Worker }
43*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
44*f6dc9357SAndroid Build Coastguard Worker }
45*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::ScanError (const wchar_t * path,HRESULT errorCode))46*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::ScanError(const wchar_t *path, HRESULT errorCode))
47*f6dc9357SAndroid Build Coastguard Worker {
48*f6dc9357SAndroid Build Coastguard Worker if (ShowSysErrorMessage(errorCode, path) == -1)
49*f6dc9357SAndroid Build Coastguard Worker return E_ABORT;
50*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
51*f6dc9357SAndroid Build Coastguard Worker }
52*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::SetNumFiles (UInt64 numFiles))53*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::SetNumFiles(UInt64 numFiles))
54*f6dc9357SAndroid Build Coastguard Worker {
55*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
56*f6dc9357SAndroid Build Coastguard Worker
57*f6dc9357SAndroid Build Coastguard Worker if (_percent)
58*f6dc9357SAndroid Build Coastguard Worker {
59*f6dc9357SAndroid Build Coastguard Worker _percent->FilesTotal = numFiles;
60*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
61*f6dc9357SAndroid Build Coastguard Worker }
62*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
63*f6dc9357SAndroid Build Coastguard Worker }
64*f6dc9357SAndroid Build Coastguard Worker
65*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::SetTotal (const UInt64 *,const UInt64 *))66*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::SetTotal(const UInt64 * /* files */, const UInt64 * /* bytes */))
67*f6dc9357SAndroid Build Coastguard Worker {
68*f6dc9357SAndroid Build Coastguard Worker return S_OK;
69*f6dc9357SAndroid Build Coastguard Worker }
70*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::SetCompleted (const UInt64 *,const UInt64 *))71*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::SetCompleted(const UInt64 * /* files */, const UInt64 * /* bytes */))
72*f6dc9357SAndroid Build Coastguard Worker {
73*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
74*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
75*f6dc9357SAndroid Build Coastguard Worker }
76*f6dc9357SAndroid Build Coastguard Worker
77*f6dc9357SAndroid Build Coastguard Worker
78*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::SetTotal (UInt64 size))79*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::SetTotal(UInt64 size))
80*f6dc9357SAndroid Build Coastguard Worker {
81*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
82*f6dc9357SAndroid Build Coastguard Worker
83*f6dc9357SAndroid Build Coastguard Worker if (_percent)
84*f6dc9357SAndroid Build Coastguard Worker {
85*f6dc9357SAndroid Build Coastguard Worker _percent->Total = size;
86*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
87*f6dc9357SAndroid Build Coastguard Worker }
88*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
89*f6dc9357SAndroid Build Coastguard Worker }
90*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::SetCompleted (const UInt64 * completeValue))91*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::SetCompleted(const UInt64 *completeValue))
92*f6dc9357SAndroid Build Coastguard Worker {
93*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
94*f6dc9357SAndroid Build Coastguard Worker
95*f6dc9357SAndroid Build Coastguard Worker if (_percent)
96*f6dc9357SAndroid Build Coastguard Worker {
97*f6dc9357SAndroid Build Coastguard Worker if (completeValue)
98*f6dc9357SAndroid Build Coastguard Worker _percent->Completed = *completeValue;
99*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
100*f6dc9357SAndroid Build Coastguard Worker }
101*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
102*f6dc9357SAndroid Build Coastguard Worker }
103*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::CompressOperation (const wchar_t * name))104*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::CompressOperation(const wchar_t *name))
105*f6dc9357SAndroid Build Coastguard Worker {
106*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
107*f6dc9357SAndroid Build Coastguard Worker
108*f6dc9357SAndroid Build Coastguard Worker if (_percent)
109*f6dc9357SAndroid Build Coastguard Worker {
110*f6dc9357SAndroid Build Coastguard Worker _percent->Command = "Adding";
111*f6dc9357SAndroid Build Coastguard Worker _percent->FileName = name;
112*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
113*f6dc9357SAndroid Build Coastguard Worker }
114*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
115*f6dc9357SAndroid Build Coastguard Worker }
116*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::DeleteOperation (const wchar_t * name))117*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::DeleteOperation(const wchar_t *name))
118*f6dc9357SAndroid Build Coastguard Worker {
119*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
120*f6dc9357SAndroid Build Coastguard Worker
121*f6dc9357SAndroid Build Coastguard Worker if (_percent)
122*f6dc9357SAndroid Build Coastguard Worker {
123*f6dc9357SAndroid Build Coastguard Worker _percent->Command = "Deleting";
124*f6dc9357SAndroid Build Coastguard Worker _percent->FileName = name;
125*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
126*f6dc9357SAndroid Build Coastguard Worker }
127*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
128*f6dc9357SAndroid Build Coastguard Worker }
129*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::OperationResult (Int32))130*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::OperationResult(Int32 /* opRes */))
131*f6dc9357SAndroid Build Coastguard Worker {
132*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
133*f6dc9357SAndroid Build Coastguard Worker
134*f6dc9357SAndroid Build Coastguard Worker if (_percent)
135*f6dc9357SAndroid Build Coastguard Worker {
136*f6dc9357SAndroid Build Coastguard Worker _percent->Files++;
137*f6dc9357SAndroid Build Coastguard Worker }
138*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
139*f6dc9357SAndroid Build Coastguard Worker }
140*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::UpdateErrorMessage (const wchar_t * message))141*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::UpdateErrorMessage(const wchar_t *message))
142*f6dc9357SAndroid Build Coastguard Worker {
143*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
144*f6dc9357SAndroid Build Coastguard Worker
145*f6dc9357SAndroid Build Coastguard Worker if (g_StartupInfo.ShowErrorMessage(UnicodeStringToMultiByte(message, CP_OEMCP)) == -1)
146*f6dc9357SAndroid Build Coastguard Worker return E_ABORT;
147*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
148*f6dc9357SAndroid Build Coastguard Worker }
149*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::OpenFileError (const wchar_t * path,HRESULT errorCode))150*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::OpenFileError(const wchar_t *path, HRESULT errorCode))
151*f6dc9357SAndroid Build Coastguard Worker {
152*f6dc9357SAndroid Build Coastguard Worker if (ShowSysErrorMessage(errorCode, path) == -1)
153*f6dc9357SAndroid Build Coastguard Worker return E_ABORT;
154*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
155*f6dc9357SAndroid Build Coastguard Worker }
156*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::ReadingFileError (const wchar_t * path,HRESULT errorCode))157*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::ReadingFileError(const wchar_t *path, HRESULT errorCode))
158*f6dc9357SAndroid Build Coastguard Worker {
159*f6dc9357SAndroid Build Coastguard Worker if (ShowSysErrorMessage(errorCode, path) == -1)
160*f6dc9357SAndroid Build Coastguard Worker return E_ABORT;
161*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
162*f6dc9357SAndroid Build Coastguard Worker }
163*f6dc9357SAndroid Build Coastguard Worker
164*f6dc9357SAndroid Build Coastguard Worker void SetExtractErrorMessage(Int32 opRes, Int32 encrypted, AString &s);
165*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::ReportExtractResult (Int32 opRes,Int32 isEncrypted,const wchar_t * name))166*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::ReportExtractResult(Int32 opRes, Int32 isEncrypted, const wchar_t *name))
167*f6dc9357SAndroid Build Coastguard Worker {
168*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
169*f6dc9357SAndroid Build Coastguard Worker
170*f6dc9357SAndroid Build Coastguard Worker if (opRes != NArchive::NExtract::NOperationResult::kOK)
171*f6dc9357SAndroid Build Coastguard Worker {
172*f6dc9357SAndroid Build Coastguard Worker AString s;
173*f6dc9357SAndroid Build Coastguard Worker SetExtractErrorMessage(opRes, isEncrypted, s);
174*f6dc9357SAndroid Build Coastguard Worker if (PrintErrorMessage(s, name) == -1)
175*f6dc9357SAndroid Build Coastguard Worker return E_ABORT;
176*f6dc9357SAndroid Build Coastguard Worker }
177*f6dc9357SAndroid Build Coastguard Worker
178*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
179*f6dc9357SAndroid Build Coastguard Worker }
180*f6dc9357SAndroid Build Coastguard Worker
181*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::ReportUpdateOperation (UInt32 op,const wchar_t * name,Int32))182*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::ReportUpdateOperation(UInt32 op, const wchar_t *name, Int32 /* isDir */))
183*f6dc9357SAndroid Build Coastguard Worker {
184*f6dc9357SAndroid Build Coastguard Worker const char *s;
185*f6dc9357SAndroid Build Coastguard Worker switch (op)
186*f6dc9357SAndroid Build Coastguard Worker {
187*f6dc9357SAndroid Build Coastguard Worker case NUpdateNotifyOp::kAdd: s = "Adding"; break;
188*f6dc9357SAndroid Build Coastguard Worker case NUpdateNotifyOp::kUpdate: s = "Updating"; break;
189*f6dc9357SAndroid Build Coastguard Worker case NUpdateNotifyOp::kAnalyze: s = "Analyzing"; break;
190*f6dc9357SAndroid Build Coastguard Worker case NUpdateNotifyOp::kReplicate: s = "Replicating"; break;
191*f6dc9357SAndroid Build Coastguard Worker case NUpdateNotifyOp::kRepack: s = "Repacking"; break;
192*f6dc9357SAndroid Build Coastguard Worker case NUpdateNotifyOp::kSkip: s = "Skipping"; break;
193*f6dc9357SAndroid Build Coastguard Worker case NUpdateNotifyOp::kHeader: s = "Header creating"; break;
194*f6dc9357SAndroid Build Coastguard Worker case NUpdateNotifyOp::kDelete: s = "Deleting"; break;
195*f6dc9357SAndroid Build Coastguard Worker default: s = "Unknown operation";
196*f6dc9357SAndroid Build Coastguard Worker }
197*f6dc9357SAndroid Build Coastguard Worker
198*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
199*f6dc9357SAndroid Build Coastguard Worker
200*f6dc9357SAndroid Build Coastguard Worker if (_percent)
201*f6dc9357SAndroid Build Coastguard Worker {
202*f6dc9357SAndroid Build Coastguard Worker _percent->Command = s;
203*f6dc9357SAndroid Build Coastguard Worker _percent->FileName.Empty();
204*f6dc9357SAndroid Build Coastguard Worker if (name)
205*f6dc9357SAndroid Build Coastguard Worker _percent->FileName = name;
206*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
207*f6dc9357SAndroid Build Coastguard Worker }
208*f6dc9357SAndroid Build Coastguard Worker
209*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
210*f6dc9357SAndroid Build Coastguard Worker }
211*f6dc9357SAndroid Build Coastguard Worker
212*f6dc9357SAndroid Build Coastguard Worker
MoveArc_UpdateStatus()213*f6dc9357SAndroid Build Coastguard Worker HRESULT CUpdateCallback100Imp::MoveArc_UpdateStatus()
214*f6dc9357SAndroid Build Coastguard Worker {
215*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
216*f6dc9357SAndroid Build Coastguard Worker
217*f6dc9357SAndroid Build Coastguard Worker if (_percent)
218*f6dc9357SAndroid Build Coastguard Worker {
219*f6dc9357SAndroid Build Coastguard Worker AString s;
220*f6dc9357SAndroid Build Coastguard Worker s.Add_UInt64(_arcMoving_percents);
221*f6dc9357SAndroid Build Coastguard Worker // status.Add_Space();
222*f6dc9357SAndroid Build Coastguard Worker s.Add_Char('%');
223*f6dc9357SAndroid Build Coastguard Worker const bool totalDefined = (_arcMoving_total != 0 && _arcMoving_total != (UInt64)(Int64)-1);
224*f6dc9357SAndroid Build Coastguard Worker if (_arcMoving_current != 0 || totalDefined)
225*f6dc9357SAndroid Build Coastguard Worker {
226*f6dc9357SAndroid Build Coastguard Worker s += " : ";
227*f6dc9357SAndroid Build Coastguard Worker s.Add_UInt64(_arcMoving_current >> 20);
228*f6dc9357SAndroid Build Coastguard Worker s += " MiB";
229*f6dc9357SAndroid Build Coastguard Worker }
230*f6dc9357SAndroid Build Coastguard Worker if (totalDefined)
231*f6dc9357SAndroid Build Coastguard Worker {
232*f6dc9357SAndroid Build Coastguard Worker s += " / ";
233*f6dc9357SAndroid Build Coastguard Worker s.Add_UInt64((_arcMoving_total + ((1 << 20) - 1)) >> 20);
234*f6dc9357SAndroid Build Coastguard Worker s += " MiB";
235*f6dc9357SAndroid Build Coastguard Worker }
236*f6dc9357SAndroid Build Coastguard Worker s += " : temporary archive moving ...";
237*f6dc9357SAndroid Build Coastguard Worker _percent->Command = s;
238*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
239*f6dc9357SAndroid Build Coastguard Worker }
240*f6dc9357SAndroid Build Coastguard Worker
241*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
242*f6dc9357SAndroid Build Coastguard Worker }
243*f6dc9357SAndroid Build Coastguard Worker
244*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::MoveArc_Start (const wchar_t * srcTempPath,const wchar_t *,UInt64 size,Int32))245*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::MoveArc_Start(const wchar_t *srcTempPath, const wchar_t * /* destFinalPath */ , UInt64 size, Int32 /* updateMode */))
246*f6dc9357SAndroid Build Coastguard Worker {
247*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
248*f6dc9357SAndroid Build Coastguard Worker
249*f6dc9357SAndroid Build Coastguard Worker _arcMoving_total = size;
250*f6dc9357SAndroid Build Coastguard Worker _arcMoving_current = 0;
251*f6dc9357SAndroid Build Coastguard Worker _arcMoving_percents = 0;
252*f6dc9357SAndroid Build Coastguard Worker // _arcMoving_updateMode = updateMode;
253*f6dc9357SAndroid Build Coastguard Worker // _name2 = fs2us(destFinalPath);
254*f6dc9357SAndroid Build Coastguard Worker if (_percent)
255*f6dc9357SAndroid Build Coastguard Worker _percent->FileName = srcTempPath;
256*f6dc9357SAndroid Build Coastguard Worker return MoveArc_UpdateStatus();
257*f6dc9357SAndroid Build Coastguard Worker }
258*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::MoveArc_Progress (UInt64 totalSize,UInt64 currentSize))259*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::MoveArc_Progress(UInt64 totalSize, UInt64 currentSize))
260*f6dc9357SAndroid Build Coastguard Worker {
261*f6dc9357SAndroid Build Coastguard Worker UInt64 percents = 0;
262*f6dc9357SAndroid Build Coastguard Worker if (totalSize != 0)
263*f6dc9357SAndroid Build Coastguard Worker {
264*f6dc9357SAndroid Build Coastguard Worker if (totalSize < ((UInt64)1 << 57))
265*f6dc9357SAndroid Build Coastguard Worker percents = currentSize * 100 / totalSize;
266*f6dc9357SAndroid Build Coastguard Worker else
267*f6dc9357SAndroid Build Coastguard Worker percents = currentSize / (totalSize / 100);
268*f6dc9357SAndroid Build Coastguard Worker }
269*f6dc9357SAndroid Build Coastguard Worker
270*f6dc9357SAndroid Build Coastguard Worker #ifdef _WIN32
271*f6dc9357SAndroid Build Coastguard Worker // Sleep(300); // for debug
272*f6dc9357SAndroid Build Coastguard Worker #endif
273*f6dc9357SAndroid Build Coastguard Worker if (percents == _arcMoving_percents)
274*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
275*f6dc9357SAndroid Build Coastguard Worker _arcMoving_total = totalSize;
276*f6dc9357SAndroid Build Coastguard Worker _arcMoving_current = currentSize;
277*f6dc9357SAndroid Build Coastguard Worker _arcMoving_percents = percents;
278*f6dc9357SAndroid Build Coastguard Worker // if (_arcMoving_percents > 100) return E_FAIL;
279*f6dc9357SAndroid Build Coastguard Worker return MoveArc_UpdateStatus();
280*f6dc9357SAndroid Build Coastguard Worker }
281*f6dc9357SAndroid Build Coastguard Worker
282*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::MoveArc_Finish ())283*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::MoveArc_Finish())
284*f6dc9357SAndroid Build Coastguard Worker {
285*f6dc9357SAndroid Build Coastguard Worker // _arcMoving_percents = 0;
286*f6dc9357SAndroid Build Coastguard Worker if (_percent)
287*f6dc9357SAndroid Build Coastguard Worker {
288*f6dc9357SAndroid Build Coastguard Worker _percent->Command.Empty();
289*f6dc9357SAndroid Build Coastguard Worker _percent->FileName.Empty();
290*f6dc9357SAndroid Build Coastguard Worker _percent->Print();
291*f6dc9357SAndroid Build Coastguard Worker }
292*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
293*f6dc9357SAndroid Build Coastguard Worker }
294*f6dc9357SAndroid Build Coastguard Worker
295*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::Before_ArcReopen ())296*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::Before_ArcReopen())
297*f6dc9357SAndroid Build Coastguard Worker {
298*f6dc9357SAndroid Build Coastguard Worker // fixme: we can use Clear_Stop_Status() here
299*f6dc9357SAndroid Build Coastguard Worker return CheckBreak2();
300*f6dc9357SAndroid Build Coastguard Worker }
301*f6dc9357SAndroid Build Coastguard Worker
302*f6dc9357SAndroid Build Coastguard Worker
303*f6dc9357SAndroid Build Coastguard Worker extern HRESULT GetPassword(UString &password);
304*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::CryptoGetTextPassword (BSTR * password))305*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::CryptoGetTextPassword(BSTR *password))
306*f6dc9357SAndroid Build Coastguard Worker {
307*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
308*f6dc9357SAndroid Build Coastguard Worker
309*f6dc9357SAndroid Build Coastguard Worker *password = NULL;
310*f6dc9357SAndroid Build Coastguard Worker if (!PasswordIsDefined)
311*f6dc9357SAndroid Build Coastguard Worker {
312*f6dc9357SAndroid Build Coastguard Worker RINOK(GetPassword(Password))
313*f6dc9357SAndroid Build Coastguard Worker PasswordIsDefined = true;
314*f6dc9357SAndroid Build Coastguard Worker }
315*f6dc9357SAndroid Build Coastguard Worker return StringToBstr(Password, password);
316*f6dc9357SAndroid Build Coastguard Worker }
317*f6dc9357SAndroid Build Coastguard Worker
Z7_COM7F_IMF(CUpdateCallback100Imp::CryptoGetTextPassword2 (Int32 * passwordIsDefined,BSTR * password))318*f6dc9357SAndroid Build Coastguard Worker Z7_COM7F_IMF(CUpdateCallback100Imp::CryptoGetTextPassword2(Int32 *passwordIsDefined, BSTR *password))
319*f6dc9357SAndroid Build Coastguard Worker {
320*f6dc9357SAndroid Build Coastguard Worker MT_LOCK
321*f6dc9357SAndroid Build Coastguard Worker
322*f6dc9357SAndroid Build Coastguard Worker *password = NULL;
323*f6dc9357SAndroid Build Coastguard Worker *passwordIsDefined = BoolToInt(PasswordIsDefined);
324*f6dc9357SAndroid Build Coastguard Worker if (!PasswordIsDefined)
325*f6dc9357SAndroid Build Coastguard Worker return S_OK;
326*f6dc9357SAndroid Build Coastguard Worker return StringToBstr(Password, password);
327*f6dc9357SAndroid Build Coastguard Worker }
328