Statistiques
| Révision :

root / tmp / org.txm.setups / nsis / Include / FileFunc.nsh @ 1610

Historique | Voir | Annoter | Télécharger (39,57 ko)

1 728 mdecorde
/*
2 728 mdecorde
_____________________________________________________________________________
3 728 mdecorde
4 728 mdecorde
                       File Functions Header v3.4
5 728 mdecorde
_____________________________________________________________________________
6 728 mdecorde
7 728 mdecorde
 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
8 728 mdecorde
9 728 mdecorde
 See documentation for more information about the following functions.
10 728 mdecorde
11 728 mdecorde
 Usage in script:
12 728 mdecorde
 1. !include "FileFunc.nsh"
13 728 mdecorde
 2. [Section|Function]
14 728 mdecorde
      ${FileFunction} "Param1" "Param2" "..." $var
15 728 mdecorde
    [SectionEnd|FunctionEnd]
16 728 mdecorde
17 728 mdecorde
18 728 mdecorde
 FileFunction=[Locate|GetSize|DriveSpace|GetDrives|GetTime|GetFileAttributes|
19 728 mdecorde
               GetFileVersion|GetExeName|GetExePath|GetParameters|GetOptions|
20 728 mdecorde
               GetOptionsS|GetRoot|GetParent|GetFileName|GetBaseName|GetFileExt|
21 728 mdecorde
               BannerTrimPath|DirState|RefreshShellIcons]
22 728 mdecorde
23 728 mdecorde
_____________________________________________________________________________
24 728 mdecorde
25 728 mdecorde
                       Thanks to:
26 728 mdecorde
_____________________________________________________________________________
27 728 mdecorde
28 728 mdecorde
GetSize
29 728 mdecorde
	KiCHiK (Function "FindFiles")
30 728 mdecorde
DriveSpace
31 728 mdecorde
	sunjammer (Function "CheckSpaceFree")
32 728 mdecorde
GetDrives
33 728 mdecorde
	deguix (Based on his idea of Function "DetectDrives")
34 728 mdecorde
GetTime
35 728 mdecorde
	Takhir (Script "StatTest") and deguix (Function "FileModifiedDate")
36 728 mdecorde
GetFileVersion
37 728 mdecorde
	KiCHiK (Based on his example for command "GetDLLVersion")
38 728 mdecorde
GetParameters
39 728 mdecorde
	sunjammer (Based on his Function "GetParameters")
40 728 mdecorde
GetRoot
41 728 mdecorde
	KiCHiK (Based on his Function "GetRoot")
42 728 mdecorde
GetParent
43 728 mdecorde
	sunjammer (Based on his Function "GetParent")
44 728 mdecorde
GetFileName
45 728 mdecorde
	KiCHiK (Based on his Function "GetFileName")
46 728 mdecorde
GetBaseName
47 728 mdecorde
	comperio (Based on his idea of Function "GetBaseName")
48 728 mdecorde
GetFileExt
49 728 mdecorde
	opher (author)
50 728 mdecorde
RefreshShellIcons
51 728 mdecorde
	jerome tremblay (author)
52 728 mdecorde
*/
53 728 mdecorde
54 728 mdecorde
55 728 mdecorde
;_____________________________________________________________________________
56 728 mdecorde
;
57 728 mdecorde
;                         Macros
58 728 mdecorde
;_____________________________________________________________________________
59 728 mdecorde
;
60 728 mdecorde
; Change log window verbosity (default: 3=no script)
61 728 mdecorde
;
62 728 mdecorde
; Example:
63 728 mdecorde
; !include "FileFunc.nsh"
64 728 mdecorde
; !insertmacro Locate
65 728 mdecorde
; ${FILEFUNC_VERBOSE} 4   # all verbosity
66 728 mdecorde
; !insertmacro VersionCompare
67 728 mdecorde
; ${FILEFUNC_VERBOSE} 3   # no script
68 728 mdecorde
69 728 mdecorde
!ifndef FILEFUNC_INCLUDED
70 728 mdecorde
!define FILEFUNC_INCLUDED
71 728 mdecorde
72 728 mdecorde
!include Util.nsh
73 728 mdecorde
74 728 mdecorde
!verbose push
75 728 mdecorde
!verbose 3
76 728 mdecorde
!ifndef _FILEFUNC_VERBOSE
77 728 mdecorde
	!define _FILEFUNC_VERBOSE 3
78 728 mdecorde
!endif
79 728 mdecorde
!verbose ${_FILEFUNC_VERBOSE}
80 728 mdecorde
!define FILEFUNC_VERBOSE `!insertmacro FILEFUNC_VERBOSE`
81 728 mdecorde
!verbose pop
82 728 mdecorde
83 728 mdecorde
!macro FILEFUNC_VERBOSE _VERBOSE
84 728 mdecorde
	!verbose push
85 728 mdecorde
	!verbose 3
86 728 mdecorde
	!undef _FILEFUNC_VERBOSE
87 728 mdecorde
	!define _FILEFUNC_VERBOSE ${_VERBOSE}
88 728 mdecorde
	!verbose pop
89 728 mdecorde
!macroend
90 728 mdecorde
91 728 mdecorde
!macro LocateCall _PATH _OPTIONS _FUNC
92 728 mdecorde
	!verbose push
93 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
94 728 mdecorde
	Push $0
95 728 mdecorde
	Push `${_PATH}`
96 728 mdecorde
	Push `${_OPTIONS}`
97 728 mdecorde
	GetFunctionAddress $0 `${_FUNC}`
98 728 mdecorde
	Push `$0`
99 728 mdecorde
	${CallArtificialFunction} Locate_
100 728 mdecorde
	Pop $0
101 728 mdecorde
	!verbose pop
102 728 mdecorde
!macroend
103 728 mdecorde
104 728 mdecorde
!macro GetSizeCall _PATH _OPTIONS _RESULT1 _RESULT2 _RESULT3
105 728 mdecorde
	!verbose push
106 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
107 728 mdecorde
	Push `${_PATH}`
108 728 mdecorde
	Push `${_OPTIONS}`
109 728 mdecorde
	${CallArtificialFunction} GetSize_
110 728 mdecorde
	Pop ${_RESULT1}
111 728 mdecorde
	Pop ${_RESULT2}
112 728 mdecorde
	Pop ${_RESULT3}
113 728 mdecorde
	!verbose pop
114 728 mdecorde
!macroend
115 728 mdecorde
116 728 mdecorde
!macro DriveSpaceCall _DRIVE _OPTIONS _RESULT
117 728 mdecorde
	!verbose push
118 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
119 728 mdecorde
	Push `${_DRIVE}`
120 728 mdecorde
	Push `${_OPTIONS}`
121 728 mdecorde
	${CallArtificialFunction} DriveSpace_
122 728 mdecorde
	Pop ${_RESULT}
123 728 mdecorde
	!verbose pop
124 728 mdecorde
!macroend
125 728 mdecorde
126 728 mdecorde
!macro GetDrivesCall _DRV _FUNC
127 728 mdecorde
	!verbose push
128 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
129 728 mdecorde
	Push $0
130 728 mdecorde
	Push `${_DRV}`
131 728 mdecorde
	GetFunctionAddress $0 `${_FUNC}`
132 728 mdecorde
	Push `$0`
133 728 mdecorde
	${CallArtificialFunction} GetDrives_
134 728 mdecorde
	Pop $0
135 728 mdecorde
	!verbose pop
136 728 mdecorde
!macroend
137 728 mdecorde
138 728 mdecorde
!macro GetTimeCall _FILE _OPTION _RESULT1 _RESULT2 _RESULT3 _RESULT4 _RESULT5 _RESULT6 _RESULT7
139 728 mdecorde
	!verbose push
140 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
141 728 mdecorde
	Push `${_FILE}`
142 728 mdecorde
	Push `${_OPTION}`
143 728 mdecorde
	${CallArtificialFunction} GetTime_
144 728 mdecorde
	Pop ${_RESULT1}
145 728 mdecorde
	Pop ${_RESULT2}
146 728 mdecorde
	Pop ${_RESULT3}
147 728 mdecorde
	Pop ${_RESULT4}
148 728 mdecorde
	Pop ${_RESULT5}
149 728 mdecorde
	Pop ${_RESULT6}
150 728 mdecorde
	Pop ${_RESULT7}
151 728 mdecorde
	!verbose pop
152 728 mdecorde
!macroend
153 728 mdecorde
154 728 mdecorde
!macro GetFileAttributesCall _PATH _ATTR _RESULT
155 728 mdecorde
	!verbose push
156 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
157 728 mdecorde
	Push `${_PATH}`
158 728 mdecorde
	Push `${_ATTR}`
159 728 mdecorde
	${CallArtificialFunction} GetFileAttributes_
160 728 mdecorde
	Pop ${_RESULT}
161 728 mdecorde
	!verbose pop
162 728 mdecorde
!macroend
163 728 mdecorde
164 728 mdecorde
!macro GetFileVersionCall _FILE _RESULT
165 728 mdecorde
	!verbose push
166 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
167 728 mdecorde
	Push `${_FILE}`
168 728 mdecorde
	${CallArtificialFunction} GetFileVersion_
169 728 mdecorde
	Pop ${_RESULT}
170 728 mdecorde
	!verbose pop
171 728 mdecorde
!macroend
172 728 mdecorde
173 728 mdecorde
!macro GetExeNameCall _RESULT
174 728 mdecorde
	!verbose push
175 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
176 728 mdecorde
	${CallArtificialFunction} GetExeName_
177 728 mdecorde
	Pop ${_RESULT}
178 728 mdecorde
	!verbose pop
179 728 mdecorde
!macroend
180 728 mdecorde
181 728 mdecorde
!macro GetExePathCall _RESULT
182 728 mdecorde
	!verbose push
183 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
184 728 mdecorde
	${CallArtificialFunction} GetExePath_
185 728 mdecorde
	Pop ${_RESULT}
186 728 mdecorde
	!verbose pop
187 728 mdecorde
!macroend
188 728 mdecorde
189 728 mdecorde
!macro GetParametersCall _RESULT
190 728 mdecorde
	!verbose push
191 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
192 728 mdecorde
	${CallArtificialFunction} GetParameters_
193 728 mdecorde
	Pop ${_RESULT}
194 728 mdecorde
	!verbose pop
195 728 mdecorde
!macroend
196 728 mdecorde
197 728 mdecorde
!macro GetOptionsCall _PARAMETERS _OPTION _RESULT
198 728 mdecorde
	!verbose push
199 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
200 728 mdecorde
	Push `${_PARAMETERS}`
201 728 mdecorde
	Push `${_OPTION}`
202 728 mdecorde
	${CallArtificialFunction} GetOptions_
203 728 mdecorde
	Pop ${_RESULT}
204 728 mdecorde
	!verbose pop
205 728 mdecorde
!macroend
206 728 mdecorde
207 728 mdecorde
!macro GetOptionsSCall _PARAMETERS _OPTION _RESULT
208 728 mdecorde
	!verbose push
209 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
210 728 mdecorde
	Push `${_PARAMETERS}`
211 728 mdecorde
	Push `${_OPTION}`
212 728 mdecorde
	${CallArtificialFunction} GetOptionsS_
213 728 mdecorde
	Pop ${_RESULT}
214 728 mdecorde
	!verbose pop
215 728 mdecorde
!macroend
216 728 mdecorde
217 728 mdecorde
!macro GetRootCall _FULLPATH _RESULT
218 728 mdecorde
	!verbose push
219 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
220 728 mdecorde
	Push `${_FULLPATH}`
221 728 mdecorde
	${CallArtificialFunction} GetRoot_
222 728 mdecorde
	Pop ${_RESULT}
223 728 mdecorde
	!verbose pop
224 728 mdecorde
!macroend
225 728 mdecorde
226 728 mdecorde
!macro GetParentCall _PATHSTRING _RESULT
227 728 mdecorde
	!verbose push
228 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
229 728 mdecorde
	Push `${_PATHSTRING}`
230 728 mdecorde
	${CallArtificialFunction} GetParent_
231 728 mdecorde
	Pop ${_RESULT}
232 728 mdecorde
	!verbose pop
233 728 mdecorde
!macroend
234 728 mdecorde
235 728 mdecorde
!macro GetFileNameCall _PATHSTRING _RESULT
236 728 mdecorde
	!verbose push
237 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
238 728 mdecorde
	Push `${_PATHSTRING}`
239 728 mdecorde
	${CallArtificialFunction} GetFileName_
240 728 mdecorde
	Pop ${_RESULT}
241 728 mdecorde
	!verbose pop
242 728 mdecorde
!macroend
243 728 mdecorde
244 728 mdecorde
!macro GetBaseNameCall _FILESTRING _RESULT
245 728 mdecorde
	!verbose push
246 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
247 728 mdecorde
	Push `${_FILESTRING}`
248 728 mdecorde
	${CallArtificialFunction} GetBaseName_
249 728 mdecorde
	Pop ${_RESULT}
250 728 mdecorde
	!verbose pop
251 728 mdecorde
!macroend
252 728 mdecorde
253 728 mdecorde
!macro GetFileExtCall _FILESTRING _RESULT
254 728 mdecorde
	!verbose push
255 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
256 728 mdecorde
	Push `${_FILESTRING}`
257 728 mdecorde
	${CallArtificialFunction} GetFileExt_
258 728 mdecorde
	Pop ${_RESULT}
259 728 mdecorde
	!verbose pop
260 728 mdecorde
!macroend
261 728 mdecorde
262 728 mdecorde
!macro BannerTrimPathCall _PATH _LENGHT _RESULT
263 728 mdecorde
	!verbose push
264 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
265 728 mdecorde
	Push `${_PATH}`
266 728 mdecorde
	Push `${_LENGHT}`
267 728 mdecorde
	${CallArtificialFunction} BannerTrimPath_
268 728 mdecorde
	Pop ${_RESULT}
269 728 mdecorde
	!verbose pop
270 728 mdecorde
!macroend
271 728 mdecorde
272 728 mdecorde
!macro DirStateCall _PATH _RESULT
273 728 mdecorde
	!verbose push
