root / tmp / org.txm.setups / nsis / Include / TextFunc.nsh @ 2021
Historique | Voir | Annoter | Télécharger (23,84 ko)
1 |
/* |
---|---|
2 |
_____________________________________________________________________________ |
3 |
|
4 |
Text Functions Header v2.4 |
5 |
_____________________________________________________________________________ |
6 |
|
7 |
2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) |
8 |
|
9 |
See documentation for more information about the following functions. |
10 |
|
11 |
Usage in script: |
12 |
1. !include "TextFunc.nsh" |
13 |
2. [Section|Function] |
14 |
${TextFunction} "File" "..." $var |
15 |
[SectionEnd|FunctionEnd] |
16 |
|
17 |
|
18 |
TextFunction=[LineFind|LineRead|FileReadFromEnd|LineSum|FileJoin| |
19 |
TextCompare|TextCompareS|ConfigRead|ConfigReadS| |
20 |
ConfigWrite|ConfigWriteS|FileRecode|TrimNewLines] |
21 |
|
22 |
_____________________________________________________________________________ |
23 |
|
24 |
Thanks to: |
25 |
_____________________________________________________________________________ |
26 |
|
27 |
LineRead |
28 |
Afrow UK (Based on his idea of Function "ReadFileLine") |
29 |
LineSum |
30 |
Afrow UK (Based on his idea of Function "LineCount") |
31 |
FileJoin |
32 |
Afrow UK (Based on his idea of Function "JoinFiles") |
33 |
ConfigRead |
34 |
vbgunz (His idea) |
35 |
ConfigWrite |
36 |
vbgunz (His idea) |
37 |
TrimNewLines |
38 |
sunjammer (Based on his Function "TrimNewLines") |
39 |
*/ |
40 |
|
41 |
|
42 |
;_____________________________________________________________________________ |
43 |
; |
44 |
; Macros |
45 |
;_____________________________________________________________________________ |
46 |
; |
47 |
; Change log window verbosity (default: 3=no script) |
48 |
; |
49 |
; Example: |
50 |
; !include "TextFunc.nsh" |
51 |
; !insertmacro LineFind |
52 |
; ${TEXTFUNC_VERBOSE} 4 # all verbosity |
53 |
; !insertmacro LineSum |
54 |
; ${TEXTFUNC_VERBOSE} 3 # no script |
55 |
|
56 |
!ifndef TEXTFUNC_INCLUDED |
57 |
!define TEXTFUNC_INCLUDED |
58 |
|
59 |
!include FileFunc.nsh |
60 |
!include Util.nsh |
61 |
|
62 |
!verbose push |
63 |
!verbose 3 |
64 |
!ifndef _TEXTFUNC_VERBOSE |
65 |
!define _TEXTFUNC_VERBOSE 3 |
66 |
!endif |
67 |
!verbose ${_TEXTFUNC_VERBOSE} |
68 |
!define TEXTFUNC_VERBOSE `!insertmacro TEXTFUNC_VERBOSE` |
69 |
!verbose pop |
70 |
|
71 |
!macro TEXTFUNC_VERBOSE _VERBOSE |
72 |
!verbose push |
73 |
!verbose 3 |
74 |
!undef _TEXTFUNC_VERBOSE |
75 |
!define _TEXTFUNC_VERBOSE ${_VERBOSE} |
76 |
!verbose pop |
77 |
!macroend |
78 |
|
79 |
!macro LineFindCall _INPUT _OUTPUT _RANGE _FUNC |
80 |
!verbose push |
81 |
!verbose ${_TEXTFUNC_VERBOSE} |
82 |
Push $0 |
83 |
Push `${_INPUT}` |
84 |
Push `${_OUTPUT}` |
85 |
Push `${_RANGE}` |
86 |
GetFunctionAddress $0 `${_FUNC}` |
87 |
Push `$0` |
88 |
${CallArtificialFunction} LineFind_ |
89 |
Pop $0 |
90 |
!verbose pop |
91 |
!macroend |
92 |
|
93 |
!macro LineReadCall _FILE _NUMBER _RESULT |
94 |
!verbose push |
95 |
!verbose ${_TEXTFUNC_VERBOSE} |
96 |
Push `${_FILE}` |
97 |
Push `${_NUMBER}` |
98 |
${CallArtificialFunction} LineRead_ |
99 |
Pop ${_RESULT} |
100 |
!verbose pop |
101 |
!macroend |
102 |
|
103 |
!macro FileReadFromEndCall _FILE _FUNC |
104 |
!verbose push |
105 |
!verbose ${_TEXTFUNC_VERBOSE} |
106 |
Push $0 |
107 |
Push `${_FILE}` |
108 |
GetFunctionAddress $0 `${_FUNC}` |
109 |
Push `$0` |
110 |
${CallArtificialFunction} FileReadFromEnd_ |
111 |
Pop $0 |
112 |
!verbose pop |
113 |
!macroend |
114 |
|
115 |
!macro LineSumCall _FILE _RESULT |
116 |
!verbose push |
117 |
!verbose ${_TEXTFUNC_VERBOSE} |
118 |
Push `${_FILE}` |
119 |
${CallArtificialFunction} LineSum_ |
120 |
Pop ${_RESULT} |
121 |
!verbose pop |
122 |
!macroend |
123 |
|
124 |
!macro FileJoinCall _FILE1 _FILE2 _FILE3 |
125 |
!verbose push |
126 |
!verbose ${_TEXTFUNC_VERBOSE} |
127 |
Push `${_FILE1}` |
128 |
Push `${_FILE2}` |
129 |
Push `${_FILE3}` |
130 |
${CallArtificialFunction} FileJoin_ |
131 |
!verbose pop |
132 |
!macroend |
133 |
|
134 |
!macro TextCompareCall _FILE1 _FILE2 _OPTION _FUNC |
135 |
!verbose push |
136 |
!verbose ${_TEXTFUNC_VERBOSE} |
137 |
Push $0 |
138 |
Push `${_FILE1}` |
139 |
Push `${_FILE2}` |
140 |
Push `${_OPTION}` |
141 |
GetFunctionAddress $0 `${_FUNC}` |
142 |
Push `$0` |
143 |
${CallArtificialFunction} TextCompare_ |
144 |
Pop $0 |
145 |
!verbose pop |
146 |
!macroend |
147 |
|
148 |
!macro TextCompareSCall _FILE1 _FILE2 _OPTION _FUNC |
149 |
!verbose push |
150 |
!verbose ${_TEXTFUNC_VERBOSE} |
151 |
Push $0 |
152 |
Push `${_FILE1}` |
153 |
Push `${_FILE2}` |
154 |
Push `${_OPTION}` |
155 |
GetFunctionAddress $0 `${_FUNC}` |
156 |
Push `$0` |
157 |
${CallArtificialFunction} TextCompareS_ |
158 |
Pop $0 |
159 |
!verbose pop |
160 |
!macroend |
161 |
|
162 |
!macro ConfigReadCall _FILE _ENTRY _RESULT |
163 |
!verbose push |
164 |
!verbose ${_TEXTFUNC_VERBOSE} |
165 |
Push `${_FILE}` |
166 |
Push `${_ENTRY}` |
167 |
${CallArtificialFunction} ConfigRead_ |
168 |
Pop ${_RESULT} |
169 |
!verbose pop |
170 |
!macroend |
171 |
|
172 |
!macro ConfigReadSCall _FILE _ENTRY _RESULT |
173 |
!verbose push |
174 |
!verbose ${_TEXTFUNC_VERBOSE} |
175 |
Push `${_FILE}` |
176 |
Push `${_ENTRY}` |
177 |
${CallArtificialFunction} ConfigReadS_ |
178 |
Pop ${_RESULT} |
179 |
!verbose pop |
180 |
!macroend |
181 |
|
182 |
!macro ConfigWriteCall _FILE _ENTRY _VALUE _RESULT |
183 |
!verbose push |
184 |
!verbose ${_TEXTFUNC_VERBOSE} |
185 |
Push `${_FILE}` |
186 |
Push `${_ENTRY}` |
187 |
Push `${_VALUE}` |
188 |
${CallArtificialFunction} ConfigWrite_ |
189 |
Pop ${_RESULT} |
190 |
!verbose pop |
191 |
!macroend |
192 |
|
193 |
!macro ConfigWriteSCall _FILE _ENTRY _VALUE _RESULT |
194 |
!verbose push |
195 |
!verbose ${_TEXTFUNC_VERBOSE} |
196 |
Push `${_FILE}` |
197 |
Push `${_ENTRY}` |
198 |
Push `${_VALUE}` |
199 |
${CallArtificialFunction} ConfigWriteS_ |
200 |
Pop ${_RESULT} |
201 |
!verbose pop |
202 |
!macroend |
203 |
|
204 |
!macro FileRecodeCall _FILE _FORMAT |
205 |
!verbose push |
206 |
!verbose ${_TEXTFUNC_VERBOSE} |
207 |
Push `${_FILE}` |
208 |
Push `${_FORMAT}` |
209 |
${CallArtificialFunction} FileRecode_ |
210 |
!verbose pop |
211 |
!macroend |
212 |
|
213 |
!macro TrimNewLinesCall _FILE _RESULT |
214 |
!verbose push |
215 |
!verbose ${_TEXTFUNC_VERBOSE} |
216 |
Push `${_FILE}` |
217 |
${CallArtificialFunction} TrimNewLines_ |
218 |
Pop ${_RESULT} |
219 |
!verbose pop |
220 |
!macroend |
221 |
|
222 |
!macro _TextFunc_TempFileForFile _FILE _RESULT |
223 |
# XXX replace with GetParent |
224 |
Push `${_FILE}` |
225 |
Exch $0 |
226 |
Push $1 |
227 |
Push $2 |
228 |
|
229 |
StrCpy $2 $0 1 -1 |
230 |
StrCmp $2 '\' 0 +3 |
231 |
StrCpy $0 $0 -1 |
232 |
goto -3 |
233 |
|
234 |
StrCpy $1 0 |
235 |
IntOp $1 $1 - 1 |
236 |
StrCpy $2 $0 1 $1 |
237 |
StrCmp $2 '\' +2 |
238 |
StrCmp $2 '' 0 -3 |
239 |
StrCpy $0 $0 $1 |
240 |
|
241 |
Pop $2 |
242 |
Pop $1 |
243 |
Exch $0 |
244 |
Pop ${_RESULT} |
245 |
# XXX |
246 |
StrCmp ${_RESULT} "" 0 +2 |
247 |
StrCpy ${_RESULT} $EXEDIR |
248 |
GetTempFileName ${_RESULT} ${_RESULT} |
249 |
StrCmp ${_RESULT} "" 0 +2 |
250 |
GetTempFileName ${_RESULT} |
251 |
ClearErrors |
252 |
!macroend |
253 |
|
254 |
!define LineFind `!insertmacro LineFindCall` |
255 |
!define un.LineFind `!insertmacro LineFindCall` |
256 |
|
257 |
!macro LineFind |
258 |
!macroend |
259 |
|
260 |
!macro un.LineFind |
261 |
!macroend |
262 |
|
263 |
!macro LineFind_ |
264 |
!verbose push |
265 |
!verbose ${_TEXTFUNC_VERBOSE} |
266 |
|
267 |
Exch $3 |
268 |
Exch |
269 |
Exch $2 |
270 |
Exch |
271 |
Exch 2 |
272 |
Exch $1 |
273 |
Exch 2 |
274 |
Exch 3 |
275 |
Exch $0 |
276 |
Exch 3 |
277 |
Push $4 |
278 |
Push $5 |
279 |
Push $6 |
280 |
Push $7 |
281 |
Push $8 |
282 |
Push $9 |
283 |
Push $R4 |
284 |
Push $R5 |
285 |
Push $R6 |
286 |
Push $R7 |
287 |
Push $R8 |
288 |
Push $R9 |
289 |
ClearErrors |
290 |
|
291 |
IfFileExists '$0' 0 TextFunc_LineFind_error |
292 |
StrCmp $1 '/NUL' TextFunc_LineFind_begin |
293 |
StrCpy $8 0 |
294 |
IntOp $8 $8 - 1 |
295 |
StrCpy $9 $1 1 $8 |
296 |
StrCmp $9 \ +2 |
297 |
StrCmp $9 '' +3 -3 |
298 |
StrCpy $9 $1 $8 |
299 |
IfFileExists '$9\*.*' 0 TextFunc_LineFind_error |
300 |
|
301 |
TextFunc_LineFind_begin: |
302 |
StrCpy $4 1 |
303 |
StrCpy $5 -1 |
304 |
StrCpy $6 0 |
305 |
StrCpy $7 0 |
306 |
StrCpy $R4 '' |
307 |
StrCpy $R6 '' |
308 |
StrCpy $R7 '' |
309 |
StrCpy $R8 0 |
310 |
|
311 |
StrCpy $8 $2 1 |
312 |
StrCmp $8 '{' 0 TextFunc_LineFind_delspaces |
313 |
StrCpy $2 $2 '' 1 |
314 |
StrCpy $8 $2 1 -1 |
315 |
StrCmp $8 '}' 0 TextFunc_LineFind_delspaces |
316 |
StrCpy $2 $2 -1 |
317 |
StrCpy $R6 TextFunc_LineFind_cut |
318 |
|
319 |
TextFunc_LineFind_delspaces: |
320 |
StrCpy $8 $2 1 |
321 |
StrCmp $8 ' ' 0 +3 |
322 |
StrCpy $2 $2 '' 1 |
323 |
goto -3 |
324 |
StrCmp $2$7 '0' TextFunc_LineFind_file |
325 |
StrCpy $4 '' |
326 |
StrCpy $5 '' |
327 |
StrCmp $2 '' TextFunc_LineFind_writechk |
328 |
|
329 |
TextFunc_LineFind_range: |
330 |
StrCpy $8 0 |
331 |
StrCpy $9 $2 1 $8 |
332 |
StrCmp $9 '' +5 |
333 |
StrCmp $9 ' ' +4 |
334 |
StrCmp $9 ':' +3 |
335 |
IntOp $8 $8 + 1 |
336 |
goto -5 |
337 |
StrCpy $5 $2 $8 |
338 |
IntOp $5 $5 + 0 |
339 |
IntOp $8 $8 + 1 |
340 |
StrCpy $2 $2 '' $8 |
341 |
StrCmp $4 '' 0 +2 |
342 |
StrCpy $4 $5 |
343 |
StrCmp $9 ':' TextFunc_LineFind_range |
344 |
|
345 |
IntCmp $4 0 0 +2 |
346 |
IntCmp $5 -1 TextFunc_LineFind_goto 0 TextFunc_LineFind_growthcmp |
347 |
StrCmp $R7 '' 0 TextFunc_LineFind_minus2plus |
348 |
StrCpy $R7 0 |
349 |
FileOpen $8 $0 r |
350 |
FileRead $8 $9 |
351 |
IfErrors +3 |
352 |
IntOp $R7 $R7 + 1 |
353 |
Goto -3 |
354 |
FileClose $8 |
355 |
|
356 |
TextFunc_LineFind_minus2plus: |
357 |
IntCmp $4 0 +5 0 +5 |
358 |
IntOp $4 $R7 + $4 |
359 |
IntOp $4 $4 + 1 |
360 |
IntCmp $4 0 +2 0 +2 |
361 |
StrCpy $4 0 |
362 |
IntCmp $5 -1 TextFunc_LineFind_goto 0 TextFunc_LineFind_growthcmp |
363 |
IntOp $5 $R7 + $5 |
364 |
IntOp $5 $5 + 1 |
365 |
TextFunc_LineFind_growthcmp: |
366 |
IntCmp $4 $5 TextFunc_LineFind_goto TextFunc_LineFind_goto |
367 |
StrCpy $5 $4 |
368 |
TextFunc_LineFind_goto: |
369 |
goto $7 |
370 |
|
371 |
TextFunc_LineFind_file: |
372 |
StrCmp $1 '/NUL' TextFunc_LineFind_notemp |
373 |
!insertmacro _TextFunc_TempFileForFile $1 $R4 |
374 |
Push $R4 |
375 |
FileOpen $R4 $R4 w |
376 |
TextFunc_LineFind_notemp: |
377 |
FileOpen $R5 $0 r |
378 |
IfErrors TextFunc_LineFind_preerror |
379 |
|
380 |
TextFunc_LineFind_loop: |
381 |
IntOp $R8 $R8 + 1 |
382 |
FileRead $R5 $R9 |
383 |
IfErrors TextFunc_LineFind_handleclose |
384 |
|
385 |
TextFunc_LineFind_cmp: |
386 |
StrCmp $2$4$5 '' TextFunc_LineFind_writechk |
387 |
IntCmp $4 $R8 TextFunc_LineFind_call 0 TextFunc_LineFind_writechk |
388 |
StrCmp $5 -1 TextFunc_LineFind_call |
389 |
IntCmp $5 $R8 TextFunc_LineFind_call 0 TextFunc_LineFind_call |
390 |
|
391 |
GetLabelAddress $7 TextFunc_LineFind_cmp |
392 |
goto TextFunc_LineFind_delspaces |
393 |
|
394 |
TextFunc_LineFind_call: |
395 |
StrCpy $7 $R9 |
396 |
Push $0 |
397 |
Push $1 |
398 |
Push $2 |
399 |
Push $3 |
400 |
Push $4 |
401 |
Push $5 |
402 |
Push $6 |
403 |
Push $7 |
404 |
Push $R4 |
405 |
Push $R5 |
406 |
Push $R6 |
407 |
Push $R7 |
408 |
Push $R8 |
409 |
StrCpy $R6 '$4:$5' |
410 |
StrCmp $R7 '' +3 |
411 |
IntOp $R7 $R8 - $R7 |
412 |
IntOp $R7 $R7 - 1 |
413 |
Call $3 |
414 |
Pop $9 |
415 |
Pop $R8 |
416 |
Pop $R7 |
417 |
Pop $R6 |
418 |
Pop $R5 |
419 |
Pop $R4 |
420 |
Pop $7 |
421 |
Pop $6 |
422 |
Pop $5 |
423 |
Pop $4 |
424 |
Pop $3 |
425 |
Pop $2 |
426 |
Pop $1 |
427 |
Pop $0 |
428 |
IfErrors TextFunc_LineFind_preerror |
429 |
StrCmp $9 'StopLineFind' 0 +3 |
430 |
IntOp $6 $6 + 1 |
431 |
goto TextFunc_LineFind_handleclose |
432 |
StrCmp $1 '/NUL' TextFunc_LineFind_loop |
433 |
StrCmp $9 'SkipWrite' 0 +3 |
434 |
IntOp $6 $6 + 1 |
435 |
goto TextFunc_LineFind_loop |
436 |
StrCmp $7 $R9 TextFunc_LineFind_write |
437 |
IntOp $6 $6 + 1 |
438 |
goto TextFunc_LineFind_write |
439 |
|
440 |
TextFunc_LineFind_writechk: |
441 |
StrCmp $1 '/NUL' TextFunc_LineFind_loop |
442 |
StrCmp $R6 TextFunc_LineFind_cut 0 TextFunc_LineFind_write |
443 |
IntOp $6 $6 + 1 |
444 |
goto TextFunc_LineFind_loop |
445 |
|
446 |
TextFunc_LineFind_write: |
447 |
FileWrite $R4 $R9 |
448 |
goto TextFunc_LineFind_loop |
449 |
|
450 |
TextFunc_LineFind_preerror: |
451 |
SetErrors |
452 |
|
453 |
TextFunc_LineFind_handleclose: |
454 |
StrCmp $1 '/NUL' +3 |
455 |
FileClose $R4 |
456 |
Pop $R4 |
457 |
FileClose $R5 |
458 |
IfErrors TextFunc_LineFind_error |
459 |
|
460 |
StrCmp $1 '/NUL' TextFunc_LineFind_end |
461 |
StrCmp $1 '' 0 +2 |
462 |
StrCpy $1 $0 |
463 |
StrCmp $6 0 0 TextFunc_LineFind_rename |
464 |
FileOpen $7 $0 r |
465 |
FileSeek $7 0 END $8 |
466 |
FileClose $7 |
467 |
FileOpen $7 $R4 r |
468 |
FileSeek $7 0 END $9 |
469 |
FileClose $7 |
470 |
IntCmp $8 $9 0 TextFunc_LineFind_rename |
471 |
Delete $R4 |
472 |
StrCmp $1 $0 TextFunc_LineFind_end |
473 |
CopyFiles /SILENT $0 $1 |
474 |
goto TextFunc_LineFind_end |
475 |
|
476 |
TextFunc_LineFind_rename: |
477 |
Delete '$EXEDIR\$1' |
478 |
Rename $R4 '$EXEDIR\$1' |
479 |
IfErrors 0 TextFunc_LineFind_end |
480 |
Delete $1 |
481 |
Rename $R4 $1 |
482 |
IfErrors 0 TextFunc_LineFind_end |
483 |
|
484 |
TextFunc_LineFind_error: |
485 |
SetErrors |
486 |
|
487 |
TextFunc_LineFind_end: |
488 |
Pop $R9 |
489 |
Pop $R8 |
490 |
Pop $R7 |
491 |
Pop $R6 |
492 |
Pop $R5 |
493 |
Pop $R4 |
494 |
Pop $9 |
495 |
Pop $8 |
496 |
Pop $7 |
497 |
Pop $6 |
498 |
Pop $5 |
499 |
Pop $4 |
500 |
Pop $3 |
501 |
Pop $2 |
502 |
Pop $1 |
503 |
Pop $0 |
504 |
|
505 |
!verbose pop |
506 |
!macroend |
507 |
|
508 |
!define LineRead `!insertmacro LineReadCall` |
509 |
!define un.LineRead `!insertmacro LineReadCall` |
510 |
|
511 |
!macro LineRead |
512 |
!macroend |
513 |
|
514 |
!macro un.LineRead |
515 |
!macroend |
516 |
|
517 |
!macro LineRead_ |
518 |
!verbose push |
519 |
!verbose ${_TEXTFUNC_VERBOSE} |
520 |
|
521 |
Exch $1 |
522 |
Exch |
523 |
Exch $0 |
524 |
Exch |
525 |
Push $2 |
526 |
Push $3 |
527 |
Push $4 |
528 |
ClearErrors |
529 |
|
530 |
IfFileExists $0 0 TextFunc_LineRead_error |
531 |
IntOp $1 $1 + 0 |
532 |
IntCmp $1 0 TextFunc_LineRead_error 0 TextFunc_LineRead_plus |
533 |
StrCpy $4 0 |
534 |
FileOpen $2 $0 r |
535 |
IfErrors TextFunc_LineRead_error |
536 |
FileRead $2 $3 |
537 |
IfErrors +3 |
538 |
IntOp $4 $4 + 1 |
539 |
Goto -3 |
540 |
FileClose $2 |
541 |
IntOp $1 $4 + $1 |
542 |
IntOp $1 $1 + 1 |
543 |
IntCmp $1 0 TextFunc_LineRead_error TextFunc_LineRead_error |
544 |
|
545 |
TextFunc_LineRead_plus: |
546 |
FileOpen $2 $0 r |
547 |
IfErrors TextFunc_LineRead_error |
548 |
StrCpy $3 0 |
549 |
IntOp $3 $3 + 1 |
550 |
FileRead $2 $0 |
551 |
IfErrors +4 |
552 |
StrCmp $3 $1 0 -3 |
553 |
FileClose $2 |
554 |
goto TextFunc_LineRead_end |
555 |
FileClose $2 |
556 |
|
557 |
TextFunc_LineRead_error: |
558 |
SetErrors |
559 |
StrCpy $0 '' |
560 |
|
561 |
TextFunc_LineRead_end: |
562 |
Pop $4 |
563 |
Pop $3 |
564 |
Pop $2 |
565 |
Pop $1 |
566 |
Exch $0 |
567 |
|
568 |
!verbose pop |
569 |
!macroend |
570 |
|
571 |
!define FileReadFromEnd `!insertmacro FileReadFromEndCall` |
572 |
!define un.FileReadFromEnd `!insertmacro FileReadFromEndCall` |
573 |
|
574 |
!macro FileReadFromEnd |
575 |
!macroend |
576 |
|
577 |
!macro un.FileReadFromEnd |
578 |
!macroend |
579 |
|
580 |
!macro FileReadFromEnd_ |
581 |
!verbose push |
582 |
!verbose ${_TEXTFUNC_VERBOSE} |
583 |
|
584 |
Exch $1 |
585 |
Exch |
586 |
Exch $0 |
587 |
Exch |
588 |
Push $7 |
589 |
Push $8 |
590 |
Push $9 |
591 |
ClearErrors |
592 |
|
593 |
StrCpy $7 -1 |
594 |
StrCpy $8 0 |
595 |
IfFileExists $0 0 TextFunc_FileReadFromEnd_error |
596 |
FileOpen $0 $0 r |
597 |
IfErrors TextFunc_FileReadFromEnd_error |
598 |
FileRead $0 $9 |
599 |
IfErrors +4 |
600 |
Push $9 |
601 |
IntOp $8 $8 + 1 |
602 |
goto -4 |
603 |
FileClose $0 |
604 |
|
605 |
TextFunc_FileReadFromEnd_nextline: |
606 |
StrCmp $8 0 TextFunc_FileReadFromEnd_end |
607 |
Pop $9 |
608 |
Push $1 |
609 |
Push $7 |
610 |
Push $8 |
611 |
Call $1 |
612 |
Pop $0 |
613 |
Pop $8 |
614 |
Pop $7 |
615 |
Pop $1 |
616 |
IntOp $7 $7 - 1 |
617 |
IntOp $8 $8 - 1 |
618 |
IfErrors TextFunc_FileReadFromEnd_error |
619 |
StrCmp $0 'StopFileReadFromEnd' TextFunc_FileReadFromEnd_clearstack TextFunc_FileReadFromEnd_nextline |
620 |
|
621 |
TextFunc_FileReadFromEnd_error: |
622 |
SetErrors |
623 |
|
624 |
TextFunc_FileReadFromEnd_clearstack: |
625 |
StrCmp $8 0 TextFunc_FileReadFromEnd_end |
626 |
Pop $9 |
627 |
IntOp $8 $8 - 1 |
628 |
goto TextFunc_FileReadFromEnd_clearstack |
629 |
|
630 |
TextFunc_FileReadFromEnd_end: |
631 |
Pop $9 |
632 |
Pop $8 |
633 |
Pop $7 |
634 |
Pop $1 |
635 |
Pop $0 |
636 |
|
637 |
!verbose pop |
638 |
!macroend |
639 |
|
640 |
!define LineSum `!insertmacro LineSumCall` |
641 |
!define un.LineSum `!insertmacro LineSumCall` |
642 |
|
643 |
!macro LineSum |
644 |
!macroend |
645 |
|
646 |
!macro un.LineSum |
647 |
!macroend |
648 |
|
649 |
!macro LineSum_ |
650 |
!verbose push |
651 |
!verbose ${_TEXTFUNC_VERBOSE} |
652 |
|
653 |
Exch $0 |
654 |
Push $1 |
655 |
Push $2 |
656 |
ClearErrors |
657 |
|
658 |
IfFileExists $0 0 TextFunc_LineSum_error |
659 |
StrCpy $2 0 |
660 |
FileOpen $0 $0 r |
661 |
IfErrors TextFunc_LineSum_error |
662 |
FileRead $0 $1 |
663 |
IfErrors +3 |
664 |
IntOp $2 $2 + 1 |
665 |
Goto -3 |
666 |
FileClose $0 |
667 |
StrCpy $0 $2 |
668 |
goto TextFunc_LineSum_end |
669 |
|
670 |
TextFunc_LineSum_error: |
671 |
SetErrors |
672 |
StrCpy $0 '' |
673 |
|
674 |
TextFunc_LineSum_end: |
675 |
Pop $2 |
676 |
Pop $1 |
677 |
Exch $0 |
678 |
|
679 |
!verbose pop |
680 |
!macroend |
681 |
|
682 |
!define FileJoin `!insertmacro FileJoinCall` |
683 |
!define un.FileJoin `!insertmacro FileJoinCall` |
684 |
|
685 |
!macro FileJoin |
686 |
!macroend |
687 |
|
688 |
!macro un.FileJoin |
689 |
!macroend |
690 |
|
691 |
!macro FileJoin_ |
692 |
!verbose push |
693 |
!verbose ${_TEXTFUNC_VERBOSE} |
694 |
|
695 |
Exch $2 |
696 |
Exch |
697 |
Exch $1 |
698 |
Exch |
699 |
Exch 2 |
700 |
Exch $0 |
701 |
Exch 2 |
702 |
Push $3 |
703 |
Push $4 |
704 |
Push $5 |
705 |
ClearErrors |
706 |
|
707 |
IfFileExists $0 0 TextFunc_FileJoin_error |
708 |
IfFileExists $1 0 TextFunc_FileJoin_error |
709 |
StrCpy $3 0 |
710 |
IntOp $3 $3 - 1 |
711 |
StrCpy $4 $2 1 $3 |
712 |
StrCmp $4 \ +2 |
713 |
StrCmp $4 '' +3 -3 |
714 |
StrCpy $4 $2 $3 |
715 |
IfFileExists '$4\*.*' 0 TextFunc_FileJoin_error |
716 |
|
717 |
StrCmp $2 $0 0 +2 |
718 |
StrCpy $2 '' |
719 |
StrCmp $2 '' 0 +3 |
720 |
StrCpy $4 $0 |
721 |
Goto TextFunc_FileJoin_notemp |
722 |
!insertmacro _TextFunc_TempFileForFile $2 $4 |
723 |
CopyFiles /SILENT $0 $4 |
724 |
TextFunc_FileJoin_notemp: |
725 |
FileOpen $3 $4 a |
726 |
IfErrors TextFunc_FileJoin_error |
727 |
FileSeek $3 -1 END |
728 |
FileRead $3 $5 |
729 |
StrCmp $5 '$\r' +3 |
730 |
StrCmp $5 '$\n' +2 |
731 |
FileWrite $3 '$\r$\n' |
732 |
|
733 |
;FileWrite $3 '$\r$\n--Divider--$\r$\n' |
734 |
|
735 |
FileOpen $0 $1 r |
736 |
IfErrors TextFunc_FileJoin_error |
737 |
FileRead $0 $5 |
738 |
IfErrors +3 |
739 |
FileWrite $3 $5 |
740 |
goto -3 |
741 |
FileClose $0 |
742 |
FileClose $3 |
743 |
StrCmp $2 '' TextFunc_FileJoin_end |
744 |
Delete '$EXEDIR\$2' |
745 |
Rename $4 '$EXEDIR\$2' |
746 |
IfErrors 0 TextFunc_FileJoin_end |
747 |
Delete $2 |
748 |
Rename $4 $2 |
749 |
IfErrors 0 TextFunc_FileJoin_end |
750 |
|
751 |
TextFunc_FileJoin_error: |
752 |
SetErrors |
753 |
|
754 |
TextFunc_FileJoin_end: |
755 |
Pop $5 |
756 |
Pop $4 |
757 |
Pop $3 |
758 |
Pop $2 |
759 |
Pop $1 |
760 |
Pop $0 |
761 |
|
762 |
!verbose pop |
763 |
!macroend |
764 |
|
765 |
!macro TextCompareBody _TEXTFUNC_S |
766 |
Exch $3 |
767 |
Exch |
768 |
Exch $2 |
769 |
Exch |
770 |
Exch 2 |
771 |
Exch $1 |
772 |
Exch 2 |
773 |
Exch 3 |
774 |
Exch $0 |
775 |
Exch 3 |
776 |
Push $4 |
777 |
Push $5 |
778 |
Push $6 |
779 |
Push $7 |
780 |
Push $8 |
781 |
Push $9 |
782 |
ClearErrors |
783 |
|
784 |
IfFileExists $0 0 TextFunc_TextCompare${_TEXTFUNC_S}_error |
785 |
IfFileExists $1 0 TextFunc_TextCompare${_TEXTFUNC_S}_error |
786 |
StrCmp $2 'FastDiff' +5 |
787 |
StrCmp $2 'FastEqual' +4 |
788 |
StrCmp $2 'SlowDiff' +3 |
789 |
StrCmp $2 'SlowEqual' +2 |
790 |
goto TextFunc_TextCompare${_TEXTFUNC_S}_error |
791 |
|
792 |
FileOpen $4 $0 r |
793 |
IfErrors TextFunc_TextCompare${_TEXTFUNC_S}_error |
794 |
FileOpen $5 $1 r |
795 |
IfErrors TextFunc_TextCompare${_TEXTFUNC_S}_error |
796 |
SetDetailsPrint textonly |
797 |
|
798 |
StrCpy $6 0 |
799 |
StrCpy $8 0 |
800 |
|
801 |
TextFunc_TextCompare${_TEXTFUNC_S}_nextline: |
802 |
StrCmp${_TEXTFUNC_S} $4 '' TextFunc_TextCompare${_TEXTFUNC_S}_fast |
803 |
IntOp $8 $8 + 1 |
804 |
FileRead $4 $9 |
805 |
IfErrors 0 +4 |
806 |
FileClose $4 |
807 |
StrCpy $4 '' |
808 |
StrCmp${_TEXTFUNC_S} $5 '' TextFunc_TextCompare${_TEXTFUNC_S}_end |
809 |
StrCmp $2 'FastDiff' TextFunc_TextCompare${_TEXTFUNC_S}_fast |
810 |
StrCmp $2 'FastEqual' TextFunc_TextCompare${_TEXTFUNC_S}_fast TextFunc_TextCompare${_TEXTFUNC_S}_slow |
811 |
|
812 |
TextFunc_TextCompare${_TEXTFUNC_S}_fast: |
813 |
StrCmp${_TEXTFUNC_S} $5 '' TextFunc_TextCompare${_TEXTFUNC_S}_call |
814 |
IntOp $6 $6 + 1 |
815 |
FileRead $5 $7 |
816 |
IfErrors 0 +5 |
817 |
FileClose $5 |
818 |
StrCpy $5 '' |
819 |
StrCmp${_TEXTFUNC_S} $4 '' TextFunc_TextCompare${_TEXTFUNC_S}_end |
820 |
StrCmp $2 'FastDiff' TextFunc_TextCompare${_TEXTFUNC_S}_call TextFunc_TextCompare${_TEXTFUNC_S}_close |
821 |
StrCmp $2 'FastDiff' 0 +2 |
822 |
StrCmp${_TEXTFUNC_S} $7 $9 TextFunc_TextCompare${_TEXTFUNC_S}_nextline TextFunc_TextCompare${_TEXTFUNC_S}_call |
823 |
StrCmp${_TEXTFUNC_S} $7 $9 TextFunc_TextCompare${_TEXTFUNC_S}_call TextFunc_TextCompare${_TEXTFUNC_S}_nextline |
824 |
|
825 |
TextFunc_TextCompare${_TEXTFUNC_S}_slow: |
826 |
StrCmp${_TEXTFUNC_S} $4 '' TextFunc_TextCompare${_TEXTFUNC_S}_close |
827 |
StrCpy $6 '' |
828 |
DetailPrint '$8. $9' |
829 |
FileSeek $5 0 |
830 |
|
831 |
TextFunc_TextCompare${_TEXTFUNC_S}_slownext: |
832 |
FileRead $5 $7 |
833 |
IfErrors 0 +2 |
834 |
StrCmp $2 'SlowDiff' TextFunc_TextCompare${_TEXTFUNC_S}_call TextFunc_TextCompare${_TEXTFUNC_S}_nextline |
835 |
StrCmp $2 'SlowDiff' 0 +2 |
836 |
StrCmp${_TEXTFUNC_S} $7 $9 TextFunc_TextCompare${_TEXTFUNC_S}_nextline TextFunc_TextCompare${_TEXTFUNC_S}_slownext |
837 |
IntOp $6 $6 + 1 |
838 |
StrCmp${_TEXTFUNC_S} $7 $9 0 TextFunc_TextCompare${_TEXTFUNC_S}_slownext |
839 |
|
840 |
TextFunc_TextCompare${_TEXTFUNC_S}_call: |
841 |
Push $2 |
842 |
Push $3 |
843 |
Push $4 |
844 |
Push $5 |
845 |
Push $6 |
846 |
Push $7 |
847 |
Push $8 |
848 |
Push $9 |
849 |
Call $3 |
850 |
Pop $0 |
851 |
Pop $9 |
852 |
Pop $8 |
853 |
Pop $7 |
854 |
Pop $6 |
855 |
Pop $5 |
856 |
Pop $4 |
857 |
Pop $3 |
858 |
Pop $2 |
859 |
StrCmp $0 'StopTextCompare' 0 TextFunc_TextCompare${_TEXTFUNC_S}_nextline |
860 |
|
861 |
TextFunc_TextCompare${_TEXTFUNC_S}_close: |
862 |
FileClose $4 |
863 |
FileClose $5 |
864 |
goto TextFunc_TextCompare${_TEXTFUNC_S}_end |
865 |
|
866 |
TextFunc_TextCompare${_TEXTFUNC_S}_error: |
867 |
SetErrors |
868 |
|
869 |
TextFunc_TextCompare${_TEXTFUNC_S}_end: |
870 |
SetDetailsPrint both |
871 |
Pop $9 |
872 |
Pop $8 |
873 |
Pop $7 |
874 |
Pop $6 |
875 |
Pop $5 |
876 |
Pop $4 |
877 |
Pop $3 |
878 |
Pop $2 |
879 |
Pop $1 |
880 |
Pop $0 |
881 |
!macroend |
882 |
|
883 |
!define TextCompare `!insertmacro TextCompareCall` |
884 |
!define un.TextCompare `!insertmacro TextCompareCall` |
885 |
|
886 |
!macro TextCompare |
887 |
!macroend |
888 |
|
889 |
!macro un.TextCompare |
890 |
!macroend |
891 |
|
892 |
!macro TextCompare_ |
893 |
!verbose push |
894 |
!verbose ${_TEXTFUNC_VERBOSE} |
895 |
|
896 |
!insertmacro TextCompareBody '' |
897 |
|
898 |
!verbose pop |
899 |
!macroend |
900 |
|
901 |
!define TextCompareS `!insertmacro TextCompareSCall` |
902 |
!define un.TextCompareS `!insertmacro TextCompareSCall` |
903 |
|
904 |
!macro TextCompareS |
905 |
!macroend |
906 |
|
907 |
!macro un.TextCompareS |
908 |
!macroend |
909 |
|
910 |
!macro TextCompareS_ |
911 |
!verbose push |
912 |
!verbose ${_TEXTFUNC_VERBOSE} |
913 |
|
914 |
!insertmacro TextCompareBody 'S' |
915 |
|
916 |
!verbose pop |
917 |
!macroend |
918 |
|
919 |
!macro ConfigReadBody _TEXTFUNC_S |
920 |
Exch $1 |
921 |
Exch |
922 |
Exch $0 |
923 |
Exch |
924 |
Push $2 |
925 |
Push $3 |
926 |
Push $4 |
927 |
ClearErrors |
928 |
|
929 |
FileOpen $2 $0 r |
930 |
IfErrors TextFunc_ConfigRead${_TEXTFUNC_S}_error |
931 |
StrLen $0 $1 |
932 |
StrCmp${_TEXTFUNC_S} $0 0 TextFunc_ConfigRead${_TEXTFUNC_S}_error |
933 |
|
934 |
TextFunc_ConfigRead${_TEXTFUNC_S}_readnext: |
935 |
FileRead $2 $3 |
936 |
IfErrors TextFunc_ConfigRead${_TEXTFUNC_S}_error |
937 |
StrCpy $4 $3 $0 |
938 |
StrCmp${_TEXTFUNC_S} $4 $1 0 TextFunc_ConfigRead${_TEXTFUNC_S}_readnext |
939 |
StrCpy $0 $3 '' $0 |
940 |
StrCpy $4 $0 1 -1 |
941 |
StrCmp${_TEXTFUNC_S} $4 '$\r' +2 |
942 |
StrCmp${_TEXTFUNC_S} $4 '$\n' 0 TextFunc_ConfigRead${_TEXTFUNC_S}_close |
943 |
StrCpy $0 $0 -1 |
944 |
goto -4 |
945 |
|
946 |
TextFunc_ConfigRead${_TEXTFUNC_S}_error: |
947 |
SetErrors |
948 |
StrCpy $0 '' |
949 |
|
950 |
TextFunc_ConfigRead${_TEXTFUNC_S}_close: |
951 |
FileClose $2 |
952 |
|
953 |
Pop $4 |
954 |
Pop $3 |
955 |
Pop $2 |
956 |
Pop $1 |
957 |
Exch $0 |
958 |
!macroend |
959 |
|
960 |
!define ConfigRead `!insertmacro ConfigReadCall` |
961 |
!define un.ConfigRead `!insertmacro ConfigReadCall` |
962 |
|
963 |
!macro ConfigRead |
964 |
!macroend |
965 |
|
966 |
!macro un.ConfigRead |
967 |
!macroend |
968 |
|
969 |
!macro ConfigRead_ |
970 |
!verbose push |
971 |
!verbose ${_TEXTFUNC_VERBOSE} |
972 |
|
973 |
!insertmacro ConfigReadBody '' |
974 |
|
975 |
!verbose pop |
976 |
!macroend |
977 |
|
978 |
!define ConfigReadS `!insertmacro ConfigReadSCall` |
979 |
!define un.ConfigReadS `!insertmacro ConfigReadSCall` |
980 |
|
981 |
!macro ConfigReadS |
982 |
!macroend |
983 |
|
984 |
!macro un.ConfigReadS |
985 |
!macroend |
986 |
|
987 |
!macro ConfigReadS_ |
988 |
!verbose push |
989 |
!verbose ${_TEXTFUNC_VERBOSE} |
990 |
|
991 |
!insertmacro ConfigReadBody 'S' |
992 |
|
993 |
!verbose pop |
994 |
!macroend |
995 |
|
996 |
!macro ConfigWriteBody _TEXTFUNC_S |
997 |
Exch $2 |
998 |
Exch |
999 |
Exch $1 |
1000 |
Exch |
1001 |
Exch 2 |
1002 |
Exch $0 |
1003 |
Exch 2 |
1004 |
Push $3 |
1005 |
Push $4 |
1006 |
Push $5 |
1007 |
Push $6 |
1008 |
ClearErrors |
1009 |
|
1010 |
IfFileExists $0 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_error |
1011 |
FileOpen $3 $0 a |
1012 |
IfErrors TextFunc_ConfigWrite${_TEXTFUNC_S}_error |
1013 |
|
1014 |
StrLen $0 $1 |
1015 |
StrCmp${_TEXTFUNC_S} $0 0 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_readnext |
1016 |
StrCpy $0 '' |
1017 |
goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close |
1018 |
|
1019 |
TextFunc_ConfigWrite${_TEXTFUNC_S}_readnext: |
1020 |
FileRead $3 $4 |
1021 |
IfErrors TextFunc_ConfigWrite${_TEXTFUNC_S}_add |
1022 |
StrCpy $5 $4 $0 |
1023 |
StrCmp${_TEXTFUNC_S} $5 $1 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_readnext |
1024 |
|
1025 |
StrCpy $5 0 |
1026 |
IntOp $5 $5 - 1 |
1027 |
StrCpy $6 $4 1 $5 |
1028 |
StrCmp${_TEXTFUNC_S} $6 '$\r' -2 |
1029 |
StrCmp${_TEXTFUNC_S} $6 '$\n' -3 |
1030 |
StrCpy $6 $4 |
1031 |
StrCmp${_TEXTFUNC_S} $5 -1 +3 |
1032 |
IntOp $5 $5 + 1 |
1033 |
StrCpy $6 $4 $5 |
1034 |
|
1035 |
StrCmp${_TEXTFUNC_S} $2 '' TextFunc_ConfigWrite${_TEXTFUNC_S}_change |
1036 |
StrCmp${_TEXTFUNC_S} $6 '$1$2' 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_change |
1037 |
StrCpy $0 SAME |
1038 |
goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close |
1039 |
|
1040 |
TextFunc_ConfigWrite${_TEXTFUNC_S}_change: |
1041 |
FileSeek $3 0 CUR $5 |
1042 |
StrLen $4 $4 |
1043 |
IntOp $4 $5 - $4 |
1044 |
FileSeek $3 0 END $6 |
1045 |
IntOp $6 $6 - $5 |
1046 |
|
1047 |
System::Alloc $6 |
1048 |
Pop $0 |
1049 |
FileSeek $3 $5 SET |
1050 |
System::Call 'kernel32::ReadFile(i r3, i r0, i $6, t.,)' |
1051 |
FileSeek $3 $4 SET |
1052 |
StrCmp${_TEXTFUNC_S} $2 '' +2 |
1053 |
FileWrite $3 '$1$2$\r$\n' |
1054 |
System::Call 'kernel32::WriteFile(i r3, i r0, i $6, t.,)' |
1055 |
System::Call 'kernel32::SetEndOfFile(i r3)' |
1056 |
System::Free $0 |
1057 |
StrCmp${_TEXTFUNC_S} $2 '' +3 |
1058 |
StrCpy $0 CHANGED |
1059 |
goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close |
1060 |
StrCpy $0 DELETED |
1061 |
goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close |
1062 |
|
1063 |
TextFunc_ConfigWrite${_TEXTFUNC_S}_add: |
1064 |
StrCmp${_TEXTFUNC_S} $2 '' 0 +3 |
1065 |
StrCpy $0 SAME |
1066 |
goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close |
1067 |
FileSeek $3 -1 END |
1068 |
FileRead $3 $4 |
1069 |
IfErrors +4 |
1070 |
StrCmp${_TEXTFUNC_S} $4 '$\r' +3 |
1071 |
StrCmp${_TEXTFUNC_S} $4 '$\n' +2 |
1072 |
FileWrite $3 '$\r$\n' |
1073 |
FileWrite $3 '$1$2$\r$\n' |
1074 |
StrCpy $0 ADDED |
1075 |
|
1076 |
TextFunc_ConfigWrite${_TEXTFUNC_S}_close: |
1077 |
FileClose $3 |
1078 |
goto TextFunc_ConfigWrite${_TEXTFUNC_S}_end |
1079 |
|
1080 |
TextFunc_ConfigWrite${_TEXTFUNC_S}_error: |
1081 |
SetErrors |
1082 |
StrCpy $0 '' |
1083 |
|
1084 |
TextFunc_ConfigWrite${_TEXTFUNC_S}_end: |
1085 |
Pop $6 |
1086 |
Pop $5 |
1087 |
Pop $4 |
1088 |
Pop $3 |
1089 |
Pop $2 |
1090 |
Pop $1 |
1091 |
Exch $0 |
1092 |
!macroend |
1093 |
|
1094 |
!define ConfigWrite `!insertmacro ConfigWriteCall` |
1095 |
!define un.ConfigWrite `!insertmacro ConfigWriteCall` |
1096 |
|
1097 |
!macro ConfigWrite |
1098 |
!macroend |
1099 |
|
1100 |
!macro un.ConfigWrite |
1101 |
!macroend |
1102 |
|
1103 |
!macro ConfigWrite_ |
1104 |
!verbose push |
1105 |
!verbose ${_TEXTFUNC_VERBOSE} |
1106 |
|
1107 |
!insertmacro ConfigWriteBody '' |
1108 |
|
1109 |
!verbose pop |
1110 |
!macroend |
1111 |
|
1112 |
!define ConfigWriteS `!insertmacro ConfigWriteSCall` |
1113 |
!define un.ConfigWriteS `!insertmacro ConfigWriteSCall` |
1114 |
|
1115 |
!macro ConfigWriteS |
1116 |
!macroend |
1117 |
|
1118 |
!macro un.ConfigWriteS |
1119 |
!macroend |
1120 |
|
1121 |
!macro ConfigWriteS_ |
1122 |
!verbose push |
1123 |
!verbose ${_TEXTFUNC_VERBOSE} |
1124 |
|
1125 |
!insertmacro ConfigWriteBody 'S' |
1126 |
|
1127 |
!verbose pop |
1128 |
!macroend |
1129 |
|
1130 |
!define FileRecode `!insertmacro FileRecodeCall` |
1131 |
!define un.FileRecode `!insertmacro FileRecodeCall` |
1132 |
|
1133 |
!macro FileRecode |
1134 |
!macroend |
1135 |
|
1136 |
!macro un.FileRecode |
1137 |
!macroend |
1138 |
|
1139 |
!macro FileRecode_ |
1140 |
!verbose push |
1141 |
!verbose ${_TEXTFUNC_VERBOSE} |
1142 |
|
1143 |
Exch $1 |
1144 |
Exch |
1145 |
Exch $0 |
1146 |
Exch |
1147 |
Push $2 |
1148 |
Push $3 |
1149 |
Push $4 |
1150 |
|
1151 |
IfFileExists $0 0 TextFunc_FileRecode_error |
1152 |
StrCmp $1 OemToChar +2 |
1153 |
StrCmp $1 CharToOem 0 TextFunc_FileRecode_error |
1154 |
|
1155 |
FileOpen $2 $0 a |
1156 |
FileSeek $2 0 END $3 |
1157 |
System::Alloc $3 |
1158 |
Pop $4 |
1159 |
FileSeek $2 0 SET |
1160 |
System::Call 'kernel32::ReadFile(i r2, i r4, i $3, t.,)' |
1161 |
System::Call 'user32::$1Buff(i r4, i r4, i $3)' |
1162 |
FileSeek $2 0 SET |
1163 |
System::Call 'kernel32::WriteFile(i r2, i r4, i $3, t.,)' |
1164 |
System::Free $4 |
1165 |
FileClose $2 |
1166 |
goto TextFunc_FileRecode_end |
1167 |
|
1168 |
TextFunc_FileRecode_error: |
1169 |
SetErrors |
1170 |
|
1171 |
TextFunc_FileRecode_end: |
1172 |
Pop $4 |
1173 |
Pop $3 |
1174 |
Pop $2 |
1175 |
Pop $1 |
1176 |
Pop $0 |
1177 |
|
1178 |
!verbose pop |
1179 |
!macroend |
1180 |
|
1181 |
!define TrimNewLines `!insertmacro TrimNewLinesCall` |
1182 |
!define un.TrimNewLines `!insertmacro TrimNewLinesCall` |
1183 |
|
1184 |
!macro TrimNewLines |
1185 |
!macroend |
1186 |
|
1187 |
!macro un.TrimNewLines |
1188 |
!macroend |
1189 |
|
1190 |
!macro TrimNewLines_ |
1191 |
!verbose push |
1192 |
!verbose ${_TEXTFUNC_VERBOSE} |
1193 |
|
1194 |
Exch $0 |
1195 |
Push $1 |
1196 |
Push $2 |
1197 |
|
1198 |
StrCpy $1 0 |
1199 |
IntOp $1 $1 - 1 |
1200 |
StrCpy $2 $0 1 $1 |
1201 |
StrCmp $2 '$\r' -2 |
1202 |
StrCmp $2 '$\n' -3 |
1203 |
StrCmp $1 -1 +3 |
1204 |
IntOp $1 $1 + 1 |
1205 |
StrCpy $0 $0 $1 |
1206 |
|
1207 |
Pop $2 |
1208 |
Pop $1 |
1209 |
Exch $0 |
1210 |
|
1211 |
!verbose pop |
1212 |
!macroend |
1213 |
|
1214 |
!endif |