Statistiques
| Révision :

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

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