mirror of
https://github.com/saltstack/salt.git
synced 2025-04-10 23:01:39 +00:00
52 lines
1.6 KiB
NSIS
52 lines
1.6 KiB
NSIS
#------------------------------------------------------------------------------
|
|
# StrContains
|
|
#
|
|
# This function does a case sensitive searches for an occurrence of a substring in a string.
|
|
# It returns the substring if it is found.
|
|
# Otherwise it returns null("").
|
|
# Written by kenglish_hi
|
|
# Adapted from StrReplace written by dandaman32
|
|
#------------------------------------------------------------------------------
|
|
!define StrContains "!insertmacro StrContains"
|
|
!macro StrContains OUT NEEDLE HAYSTACK
|
|
Push "${HAYSTACK}"
|
|
Push "${NEEDLE}"
|
|
Call StrContains
|
|
Pop "${OUT}"
|
|
!macroend
|
|
Function StrContains
|
|
|
|
# Initialize variables
|
|
Var /GLOBAL STR_HAYSTACK
|
|
Var /GLOBAL STR_NEEDLE
|
|
Var /GLOBAL STR_CONTAINS_VAR_1
|
|
Var /GLOBAL STR_CONTAINS_VAR_2
|
|
Var /GLOBAL STR_CONTAINS_VAR_3
|
|
Var /GLOBAL STR_CONTAINS_VAR_4
|
|
Var /GLOBAL STR_RETURN_VAR
|
|
|
|
Exch $STR_NEEDLE
|
|
Exch 1
|
|
Exch $STR_HAYSTACK
|
|
# Uncomment to debug
|
|
#MessageBox MB_OK 'STR_NEEDLE = $STR_NEEDLE STR_HAYSTACK = $STR_HAYSTACK '
|
|
StrCpy $STR_RETURN_VAR ""
|
|
StrCpy $STR_CONTAINS_VAR_1 -1
|
|
StrLen $STR_CONTAINS_VAR_2 $STR_NEEDLE
|
|
StrLen $STR_CONTAINS_VAR_4 $STR_HAYSTACK
|
|
|
|
loop:
|
|
IntOp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_1 + 1
|
|
StrCpy $STR_CONTAINS_VAR_3 $STR_HAYSTACK $STR_CONTAINS_VAR_2 $STR_CONTAINS_VAR_1
|
|
StrCmp $STR_CONTAINS_VAR_3 $STR_NEEDLE found
|
|
StrCmp $STR_CONTAINS_VAR_1 $STR_CONTAINS_VAR_4 done
|
|
Goto loop
|
|
|
|
found:
|
|
StrCpy $STR_RETURN_VAR $STR_NEEDLE
|
|
Goto done
|
|
|
|
done:
|
|
Pop $STR_NEEDLE # Prevent "invalid opcode" errors and keep the stack clean
|
|
Exch $STR_RETURN_VAR
|
|
FunctionEnd
|