274 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
275 728 mdecorde
	Push `${_PATH}`
276 728 mdecorde
	${CallArtificialFunction} DirState_
277 728 mdecorde
	Pop ${_RESULT}
278 728 mdecorde
	!verbose pop
279 728 mdecorde
!macroend
280 728 mdecorde
281 728 mdecorde
!macro RefreshShellIconsCall
282 728 mdecorde
	!verbose push
283 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
284 728 mdecorde
	${CallArtificialFunction} RefreshShellIcons_
285 728 mdecorde
	!verbose pop
286 728 mdecorde
!macroend
287 728 mdecorde
288 728 mdecorde
!define Locate `!insertmacro LocateCall`
289 728 mdecorde
!define un.Locate `!insertmacro LocateCall`
290 728 mdecorde
291 728 mdecorde
!macro Locate
292 728 mdecorde
!macroend
293 728 mdecorde
294 728 mdecorde
!macro un.Locate
295 728 mdecorde
!macroend
296 728 mdecorde
297 728 mdecorde
!macro Locate_
298 728 mdecorde
	!verbose push
299 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
300 728 mdecorde
301 728 mdecorde
	Exch $2
302 728 mdecorde
	Exch
303 728 mdecorde
	Exch $1
304 728 mdecorde
	Exch
305 728 mdecorde
	Exch 2
306 728 mdecorde
	Exch $0
307 728 mdecorde
	Exch 2
308 728 mdecorde
	Push $3
309 728 mdecorde
	Push $4
310 728 mdecorde
	Push $5
311 728 mdecorde
	Push $6
312 728 mdecorde
	Push $7
313 728 mdecorde
	Push $8
314 728 mdecorde
	Push $9
315 728 mdecorde
	Push $R6
316 728 mdecorde
	Push $R7
317 728 mdecorde
	Push $R8
318 728 mdecorde
	Push $R9
319 728 mdecorde
	ClearErrors
320 728 mdecorde
321 728 mdecorde
	StrCpy $3 ''
322 728 mdecorde
	StrCpy $4 ''
323 728 mdecorde
	StrCpy $5 ''
324 728 mdecorde
	StrCpy $6 ''
325 728 mdecorde
	StrCpy $7 ''
326 728 mdecorde
	StrCpy $8 0
327 728 mdecorde
	StrCpy $R7 ''
328 728 mdecorde
329 728 mdecorde
	StrCpy $R9 $0 1 -1
330 728 mdecorde
	StrCmp $R9 '\' 0 +3
331 728 mdecorde
	StrCpy $0 $0 -1
332 728 mdecorde
	goto -3
333 728 mdecorde
	IfFileExists '$0\*.*' 0 FileFunc_Locate_error
334 728 mdecorde
335 728 mdecorde
	FileFunc_Locate_option:
336 728 mdecorde
	StrCpy $R9 $1 1
337 728 mdecorde
	StrCpy $1 $1 '' 1
338 728 mdecorde
	StrCmp $R9 ' ' -2
339 728 mdecorde
	StrCmp $R9 '' FileFunc_Locate_sizeset
340 728 mdecorde
	StrCmp $R9 '/' 0 -4
341 728 mdecorde
	StrCpy $9 -1
342 728 mdecorde
	IntOp $9 $9 + 1
343 728 mdecorde
	StrCpy $R9 $1 1 $9
344 728 mdecorde
	StrCmp $R9 '' +2
345 728 mdecorde
	StrCmp $R9 '/' 0 -3
346 728 mdecorde
	StrCpy $R8 $1 $9
347 728 mdecorde
	StrCpy $R8 $R8 '' 2
348 728 mdecorde
	StrCpy $R9 $R8 '' -1
349 728 mdecorde
	StrCmp $R9 ' ' 0 +3
350 728 mdecorde
	StrCpy $R8 $R8 -1
351 728 mdecorde
	goto -3
352 728 mdecorde
	StrCpy $R9 $1 2
353 728 mdecorde
	StrCpy $1 $1 '' $9
354 728 mdecorde
355 728 mdecorde
	StrCmp $R9 'L=' 0 FileFunc_Locate_mask
356 728 mdecorde
	StrCpy $3 $R8
357 728 mdecorde
	StrCmp $3 '' +6
358 728 mdecorde
	StrCmp $3 'FD' +5
359 728 mdecorde
	StrCmp $3 'F' +4
360 728 mdecorde
	StrCmp $3 'D' +3
361 728 mdecorde
	StrCmp $3 'DE' +2
362 728 mdecorde
	StrCmp $3 'FDE' 0 FileFunc_Locate_error
363 728 mdecorde
	goto FileFunc_Locate_option
364 728 mdecorde
365 728 mdecorde
	FileFunc_Locate_mask:
366 728 mdecorde
	StrCmp $R9 'M=' 0 FileFunc_Locate_size
367 728 mdecorde
	StrCpy $4 $R8
368 728 mdecorde
	goto FileFunc_Locate_option
369 728 mdecorde
370 728 mdecorde
	FileFunc_Locate_size:
371 728 mdecorde
	StrCmp $R9 'S=' 0 FileFunc_Locate_gotosubdir
372 728 mdecorde
	StrCpy $6 $R8
373 728 mdecorde
	goto FileFunc_Locate_option
374 728 mdecorde
375 728 mdecorde
	FileFunc_Locate_gotosubdir:
376 728 mdecorde
	StrCmp $R9 'G=' 0 FileFunc_Locate_banner
377 728 mdecorde
	StrCpy $7 $R8
378 728 mdecorde
	StrCmp $7 '' +3
379 728 mdecorde
	StrCmp $7 '1' +2
380 728 mdecorde
	StrCmp $7 '0' 0 FileFunc_Locate_error
381 728 mdecorde
	goto FileFunc_Locate_option
382 728 mdecorde
383 728 mdecorde
	FileFunc_Locate_banner:
384 728 mdecorde
	StrCmp $R9 'B=' 0 FileFunc_Locate_error
385 728 mdecorde
	StrCpy $R7 $R8
386 728 mdecorde
	StrCmp $R7 '' +3
387 728 mdecorde
	StrCmp $R7 '1' +2
388 728 mdecorde
	StrCmp $R7 '0' 0 FileFunc_Locate_error
389 728 mdecorde
	goto FileFunc_Locate_option
390 728 mdecorde
391 728 mdecorde
	FileFunc_Locate_sizeset:
392 728 mdecorde
	StrCmp $6 '' FileFunc_Locate_default
393 728 mdecorde
	StrCpy $9 0
394 728 mdecorde
	StrCpy $R9 $6 1 $9
395 728 mdecorde
	StrCmp $R9 '' +4
396 728 mdecorde
	StrCmp $R9 ':' +3
397 728 mdecorde
	IntOp $9 $9 + 1
398 728 mdecorde
	goto -4
399 728 mdecorde
	StrCpy $5 $6 $9
400 728 mdecorde
	IntOp $9 $9 + 1
401 728 mdecorde
	StrCpy $1 $6 1 -1
402 728 mdecorde
	StrCpy $6 $6 -1 $9
403 728 mdecorde
	StrCmp $5 '' +2
404 728 mdecorde
	IntOp $5 $5 + 0
405 728 mdecorde
	StrCmp $6 '' +2
406 728 mdecorde
	IntOp $6 $6 + 0
407 728 mdecorde
408 728 mdecorde
	StrCmp $1 'B' 0 +3
409 728 mdecorde
	StrCpy $1 1
410 728 mdecorde
	goto FileFunc_Locate_default
411 728 mdecorde
	StrCmp $1 'K' 0 +3
412 728 mdecorde
	StrCpy $1 1024
413 728 mdecorde
	goto FileFunc_Locate_default
414 728 mdecorde
	StrCmp $1 'M' 0 +3
415 728 mdecorde
	StrCpy $1 1048576
416 728 mdecorde
	goto FileFunc_Locate_default
417 728 mdecorde
	StrCmp $1 'G' 0 FileFunc_Locate_error
418 728 mdecorde
	StrCpy $1 1073741824
419 728 mdecorde
420 728 mdecorde
	FileFunc_Locate_default:
421 728 mdecorde
	StrCmp $3 '' 0 +2
422 728 mdecorde
	StrCpy $3 'FD'
423 728 mdecorde
	StrCmp $4 '' 0 +2
424 728 mdecorde
	StrCpy $4 '*.*'
425 728 mdecorde
	StrCmp $7 '' 0 +2
426 728 mdecorde
	StrCpy $7 '1'
427 728 mdecorde
	StrCmp $R7 '' 0 +2
428 728 mdecorde
	StrCpy $R7 '0'
429 728 mdecorde
	StrCpy $7 'G$7B$R7'
430 728 mdecorde
431 728 mdecorde
	StrCpy $8 1
432 728 mdecorde
	Push $0
433 728 mdecorde
	SetDetailsPrint textonly
434 728 mdecorde
435 728 mdecorde
	FileFunc_Locate_nextdir:
436 728 mdecorde
	IntOp $8 $8 - 1
437 728 mdecorde
	Pop $R8
438 728 mdecorde
439 728 mdecorde
	StrCpy $9 $7 2 2
440 728 mdecorde
	StrCmp $9 'B0' +3
441 728 mdecorde
	GetLabelAddress $9 FileFunc_Locate_findfirst
442 728 mdecorde
	goto call
443 728 mdecorde
	DetailPrint 'Search in: $R8'
444 728 mdecorde
445 728 mdecorde
	FileFunc_Locate_findfirst:
446 728 mdecorde
	FindFirst $0 $R7 '$R8\$4'
447 728 mdecorde
	IfErrors FileFunc_Locate_subdir
448 728 mdecorde
	StrCmp $R7 '.' 0 FileFunc_Locate_dir
449 728 mdecorde
	FindNext $0 $R7
450 728 mdecorde
	StrCmp $R7 '..' 0 FileFunc_Locate_dir
451 728 mdecorde
	FindNext $0 $R7
452 728 mdecorde
	IfErrors 0 FileFunc_Locate_dir
453 728 mdecorde
	FindClose $0
454 728 mdecorde
	goto FileFunc_Locate_subdir
455 728 mdecorde
456 728 mdecorde
	FileFunc_Locate_dir:
457 728 mdecorde
	IfFileExists '$R8\$R7\*.*' 0 FileFunc_Locate_file
458 728 mdecorde
	StrCpy $R6 ''
459 728 mdecorde
	StrCmp $3 'DE' +4
460 728 mdecorde
	StrCmp $3 'FDE' +3
461 728 mdecorde
	StrCmp $3 'FD' FileFunc_Locate_precall
462 728 mdecorde
	StrCmp $3 'F' FileFunc_Locate_findnext FileFunc_Locate_precall
463 728 mdecorde
	FindFirst $9 $R9 '$R8\$R7\*.*'
464 728 mdecorde
	StrCmp $R9 '.' 0 +4
465 728 mdecorde
	FindNext $9 $R9
466 728 mdecorde
	StrCmp $R9 '..' 0 +2
467 728 mdecorde
	FindNext $9 $R9
468 728 mdecorde
	FindClose $9
469 728 mdecorde
	IfErrors FileFunc_Locate_precall FileFunc_Locate_findnext
470 728 mdecorde
471 728 mdecorde
	FileFunc_Locate_file:
472 728 mdecorde
	StrCmp $3 'FDE' +3
473 728 mdecorde
	StrCmp $3 'FD' +2
474 728 mdecorde
	StrCmp $3 'F' 0 FileFunc_Locate_findnext
475 728 mdecorde
	StrCpy $R6 0
476 728 mdecorde
	StrCmp $5$6 '' FileFunc_Locate_precall
477 728 mdecorde
	FileOpen $9 '$R8\$R7' r
478 728 mdecorde
	IfErrors +3
479 728 mdecorde
	FileSeek $9 0 END $R6
480 728 mdecorde
	FileClose $9
481 728 mdecorde
	System::Int64Op $R6 / $1
482 728 mdecorde
	Pop $R6
483 728 mdecorde
	StrCmp $5 '' +2
484 728 mdecorde
	IntCmp $R6 $5 0 FileFunc_Locate_findnext
485 728 mdecorde
	StrCmp $6 '' +2
486 728 mdecorde
	IntCmp $R6 $6 0 0 FileFunc_Locate_findnext
487 728 mdecorde
488 728 mdecorde
	FileFunc_Locate_precall:
489 728 mdecorde
	StrCpy $9 0
490 728 mdecorde
	StrCpy $R9 '$R8\$R7'
491 728 mdecorde
492 728 mdecorde
	call:
493 728 mdecorde
	Push $0
494 728 mdecorde
	Push $1
495 728 mdecorde
	Push $2
496 728 mdecorde
	Push $3
497 728 mdecorde
	Push $4
498 728 mdecorde
	Push $5
499 728 mdecorde
	Push $6
500 728 mdecorde
	Push $7
501 728 mdecorde
	Push $8
502 728 mdecorde
	Push $9
503 728 mdecorde
	Push $R7
504 728 mdecorde
	Push $R8
505 728 mdecorde
	StrCmp $9 0 +4
506 728 mdecorde
	StrCpy $R6 ''
507 728 mdecorde
	StrCpy $R7 ''
508 728 mdecorde
	StrCpy $R9 ''
509 728 mdecorde
	Call $2
510 728 mdecorde
	Pop $R9
511 728 mdecorde
	Pop $R8
512 728 mdecorde
	Pop $R7
513 728 mdecorde
	Pop $9
514 728 mdecorde
	Pop $8
515 728 mdecorde
	Pop $7
516 728 mdecorde
	Pop $6
517 728 mdecorde
	Pop $5
518 728 mdecorde
	Pop $4
519 728 mdecorde
	Pop $3
520 728 mdecorde
	Pop $2
521 728 mdecorde
	Pop $1
522 728 mdecorde
	Pop $0
523 728 mdecorde
524 728 mdecorde
	IfErrors 0 +3
525 728 mdecorde
	FindClose $0
526 728 mdecorde
	goto FileFunc_Locate_error
527 728 mdecorde
	StrCmp $R9 'StopLocate' 0 +3
