mirror of
https://github.com/CorsixTH/CorsixTH.git
synced 2025-07-23 20:30:35 +02:00
66 lines
2.4 KiB
NSIS
66 lines
2.4 KiB
NSIS
; This software is provided 'as-is', without any express or implied warranty.
|
|
; In no event will the authors be held liable for any damages arising from the
|
|
; use of this software.
|
|
|
|
; Permission is granted to anyone to use this software for any purpose,
|
|
; including commercial applications, and to alter it and redistribute it freely,
|
|
; subject to the following restrictions:
|
|
|
|
; 1. The origin of this software must not be misrepresented; you must not claim
|
|
; that you wrote the original software. If you use this software in a product,
|
|
; an acknowledgment in the product documentation would be appreciated but is not
|
|
; required.
|
|
; 2. Altered source versions must be plainly marked as such, and must not be
|
|
; misrepresented as being the original software.
|
|
; 3. This notice may not be removed or altered from any source distribution.
|
|
|
|
; Replaces all ocurrences of a given needle within a haystack with another string
|
|
; Written by dandaman32
|
|
|
|
Var STR_REPLACE_VAR_0
|
|
Var STR_REPLACE_VAR_1
|
|
Var STR_REPLACE_VAR_2
|
|
Var STR_REPLACE_VAR_3
|
|
Var STR_REPLACE_VAR_4
|
|
Var STR_REPLACE_VAR_5
|
|
Var STR_REPLACE_VAR_6
|
|
Var STR_REPLACE_VAR_7
|
|
Var STR_REPLACE_VAR_8
|
|
|
|
Function StrReplace
|
|
Exch $STR_REPLACE_VAR_2
|
|
Exch 1
|
|
Exch $STR_REPLACE_VAR_1
|
|
Exch 2
|
|
Exch $STR_REPLACE_VAR_0
|
|
StrCpy $STR_REPLACE_VAR_3 -1
|
|
StrLen $STR_REPLACE_VAR_4 $STR_REPLACE_VAR_1
|
|
StrLen $STR_REPLACE_VAR_6 $STR_REPLACE_VAR_0
|
|
loop:
|
|
IntOp $STR_REPLACE_VAR_3 $STR_REPLACE_VAR_3 + 1
|
|
StrCpy $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_4 $STR_REPLACE_VAR_3
|
|
StrCmp $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_1 found
|
|
StrCmp $STR_REPLACE_VAR_3 $STR_REPLACE_VAR_6 done
|
|
Goto loop
|
|
found:
|
|
StrCpy $STR_REPLACE_VAR_5 $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_3
|
|
IntOp $STR_REPLACE_VAR_8 $STR_REPLACE_VAR_3 + $STR_REPLACE_VAR_4
|
|
StrCpy $STR_REPLACE_VAR_7 $STR_REPLACE_VAR_0 "" $STR_REPLACE_VAR_8
|
|
StrCpy $STR_REPLACE_VAR_0 $STR_REPLACE_VAR_5$STR_REPLACE_VAR_2$STR_REPLACE_VAR_7
|
|
StrLen $STR_REPLACE_VAR_6 $STR_REPLACE_VAR_0
|
|
Goto loop
|
|
done:
|
|
Pop $STR_REPLACE_VAR_1 ; Prevent "invalid opcode" errors and keep the
|
|
Pop $STR_REPLACE_VAR_1 ; stack as it was before the function was called
|
|
Exch $STR_REPLACE_VAR_0
|
|
FunctionEnd
|
|
|
|
!macro _strReplaceConstructor OUT NEEDLE NEEDLE2 HAYSTACK
|
|
Push "${HAYSTACK}"
|
|
Push "${NEEDLE}"
|
|
Push "${NEEDLE2}"
|
|
Call StrReplace
|
|
Pop "${OUT}"
|
|
!macroend
|
|
|
|
!define StrReplace '!insertmacro "_strReplaceConstructor"' |