home *** CD-ROM | disk | FTP | other *** search
Text File | 2008-12-20 | 23.8 KB | 1,215 lines |
- /*
- _____________________________________________________________________________
-
- Text Functions Header v2.4
- _____________________________________________________________________________
-
- 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
-
- See documentation for more information about the following functions.
-
- Usage in script:
- 1. !include "TextFunc.nsh"
- 2. [Section|Function]
- ${TextFunction} "File" "..." $var
- [SectionEnd|FunctionEnd]
-
-
- TextFunction=[LineFind|LineRead|FileReadFromEnd|LineSum|FileJoin|
- TextCompare|TextCompareS|ConfigRead|ConfigReadS|
- ConfigWrite|ConfigWriteS|FileRecode|TrimNewLines]
-
- _____________________________________________________________________________
-
- Thanks to:
- _____________________________________________________________________________
-
- LineRead
- Afrow UK (Based on his idea of Function "ReadFileLine")
- LineSum
- Afrow UK (Based on his idea of Function "LineCount")
- FileJoin
- Afrow UK (Based on his idea of Function "JoinFiles")
- ConfigRead
- vbgunz (His idea)
- ConfigWrite
- vbgunz (His idea)
- TrimNewLines
- sunjammer (Based on his Function "TrimNewLines")
- */
-
-
- ;_____________________________________________________________________________
- ;
- ; Macros
- ;_____________________________________________________________________________
- ;
- ; Change log window verbosity (default: 3=no script)
- ;
- ; Example:
- ; !include "TextFunc.nsh"
- ; !insertmacro LineFind
- ; ${TEXTFUNC_VERBOSE} 4 # all verbosity
- ; !insertmacro LineSum
- ; ${TEXTFUNC_VERBOSE} 3 # no script
-
- !ifndef TEXTFUNC_INCLUDED
- !define TEXTFUNC_INCLUDED
-
- !include FileFunc.nsh
- !include Util.nsh
-
- !verbose push
- !verbose 3
- !ifndef _TEXTFUNC_VERBOSE
- !define _TEXTFUNC_VERBOSE 3
- !endif
- !verbose ${_TEXTFUNC_VERBOSE}
- !define TEXTFUNC_VERBOSE `!insertmacro TEXTFUNC_VERBOSE`
- !verbose pop
-
- !macro TEXTFUNC_VERBOSE _VERBOSE
- !verbose push
- !verbose 3
- !undef _TEXTFUNC_VERBOSE
- !define _TEXTFUNC_VERBOSE ${_VERBOSE}
- !verbose pop
- !macroend
-
- !macro LineFindCall _INPUT _OUTPUT _RANGE _FUNC
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push $0
- Push `${_INPUT}`
- Push `${_OUTPUT}`
- Push `${_RANGE}`
- GetFunctionAddress $0 `${_FUNC}`
- Push `$0`
- ${CallArtificialFunction} LineFind_
- Pop $0
- !verbose pop
- !macroend
-
- !macro LineReadCall _FILE _NUMBER _RESULT
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push `${_FILE}`
- Push `${_NUMBER}`
- ${CallArtificialFunction} LineRead_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro FileReadFromEndCall _FILE _FUNC
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push $0
- Push `${_FILE}`
- GetFunctionAddress $0 `${_FUNC}`
- Push `$0`
- ${CallArtificialFunction} FileReadFromEnd_
- Pop $0
- !verbose pop
- !macroend
-
- !macro LineSumCall _FILE _RESULT
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push `${_FILE}`
- ${CallArtificialFunction} LineSum_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro FileJoinCall _FILE1 _FILE2 _FILE3
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push `${_FILE1}`
- Push `${_FILE2}`
- Push `${_FILE3}`
- ${CallArtificialFunction} FileJoin_
- !verbose pop
- !macroend
-
- !macro TextCompareCall _FILE1 _FILE2 _OPTION _FUNC
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push $0
- Push `${_FILE1}`
- Push `${_FILE2}`
- Push `${_OPTION}`
- GetFunctionAddress $0 `${_FUNC}`
- Push `$0`
- ${CallArtificialFunction} TextCompare_
- Pop $0
- !verbose pop
- !macroend
-
- !macro TextCompareSCall _FILE1 _FILE2 _OPTION _FUNC
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push $0
- Push `${_FILE1}`
- Push `${_FILE2}`
- Push `${_OPTION}`
- GetFunctionAddress $0 `${_FUNC}`
- Push `$0`
- ${CallArtificialFunction} TextCompareS_
- Pop $0
- !verbose pop
- !macroend
-
- !macro ConfigReadCall _FILE _ENTRY _RESULT
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push `${_FILE}`
- Push `${_ENTRY}`
- ${CallArtificialFunction} ConfigRead_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro ConfigReadSCall _FILE _ENTRY _RESULT
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push `${_FILE}`
- Push `${_ENTRY}`
- ${CallArtificialFunction} ConfigReadS_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro ConfigWriteCall _FILE _ENTRY _VALUE _RESULT
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push `${_FILE}`
- Push `${_ENTRY}`
- Push `${_VALUE}`
- ${CallArtificialFunction} ConfigWrite_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro ConfigWriteSCall _FILE _ENTRY _VALUE _RESULT
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push `${_FILE}`
- Push `${_ENTRY}`
- Push `${_VALUE}`
- ${CallArtificialFunction} ConfigWriteS_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro FileRecodeCall _FILE _FORMAT
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push `${_FILE}`
- Push `${_FORMAT}`
- ${CallArtificialFunction} FileRecode_
- !verbose pop
- !macroend
-
- !macro TrimNewLinesCall _FILE _RESULT
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
- Push `${_FILE}`
- ${CallArtificialFunction} TrimNewLines_
- Pop ${_RESULT}
- !verbose pop
- !macroend
-
- !macro _TextFunc_TempFileForFile _FILE _RESULT
- # XXX replace with GetParent
- Push `${_FILE}`
- Exch $0
- Push $1
- Push $2
-
- StrCpy $2 $0 1 -1
- StrCmp $2 '\' 0 +3
- StrCpy $0 $0 -1
- goto -3
-
- StrCpy $1 0
- IntOp $1 $1 - 1
- StrCpy $2 $0 1 $1
- StrCmp $2 '\' +2
- StrCmp $2 '' 0 -3
- StrCpy $0 $0 $1
-
- Pop $2
- Pop $1
- Exch $0
- Pop ${_RESULT}
- # XXX
- StrCmp ${_RESULT} "" 0 +2
- StrCpy ${_RESULT} $EXEDIR
- GetTempFileName ${_RESULT} ${_RESULT}
- StrCmp ${_RESULT} "" 0 +2
- GetTempFileName ${_RESULT}
- ClearErrors
- !macroend
-
- !define LineFind `!insertmacro LineFindCall`
- !define un.LineFind `!insertmacro LineFindCall`
-
- !macro LineFind
- !macroend
-
- !macro un.LineFind
- !macroend
-
- !macro LineFind_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- Exch $3
- Exch
- Exch $2
- Exch
- Exch 2
- Exch $1
- Exch 2
- Exch 3
- Exch $0
- Exch 3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $8
- Push $9
- Push $R4
- Push $R5
- Push $R6
- Push $R7
- Push $R8
- Push $R9
- ClearErrors
-
- IfFileExists '$0' 0 TextFunc_LineFind_error
- StrCmp $1 '/NUL' TextFunc_LineFind_begin
- StrCpy $8 0
- IntOp $8 $8 - 1
- StrCpy $9 $1 1 $8
- StrCmp $9 \ +2
- StrCmp $9 '' +3 -3
- StrCpy $9 $1 $8
- IfFileExists '$9\*.*' 0 TextFunc_LineFind_error
-
- TextFunc_LineFind_begin:
- StrCpy $4 1
- StrCpy $5 -1
- StrCpy $6 0
- StrCpy $7 0
- StrCpy $R4 ''
- StrCpy $R6 ''
- StrCpy $R7 ''
- StrCpy $R8 0
-
- StrCpy $8 $2 1
- StrCmp $8 '{' 0 TextFunc_LineFind_delspaces
- StrCpy $2 $2 '' 1
- StrCpy $8 $2 1 -1
- StrCmp $8 '}' 0 TextFunc_LineFind_delspaces
- StrCpy $2 $2 -1
- StrCpy $R6 TextFunc_LineFind_cut
-
- TextFunc_LineFind_delspaces:
- StrCpy $8 $2 1
- StrCmp $8 ' ' 0 +3
- StrCpy $2 $2 '' 1
- goto -3
- StrCmp $2$7 '0' TextFunc_LineFind_file
- StrCpy $4 ''
- StrCpy $5 ''
- StrCmp $2 '' TextFunc_LineFind_writechk
-
- TextFunc_LineFind_range:
- StrCpy $8 0
- StrCpy $9 $2 1 $8
- StrCmp $9 '' +5
- StrCmp $9 ' ' +4
- StrCmp $9 ':' +3
- IntOp $8 $8 + 1
- goto -5
- StrCpy $5 $2 $8
- IntOp $5 $5 + 0
- IntOp $8 $8 + 1
- StrCpy $2 $2 '' $8
- StrCmp $4 '' 0 +2
- StrCpy $4 $5
- StrCmp $9 ':' TextFunc_LineFind_range
-
- IntCmp $4 0 0 +2
- IntCmp $5 -1 TextFunc_LineFind_goto 0 TextFunc_LineFind_growthcmp
- StrCmp $R7 '' 0 TextFunc_LineFind_minus2plus
- StrCpy $R7 0
- FileOpen $8 $0 r
- FileRead $8 $9
- IfErrors +3
- IntOp $R7 $R7 + 1
- Goto -3
- FileClose $8
-
- TextFunc_LineFind_minus2plus:
- IntCmp $4 0 +5 0 +5
- IntOp $4 $R7 + $4
- IntOp $4 $4 + 1
- IntCmp $4 0 +2 0 +2
- StrCpy $4 0
- IntCmp $5 -1 TextFunc_LineFind_goto 0 TextFunc_LineFind_growthcmp
- IntOp $5 $R7 + $5
- IntOp $5 $5 + 1
- TextFunc_LineFind_growthcmp:
- IntCmp $4 $5 TextFunc_LineFind_goto TextFunc_LineFind_goto
- StrCpy $5 $4
- TextFunc_LineFind_goto:
- goto $7
-
- TextFunc_LineFind_file:
- StrCmp $1 '/NUL' TextFunc_LineFind_notemp
- !insertmacro _TextFunc_TempFileForFile $1 $R4
- Push $R4
- FileOpen $R4 $R4 w
- TextFunc_LineFind_notemp:
- FileOpen $R5 $0 r
- IfErrors TextFunc_LineFind_preerror
-
- TextFunc_LineFind_loop:
- IntOp $R8 $R8 + 1
- FileRead $R5 $R9
- IfErrors TextFunc_LineFind_handleclose
-
- TextFunc_LineFind_cmp:
- StrCmp $2$4$5 '' TextFunc_LineFind_writechk
- IntCmp $4 $R8 TextFunc_LineFind_call 0 TextFunc_LineFind_writechk
- StrCmp $5 -1 TextFunc_LineFind_call
- IntCmp $5 $R8 TextFunc_LineFind_call 0 TextFunc_LineFind_call
-
- GetLabelAddress $7 TextFunc_LineFind_cmp
- goto TextFunc_LineFind_delspaces
-
- TextFunc_LineFind_call:
- StrCpy $7 $R9
- Push $0
- Push $1
- Push $2
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $R4
- Push $R5
- Push $R6
- Push $R7
- Push $R8
- StrCpy $R6 '$4:$5'
- StrCmp $R7 '' +3
- IntOp $R7 $R8 - $R7
- IntOp $R7 $R7 - 1
- Call $3
- Pop $9
- Pop $R8
- Pop $R7
- Pop $R6
- Pop $R5
- Pop $R4
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- IfErrors TextFunc_LineFind_preerror
- StrCmp $9 'StopLineFind' 0 +3
- IntOp $6 $6 + 1
- goto TextFunc_LineFind_handleclose
- StrCmp $1 '/NUL' TextFunc_LineFind_loop
- StrCmp $9 'SkipWrite' 0 +3
- IntOp $6 $6 + 1
- goto TextFunc_LineFind_loop
- StrCmp $7 $R9 TextFunc_LineFind_write
- IntOp $6 $6 + 1
- goto TextFunc_LineFind_write
-
- TextFunc_LineFind_writechk:
- StrCmp $1 '/NUL' TextFunc_LineFind_loop
- StrCmp $R6 TextFunc_LineFind_cut 0 TextFunc_LineFind_write
- IntOp $6 $6 + 1
- goto TextFunc_LineFind_loop
-
- TextFunc_LineFind_write:
- FileWrite $R4 $R9
- goto TextFunc_LineFind_loop
-
- TextFunc_LineFind_preerror:
- SetErrors
-
- TextFunc_LineFind_handleclose:
- StrCmp $1 '/NUL' +3
- FileClose $R4
- Pop $R4
- FileClose $R5
- IfErrors TextFunc_LineFind_error
-
- StrCmp $1 '/NUL' TextFunc_LineFind_end
- StrCmp $1 '' 0 +2
- StrCpy $1 $0
- StrCmp $6 0 0 TextFunc_LineFind_rename
- FileOpen $7 $0 r
- FileSeek $7 0 END $8
- FileClose $7
- FileOpen $7 $R4 r
- FileSeek $7 0 END $9
- FileClose $7
- IntCmp $8 $9 0 TextFunc_LineFind_rename
- Delete $R4
- StrCmp $1 $0 TextFunc_LineFind_end
- CopyFiles /SILENT $0 $1
- goto TextFunc_LineFind_end
-
- TextFunc_LineFind_rename:
- Delete '$EXEDIR\$1'
- Rename $R4 '$EXEDIR\$1'
- IfErrors 0 TextFunc_LineFind_end
- Delete $1
- Rename $R4 $1
- IfErrors 0 TextFunc_LineFind_end
-
- TextFunc_LineFind_error:
- SetErrors
-
- TextFunc_LineFind_end:
- Pop $R9
- Pop $R8
- Pop $R7
- Pop $R6
- Pop $R5
- Pop $R4
- Pop $9
- Pop $8
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
-
- !verbose pop
- !macroend
-
- !define LineRead `!insertmacro LineReadCall`
- !define un.LineRead `!insertmacro LineReadCall`
-
- !macro LineRead
- !macroend
-
- !macro un.LineRead
- !macroend
-
- !macro LineRead_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- Exch $1
- Exch
- Exch $0
- Exch
- Push $2
- Push $3
- Push $4
- ClearErrors
-
- IfFileExists $0 0 TextFunc_LineRead_error
- IntOp $1 $1 + 0
- IntCmp $1 0 TextFunc_LineRead_error 0 TextFunc_LineRead_plus
- StrCpy $4 0
- FileOpen $2 $0 r
- IfErrors TextFunc_LineRead_error
- FileRead $2 $3
- IfErrors +3
- IntOp $4 $4 + 1
- Goto -3
- FileClose $2
- IntOp $1 $4 + $1
- IntOp $1 $1 + 1
- IntCmp $1 0 TextFunc_LineRead_error TextFunc_LineRead_error
-
- TextFunc_LineRead_plus:
- FileOpen $2 $0 r
- IfErrors TextFunc_LineRead_error
- StrCpy $3 0
- IntOp $3 $3 + 1
- FileRead $2 $0
- IfErrors +4
- StrCmp $3 $1 0 -3
- FileClose $2
- goto TextFunc_LineRead_end
- FileClose $2
-
- TextFunc_LineRead_error:
- SetErrors
- StrCpy $0 ''
-
- TextFunc_LineRead_end:
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Exch $0
-
- !verbose pop
- !macroend
-
- !define FileReadFromEnd `!insertmacro FileReadFromEndCall`
- !define un.FileReadFromEnd `!insertmacro FileReadFromEndCall`
-
- !macro FileReadFromEnd
- !macroend
-
- !macro un.FileReadFromEnd
- !macroend
-
- !macro FileReadFromEnd_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- Exch $1
- Exch
- Exch $0
- Exch
- Push $7
- Push $8
- Push $9
- ClearErrors
-
- StrCpy $7 -1
- StrCpy $8 0
- IfFileExists $0 0 TextFunc_FileReadFromEnd_error
- FileOpen $0 $0 r
- IfErrors TextFunc_FileReadFromEnd_error
- FileRead $0 $9
- IfErrors +4
- Push $9
- IntOp $8 $8 + 1
- goto -4
- FileClose $0
-
- TextFunc_FileReadFromEnd_nextline:
- StrCmp $8 0 TextFunc_FileReadFromEnd_end
- Pop $9
- Push $1
- Push $7
- Push $8
- Call $1
- Pop $0
- Pop $8
- Pop $7
- Pop $1
- IntOp $7 $7 - 1
- IntOp $8 $8 - 1
- IfErrors TextFunc_FileReadFromEnd_error
- StrCmp $0 'StopFileReadFromEnd' TextFunc_FileReadFromEnd_clearstack TextFunc_FileReadFromEnd_nextline
-
- TextFunc_FileReadFromEnd_error:
- SetErrors
-
- TextFunc_FileReadFromEnd_clearstack:
- StrCmp $8 0 TextFunc_FileReadFromEnd_end
- Pop $9
- IntOp $8 $8 - 1
- goto TextFunc_FileReadFromEnd_clearstack
-
- TextFunc_FileReadFromEnd_end:
- Pop $9
- Pop $8
- Pop $7
- Pop $1
- Pop $0
-
- !verbose pop
- !macroend
-
- !define LineSum `!insertmacro LineSumCall`
- !define un.LineSum `!insertmacro LineSumCall`
-
- !macro LineSum
- !macroend
-
- !macro un.LineSum
- !macroend
-
- !macro LineSum_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- Exch $0
- Push $1
- Push $2
- ClearErrors
-
- IfFileExists $0 0 TextFunc_LineSum_error
- StrCpy $2 0
- FileOpen $0 $0 r
- IfErrors TextFunc_LineSum_error
- FileRead $0 $1
- IfErrors +3
- IntOp $2 $2 + 1
- Goto -3
- FileClose $0
- StrCpy $0 $2
- goto TextFunc_LineSum_end
-
- TextFunc_LineSum_error:
- SetErrors
- StrCpy $0 ''
-
- TextFunc_LineSum_end:
- Pop $2
- Pop $1
- Exch $0
-
- !verbose pop
- !macroend
-
- !define FileJoin `!insertmacro FileJoinCall`
- !define un.FileJoin `!insertmacro FileJoinCall`
-
- !macro FileJoin
- !macroend
-
- !macro un.FileJoin
- !macroend
-
- !macro FileJoin_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- Exch $2
- Exch
- Exch $1
- Exch
- Exch 2
- Exch $0
- Exch 2
- Push $3
- Push $4
- Push $5
- ClearErrors
-
- IfFileExists $0 0 TextFunc_FileJoin_error
- IfFileExists $1 0 TextFunc_FileJoin_error
- StrCpy $3 0
- IntOp $3 $3 - 1
- StrCpy $4 $2 1 $3
- StrCmp $4 \ +2
- StrCmp $4 '' +3 -3
- StrCpy $4 $2 $3
- IfFileExists '$4\*.*' 0 TextFunc_FileJoin_error
-
- StrCmp $2 $0 0 +2
- StrCpy $2 ''
- StrCmp $2 '' 0 +3
- StrCpy $4 $0
- Goto TextFunc_FileJoin_notemp
- !insertmacro _TextFunc_TempFileForFile $2 $4
- CopyFiles /SILENT $0 $4
- TextFunc_FileJoin_notemp:
- FileOpen $3 $4 a
- IfErrors TextFunc_FileJoin_error
- FileSeek $3 -1 END
- FileRead $3 $5
- StrCmp $5 '$\r' +3
- StrCmp $5 '$\n' +2
- FileWrite $3 '$\r$\n'
-
- ;FileWrite $3 '$\r$\n--Divider--$\r$\n'
-
- FileOpen $0 $1 r
- IfErrors TextFunc_FileJoin_error
- FileRead $0 $5
- IfErrors +3
- FileWrite $3 $5
- goto -3
- FileClose $0
- FileClose $3
- StrCmp $2 '' TextFunc_FileJoin_end
- Delete '$EXEDIR\$2'
- Rename $4 '$EXEDIR\$2'
- IfErrors 0 TextFunc_FileJoin_end
- Delete $2
- Rename $4 $2
- IfErrors 0 TextFunc_FileJoin_end
-
- TextFunc_FileJoin_error:
- SetErrors
-
- TextFunc_FileJoin_end:
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
-
- !verbose pop
- !macroend
-
- !macro TextCompareBody _TEXTFUNC_S
- Exch $3
- Exch
- Exch $2
- Exch
- Exch 2
- Exch $1
- Exch 2
- Exch 3
- Exch $0
- Exch 3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $8
- Push $9
- ClearErrors
-
- IfFileExists $0 0 TextFunc_TextCompare${_TEXTFUNC_S}_error
- IfFileExists $1 0 TextFunc_TextCompare${_TEXTFUNC_S}_error
- StrCmp $2 'FastDiff' +5
- StrCmp $2 'FastEqual' +4
- StrCmp $2 'SlowDiff' +3
- StrCmp $2 'SlowEqual' +2
- goto TextFunc_TextCompare${_TEXTFUNC_S}_error
-
- FileOpen $4 $0 r
- IfErrors TextFunc_TextCompare${_TEXTFUNC_S}_error
- FileOpen $5 $1 r
- IfErrors TextFunc_TextCompare${_TEXTFUNC_S}_error
- SetDetailsPrint textonly
-
- StrCpy $6 0
- StrCpy $8 0
-
- TextFunc_TextCompare${_TEXTFUNC_S}_nextline:
- StrCmp${_TEXTFUNC_S} $4 '' TextFunc_TextCompare${_TEXTFUNC_S}_fast
- IntOp $8 $8 + 1
- FileRead $4 $9
- IfErrors 0 +4
- FileClose $4
- StrCpy $4 ''
- StrCmp${_TEXTFUNC_S} $5 '' TextFunc_TextCompare${_TEXTFUNC_S}_end
- StrCmp $2 'FastDiff' TextFunc_TextCompare${_TEXTFUNC_S}_fast
- StrCmp $2 'FastEqual' TextFunc_TextCompare${_TEXTFUNC_S}_fast TextFunc_TextCompare${_TEXTFUNC_S}_slow
-
- TextFunc_TextCompare${_TEXTFUNC_S}_fast:
- StrCmp${_TEXTFUNC_S} $5 '' TextFunc_TextCompare${_TEXTFUNC_S}_call
- IntOp $6 $6 + 1
- FileRead $5 $7
- IfErrors 0 +5
- FileClose $5
- StrCpy $5 ''
- StrCmp${_TEXTFUNC_S} $4 '' TextFunc_TextCompare${_TEXTFUNC_S}_end
- StrCmp $2 'FastDiff' TextFunc_TextCompare${_TEXTFUNC_S}_call TextFunc_TextCompare${_TEXTFUNC_S}_close
- StrCmp $2 'FastDiff' 0 +2
- StrCmp${_TEXTFUNC_S} $7 $9 TextFunc_TextCompare${_TEXTFUNC_S}_nextline TextFunc_TextCompare${_TEXTFUNC_S}_call
- StrCmp${_TEXTFUNC_S} $7 $9 TextFunc_TextCompare${_TEXTFUNC_S}_call TextFunc_TextCompare${_TEXTFUNC_S}_nextline
-
- TextFunc_TextCompare${_TEXTFUNC_S}_slow:
- StrCmp${_TEXTFUNC_S} $4 '' TextFunc_TextCompare${_TEXTFUNC_S}_close
- StrCpy $6 ''
- DetailPrint '$8. $9'
- FileSeek $5 0
-
- TextFunc_TextCompare${_TEXTFUNC_S}_slownext:
- FileRead $5 $7
- IfErrors 0 +2
- StrCmp $2 'SlowDiff' TextFunc_TextCompare${_TEXTFUNC_S}_call TextFunc_TextCompare${_TEXTFUNC_S}_nextline
- StrCmp $2 'SlowDiff' 0 +2
- StrCmp${_TEXTFUNC_S} $7 $9 TextFunc_TextCompare${_TEXTFUNC_S}_nextline TextFunc_TextCompare${_TEXTFUNC_S}_slownext
- IntOp $6 $6 + 1
- StrCmp${_TEXTFUNC_S} $7 $9 0 TextFunc_TextCompare${_TEXTFUNC_S}_slownext
-
- TextFunc_TextCompare${_TEXTFUNC_S}_call:
- Push $2
- Push $3
- Push $4
- Push $5
- Push $6
- Push $7
- Push $8
- Push $9
- Call $3
- Pop $0
- Pop $9
- Pop $8
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- StrCmp $0 'StopTextCompare' 0 TextFunc_TextCompare${_TEXTFUNC_S}_nextline
-
- TextFunc_TextCompare${_TEXTFUNC_S}_close:
- FileClose $4
- FileClose $5
- goto TextFunc_TextCompare${_TEXTFUNC_S}_end
-
- TextFunc_TextCompare${_TEXTFUNC_S}_error:
- SetErrors
-
- TextFunc_TextCompare${_TEXTFUNC_S}_end:
- SetDetailsPrint both
- Pop $9
- Pop $8
- Pop $7
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
- !macroend
-
- !define TextCompare `!insertmacro TextCompareCall`
- !define un.TextCompare `!insertmacro TextCompareCall`
-
- !macro TextCompare
- !macroend
-
- !macro un.TextCompare
- !macroend
-
- !macro TextCompare_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- !insertmacro TextCompareBody ''
-
- !verbose pop
- !macroend
-
- !define TextCompareS `!insertmacro TextCompareSCall`
- !define un.TextCompareS `!insertmacro TextCompareSCall`
-
- !macro TextCompareS
- !macroend
-
- !macro un.TextCompareS
- !macroend
-
- !macro TextCompareS_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- !insertmacro TextCompareBody 'S'
-
- !verbose pop
- !macroend
-
- !macro ConfigReadBody _TEXTFUNC_S
- Exch $1
- Exch
- Exch $0
- Exch
- Push $2
- Push $3
- Push $4
- ClearErrors
-
- FileOpen $2 $0 r
- IfErrors TextFunc_ConfigRead${_TEXTFUNC_S}_error
- StrLen $0 $1
- StrCmp${_TEXTFUNC_S} $0 0 TextFunc_ConfigRead${_TEXTFUNC_S}_error
-
- TextFunc_ConfigRead${_TEXTFUNC_S}_readnext:
- FileRead $2 $3
- IfErrors TextFunc_ConfigRead${_TEXTFUNC_S}_error
- StrCpy $4 $3 $0
- StrCmp${_TEXTFUNC_S} $4 $1 0 TextFunc_ConfigRead${_TEXTFUNC_S}_readnext
- StrCpy $0 $3 '' $0
- StrCpy $4 $0 1 -1
- StrCmp${_TEXTFUNC_S} $4 '$\r' +2
- StrCmp${_TEXTFUNC_S} $4 '$\n' 0 TextFunc_ConfigRead${_TEXTFUNC_S}_close
- StrCpy $0 $0 -1
- goto -4
-
- TextFunc_ConfigRead${_TEXTFUNC_S}_error:
- SetErrors
- StrCpy $0 ''
-
- TextFunc_ConfigRead${_TEXTFUNC_S}_close:
- FileClose $2
-
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Exch $0
- !macroend
-
- !define ConfigRead `!insertmacro ConfigReadCall`
- !define un.ConfigRead `!insertmacro ConfigReadCall`
-
- !macro ConfigRead
- !macroend
-
- !macro un.ConfigRead
- !macroend
-
- !macro ConfigRead_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- !insertmacro ConfigReadBody ''
-
- !verbose pop
- !macroend
-
- !define ConfigReadS `!insertmacro ConfigReadSCall`
- !define un.ConfigReadS `!insertmacro ConfigReadSCall`
-
- !macro ConfigReadS
- !macroend
-
- !macro un.ConfigReadS
- !macroend
-
- !macro ConfigReadS_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- !insertmacro ConfigReadBody 'S'
-
- !verbose pop
- !macroend
-
- !macro ConfigWriteBody _TEXTFUNC_S
- Exch $2
- Exch
- Exch $1
- Exch
- Exch 2
- Exch $0
- Exch 2
- Push $3
- Push $4
- Push $5
- Push $6
- ClearErrors
-
- IfFileExists $0 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_error
- FileOpen $3 $0 a
- IfErrors TextFunc_ConfigWrite${_TEXTFUNC_S}_error
-
- StrLen $0 $1
- StrCmp${_TEXTFUNC_S} $0 0 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_readnext
- StrCpy $0 ''
- goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close
-
- TextFunc_ConfigWrite${_TEXTFUNC_S}_readnext:
- FileRead $3 $4
- IfErrors TextFunc_ConfigWrite${_TEXTFUNC_S}_add
- StrCpy $5 $4 $0
- StrCmp${_TEXTFUNC_S} $5 $1 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_readnext
-
- StrCpy $5 0
- IntOp $5 $5 - 1
- StrCpy $6 $4 1 $5
- StrCmp${_TEXTFUNC_S} $6 '$\r' -2
- StrCmp${_TEXTFUNC_S} $6 '$\n' -3
- StrCpy $6 $4
- StrCmp${_TEXTFUNC_S} $5 -1 +3
- IntOp $5 $5 + 1
- StrCpy $6 $4 $5
-
- StrCmp${_TEXTFUNC_S} $2 '' TextFunc_ConfigWrite${_TEXTFUNC_S}_change
- StrCmp${_TEXTFUNC_S} $6 '$1$2' 0 TextFunc_ConfigWrite${_TEXTFUNC_S}_change
- StrCpy $0 SAME
- goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close
-
- TextFunc_ConfigWrite${_TEXTFUNC_S}_change:
- FileSeek $3 0 CUR $5
- StrLen $4 $4
- IntOp $4 $5 - $4
- FileSeek $3 0 END $6
- IntOp $6 $6 - $5
-
- System::Alloc $6
- Pop $0
- FileSeek $3 $5 SET
- System::Call 'kernel32::ReadFile(i r3, i r0, i $6, t.,)'
- FileSeek $3 $4 SET
- StrCmp${_TEXTFUNC_S} $2 '' +2
- FileWrite $3 '$1$2$\r$\n'
- System::Call 'kernel32::WriteFile(i r3, i r0, i $6, t.,)'
- System::Call 'kernel32::SetEndOfFile(i r3)'
- System::Free $0
- StrCmp${_TEXTFUNC_S} $2 '' +3
- StrCpy $0 CHANGED
- goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close
- StrCpy $0 DELETED
- goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close
-
- TextFunc_ConfigWrite${_TEXTFUNC_S}_add:
- StrCmp${_TEXTFUNC_S} $2 '' 0 +3
- StrCpy $0 SAME
- goto TextFunc_ConfigWrite${_TEXTFUNC_S}_close
- FileSeek $3 -1 END
- FileRead $3 $4
- IfErrors +4
- StrCmp${_TEXTFUNC_S} $4 '$\r' +3
- StrCmp${_TEXTFUNC_S} $4 '$\n' +2
- FileWrite $3 '$\r$\n'
- FileWrite $3 '$1$2$\r$\n'
- StrCpy $0 ADDED
-
- TextFunc_ConfigWrite${_TEXTFUNC_S}_close:
- FileClose $3
- goto TextFunc_ConfigWrite${_TEXTFUNC_S}_end
-
- TextFunc_ConfigWrite${_TEXTFUNC_S}_error:
- SetErrors
- StrCpy $0 ''
-
- TextFunc_ConfigWrite${_TEXTFUNC_S}_end:
- Pop $6
- Pop $5
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Exch $0
- !macroend
-
- !define ConfigWrite `!insertmacro ConfigWriteCall`
- !define un.ConfigWrite `!insertmacro ConfigWriteCall`
-
- !macro ConfigWrite
- !macroend
-
- !macro un.ConfigWrite
- !macroend
-
- !macro ConfigWrite_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- !insertmacro ConfigWriteBody ''
-
- !verbose pop
- !macroend
-
- !define ConfigWriteS `!insertmacro ConfigWriteSCall`
- !define un.ConfigWriteS `!insertmacro ConfigWriteSCall`
-
- !macro ConfigWriteS
- !macroend
-
- !macro un.ConfigWriteS
- !macroend
-
- !macro ConfigWriteS_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- !insertmacro ConfigWriteBody 'S'
-
- !verbose pop
- !macroend
-
- !define FileRecode `!insertmacro FileRecodeCall`
- !define un.FileRecode `!insertmacro FileRecodeCall`
-
- !macro FileRecode
- !macroend
-
- !macro un.FileRecode
- !macroend
-
- !macro FileRecode_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- Exch $1
- Exch
- Exch $0
- Exch
- Push $2
- Push $3
- Push $4
-
- IfFileExists $0 0 TextFunc_FileRecode_error
- StrCmp $1 OemToChar +2
- StrCmp $1 CharToOem 0 TextFunc_FileRecode_error
-
- FileOpen $2 $0 a
- FileSeek $2 0 END $3
- System::Alloc $3
- Pop $4
- FileSeek $2 0 SET
- System::Call 'kernel32::ReadFile(i r2, i r4, i $3, t.,)'
- System::Call 'user32::$1Buff(i r4, i r4, i $3)'
- FileSeek $2 0 SET
- System::Call 'kernel32::WriteFile(i r2, i r4, i $3, t.,)'
- System::Free $4
- FileClose $2
- goto TextFunc_FileRecode_end
-
- TextFunc_FileRecode_error:
- SetErrors
-
- TextFunc_FileRecode_end:
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Pop $0
-
- !verbose pop
- !macroend
-
- !define TrimNewLines `!insertmacro TrimNewLinesCall`
- !define un.TrimNewLines `!insertmacro TrimNewLinesCall`
-
- !macro TrimNewLines
- !macroend
-
- !macro un.TrimNewLines
- !macroend
-
- !macro TrimNewLines_
- !verbose push
- !verbose ${_TEXTFUNC_VERBOSE}
-
- Exch $0
- Push $1
- Push $2
-
- StrCpy $1 0
- IntOp $1 $1 - 1
- StrCpy $2 $0 1 $1
- StrCmp $2 '$\r' -2
- StrCmp $2 '$\n' -3
- StrCmp $1 -1 +3
- IntOp $1 $1 + 1
- StrCpy $0 $0 $1
-
- Pop $2
- Pop $1
- Exch $0
-
- !verbose pop
- !macroend
-
- !endif
-