528 728 mdecorde
	FindClose $0
529 728 mdecorde
	goto FileFunc_Locate_clearstack
530 728 mdecorde
	goto $9
531 728 mdecorde
532 728 mdecorde
	FileFunc_Locate_findnext:
533 728 mdecorde
	FindNext $0 $R7
534 728 mdecorde
	IfErrors 0 FileFunc_Locate_dir
535 728 mdecorde
	FindClose $0
536 728 mdecorde
537 728 mdecorde
	FileFunc_Locate_subdir:
538 728 mdecorde
	StrCpy $9 $7 2
539 728 mdecorde
	StrCmp $9 'G0' FileFunc_Locate_end
540 728 mdecorde
	FindFirst $0 $R7 '$R8\*.*'
541 728 mdecorde
	StrCmp $R7 '.' 0 FileFunc_Locate_pushdir
542 728 mdecorde
	FindNext $0 $R7
543 728 mdecorde
	StrCmp $R7 '..' 0 FileFunc_Locate_pushdir
544 728 mdecorde
	FindNext $0 $R7
545 728 mdecorde
	IfErrors 0 FileFunc_Locate_pushdir
546 728 mdecorde
	FindClose $0
547 728 mdecorde
	StrCmp $8 0 FileFunc_Locate_end FileFunc_Locate_nextdir
548 728 mdecorde
549 728 mdecorde
	FileFunc_Locate_pushdir:
550 728 mdecorde
	IfFileExists '$R8\$R7\*.*' 0 +3
551 728 mdecorde
	Push '$R8\$R7'
552 728 mdecorde
	IntOp $8 $8 + 1
553 728 mdecorde
	FindNext $0 $R7
554 728 mdecorde
	IfErrors 0 FileFunc_Locate_pushdir
555 728 mdecorde
	FindClose $0
556 728 mdecorde
	StrCmp $8 0 FileFunc_Locate_end FileFunc_Locate_nextdir
557 728 mdecorde
558 728 mdecorde
	FileFunc_Locate_error:
559 728 mdecorde
	SetErrors
560 728 mdecorde
561 728 mdecorde
	FileFunc_Locate_clearstack:
562 728 mdecorde
	StrCmp $8 0 FileFunc_Locate_end
563 728 mdecorde
	IntOp $8 $8 - 1
564 728 mdecorde
	Pop $R8
565 728 mdecorde
	goto FileFunc_Locate_clearstack
566 728 mdecorde
567 728 mdecorde
	FileFunc_Locate_end:
568 728 mdecorde
	SetDetailsPrint both
569 728 mdecorde
	Pop $R9
570 728 mdecorde
	Pop $R8
571 728 mdecorde
	Pop $R7
572 728 mdecorde
	Pop $R6
573 728 mdecorde
	Pop $9
574 728 mdecorde
	Pop $8
575 728 mdecorde
	Pop $7
576 728 mdecorde
	Pop $6
577 728 mdecorde
	Pop $5
578 728 mdecorde
	Pop $4
579 728 mdecorde
	Pop $3
580 728 mdecorde
	Pop $2
581 728 mdecorde
	Pop $1
582 728 mdecorde
	Pop $0
583 728 mdecorde
584 728 mdecorde
	!verbose pop
585 728 mdecorde
!macroend
586 728 mdecorde
587 728 mdecorde
!define GetSize `!insertmacro GetSizeCall`
588 728 mdecorde
!define un.GetSize `!insertmacro GetSizeCall`
589 728 mdecorde
590 728 mdecorde
!macro GetSize
591 728 mdecorde
!macroend
592 728 mdecorde
593 728 mdecorde
!macro un.GetSize
594 728 mdecorde
!macroend
595 728 mdecorde
596 728 mdecorde
!macro GetSize_
597 728 mdecorde
	!verbose push
598 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
599 728 mdecorde
600 728 mdecorde
	Exch $1
601 728 mdecorde
	Exch
602 728 mdecorde
	Exch $0
603 728 mdecorde
	Exch
604 728 mdecorde
	Push $2
605 728 mdecorde
	Push $3
606 728 mdecorde
	Push $4
607 728 mdecorde
	Push $5
608 728 mdecorde
	Push $6
609 728 mdecorde
	Push $7
610 728 mdecorde
	Push $8
611 728 mdecorde
	Push $9
612 728 mdecorde
	Push $R3
613 728 mdecorde
	Push $R4
614 728 mdecorde
	Push $R5
615 728 mdecorde
	Push $R6
616 728 mdecorde
	Push $R7
617 728 mdecorde
	Push $R8
618 728 mdecorde
	Push $R9
619 728 mdecorde
	ClearErrors
620 728 mdecorde
621 728 mdecorde
	StrCpy $R9 $0 1 -1
622 728 mdecorde
	StrCmp $R9 '\' 0 +3
623 728 mdecorde
	StrCpy $0 $0 -1
624 728 mdecorde
	goto -3
625 728 mdecorde
	IfFileExists '$0\*.*' 0 FileFunc_GetSize_error
626 728 mdecorde
627 728 mdecorde
	StrCpy $3 ''
628 728 mdecorde
	StrCpy $4 ''
629 728 mdecorde
	StrCpy $5 ''
630 728 mdecorde
	StrCpy $6 ''
631 728 mdecorde
	StrCpy $8 0
632 728 mdecorde
	StrCpy $R3 ''
633 728 mdecorde
	StrCpy $R4 ''
634 728 mdecorde
	StrCpy $R5 ''
635 728 mdecorde
636 728 mdecorde
	FileFunc_GetSize_option:
637 728 mdecorde
	StrCpy $R9 $1 1
638 728 mdecorde
	StrCpy $1 $1 '' 1
639 728 mdecorde
	StrCmp $R9 ' ' -2
640 728 mdecorde
	StrCmp $R9 '' FileFunc_GetSize_sizeset
641 728 mdecorde
	StrCmp $R9 '/' 0 -4
642 728 mdecorde
643 728 mdecorde
	StrCpy $9 -1
644 728 mdecorde
	IntOp $9 $9 + 1
645 728 mdecorde
	StrCpy $R9 $1 1 $9
646 728 mdecorde
	StrCmp $R9 '' +2
647 728 mdecorde
	StrCmp $R9 '/' 0 -3
648 728 mdecorde
	StrCpy $8 $1 $9
649 728 mdecorde
	StrCpy $8 $8 '' 2
650 728 mdecorde
	StrCpy $R9 $8 '' -1
651 728 mdecorde
	StrCmp $R9 ' ' 0 +3
652 728 mdecorde
	StrCpy $8 $8 -1
653 728 mdecorde
	goto -3
654 728 mdecorde
	StrCpy $R9 $1 2
655 728 mdecorde
	StrCpy $1 $1 '' $9
656 728 mdecorde
657 728 mdecorde
	StrCmp $R9 'M=' 0 FileFunc_GetSize_size
658 728 mdecorde
	StrCpy $4 $8
659 728 mdecorde
	goto FileFunc_GetSize_option
660 728 mdecorde
661 728 mdecorde
	FileFunc_GetSize_size:
662 728 mdecorde
	StrCmp $R9 'S=' 0 FileFunc_GetSize_gotosubdir
663 728 mdecorde
	StrCpy $6 $8
664 728 mdecorde
	goto FileFunc_GetSize_option
665 728 mdecorde
666 728 mdecorde
	FileFunc_GetSize_gotosubdir:
667 728 mdecorde
	StrCmp $R9 'G=' 0 FileFunc_GetSize_error
668 728 mdecorde
	StrCpy $7 $8
669 728 mdecorde
	StrCmp $7 '' +3
670 728 mdecorde
	StrCmp $7 '1' +2
671 728 mdecorde
	StrCmp $7 '0' 0 FileFunc_GetSize_error
672 728 mdecorde
	goto FileFunc_GetSize_option
673 728 mdecorde
674 728 mdecorde
	FileFunc_GetSize_sizeset:
675 728 mdecorde
	StrCmp $6 '' FileFunc_GetSize_default
676 728 mdecorde
	StrCpy $9 0
677 728 mdecorde
	StrCpy $R9 $6 1 $9
678 728 mdecorde
	StrCmp $R9 '' +4
679 728 mdecorde
	StrCmp $R9 ':' +3
680 728 mdecorde
	IntOp $9 $9 + 1
681 728 mdecorde
	goto -4
682 728 mdecorde
	StrCpy $5 $6 $9
683 728 mdecorde
	IntOp $9 $9 + 1
684 728 mdecorde
	StrCpy $1 $6 1 -1
685 728 mdecorde
	StrCpy $6 $6 -1 $9
686 728 mdecorde
	StrCmp $5 '' +2
687 728 mdecorde
	IntOp $5 $5 + 0
688 728 mdecorde
	StrCmp $6 '' +2
689 728 mdecorde
	IntOp $6 $6 + 0
690 728 mdecorde
691 728 mdecorde
	StrCmp $1 'B' 0 +4
692 728 mdecorde
	StrCpy $1 1
693 728 mdecorde
	StrCpy $2 bytes
694 728 mdecorde
	goto FileFunc_GetSize_default
695 728 mdecorde
	StrCmp $1 'K' 0 +4
696 728 mdecorde
	StrCpy $1 1024
697 728 mdecorde
	StrCpy $2 Kb
698 728 mdecorde
	goto FileFunc_GetSize_default
699 728 mdecorde
	StrCmp $1 'M' 0 +4
700 728 mdecorde
	StrCpy $1 1048576
701 728 mdecorde
	StrCpy $2 Mb
702 728 mdecorde
	goto FileFunc_GetSize_default
703 728 mdecorde
	StrCmp $1 'G' 0 FileFunc_GetSize_error
704 728 mdecorde
	StrCpy $1 1073741824
705 728 mdecorde
	StrCpy $2 Gb
706 728 mdecorde
707 728 mdecorde
	FileFunc_GetSize_default:
708 728 mdecorde
	StrCmp $4 '' 0 +2
709 728 mdecorde
	StrCpy $4 '*.*'
710 728 mdecorde
	StrCmp $7 '' 0 +2
711 728 mdecorde
	StrCpy $7 '1'
712 728 mdecorde
713 728 mdecorde
	StrCpy $8 1
714 728 mdecorde
	Push $0
715 728 mdecorde
	SetDetailsPrint textonly
716 728 mdecorde
717 728 mdecorde
	FileFunc_GetSize_nextdir:
718 728 mdecorde
	IntOp $8 $8 - 1
719 728 mdecorde
	Pop $R8
720 728 mdecorde
	FindFirst $0 $R7 '$R8\$4'
721 728 mdecorde
	IfErrors FileFunc_GetSize_show
722 728 mdecorde
	StrCmp $R7 '.' 0 FileFunc_GetSize_dir
723 728 mdecorde
	FindNext $0 $R7
724 728 mdecorde
	StrCmp $R7 '..' 0 FileFunc_GetSize_dir
725 728 mdecorde
	FindNext $0 $R7
726 728 mdecorde
	IfErrors 0 FileFunc_GetSize_dir
727 728 mdecorde
	FindClose $0
728 728 mdecorde
	goto FileFunc_GetSize_show
729 728 mdecorde
730 728 mdecorde
	FileFunc_GetSize_dir:
731 728 mdecorde
	IfFileExists '$R8\$R7\*.*' 0 FileFunc_GetSize_file
732 728 mdecorde
	IntOp $R5 $R5 + 1
733 728 mdecorde
	goto FileFunc_GetSize_findnext
734 728 mdecorde
735 728 mdecorde
	FileFunc_GetSize_file:
736 728 mdecorde
	StrCpy $R6 0
737 728 mdecorde
	StrCmp $5$6 '' 0 +3
738 728 mdecorde
	IntOp $R4 $R4 + 1
739 728 mdecorde
	goto FileFunc_GetSize_findnext
740 728 mdecorde
	FileOpen $9 '$R8\$R7' r
741 728 mdecorde
	IfErrors +3
742 728 mdecorde
	FileSeek $9 0 END $R6
743 728 mdecorde
	FileClose $9
744 728 mdecorde
	StrCmp $5 '' +2
745 728 mdecorde
	IntCmp $R6 $5 0 FileFunc_GetSize_findnext
746 728 mdecorde
	StrCmp $6 '' +2
747 728 mdecorde
	IntCmp $R6 $6 0 0 FileFunc_GetSize_findnext
748 728 mdecorde
	IntOp $R4 $R4 + 1
749 728 mdecorde
	System::Int64Op $R3 + $R6
750 728 mdecorde
	Pop $R3
751 728 mdecorde
752 728 mdecorde
	FileFunc_GetSize_findnext:
753 728 mdecorde
	FindNext $0 $R7
754 728 mdecorde
	IfErrors 0 FileFunc_GetSize_dir
755 728 mdecorde
	FindClose $0
756 728 mdecorde
757 728 mdecorde
	FileFunc_GetSize_show:
758 728 mdecorde
	StrCmp $5$6 '' FileFunc_GetSize_nosize
759 728 mdecorde
	System::Int64Op $R3 / $1
760 728 mdecorde
	Pop $9
761 728 mdecorde
	DetailPrint 'Size:$9 $2  Files:$R4  Folders:$R5'
762 728 mdecorde
	goto FileFunc_GetSize_subdir
763 728 mdecorde
	FileFunc_GetSize_nosize:
764 728 mdecorde
	DetailPrint 'Files:$R4  Folders:$R5'
765 728 mdecorde
766 728 mdecorde
	FileFunc_GetSize_subdir:
767 728 mdecorde
	StrCmp $7 0 FileFunc_GetSize_preend
768 728 mdecorde
	FindFirst $0 $R7 '$R8\*.*'
769 728 mdecorde
	StrCmp $R7 '.' 0 FileFunc_GetSize_pushdir
770 728 mdecorde
	FindNext $0 $R7
771 728 mdecorde
	StrCmp $R7 '..' 0 FileFunc_GetSize_pushdir
772 728 mdecorde
	FindNext $0 $R7
773 728 mdecorde
	IfErrors 0 FileFunc_GetSize_pushdir
774 728 mdecorde
	FindClose $0
775 728 mdecorde
	StrCmp $8 0 FileFunc_GetSize_preend FileFunc_GetSize_nextdir
776 728 mdecorde
777 728 mdecorde
	FileFunc_GetSize_pushdir:
778 728 mdecorde
	IfFileExists '$R8\$R7\*.*' 0 +3
779 728 mdecorde
	Push '$R8\$R7'
780 728 mdecorde
	IntOp $8 $8 + 1
781 728 mdecorde
	FindNext $0 $R7
782 728 mdecorde
	IfErrors 0 FileFunc_GetSize_pushdir
783 728 mdecorde
	FindClose $0
784 728 mdecorde
	StrCmp $8 0 FileFunc_GetSize_preend FileFunc_GetSize_nextdir
785 728 mdecorde
786 728 mdecorde
	FileFunc_GetSize_preend:
787 728 mdecorde
	StrCmp $R3 '' FileFunc_GetSize_nosizeend
788 728 mdecorde
	System::Int64Op $R3 / $1
789 728 mdecorde
	Pop $R3
790 728 mdecorde
	FileFunc_GetSize_nosizeend:
791 728 mdecorde
	StrCpy $2 $R4
792 728 mdecorde
	StrCpy $1 $R5
793 728 mdecorde
	StrCpy $0 $R3
794 728 mdecorde
	goto FileFunc_GetSize_end
795 728 mdecorde
796 728 mdecorde
	FileFunc_GetSize_error:
797 728 mdecorde
	SetErrors
798 728 mdecorde
	StrCpy $0 ''
799 728 mdecorde
	StrCpy $1 ''
800 728 mdecorde
	StrCpy $2 ''
801 728 mdecorde
802 728 mdecorde
	FileFunc_GetSize_end:
803 728 mdecorde
	SetDetailsPrint both
804 728 mdecorde
	Pop $R9
805 728 mdecorde
	Pop $R8
806 728 mdecorde
	Pop $R7
807 728 mdecorde
	Pop $R6
808 728 mdecorde
	Pop $R5
809 728 mdecorde
	Pop $R4
810 728 mdecorde
	Pop $R3
811 728 mdecorde
	Pop $9
812 728 mdecorde
	Pop $8
813 728 mdecorde
	Pop $7
814 728 mdecorde
	Pop $6
815 728 mdecorde
	Pop $5
816 728 mdecorde
	Pop $4
817 728 mdecorde
	Pop $3
818 728 mdecorde
	Exch $2
819 728 mdecorde
	Exch
820 728 mdecorde
	Exch $1
821 728 mdecorde
	Exch 2
822 728 mdecorde
	Exch $0
823 728 mdecorde
824 728 mdecorde
	!verbose pop
825 728 mdecorde
!macroend
826 728 mdecorde
827 728 mdecorde
!define DriveSpace `!insertmacro DriveSpaceCall`
828 728 mdecorde
!define un.DriveSpace `!insertmacro DriveSpaceCall`
829 728 mdecorde
830 728 mdecorde
!macro DriveSpace
831 728 mdecorde
!macroend
832 728 mdecorde
833 728 mdecorde
!macro un.DriveSpace
834 728 mdecorde
!macroend
835 728 mdecorde
836 728 mdecorde
!macro DriveSpace_
837 728 mdecorde
	!verbose push
838 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
839 728 mdecorde
840 728 mdecorde
	Exch $1
841 728 mdecorde
	Exch
842 728 mdecorde
	Exch $0
843 728 mdecorde
	Exch
844 728 mdecorde
	Push $2
845 728 mdecorde
	Push $3
846 728 mdecorde
	Push $4
847 728 mdecorde
	Push $5
848 728 mdecorde
	Push $6
849 728 mdecorde
	ClearErrors
850 728 mdecorde
851 728 mdecorde
	StrCpy $2 $0 1 -1
852 728 mdecorde
	StrCmp $2 '\' 0 +3
853 728 mdecorde
	StrCpy $0 $0 -1
854 728 mdecorde
	goto -3
855 728 mdecorde
	IfFileExists '$0\NUL' 0 FileFunc_DriveSpace_error
856 728 mdecorde
857 728 mdecorde
	StrCpy $5 ''
858 728 mdecorde
	StrCpy $6 ''
859 728 mdecorde
860 728 mdecorde
	FileFunc_DriveSpace_option:
861 728 mdecorde
	StrCpy $2 $1 1
862 728 mdecorde
	StrCpy $1 $1 '' 1
863 728 mdecorde
	StrCmp $2 ' ' -2
864 728 mdecorde
	StrCmp $2 '' FileFunc_DriveSpace_default
865 728 mdecorde
	StrCmp $2 '/' 0 -4
866 728 mdecorde
	StrCpy $3 -1
867 728 mdecorde
	IntOp $3 $3 + 1
868 728 mdecorde
	StrCpy $2 $1 1 $3
869 728 mdecorde
	StrCmp $2 '' +2
870 728 mdecorde
	StrCmp $2 '/' 0 -3
871 728 mdecorde
	StrCpy $4 $1 $3
872 728 mdecorde
	StrCpy $4 $4 '' 2
873 728 mdecorde
	StrCpy $2 $4 1 -1
874 728 mdecorde
	StrCmp $2 ' ' 0 +3
875 728 mdecorde
	StrCpy $4 $4 -1
876 728 mdecorde
	goto -3
877 728 mdecorde
	StrCpy $2 $1 2
878 728 mdecorde
	StrCpy $1 $1 '' $3
879 728 mdecorde
880 728 mdecorde
	StrCmp $2 'D=' 0 FileFunc_DriveSpace_unit
881 728 mdecorde
	StrCpy $5 $4
882 728 mdecorde
	StrCmp $5 '' +4
883 728 mdecorde
	StrCmp $5 'T' +3
884 728 mdecorde
	StrCmp $5 'O' +2
885 728 mdecorde
	StrCmp $5 'F' 0 FileFunc_DriveSpace_error
886 728 mdecorde
	goto FileFunc_DriveSpace_option
887 728 mdecorde
888 728 mdecorde
	FileFunc_DriveSpace_unit:
889 728 mdecorde
	StrCmp $2 'S=' 0 FileFunc_DriveSpace_error
890 728 mdecorde
	StrCpy $6 $4
891 728 mdecorde
	goto FileFunc_DriveSpace_option
892 728 mdecorde
893 728 mdecorde
	FileFunc_DriveSpace_default:
894 728 mdecorde
	StrCmp $5 '' 0 +2
895 728 mdecorde
	StrCpy $5 'T'
896 728 mdecorde
	StrCmp $6 '' 0 +3
897 728 mdecorde
	StrCpy $6 '1'
898 728 mdecorde
	goto FileFunc_DriveSpace_getspace
899 728 mdecorde
900 728 mdecorde
	StrCmp $6 'B' 0 +3
901 728 mdecorde
	StrCpy $6 1
902 728 mdecorde
	goto FileFunc_DriveSpace_getspace
903 728 mdecorde
	StrCmp $6 'K' 0 +3
904 728 mdecorde
	StrCpy $6 1024
905 728 mdecorde
	goto FileFunc_DriveSpace_getspace
906 728 mdecorde
	StrCmp $6 'M' 0 +3
907 728 mdecorde
	StrCpy $6 1048576
908 728 mdecorde
	goto FileFunc_DriveSpace_getspace
909 728 mdecorde
	StrCmp $6 'G' 0 FileFunc_DriveSpace_error
910 728 mdecorde
	StrCpy $6 1073741824
911 728 mdecorde
912 728 mdecorde
	FileFunc_DriveSpace_getspace:
913 728 mdecorde
	System::Call 'kernel32::GetDiskFreeSpaceExA(t, *l, *l, *l)i(r0,.r2,.r3,.)'
914 728 mdecorde
915 728 mdecorde
	StrCmp $5 T 0 +3
916 728 mdecorde
	StrCpy $0 $3
917 728 mdecorde
	goto FileFunc_DriveSpace_getsize
918 728 mdecorde
	StrCmp $5 O 0 +4
919 728 mdecorde
	System::Int64Op $3 - $2
920 728 mdecorde
	Pop $0
921 728 mdecorde
	goto FileFunc_DriveSpace_getsize
922 728 mdecorde
	StrCmp $5 F 0 +2
923 728 mdecorde
	StrCpy $0 $2
924 728 mdecorde
925 728 mdecorde
	FileFunc_DriveSpace_getsize:
926 728 mdecorde
	System::Int64Op $0 / $6
927 728 mdecorde
	Pop $0
928 728 mdecorde
	goto FileFunc_DriveSpace_end
929 728 mdecorde
930 728 mdecorde
	FileFunc_DriveSpace_error:
931 728 mdecorde
	SetErrors
932 728 mdecorde
	StrCpy $0 ''
933 728 mdecorde
934 728 mdecorde
	FileFunc_DriveSpace_end:
935 728 mdecorde
	Pop $6
936 728 mdecorde
	Pop $5
937 728 mdecorde
	Pop $4
938 728 mdecorde
	Pop $3
939 728 mdecorde
	Pop $2
940 728 mdecorde
	Pop $1
941 728 mdecorde
	Exch $0
942 728 mdecorde
943 728 mdecorde
	!verbose pop
944 728 mdecorde
!macroend
945 728 mdecorde
946 728 mdecorde
!define GetDrives `!insertmacro GetDrivesCall`
947 728 mdecorde
!define un.GetDrives `!insertmacro GetDrivesCall`
948 728 mdecorde
949 728 mdecorde
!macro GetDrives
950 728 mdecorde
!macroend
951 728 mdecorde
952 728 mdecorde
!macro un.GetDrives
953 728 mdecorde
!macroend
954 728 mdecorde
955 728 mdecorde
!macro GetDrives_
956 728 mdecorde
	!verbose push
957 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
958 728 mdecorde
959 728 mdecorde
	Exch $1
960 728 mdecorde
	Exch
961 728 mdecorde
	Exch $0
962 728 mdecorde
	Exch
963 728 mdecorde
	Push $2
964 728 mdecorde
	Push $3
965 728 mdecorde
	Push $4
966 728 mdecorde
	Push $5
967 728 mdecorde
	Push $6
968 728 mdecorde
	Push $8
969 728 mdecorde
	Push $9
970 728 mdecorde
971 728 mdecorde
	System::Alloc 1024
972 728 mdecorde
	Pop $2
973 728 mdecorde
	System::Call 'kernel32::GetLogicalDriveStringsA(i,i) i(1024, r2)'
974 728 mdecorde
975 728 mdecorde
	StrCmp $0 ALL FileFunc_GetDrives_drivestring
976 728 mdecorde
	StrCmp $0 '' 0 FileFunc_GetDrives_typeset
977 728 mdecorde
	StrCpy $0 ALL
978 728 mdecorde
	goto FileFunc_GetDrives_drivestring
979 728 mdecorde
980 728 mdecorde
	FileFunc_GetDrives_typeset:
981 728 mdecorde
	StrCpy $6 -1
982 728 mdecorde
	IntOp $6 $6 + 1
983 728 mdecorde
	StrCpy $8 $0 1 $6
984 728 mdecorde
	StrCmp $8$0 '' FileFunc_GetDrives_enumex
985 728 mdecorde
	StrCmp $8 '' +2
986 728 mdecorde
	StrCmp $8 '+' 0 -4
987 728 mdecorde
	StrCpy $8 $0 $6
988 728 mdecorde
	IntOp $6 $6 + 1
989 728 mdecorde
	StrCpy $0 $0 '' $6
990 728 mdecorde
991 728 mdecorde
	StrCmp $8 'FDD' 0 +3
992 728 mdecorde
	StrCpy $6 2
993 728 mdecorde
	goto FileFunc_GetDrives_drivestring
994 728 mdecorde
	StrCmp $8 'HDD' 0 +3
995 728 mdecorde
	StrCpy $6 3
996 728 mdecorde
	goto FileFunc_GetDrives_drivestring
997 728 mdecorde
	StrCmp $8 'NET' 0 +3
998 728 mdecorde
	StrCpy $6 4
999 728 mdecorde
	goto FileFunc_GetDrives_drivestring
1000 728 mdecorde
	StrCmp $8 'CDROM' 0 +3
1001 728 mdecorde
	StrCpy $6 5
1002 728 mdecorde
	goto FileFunc_GetDrives_drivestring
1003 728 mdecorde
	StrCmp $8 'RAM' 0 FileFunc_GetDrives_typeset
1004 728 mdecorde
	StrCpy $6 6
1005 728 mdecorde
1006 728 mdecorde
	FileFunc_GetDrives_drivestring:
1007 728 mdecorde
	StrCpy $3 $2
1008 728 mdecorde
1009 728 mdecorde
	FileFunc_GetDrives_enumok:
1010 728 mdecorde
	System::Call 'kernel32::lstrlenA(t) i(i r3) .r4'
1011 728 mdecorde
	StrCmp $4$0 '0ALL' FileFunc_GetDrives_enumex
1012 728 mdecorde
	StrCmp $4 0 FileFunc_GetDrives_typeset
1013 728 mdecorde
	System::Call 'kernel32::GetDriveTypeA(t) i(i r3) .r5'
1014 728 mdecorde
1015 728 mdecorde
	StrCmp $0 ALL +2
1016 728 mdecorde
	StrCmp $5 $6 FileFunc_GetDrives_letter FileFunc_GetDrives_enumnext
1017 728 mdecorde
	StrCmp $5 2 0 +3
1018 728 mdecorde
	StrCpy $8 FDD
1019 728 mdecorde
	goto FileFunc_GetDrives_letter
1020 728 mdecorde
	StrCmp $5 3 0 +3
1021 728 mdecorde
	StrCpy $8 HDD
1022 728 mdecorde
	goto FileFunc_GetDrives_letter
1023 728 mdecorde
	StrCmp $5 4 0 +3
1024 728 mdecorde
	StrCpy $8 NET
1025 728 mdecorde
	goto FileFunc_GetDrives_letter
1026 728 mdecorde
	StrCmp $5 5 0 +3
1027 728 mdecorde
	StrCpy $8 CDROM
1028 728 mdecorde
	goto FileFunc_GetDrives_letter
1029 728 mdecorde
	StrCmp $5 6 0 FileFunc_GetDrives_enumex
1030 728 mdecorde
	StrCpy $8 RAM
1031 728 mdecorde
1032 728 mdecorde
	FileFunc_GetDrives_letter:
1033 728 mdecorde
	System::Call '*$3(&t1024 .r9)'
1034 728 mdecorde
1035 728 mdecorde
	Push $0
1036 728 mdecorde
	Push $1
1037 728 mdecorde
	Push $2
1038 728 mdecorde
	Push $3
1039 728 mdecorde
	Push $4
1040 728 mdecorde
	Push $5
1041 728 mdecorde
	Push $6
1042 728 mdecorde
	Push $8
1043 728 mdecorde
	Call $1
1044 728 mdecorde
	Pop $9
1045 728 mdecorde
	Pop $8
1046 728 mdecorde
	Pop $6
1047 728 mdecorde
	Pop $5
1048 728 mdecorde
	Pop $4
1049 728 mdecorde
	Pop $3
1050 728 mdecorde
	Pop $2
1051 728 mdecorde
	Pop $1
1052 728 mdecorde
	Pop $0
1053 728 mdecorde
	StrCmp $9 'StopGetDrives' FileFunc_GetDrives_enumex
1054 728 mdecorde
1055 728 mdecorde
	FileFunc_GetDrives_enumnext:
1056 728 mdecorde
	IntOp $3 $3 + $4
1057 728 mdecorde
	IntOp $3 $3 + 1
1058 728 mdecorde
	goto FileFunc_GetDrives_enumok
1059 728 mdecorde
1060 728 mdecorde
	FileFunc_GetDrives_enumex:
1061 728 mdecorde
	System::Free $2
1062 728 mdecorde
1063 728 mdecorde
	Pop $9
1064 728 mdecorde
	Pop $8
1065 728 mdecorde
	Pop $6
1066 728 mdecorde
	Pop $5
1067 728 mdecorde
	Pop $4
1068 728 mdecorde
	Pop $3
1069 728 mdecorde
	Pop $2
1070 728 mdecorde
	Pop $1
1071 728 mdecorde
	Pop $0
1072 728 mdecorde
1073 728 mdecorde
	!verbose pop
1074 728 mdecorde
!macroend
1075 728 mdecorde
1076 728 mdecorde
!define GetTime `!insertmacro GetTimeCall`
1077 728 mdecorde
!define un.GetTime `!insertmacro GetTimeCall`
1078 728 mdecorde
1079 728 mdecorde
!macro GetTime
1080 728 mdecorde
!macroend
1081 728 mdecorde
1082 728 mdecorde
!macro un.GetTime
1083 728 mdecorde
!macroend
1084 728 mdecorde
1085 728 mdecorde
!macro GetTime_
1086 728 mdecorde
	!verbose push
1087 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1088 728 mdecorde
1089 728 mdecorde
	Exch $1
1090 728 mdecorde
	Exch
1091 728 mdecorde
	Exch $0
1092 728 mdecorde
	Exch
1093 728 mdecorde
	Push $2
1094 728 mdecorde
	Push $3
1095 728 mdecorde
	Push $4
1096 728 mdecorde
	Push $5
1097 728 mdecorde
	Push $6
1098 728 mdecorde
	Push $7
1099 728 mdecorde
	ClearErrors
1100 728 mdecorde
1101 728 mdecorde
	StrCmp $1 'L' FileFunc_GetTime_gettime
1102 728 mdecorde
	StrCmp $1 'A' FileFunc_GetTime_getfile
1103 728 mdecorde
	StrCmp $1 'C' FileFunc_GetTime_getfile
1104 728 mdecorde
	StrCmp $1 'M' FileFunc_GetTime_getfile
1105 728 mdecorde
	StrCmp $1 'LS' FileFunc_GetTime_gettime
1106 728 mdecorde
	StrCmp $1 'AS' FileFunc_GetTime_getfile
1107 728 mdecorde
	StrCmp $1 'CS' FileFunc_GetTime_getfile
1108 728 mdecorde
	StrCmp $1 'MS' FileFunc_GetTime_getfile
1109 728 mdecorde
	goto FileFunc_GetTime_error
1110 728 mdecorde
1111 728 mdecorde
	FileFunc_GetTime_getfile:
1112 728 mdecorde
	IfFileExists $0 0 FileFunc_GetTime_error
1113 728 mdecorde
	System::Call '*(i,l,l,l,i,i,i,i,&t260,&t14) i .r6'
1114 728 mdecorde
	System::Call 'kernel32::FindFirstFileA(t,i)i(r0,r6) .r2'
1115 728 mdecorde
	System::Call 'kernel32::FindClose(i)i(r2)'
1116 728 mdecorde
1117 728 mdecorde
	FileFunc_GetTime_gettime:
1118 728 mdecorde
	System::Call '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2) i .r7'
1119 728 mdecorde
	StrCmp $1 'L' 0 FileFunc_GetTime_systemtime
1120 728 mdecorde
	System::Call 'kernel32::GetLocalTime(i)i(r7)'
1121 728 mdecorde
	goto FileFunc_GetTime_convert
1122 728 mdecorde
	FileFunc_GetTime_systemtime:
1123 728 mdecorde
	StrCmp $1 'LS' 0 FileFunc_GetTime_filetime
1124 728 mdecorde
	System::Call 'kernel32::GetSystemTime(i)i(r7)'
1125 728 mdecorde
	goto FileFunc_GetTime_convert
1126 728 mdecorde
1127 728 mdecorde
	FileFunc_GetTime_filetime:
1128 728 mdecorde
	System::Call '*$6(i,l,l,l,i,i,i,i,&t260,&t14)i(,.r4,.r3,.r2)'
1129 728 mdecorde
	System::Free $6
1130 728 mdecorde
	StrCmp $1 'A' 0 +3
1131 728 mdecorde
	StrCpy $2 $3
1132 728 mdecorde
	goto FileFunc_GetTime_tolocal
1133 728 mdecorde
	StrCmp $1 'C' 0 +3
1134 728 mdecorde
	StrCpy $2 $4
1135 728 mdecorde
	goto FileFunc_GetTime_tolocal
1136 728 mdecorde
	StrCmp $1 'M' FileFunc_GetTime_tolocal
1137 728 mdecorde
1138 728 mdecorde
	StrCmp $1 'AS' FileFunc_GetTime_tosystem
1139 728 mdecorde
	StrCmp $1 'CS' 0 +3
1140 728 mdecorde
	StrCpy $3 $4
1141 728 mdecorde
	goto FileFunc_GetTime_tosystem
1142 728 mdecorde
	StrCmp $1 'MS' 0 +3
1143 728 mdecorde
	StrCpy $3 $2
1144 728 mdecorde
	goto FileFunc_GetTime_tosystem
1145 728 mdecorde
1146 728 mdecorde
	FileFunc_GetTime_tolocal:
1147 728 mdecorde
	System::Call 'kernel32::FileTimeToLocalFileTime(*l,*l)i(r2,.r3)'
1148 728 mdecorde
	FileFunc_GetTime_tosystem:
1149 728 mdecorde
	System::Call 'kernel32::FileTimeToSystemTime(*l,i)i(r3,r7)'
1150 728 mdecorde
1151 728 mdecorde
	FileFunc_GetTime_convert:
1152 728 mdecorde
	System::Call '*$7(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2)i(.r5,.r6,.r4,.r0,.r3,.r2,.r1,)'
1153 728 mdecorde
	System::Free $7
1154 728 mdecorde
1155 728 mdecorde
	IntCmp $0 9 0 0 +2
1156 728 mdecorde
	StrCpy $0 '0$0'
1157 728 mdecorde
	IntCmp $1 9 0 0 +2
1158 728 mdecorde
	StrCpy $1 '0$1'
1159 728 mdecorde
	IntCmp $2 9 0 0 +2
1160 728 mdecorde
	StrCpy $2 '0$2'
1161 728 mdecorde
	IntCmp $6 9 0 0 +2
1162 728 mdecorde
	StrCpy $6 '0$6'
1163 728 mdecorde
1164 728 mdecorde
	StrCmp $4 0 0 +3
1165 728 mdecorde
	StrCpy $4 Sunday
1166 728 mdecorde
	goto FileFunc_GetTime_end
1167 728 mdecorde
	StrCmp $4 1 0 +3
1168 728 mdecorde
	StrCpy $4 Monday
1169 728 mdecorde
	goto FileFunc_GetTime_end
1170 728 mdecorde
	StrCmp $4 2 0 +3
1171 728 mdecorde
	StrCpy $4 Tuesday
1172 728 mdecorde
	goto FileFunc_GetTime_end
1173 728 mdecorde
	StrCmp $4 3 0 +3
1174 728 mdecorde
	StrCpy $4 Wednesday
1175 728 mdecorde
	goto FileFunc_GetTime_end
1176 728 mdecorde
	StrCmp $4 4 0 +3
1177 728 mdecorde
	StrCpy $4 Thursday
1178 728 mdecorde
	goto FileFunc_GetTime_end
1179 728 mdecorde
	StrCmp $4 5 0 +3
1180 728 mdecorde
	StrCpy $4 Friday
1181 728 mdecorde
	goto FileFunc_GetTime_end
1182 728 mdecorde
	StrCmp $4 6 0 FileFunc_GetTime_error
1183 728 mdecorde
	StrCpy $4 Saturday
1184 728 mdecorde
	goto FileFunc_GetTime_end
1185 728 mdecorde
1186 728 mdecorde
	FileFunc_GetTime_error:
1187 728 mdecorde
	SetErrors
1188 728 mdecorde
	StrCpy $0 ''
1189 728 mdecorde
	StrCpy $1 ''
1190 728 mdecorde
	StrCpy $2 ''
1191 728 mdecorde
	StrCpy $3 ''
1192 728 mdecorde
	StrCpy $4 ''
1193 728 mdecorde
	StrCpy $5 ''
1194 728 mdecorde
	StrCpy $6 ''
1195 728 mdecorde
1196 728 mdecorde
	FileFunc_GetTime_end:
1197 728 mdecorde
	Pop $7
1198 728 mdecorde
	Exch $6
1199 728 mdecorde
	Exch
1200 728 mdecorde
	Exch $5
1201 728 mdecorde
	Exch 2
1202 728 mdecorde
	Exch $4
1203 728 mdecorde
	Exch 3
1204 728 mdecorde
	Exch $3
1205 728 mdecorde
	Exch 4
1206 728 mdecorde
	Exch $2
1207 728 mdecorde
	Exch 5
1208 728 mdecorde
	Exch $1
1209 728 mdecorde
	Exch 6
1210 728 mdecorde
	Exch $0
1211 728 mdecorde
1212 728 mdecorde
	!verbose pop
1213 728 mdecorde
!macroend
1214 728 mdecorde
1215 728 mdecorde
!define GetFileAttributes `!insertmacro GetFileAttributesCall`
1216 728 mdecorde
!define un.GetFileAttributes `!insertmacro GetFileAttributesCall`
1217 728 mdecorde
1218 728 mdecorde
!macro GetFileAttributes
1219 728 mdecorde
!macroend
1220 728 mdecorde
1221 728 mdecorde
!macro un.GetFileAttributes
1222 728 mdecorde
!macroend
1223 728 mdecorde
1224 728 mdecorde
!macro GetFileAttributes_
1225 728 mdecorde
	!verbose push
1226 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1227 728 mdecorde
1228 728 mdecorde
	Exch $1
1229 728 mdecorde
	Exch
1230 728 mdecorde
	Exch $0
1231 728 mdecorde
	Exch
1232 728 mdecorde
	Push $2
1233 728 mdecorde
	Push $3
1234 728 mdecorde
	Push $4
1235 728 mdecorde
	Push $5
1236 728 mdecorde
1237 728 mdecorde
	System::Call 'kernel32::GetFileAttributes(t r0)i .r2'
1238 728 mdecorde
	StrCmp $2 -1 FileFunc_GetFileAttributes_error
1239 728 mdecorde
	StrCpy $3 ''
1240 728 mdecorde
1241 728 mdecorde
	IntOp $0 $2 & 0x4000
1242 728 mdecorde
	IntCmp $0 0 +2
1243 728 mdecorde
	StrCpy $3 'ENCRYPTED|'
1244 728 mdecorde
1245 728 mdecorde
	IntOp $0 $2 & 0x2000
1246 728 mdecorde
	IntCmp $0 0 +2
1247 728 mdecorde
	StrCpy $3 'NOT_CONTENT_INDEXED|$3'
1248 728 mdecorde
1249 728 mdecorde
	IntOp $0 $2 & 0x1000
1250 728 mdecorde
	IntCmp $0 0 +2
1251 728 mdecorde
	StrCpy $3 'OFFLINE|$3'
1252 728 mdecorde
1253 728 mdecorde
	IntOp $0 $2 & 0x0800
1254 728 mdecorde
	IntCmp $0 0 +2
1255 728 mdecorde
	StrCpy $3 'COMPRESSED|$3'
1256 728 mdecorde
1257 728 mdecorde
	IntOp $0 $2 & 0x0400
1258 728 mdecorde
	IntCmp $0 0 +2
1259 728 mdecorde
	StrCpy $3 'REPARSE_POINT|$3'
1260 728 mdecorde
1261 728 mdecorde
	IntOp $0 $2 & 0x0200
1262 728 mdecorde
	IntCmp $0 0 +2
1263 728 mdecorde
	StrCpy $3 'SPARSE_FILE|$3'
1264 728 mdecorde
1265 728 mdecorde
	IntOp $0 $2 & 0x0100
1266 728 mdecorde
	IntCmp $0 0 +2
1267 728 mdecorde
	StrCpy $3 'TEMPORARY|$3'
1268 728 mdecorde
1269 728 mdecorde
	IntOp $0 $2 & 0x0080
1270 728 mdecorde
	IntCmp $0 0 +2
1271 728 mdecorde
	StrCpy $3 'NORMAL|$3'
1272 728 mdecorde
1273 728 mdecorde
	IntOp $0 $2 & 0x0040
1274 728 mdecorde
	IntCmp $0 0 +2
1275 728 mdecorde
	StrCpy $3 'DEVICE|$3'
1276 728 mdecorde
1277 728 mdecorde
	IntOp $0 $2 & 0x0020
1278 728 mdecorde
	IntCmp $0 0 +2
1279 728 mdecorde
	StrCpy $3 'ARCHIVE|$3'
1280 728 mdecorde
1281 728 mdecorde
	IntOp $0 $2 & 0x0010
1282 728 mdecorde
	IntCmp $0 0 +2
1283 728 mdecorde
	StrCpy $3 'DIRECTORY|$3'
1284 728 mdecorde
1285 728 mdecorde
	IntOp $0 $2 & 0x0004
1286 728 mdecorde
	IntCmp $0 0 +2
1287 728 mdecorde
	StrCpy $3 'SYSTEM|$3'
1288 728 mdecorde
1289 728 mdecorde
	IntOp $0 $2 & 0x0002
1290 728 mdecorde
	IntCmp $0 0 +2
1291 728 mdecorde
	StrCpy $3 'HIDDEN|$3'
1292 728 mdecorde
1293 728 mdecorde
	IntOp $0 $2 & 0x0001
1294 728 mdecorde
	IntCmp $0 0 +2
1295 728 mdecorde
	StrCpy $3 'READONLY|$3'
1296 728 mdecorde
1297 728 mdecorde
	StrCpy $0 $3 -1
1298 728 mdecorde
	StrCmp $1 '' FileFunc_GetFileAttributes_end
1299 728 mdecorde
	StrCmp $1 'ALL' FileFunc_GetFileAttributes_end
1300 728 mdecorde
1301 728 mdecorde
	FileFunc_GetFileAttributes_attrcmp:
1302 728 mdecorde
	StrCpy $5 0
1303 728 mdecorde
	IntOp $5 $5 + 1
1304 728 mdecorde
	StrCpy $4 $1 1 $5
1305 728 mdecorde
	StrCmp $4 '' +2
1306 728 mdecorde
	StrCmp $4 '|'  0 -3
1307 728 mdecorde
	StrCpy $2 $1 $5
1308 728 mdecorde
	IntOp $5 $5 + 1
1309 728 mdecorde
	StrCpy $1 $1 '' $5
1310 728 mdecorde
	StrLen $3 $2
1311 728 mdecorde
	StrCpy $5 -1
1312 728 mdecorde
	IntOp $5 $5 + 1
1313 728 mdecorde
	StrCpy $4 $0 $3 $5
1314 728 mdecorde
	StrCmp $4 '' FileFunc_GetFileAttributes_notfound
1315 728 mdecorde
	StrCmp $4 $2 0 -3
1316 728 mdecorde
	StrCmp $1 '' 0 FileFunc_GetFileAttributes_attrcmp
1317 728 mdecorde
	StrCpy $0 1
1318 728 mdecorde
	goto FileFunc_GetFileAttributes_end
1319 728 mdecorde
1320 728 mdecorde
	FileFunc_GetFileAttributes_notfound:
1321 728 mdecorde
	StrCpy $0 0
1322 728 mdecorde
	goto FileFunc_GetFileAttributes_end
1323 728 mdecorde
1324 728 mdecorde
	FileFunc_GetFileAttributes_error:
1325 728 mdecorde
	SetErrors
1326 728 mdecorde
	StrCpy $0 ''
1327 728 mdecorde
1328 728 mdecorde
	FileFunc_GetFileAttributes_end:
1329 728 mdecorde
	Pop $5
1330 728 mdecorde
	Pop $4
1331 728 mdecorde
	Pop $3
1332 728 mdecorde
	Pop $2
1333 728 mdecorde
	Pop $1
1334 728 mdecorde
	Exch $0
1335 728 mdecorde
1336 728 mdecorde
	!verbose pop
1337 728 mdecorde
!macroend
1338 728 mdecorde
1339 728 mdecorde
!define GetFileVersion `!insertmacro GetFileVersionCall`
1340 728 mdecorde
!define un.GetFileVersion `!insertmacro GetFileVersionCall`
1341 728 mdecorde
1342 728 mdecorde
!macro GetFileVersion
1343 728 mdecorde
!macroend
1344 728 mdecorde
1345 728 mdecorde
!macro un.GetFileVersion
1346 728 mdecorde
!macroend
1347 728 mdecorde
1348 728 mdecorde
!macro GetFileVersion_
1349 728 mdecorde
	!verbose push
1350 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1351 728 mdecorde
1352 728 mdecorde
	Exch $0
1353 728 mdecorde
	Push $1
1354 728 mdecorde
	Push $2
1355 728 mdecorde
	Push $3
1356 728 mdecorde
	Push $4
1357 728 mdecorde
	Push $5
1358 728 mdecorde
	Push $6
1359 728 mdecorde
	ClearErrors
1360 728 mdecorde
1361 728 mdecorde
	GetDllVersion '$0' $1 $2
1362 728 mdecorde
	IfErrors FileFunc_GetFileVersion_error
1363 728 mdecorde
	IntOp $3 $1 >> 16
1364 728 mdecorde
	IntOp $3 $3 & 0x0000FFFF
1365 728 mdecorde
	IntOp $4 $1 & 0x0000FFFF
1366 728 mdecorde
	IntOp $5 $2 >> 16
1367 728 mdecorde
	IntOp $5 $5 & 0x0000FFFF
1368 728 mdecorde
	IntOp $6 $2 & 0x0000FFFF
1369 728 mdecorde
	StrCpy $0 '$3.$4.$5.$6'
1370 728 mdecorde
	goto FileFunc_GetFileVersion_end
1371 728 mdecorde
1372 728 mdecorde
	FileFunc_GetFileVersion_error:
1373 728 mdecorde
	SetErrors
1374 728 mdecorde
	StrCpy $0 ''
1375 728 mdecorde
1376 728 mdecorde
	FileFunc_GetFileVersion_end:
1377 728 mdecorde
	Pop $6
1378 728 mdecorde
	Pop $5
1379 728 mdecorde
	Pop $4
1380 728 mdecorde
	Pop $3
1381 728 mdecorde
	Pop $2
1382 728 mdecorde
	Pop $1
1383 728 mdecorde
	Exch $0
1384 728 mdecorde
1385 728 mdecorde
	!verbose pop
1386 728 mdecorde
!macroend
1387 728 mdecorde
1388 728 mdecorde
!define GetExeName `!insertmacro GetExeNameCall`
1389 728 mdecorde
!define un.GetExeName `!insertmacro GetExeNameCall`
1390 728 mdecorde
1391 728 mdecorde
!macro GetExeName
1392 728 mdecorde
!macroend
1393 728 mdecorde
1394 728 mdecorde
!macro un.GetExeName
1395 728 mdecorde
!macroend
1396 728 mdecorde
1397 728 mdecorde
!macro GetExeName_
1398 728 mdecorde
	!verbose push
1399 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1400 728 mdecorde
1401 728 mdecorde
	Push $0
1402 728 mdecorde
	Push $1
1403 728 mdecorde
	Push $2
1404 728 mdecorde
	System::Call 'kernel32::GetModuleFileNameA(i 0, t .r0, i 1024)'
1405 728 mdecorde
	System::Call 'kernel32::GetLongPathNameA(t r0, t .r1, i 1024)i .r2'
1406 728 mdecorde
	StrCmp $2 error +2
1407 728 mdecorde
	StrCpy $0 $1
1408 728 mdecorde
	Pop $2
1409 728 mdecorde
	Pop $1
1410 728 mdecorde
	Exch $0
1411 728 mdecorde
1412 728 mdecorde
	!verbose pop
1413 728 mdecorde
!macroend
1414 728 mdecorde
1415 728 mdecorde
!define GetExePath `!insertmacro GetExePathCall`
1416 728 mdecorde
!define un.GetExePath `!insertmacro GetExePathCall`
1417 728 mdecorde
1418 728 mdecorde
!macro GetExePath
1419 728 mdecorde
!macroend
1420 728 mdecorde
1421 728 mdecorde
!macro un.GetExePath
1422 728 mdecorde
!macroend
1423 728 mdecorde
1424 728 mdecorde
!macro GetExePath_
1425 728 mdecorde
	!verbose push
1426 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1427 728 mdecorde
1428 728 mdecorde
	Push $0
1429 728 mdecorde
	Push $1
1430 728 mdecorde
	Push $2
1431 728 mdecorde
	StrCpy $0 $EXEDIR
1432 728 mdecorde
	System::Call 'kernel32::GetLongPathNameA(t r0, t .r1, i 1024)i .r2'
1433 728 mdecorde
	StrCmp $2 error +2
1434 728 mdecorde
	StrCpy $0 $1
1435 728 mdecorde
	Pop $2
1436 728 mdecorde
	Pop $1
1437 728 mdecorde
	Exch $0
1438 728 mdecorde
1439 728 mdecorde
	!verbose pop
1440 728 mdecorde
!macroend
1441 728 mdecorde
1442 728 mdecorde
!define GetParameters `!insertmacro GetParametersCall`
1443 728 mdecorde
!define un.GetParameters `!insertmacro GetParametersCall`
1444 728 mdecorde
1445 728 mdecorde
!macro GetParameters
1446 728 mdecorde
!macroend
1447 728 mdecorde
1448 728 mdecorde
!macro un.GetParameters
1449 728 mdecorde
!macroend
1450 728 mdecorde
1451 728 mdecorde
!macro GetParameters_
1452 728 mdecorde
	!verbose push
1453 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1454 728 mdecorde
1455 728 mdecorde
	;cmdline-check
1456 728 mdecorde
	StrCmp $CMDLINE "" 0 +3
1457 728 mdecorde
	Push ""
1458 728 mdecorde
	Return
1459 728 mdecorde
1460 728 mdecorde
	;vars
1461 728 mdecorde
	Push $0  ;tmp
1462 728 mdecorde
	Push $1  ;length
1463 728 mdecorde
	Push $2  ;parameter offset
1464 728 mdecorde
	Push $3  ;separator
1465 728 mdecorde
1466 728 mdecorde
	;length/offset
1467 728 mdecorde
	StrLen $1 $CMDLINE
1468 728 mdecorde
	StrCpy $2 2  ;start with third character
1469 728 mdecorde
1470 728 mdecorde
	;separator
1471 728 mdecorde
	StrCpy $3 $CMDLINE 1 ;first character
1472 728 mdecorde
	StrCmp $3 '"' +2
1473 728 mdecorde
	StrCpy $3 ' '
1474 728 mdecorde
1475 728 mdecorde
	FileFunc_GetParameters_token:  ;finding second separator
1476 728 mdecorde
	IntCmp $2 $1 FileFunc_GetParameters_strip 0 FileFunc_GetParameters_strip
1477 728 mdecorde
	StrCpy $0 $CMDLINE 1 $2
1478 728 mdecorde
	IntOp $2 $2 + 1
1479 728 mdecorde
	StrCmp $3 $0 0 FileFunc_GetParameters_token
1480 728 mdecorde
1481 728 mdecorde
	FileFunc_GetParameters_strip:  ;strip white space
1482 728 mdecorde
	IntCmp $2 $1 FileFunc_GetParameters_copy 0 FileFunc_GetParameters_copy
1483 728 mdecorde
	StrCpy $0 $CMDLINE 1 $2
1484 728 mdecorde
	StrCmp $0 ' ' 0 FileFunc_GetParameters_copy
1485 728 mdecorde
	IntOp $2 $2 + 1
1486 728 mdecorde
	Goto FileFunc_GetParameters_strip
1487 728 mdecorde
1488 728 mdecorde
	FileFunc_GetParameters_copy:
1489 728 mdecorde
	StrCpy $0 $CMDLINE "" $2
1490 728 mdecorde
1491 728 mdecorde
	;strip white spaces from end
1492 728 mdecorde
	FileFunc_GetParameters_rstrip:
1493 728 mdecorde
	StrCpy $1 $0 1 -1
1494 728 mdecorde
	StrCmp $1 ' ' 0 FileFunc_GetParameters_done
1495 728 mdecorde
	StrCpy $0 $0 -1
1496 728 mdecorde
	Goto FileFunc_GetParameters_rstrip
1497 728 mdecorde
1498 728 mdecorde
	FileFunc_GetParameters_done:
1499 728 mdecorde
	Pop $3
1500 728 mdecorde
	Pop $2
1501 728 mdecorde
	Pop $1
1502 728 mdecorde
	Exch $0
1503 728 mdecorde
1504 728 mdecorde
	!verbose pop
1505 728 mdecorde
!macroend
1506 728 mdecorde
1507 728 mdecorde
!macro GetOptionsBody _FILEFUNC_S
1508 728 mdecorde
1509 728 mdecorde
	Exch $1
1510 728 mdecorde
	Exch
1511 728 mdecorde
	Exch $0
1512 728 mdecorde
	Exch
1513 728 mdecorde
	Push $2
1514 728 mdecorde
	Push $3
1515 728 mdecorde
	Push $4
1516 728 mdecorde
	Push $5
1517 728 mdecorde
	Push $6
1518 728 mdecorde
	Push $7
1519 728 mdecorde
	ClearErrors
1520 728 mdecorde
1521 728 mdecorde
	StrCpy $2 $1 '' 1
1522 728 mdecorde
	StrCpy $1 $1 1
1523 728 mdecorde
	StrLen $3 $2
1524 728 mdecorde
	StrCpy $7 0
1525 728 mdecorde
1526 728 mdecorde
	FileFunc_GetOptions${_FILEFUNC_S}_begin:
1527 728 mdecorde
	StrCpy $4 -1
1528 728 mdecorde
	StrCpy $6 ''
1529 728 mdecorde
1530 728 mdecorde
	FileFunc_GetOptions${_FILEFUNC_S}_quote:
1531 728 mdecorde
	IntOp $4 $4 + 1
1532 728 mdecorde
	StrCpy $5 $0 1 $4
1533 728 mdecorde
	StrCmp${_FILEFUNC_S} $5$7 '0' FileFunc_GetOptions${_FILEFUNC_S}_notfound
1534 728 mdecorde
	StrCmp${_FILEFUNC_S} $5 '' FileFunc_GetOptions${_FILEFUNC_S}_trimright
1535 728 mdecorde
	StrCmp${_FILEFUNC_S} $5 '"' 0 +7
1536 728 mdecorde
	StrCmp${_FILEFUNC_S} $6 '' 0 +3
1537 728 mdecorde
	StrCpy $6 '"'
1538 728 mdecorde
	goto FileFunc_GetOptions${_FILEFUNC_S}_quote
1539 728 mdecorde
	StrCmp${_FILEFUNC_S} $6 '"' 0 +3
1540 728 mdecorde
	StrCpy $6 ''
1541 728 mdecorde
	goto FileFunc_GetOptions${_FILEFUNC_S}_quote
1542 728 mdecorde
	StrCmp${_FILEFUNC_S} $5 `'` 0 +7
1543 728 mdecorde
	StrCmp${_FILEFUNC_S} $6 `` 0 +3
1544 728 mdecorde
	StrCpy $6 `'`
1545 728 mdecorde
	goto FileFunc_GetOptions${_FILEFUNC_S}_quote
1546 728 mdecorde
	StrCmp${_FILEFUNC_S} $6 `'` 0 +3
1547 728 mdecorde
	StrCpy $6 ``
1548 728 mdecorde
	goto FileFunc_GetOptions${_FILEFUNC_S}_quote
1549 728 mdecorde
	StrCmp${_FILEFUNC_S} $5 '`' 0 +7
1550 728 mdecorde
	StrCmp${_FILEFUNC_S} $6 '' 0 +3
1551 728 mdecorde
	StrCpy $6 '`'
1552 728 mdecorde
	goto FileFunc_GetOptions${_FILEFUNC_S}_quote
1553 728 mdecorde
	StrCmp${_FILEFUNC_S} $6 '`' 0 +3
1554 728 mdecorde
	StrCpy $6 ''
1555 728 mdecorde
	goto FileFunc_GetOptions${_FILEFUNC_S}_quote
1556 728 mdecorde
	StrCmp${_FILEFUNC_S} $6 '"' FileFunc_GetOptions${_FILEFUNC_S}_quote
1557 728 mdecorde
	StrCmp${_FILEFUNC_S} $6 `'` FileFunc_GetOptions${_FILEFUNC_S}_quote
1558 728 mdecorde
	StrCmp${_FILEFUNC_S} $6 '`' FileFunc_GetOptions${_FILEFUNC_S}_quote
1559 728 mdecorde
	StrCmp${_FILEFUNC_S} $5 $1 0 FileFunc_GetOptions${_FILEFUNC_S}_quote
1560 728 mdecorde
	StrCmp${_FILEFUNC_S} $7 0 FileFunc_GetOptions${_FILEFUNC_S}_trimleft FileFunc_GetOptions${_FILEFUNC_S}_trimright
1561 728 mdecorde
1562 728 mdecorde
	FileFunc_GetOptions${_FILEFUNC_S}_trimleft:
1563 728 mdecorde
	IntOp $4 $4 + 1
1564 728 mdecorde
	StrCpy $5 $0 $3 $4
1565 728 mdecorde
	StrCmp${_FILEFUNC_S} $5 '' FileFunc_GetOptions${_FILEFUNC_S}_notfound
1566 728 mdecorde
	StrCmp${_FILEFUNC_S} $5 $2 0 FileFunc_GetOptions${_FILEFUNC_S}_quote
1567 728 mdecorde
	IntOp $4 $4 + $3
1568 728 mdecorde
	StrCpy $0 $0 '' $4
1569 728 mdecorde
	StrCpy $4 $0 1
1570 728 mdecorde
	StrCmp${_FILEFUNC_S} $4 ' ' 0 +3
1571 728 mdecorde
	StrCpy $0 $0 '' 1
1572 728 mdecorde
	goto -3
1573 728 mdecorde
	StrCpy $7 1
1574 728 mdecorde
	goto FileFunc_GetOptions${_FILEFUNC_S}_begin
1575 728 mdecorde
1576 728 mdecorde
	FileFunc_GetOptions${_FILEFUNC_S}_trimright:
1577 728 mdecorde
	StrCpy $0 $0 $4
1578 728 mdecorde
	StrCpy $4 $0 1 -1
1579 728 mdecorde
	StrCmp${_FILEFUNC_S} $4 ' ' 0 +3
1580 728 mdecorde
	StrCpy $0 $0 -1
1581 728 mdecorde
	goto -3
1582 728 mdecorde
	StrCpy $3 $0 1
1583 728 mdecorde
	StrCpy $4 $0 1 -1
1584 728 mdecorde
	StrCmp${_FILEFUNC_S} $3 $4 0 FileFunc_GetOptions${_FILEFUNC_S}_end
1585 728 mdecorde
	StrCmp${_FILEFUNC_S} $3 '"' +3
1586 728 mdecorde
	StrCmp${_FILEFUNC_S} $3 `'` +2
1587 728 mdecorde
	StrCmp${_FILEFUNC_S} $3 '`' 0 FileFunc_GetOptions${_FILEFUNC_S}_end
1588 728 mdecorde
	StrCpy $0 $0 -1 1
1589 728 mdecorde
	goto FileFunc_GetOptions${_FILEFUNC_S}_end
1590 728 mdecorde
1591 728 mdecorde
	FileFunc_GetOptions${_FILEFUNC_S}_notfound:
1592 728 mdecorde
	SetErrors
1593 728 mdecorde
	StrCpy $0 ''
1594 728 mdecorde
1595 728 mdecorde
	FileFunc_GetOptions${_FILEFUNC_S}_end:
1596 728 mdecorde
	Pop $7
1597 728 mdecorde
	Pop $6
1598 728 mdecorde
	Pop $5
1599 728 mdecorde
	Pop $4
1600 728 mdecorde
	Pop $3
1601 728 mdecorde
	Pop $2
1602 728 mdecorde
	Pop $1
1603 728 mdecorde
	Exch $0
1604 728 mdecorde
1605 728 mdecorde
!macroend
1606 728 mdecorde
1607 728 mdecorde
!define GetOptions `!insertmacro GetOptionsCall`
1608 728 mdecorde
!define un.GetOptions `!insertmacro GetOptionsCall`
1609 728 mdecorde
1610 728 mdecorde
!macro GetOptions
1611 728 mdecorde
!macroend
1612 728 mdecorde
1613 728 mdecorde
!macro un.GetOptions
1614 728 mdecorde
!macroend
1615 728 mdecorde
1616 728 mdecorde
!macro GetOptions_
1617 728 mdecorde
	!verbose push
1618 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1619 728 mdecorde
1620 728 mdecorde
	!insertmacro GetOptionsBody ''
1621 728 mdecorde
1622 728 mdecorde
	!verbose pop
1623 728 mdecorde
!macroend
1624 728 mdecorde
1625 728 mdecorde
!define GetOptionsS `!insertmacro GetOptionsSCall`
1626 728 mdecorde
!define un.GetOptionsS `!insertmacro GetOptionsSCall`
1627 728 mdecorde
1628 728 mdecorde
!macro GetOptionsS
1629 728 mdecorde
!macroend
1630 728 mdecorde
1631 728 mdecorde
!macro un.GetOptionsS
1632 728 mdecorde
!macroend
1633 728 mdecorde
1634 728 mdecorde
!macro GetOptionsS_
1635 728 mdecorde
	!verbose push
1636 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1637 728 mdecorde
1638 728 mdecorde
	!insertmacro GetOptionsBody 'S'
1639 728 mdecorde
1640 728 mdecorde
	!verbose pop
1641 728 mdecorde
!macroend
1642 728 mdecorde
1643 728 mdecorde
!define GetRoot `!insertmacro GetRootCall`
1644 728 mdecorde
!define un.GetRoot `!insertmacro GetRootCall`
1645 728 mdecorde
1646 728 mdecorde
!macro GetRoot
1647 728 mdecorde
!macroend
1648 728 mdecorde
1649 728 mdecorde
!macro un.GetRoot
1650 728 mdecorde
!macroend
1651 728 mdecorde
1652 728 mdecorde
!macro GetRoot_
1653 728 mdecorde
	!verbose push
1654 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1655 728 mdecorde
1656 728 mdecorde
	Exch $0
1657 728 mdecorde
	Push $1
1658 728 mdecorde
	Push $2
1659 728 mdecorde
	Push $3
1660 728 mdecorde
1661 728 mdecorde
	StrCpy $1 $0 2
1662 728 mdecorde
	StrCmp $1 '\\' FileFunc_GetRoot_UNC
1663 728 mdecorde
	StrCpy $2 $1 1 1
1664 728 mdecorde
	StrCmp $2 ':' 0 FileFunc_GetRoot_empty
1665 728 mdecorde
	StrCpy $0 $1
1666 728 mdecorde
	goto FileFunc_GetRoot_end
1667 728 mdecorde
1668 728 mdecorde
	FileFunc_GetRoot_UNC:
1669 728 mdecorde
	StrCpy $2 1
1670 728 mdecorde
	StrCpy $3 ''
1671 728 mdecorde
1672 728 mdecorde
	FileFunc_GetRoot_loop:
1673 728 mdecorde
	IntOp $2 $2 + 1
1674 728 mdecorde
	StrCpy $1 $0 1 $2
1675 728 mdecorde
	StrCmp $1$3 '' FileFunc_GetRoot_empty
1676 728 mdecorde
	StrCmp $1 '' +5
1677 728 mdecorde
	StrCmp $1 '\' 0 FileFunc_GetRoot_loop
1678 728 mdecorde
	StrCmp $3 '1' +3
1679 728 mdecorde
	StrCpy $3 '1'
1680 728 mdecorde
	goto FileFunc_GetRoot_loop
1681 728 mdecorde
	StrCpy $0 $0 $2
1682 728 mdecorde
	StrCpy $2 $0 1 -1
1683 728 mdecorde
	StrCmp $2 '\' 0 FileFunc_GetRoot_end
1684 728 mdecorde
1685 728 mdecorde
	FileFunc_GetRoot_empty:
1686 728 mdecorde
	StrCpy $0 ''
1687 728 mdecorde
1688 728 mdecorde
	FileFunc_GetRoot_end:
1689 728 mdecorde
	Pop $3
1690 728 mdecorde
	Pop $2
1691 728 mdecorde
	Pop $1
1692 728 mdecorde
	Exch $0
1693 728 mdecorde
1694 728 mdecorde
	!verbose pop
1695 728 mdecorde
!macroend
1696 728 mdecorde
1697 728 mdecorde
!define GetParent `!insertmacro GetParentCall`
1698 728 mdecorde
!define un.GetParent `!insertmacro GetParentCall`
1699 728 mdecorde
1700 728 mdecorde
!macro GetParent
1701 728 mdecorde
!macroend
1702 728 mdecorde
1703 728 mdecorde
!macro un.GetParent
1704 728 mdecorde
!macroend
1705 728 mdecorde
1706 728 mdecorde
!macro GetParent_
1707 728 mdecorde
	!verbose push
1708 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1709 728 mdecorde
1710 728 mdecorde
	Exch $0
1711 728 mdecorde
	Push $1
1712 728 mdecorde
	Push $2
1713 728 mdecorde
1714 728 mdecorde
	StrCpy $2 $0 1 -1
1715 728 mdecorde
	StrCmp $2 '\' 0 +3
1716 728 mdecorde
	StrCpy $0 $0 -1
1717 728 mdecorde
	goto -3
1718 728 mdecorde
1719 728 mdecorde
	StrCpy $1 0
1720 728 mdecorde
	IntOp $1 $1 - 1
1721 728 mdecorde
	StrCpy $2 $0 1 $1
1722 728 mdecorde
	StrCmp $2 '\' +2
1723 728 mdecorde
	StrCmp $2 '' 0 -3
1724 728 mdecorde
	StrCpy $0 $0 $1
1725 728 mdecorde
1726 728 mdecorde
	Pop $2
1727 728 mdecorde
	Pop $1
1728 728 mdecorde
	Exch $0
1729 728 mdecorde
1730 728 mdecorde
	!verbose pop
1731 728 mdecorde
!macroend
1732 728 mdecorde
1733 728 mdecorde
!define GetFileName `!insertmacro GetFileNameCall`
1734 728 mdecorde
!define un.GetFileName `!insertmacro GetFileNameCall`
1735 728 mdecorde
1736 728 mdecorde
!macro GetFileName
1737 728 mdecorde
!macroend
1738 728 mdecorde
1739 728 mdecorde
!macro un.GetFileName
1740 728 mdecorde
!macroend
1741 728 mdecorde
1742 728 mdecorde
!macro GetFileName_
1743 728 mdecorde
	!verbose push
1744 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1745 728 mdecorde
1746 728 mdecorde
	Exch $0
1747 728 mdecorde
	Push $1
1748 728 mdecorde
	Push $2
1749 728 mdecorde
1750 728 mdecorde
	StrCpy $2 $0 1 -1
1751 728 mdecorde
	StrCmp $2 '\' 0 +3
1752 728 mdecorde
	StrCpy $0 $0 -1
1753 728 mdecorde
	goto -3
1754 728 mdecorde
1755 728 mdecorde
	StrCpy $1 0
1756 728 mdecorde
	IntOp $1 $1 - 1
1757 728 mdecorde
	StrCpy $2 $0 1 $1
1758 728 mdecorde
	StrCmp $2 '' FileFunc_GetFileName_end
1759 728 mdecorde
	StrCmp $2 '\' 0 -3
1760 728 mdecorde
	IntOp $1 $1 + 1
1761 728 mdecorde
	StrCpy $0 $0 '' $1
1762 728 mdecorde
1763 728 mdecorde
	FileFunc_GetFileName_end:
1764 728 mdecorde
	Pop $2
1765 728 mdecorde
	Pop $1
1766 728 mdecorde
	Exch $0
1767 728 mdecorde
1768 728 mdecorde
	!verbose pop
1769 728 mdecorde
!macroend
1770 728 mdecorde
1771 728 mdecorde
!define GetBaseName `!insertmacro GetBaseNameCall`
1772 728 mdecorde
!define un.GetBaseName `!insertmacro GetBaseNameCall`
1773 728 mdecorde
1774 728 mdecorde
!macro GetBaseName
1775 728 mdecorde
!macroend
1776 728 mdecorde
1777 728 mdecorde
!macro un.GetBaseName
1778 728 mdecorde
!macroend
1779 728 mdecorde
1780 728 mdecorde
!macro GetBaseName_
1781 728 mdecorde
	!verbose push
1782 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1783 728 mdecorde
1784 728 mdecorde
	Exch $0
1785 728 mdecorde
	Push $1
1786 728 mdecorde
	Push $2
1787 728 mdecorde
	Push $3
1788 728 mdecorde
1789 728 mdecorde
	StrCpy $1 0
1790 728 mdecorde
	StrCpy $3 ''
1791 728 mdecorde
1792 728 mdecorde
	FileFunc_GetBaseName_loop:
1793 728 mdecorde
	IntOp $1 $1 - 1
1794 728 mdecorde
	StrCpy $2 $0 1 $1
1795 728 mdecorde
	StrCmp $2 '' FileFunc_GetBaseName_trimpath
1796 728 mdecorde
	StrCmp $2 '\' FileFunc_GetBaseName_trimpath
1797 728 mdecorde
	StrCmp $3 'noext' FileFunc_GetBaseName_loop
1798 728 mdecorde
	StrCmp $2 '.' 0 FileFunc_GetBaseName_loop
1799 728 mdecorde
	StrCpy $0 $0 $1
1800 728 mdecorde
	StrCpy $3 'noext'
1801 728 mdecorde
	StrCpy $1 0
1802 728 mdecorde
	goto FileFunc_GetBaseName_loop
1803 728 mdecorde
1804 728 mdecorde
	FileFunc_GetBaseName_trimpath:
1805 728 mdecorde
	StrCmp $1 -1 FileFunc_GetBaseName_empty
1806 728 mdecorde
	IntOp $1 $1 + 1
1807 728 mdecorde
	StrCpy $0 $0 '' $1
1808 728 mdecorde
	goto FileFunc_GetBaseName_end
1809 728 mdecorde
1810 728 mdecorde
	FileFunc_GetBaseName_empty:
1811 728 mdecorde
	StrCpy $0 ''
1812 728 mdecorde
1813 728 mdecorde
	FileFunc_GetBaseName_end:
1814 728 mdecorde
	Pop $3
1815 728 mdecorde
	Pop $2
1816 728 mdecorde
	Pop $1
1817 728 mdecorde
	Exch $0
1818 728 mdecorde
1819 728 mdecorde
	!verbose pop
1820 728 mdecorde
!macroend
1821 728 mdecorde
1822 728 mdecorde
!define GetFileExt `!insertmacro GetFileExtCall`
1823 728 mdecorde
!define un.GetFileExt `!insertmacro GetFileExtCall`
1824 728 mdecorde
1825 728 mdecorde
!macro GetFileExt
1826 728 mdecorde
!macroend
1827 728 mdecorde
1828 728 mdecorde
!macro un.GetFileExt
1829 728 mdecorde
!macroend
1830 728 mdecorde
1831 728 mdecorde
!macro GetFileExt_
1832 728 mdecorde
	!verbose push
1833 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1834 728 mdecorde
1835 728 mdecorde
	Exch $0
1836 728 mdecorde
	Push $1
1837 728 mdecorde
	Push $2
1838 728 mdecorde
1839 728 mdecorde
	StrCpy $1 0
1840 728 mdecorde
1841 728 mdecorde
	FileFunc_GetFileExt_loop:
1842 728 mdecorde
	IntOp $1 $1 - 1
1843 728 mdecorde
	StrCpy $2 $0 1 $1
1844 728 mdecorde
	StrCmp $2 '' FileFunc_GetFileExt_empty
1845 728 mdecorde
	StrCmp $2 '\' FileFunc_GetFileExt_empty
1846 728 mdecorde
	StrCmp $2 '.' 0 FileFunc_GetFileExt_loop
1847 728 mdecorde
1848 728 mdecorde
	StrCmp $1 -1 FileFunc_GetFileExt_empty
1849 728 mdecorde
	IntOp $1 $1 + 1
1850 728 mdecorde
	StrCpy $0 $0 '' $1
1851 728 mdecorde
	goto FileFunc_GetFileExt_end
1852 728 mdecorde
1853 728 mdecorde
	FileFunc_GetFileExt_empty:
1854 728 mdecorde
	StrCpy $0 ''
1855 728 mdecorde
1856 728 mdecorde
	FileFunc_GetFileExt_end:
1857 728 mdecorde
	Pop $2
1858 728 mdecorde
	Pop $1
1859 728 mdecorde
	Exch $0
1860 728 mdecorde
1861 728 mdecorde
	!verbose pop
1862 728 mdecorde
!macroend
1863 728 mdecorde
1864 728 mdecorde
!define BannerTrimPath `!insertmacro BannerTrimPathCall`
1865 728 mdecorde
!define un.BannerTrimPath `!insertmacro BannerTrimPathCall`
1866 728 mdecorde
1867 728 mdecorde
!macro BannerTrimPath
1868 728 mdecorde
!macroend
1869 728 mdecorde
1870 728 mdecorde
!macro un.BannerTrimPath
1871 728 mdecorde
!macroend
1872 728 mdecorde
1873 728 mdecorde
!macro BannerTrimPath_
1874 728 mdecorde
	!verbose push
1875 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1876 728 mdecorde
1877 728 mdecorde
	Exch $1
1878 728 mdecorde
	Exch
1879 728 mdecorde
	Exch $0
1880 728 mdecorde
	Exch
1881 728 mdecorde
	Push $2
1882 728 mdecorde
	Push $3
1883 728 mdecorde
	Push $4
1884 728 mdecorde
1885 728 mdecorde
	StrCpy $3 $1 1 -1
1886 728 mdecorde
	IntOp $1 $1 + 0
1887 728 mdecorde
	StrLen $2 $0
1888 728 mdecorde
	IntCmp $2 $1 FileFunc_BannerTrimPath_end FileFunc_BannerTrimPath_end
1889 728 mdecorde
	IntOp $1 $1 - 3
1890 728 mdecorde
	IntCmp $1 0 FileFunc_BannerTrimPath_empty FileFunc_BannerTrimPath_empty
1891 728 mdecorde
	StrCmp $3 'A' FileFunc_BannerTrimPath_A-trim
1892 728 mdecorde
	StrCmp $3 'B' FileFunc_BannerTrimPath_B-trim
1893 728 mdecorde
	StrCmp $3 'C' FileFunc_BannerTrimPath_C-trim
1894 728 mdecorde
	StrCmp $3 'D' FileFunc_BannerTrimPath_D-trim
1895 728 mdecorde
1896 728 mdecorde
	FileFunc_BannerTrimPath_A-trim:
1897 728 mdecorde
	StrCpy $3 $0 1 1
1898 728 mdecorde
	StrCpy $2 0
1899 728 mdecorde
	StrCmp $3 ':' 0 +2
1900 728 mdecorde
	IntOp $2 $2 + 2
1901 728 mdecorde
1902 728 mdecorde
	FileFunc_BannerTrimPath_loopleft:
1903 728 mdecorde
	IntOp $2 $2 + 1
1904 728 mdecorde
	StrCpy $3 $0 1 $2
1905 728 mdecorde
	StrCmp $2 $1 FileFunc_BannerTrimPath_C-trim
1906 728 mdecorde
	StrCmp $3 '\' 0 FileFunc_BannerTrimPath_loopleft
1907 728 mdecorde
	StrCpy $3 $0 $2
1908 728 mdecorde
	IntOp $2 $2 - $1
1909 728 mdecorde
	IntCmp $2 0 FileFunc_BannerTrimPath_B-trim 0 FileFunc_BannerTrimPath_B-trim
1910 728 mdecorde
1911 728 mdecorde
	FileFunc_BannerTrimPath_loopright:
1912 728 mdecorde
	IntOp $2 $2 + 1
1913 728 mdecorde
	StrCpy $4 $0 1 $2
1914 728 mdecorde
	StrCmp $2 0 FileFunc_BannerTrimPath_B-trim
1915 728 mdecorde
	StrCmp $4 '\' 0 FileFunc_BannerTrimPath_loopright
1916 728 mdecorde
	StrCpy $4 $0 '' $2
1917 728 mdecorde
	StrCpy $0 '$3\...$4'
1918 728 mdecorde
	goto FileFunc_BannerTrimPath_end
1919 728 mdecorde
1920 728 mdecorde
	FileFunc_BannerTrimPath_B-trim:
1921 728 mdecorde
	StrCpy $2 $1
1922 728 mdecorde
	IntOp $2 $2 - 1
1923 728 mdecorde
	StrCmp $2 -1 FileFunc_BannerTrimPath_C-trim
1924 728 mdecorde
	StrCpy $3 $0 1 $2
1925 728 mdecorde
	StrCmp $3 '\' 0 -3
1926 728 mdecorde
	StrCpy $0 $0 $2
1927 728 mdecorde
	StrCpy $0 '$0\...'
1928 728 mdecorde
	goto FileFunc_BannerTrimPath_end
1929 728 mdecorde
1930 728 mdecorde
	FileFunc_BannerTrimPath_C-trim:
1931 728 mdecorde
	StrCpy $0 $0 $1
1932 728 mdecorde
	StrCpy $0 '$0...'
1933 728 mdecorde
	goto FileFunc_BannerTrimPath_end
1934 728 mdecorde
1935 728 mdecorde
	FileFunc_BannerTrimPath_D-trim:
1936 728 mdecorde
	StrCpy $3 -1
1937 728 mdecorde
	IntOp $3 $3 - 1
1938 728 mdecorde
	StrCmp $3 -$2 FileFunc_BannerTrimPath_C-trim
1939 728 mdecorde
	StrCpy $4 $0 1 $3
1940 728 mdecorde
	StrCmp $4 '\' 0 -3
1941 728 mdecorde
	StrCpy $4 $0 '' $3
1942 728 mdecorde
	IntOp $3 $1 + $3
1943 728 mdecorde
	IntCmp $3 2 FileFunc_BannerTrimPath_C-trim FileFunc_BannerTrimPath_C-trim
1944 728 mdecorde
	StrCpy $0 $0 $3
1945 728 mdecorde
	StrCpy $0 '$0...$4'
1946 728 mdecorde
	goto FileFunc_BannerTrimPath_end
1947 728 mdecorde
1948 728 mdecorde
	FileFunc_BannerTrimPath_empty:
1949 728 mdecorde
	StrCpy $0 ''
1950 728 mdecorde
1951 728 mdecorde
	FileFunc_BannerTrimPath_end:
1952 728 mdecorde
	Pop $4
1953 728 mdecorde
	Pop $3
1954 728 mdecorde
	Pop $2
1955 728 mdecorde
	Pop $1
1956 728 mdecorde
	Exch $0
1957 728 mdecorde
1958 728 mdecorde
	!verbose pop
1959 728 mdecorde
!macroend
1960 728 mdecorde
1961 728 mdecorde
!define DirState `!insertmacro DirStateCall`
1962 728 mdecorde
!define un.DirState `!insertmacro DirStateCall`
1963 728 mdecorde
1964 728 mdecorde
!macro DirState
1965 728 mdecorde
!macroend
1966 728 mdecorde
1967 728 mdecorde
!macro un.DirState
1968 728 mdecorde
!macroend
1969 728 mdecorde
1970 728 mdecorde
!macro DirState_
1971 728 mdecorde
	!verbose push
1972 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
1973 728 mdecorde
1974 728 mdecorde
	Exch $0
1975 728 mdecorde
	Push $1
1976 728 mdecorde
	ClearErrors
1977 728 mdecorde
1978 728 mdecorde
	FindFirst $1 $0 '$0\*.*'
1979 728 mdecorde
	IfErrors 0 +3
1980 728 mdecorde
	StrCpy $0 -1
1981 728 mdecorde
	goto FileFunc_DirState_end
1982 728 mdecorde
	StrCmp $0 '.' 0 +4
1983 728 mdecorde
	FindNext $1 $0
1984 728 mdecorde
	StrCmp $0 '..' 0 +2
1985 728 mdecorde
	FindNext $1 $0
1986 728 mdecorde
	FindClose $1
1987 728 mdecorde
	IfErrors 0 +3
1988 728 mdecorde
	StrCpy $0 0
1989 728 mdecorde
	goto FileFunc_DirState_end
1990 728 mdecorde
	StrCpy $0 1
1991 728 mdecorde
1992 728 mdecorde
	FileFunc_DirState_end:
1993 728 mdecorde
	Pop $1
1994 728 mdecorde
	Exch $0
1995 728 mdecorde
1996 728 mdecorde
	!verbose pop
1997 728 mdecorde
!macroend
1998 728 mdecorde
1999 728 mdecorde
!define RefreshShellIcons `!insertmacro RefreshShellIconsCall`
2000 728 mdecorde
!define un.RefreshShellIcons `!insertmacro RefreshShellIconsCall`
2001 728 mdecorde
2002 728 mdecorde
!macro RefreshShellIcons
2003 728 mdecorde
!macroend
2004 728 mdecorde
2005 728 mdecorde
!macro un.RefreshShellIcons
2006 728 mdecorde
!macroend
2007 728 mdecorde
2008 728 mdecorde
!macro RefreshShellIcons_
2009 728 mdecorde
	!verbose push
2010 728 mdecorde
	!verbose ${_FILEFUNC_VERBOSE}
2011 728 mdecorde
2012 728 mdecorde
	System::Call 'shell32::SHChangeNotify(i 0x08000000, i 0, i 0, i 0)'
2013 728 mdecorde
2014 728 mdecorde
	!verbose pop
2015 728 mdecorde
!macroend
2016 728 mdecorde
2017 728 mdecorde
!endif