2004-02-07 00:39:42 +00:00
|
|
|
|
/*
|
2004-09-24 13:59:03 +00:00
|
|
|
|
o-----------------------------------------------------------------------------o
|
|
|
|
|
|String Functions Header File 1.07 |
|
|
|
|
|
(-----------------------------------------------------------------------------)
|
|
|
|
|
| By deguix / A Header file for NSIS 2.01 |
|
|
|
|
|
| <cevo_deguix@yahoo.com.br> -------------------------------|
|
|
|
|
|
| |
|
|
|
|
|
| This header file contains NSIS functions for string manipulation. |
|
|
|
|
|
o-----------------------------------------------------------------------------o
|
2004-02-07 00:39:42 +00:00
|
|
|
|
*/
|
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 3
|
|
|
|
|
!ifndef STRFUNC_VERBOSITY
|
|
|
|
|
!define STRFUNC_VERBOSITY 3
|
2004-02-07 00:39:42 +00:00
|
|
|
|
!endif
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!define _STRFUNC_VERBOSITY ${STRFUNC_VERBOSITY}
|
|
|
|
|
!undef STRFUNC_VERBOSITY
|
|
|
|
|
!verbose ${_STRFUNC_VERBOSITY}
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!include LogicLib.nsh
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!ifndef STRFUNC
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Header File Identification
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!define STRFUNC `String Functions Header File`
|
|
|
|
|
!define STRFUNC_SHORT `StrFunc`
|
|
|
|
|
!define STRFUNC_CREDITS `2004 Diego Pedroso`
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Header File Version
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!define STRFUNC_VERMAJ 1
|
|
|
|
|
!define STRFUNC_VERMED 07
|
|
|
|
|
;!define STRFUNC_VERMIN 0
|
|
|
|
|
;!define STRFUNC_VERBLD 0
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!define STRFUNC_VER `${STRFUNC_VERMAJ}.${STRFUNC_VERMED}`
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Header File Init Message Prefix and Postfix
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!define STRFUNC_INITMSGPRE `----------------------------------------------------------------------$\r$\n`
|
|
|
|
|
!define STRFUNC_INITMSGPOST `$\r$\n----------------------------------------------------------------------$\r$\n`
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Header File Init Message
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `${STRFUNC_INITMSGPRE}NSIS ${STRFUNC} ${STRFUNC_VER} - <20> ${STRFUNC_CREDITS}${STRFUNC_INITMSGPOST}`
|
|
|
|
|
!verbose pop
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Header File Function Init Message Prefix and Postfix
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!define STRFUNC_FUNCMSGPRE ``
|
|
|
|
|
!define STRFUNC_FUNCMSGPOST ``
|
|
|
|
|
|
|
|
|
|
;Header File Function Macros
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!macro STRFUNC_DEFFUNC Name
|
|
|
|
|
!define `${Name}` `!insertmacro FUNCTION_STRING_${Name}`
|
|
|
|
|
!define `Un${Name}` `!insertmacro FUNCTION_STRING_Un${Name}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro STRFUNC_FUNC ShortName Credits
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!ifndef `Un${ShortName}`
|
|
|
|
|
!echo `${STRFUNC_FUNCMSGPRE}$ {Un${ShortName}} - <20> ${Credits}${STRFUNC_FUNCMSGPOST}`
|
|
|
|
|
!verbose pop
|
|
|
|
|
!define `Un${ShortName}` `!insertmacro FUNCTION_STRING_Un${ShortName}_Call`
|
|
|
|
|
Function `un.${ShortName}`
|
|
|
|
|
!else
|
|
|
|
|
!echo `${STRFUNC_FUNCMSGPRE}$ {${ShortName}} - <20> ${Credits}${STRFUNC_FUNCMSGPOST}`
|
|
|
|
|
!verbose pop
|
|
|
|
|
!undef `${ShortName}`
|
|
|
|
|
!define `${ShortName}` `!insertmacro FUNCTION_STRING_${ShortName}_Call`
|
|
|
|
|
Function `${ShortName}`
|
|
|
|
|
!endif
|
|
|
|
|
!macroend
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Function Names Startup Definition
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrCase
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrCase`
|
|
|
|
|
!undef UnStrCase
|
|
|
|
|
!insertmacro FUNCTION_STRING_StrCase
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrClb
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrClb`
|
|
|
|
|
!undef UnStrClb
|
|
|
|
|
!insertmacro FUNCTION_STRING_StrClb
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrIOToNSIS
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrIOToNSIS`
|
2004-04-09 13:17:55 +00:00
|
|
|
|
!undef UnStrIOToNSIS
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro FUNCTION_STRING_StrIOToNSIS
|
|
|
|
|
!macroend
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrLoc
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrLoc`
|
2004-02-17 13:38:45 +00:00
|
|
|
|
!undef UnStrLoc
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro FUNCTION_STRING_StrLoc
|
|
|
|
|
!macroend
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrNSISToIO
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrNSISToIO`
|
2004-04-09 13:17:55 +00:00
|
|
|
|
!undef UnStrNSISToIO
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro FUNCTION_STRING_StrNSISToIO
|
|
|
|
|
!macroend
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrRep
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrRep`
|
2004-04-09 13:17:55 +00:00
|
|
|
|
!undef UnStrRep
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro FUNCTION_STRING_StrRep
|
|
|
|
|
!macroend
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrSort
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrSort`
|
2004-04-09 13:17:55 +00:00
|
|
|
|
!undef UnStrSort
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro FUNCTION_STRING_StrSort
|
|
|
|
|
!macroend
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrStr
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrStr`
|
2004-04-09 13:17:55 +00:00
|
|
|
|
!undef UnStrStr
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro FUNCTION_STRING_StrStr
|
|
|
|
|
!macroend
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrStrAdv
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrStrAdv`
|
2004-04-09 13:17:55 +00:00
|
|
|
|
!undef UnStrStrAdv
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro FUNCTION_STRING_StrStrAdv
|
|
|
|
|
!macroend
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrTok
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrTok`
|
|
|
|
|
!undef UnStrTok
|
|
|
|
|
!insertmacro FUNCTION_STRING_StrTok
|
|
|
|
|
!macroend
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!insertmacro STRFUNC_DEFFUNC StrTrimNewLines
|
|
|
|
|
!macro `FUNCTION_STRING_UnStrTrimNewLines`
|
|
|
|
|
!undef UnStrTrimNewLines
|
|
|
|
|
!insertmacro FUNCTION_STRING_StrTrimNewLines
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
;Function Codes for Install and Uninstall
|
|
|
|
|
|
|
|
|
|
# Function StrCase
|
|
|
|
|
################
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrCase
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrCase` `2004 Diego Pedroso - Based on StrUpper and StrLower by Dave Laundon`
|
|
|
|
|
|
|
|
|
|
Exch $1
|
|
|
|
|
Exch
|
|
|
|
|
Exch $0
|
|
|
|
|
Push $2
|
|
|
|
|
Push $3
|
|
|
|
|
Push $4
|
|
|
|
|
Push $5
|
|
|
|
|
Push $6
|
|
|
|
|
Push $7
|
|
|
|
|
Push $8
|
|
|
|
|
|
|
|
|
|
; Clean pushed variables
|
|
|
|
|
|
|
|
|
|
StrCpy $2 ""
|
|
|
|
|
StrCpy $3 ""
|
|
|
|
|
StrCpy $4 ""
|
|
|
|
|
StrCpy $5 ""
|
|
|
|
|
StrCpy $6 ""
|
|
|
|
|
StrCpy $7 ""
|
|
|
|
|
StrCpy $8 ""
|
|
|
|
|
|
|
|
|
|
${If} $1 == "U"
|
|
|
|
|
|
|
|
|
|
;Upper Case System:
|
|
|
|
|
;------------------
|
|
|
|
|
; Convert all characters to upper case.
|
|
|
|
|
|
|
|
|
|
System::Call "User32::CharUpper(t r0 r5)i"
|
|
|
|
|
Goto StrCase_End
|
|
|
|
|
${ElseIf} $1 == "L"
|
|
|
|
|
|
|
|
|
|
;Lower Case System:
|
|
|
|
|
;------------------
|
|
|
|
|
; Convert all characters to lower case.
|
|
|
|
|
|
|
|
|
|
System::Call "User32::CharLower(t r0 r5)i"
|
|
|
|
|
Goto StrCase_End
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
StrLen $2 $0
|
|
|
|
|
|
|
|
|
|
; For the rest of cases, make a loop
|
|
|
|
|
${For} $3 0 $2
|
|
|
|
|
|
|
|
|
|
IntOp $4 $3 + 1
|
|
|
|
|
|
|
|
|
|
; Step 1: Detect one character at a time
|
|
|
|
|
|
|
|
|
|
${If} $3 <> 0
|
|
|
|
|
StrCpy $6 $0 `` $3
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
${If} $4 <> $2
|
|
|
|
|
${If} $3 = 0
|
|
|
|
|
StrCpy $6 $0 1
|
|
|
|
|
${Else}
|
|
|
|
|
StrCpy $6 $6 1
|
|
|
|
|
${EndIf}
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
; Step 2: Convert to the advanced case user chose:
|
|
|
|
|
|
|
|
|
|
${If} $1 == "T"
|
|
|
|
|
|
|
|
|
|
;Title Case System:
|
|
|
|
|
;------------------
|
|
|
|
|
; Convert all characters after a non-alphabetic character to upper case.
|
|
|
|
|
; Else convert to lower case.
|
|
|
|
|
|
|
|
|
|
System::Call "*(&t1 r7) i .r8"
|
|
|
|
|
System::Call "*$8(&i1 .r7)"
|
|
|
|
|
System::Free $8
|
|
|
|
|
System::Call "user32::IsCharAlpha(i r7) i .r8"
|
|
|
|
|
${If} $8 = 0
|
|
|
|
|
System::Call "User32::CharUpper(t r6 r6)i"
|
|
|
|
|
${Else}
|
|
|
|
|
System::Call "User32::CharLower(t r6 r6)i"
|
|
|
|
|
${EndIf}
|
|
|
|
|
${ElseIf} $1 == "S"
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Sentence Case System:
|
|
|
|
|
;------------------
|
|
|
|
|
; Convert all characters after a ".", "!" or "?" character to upper case.
|
|
|
|
|
; Else convert to lower case. Spaces or tabs after these marks are ignored.
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
${If} $6 == " "
|
|
|
|
|
${OrIf} $6 == "$\t"
|
|
|
|
|
Goto IgnoreLetter
|
|
|
|
|
${EndIf}
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
${If} $7 == "."
|
|
|
|
|
${OrIf} $7 == "!"
|
|
|
|
|
${OrIf} $7 == "?"
|
|
|
|
|
${OrIf} $7 == ""
|
|
|
|
|
System::Call "User32::CharUpper(t r6 r6)i"
|
|
|
|
|
${Else}
|
|
|
|
|
System::Call "User32::CharLower(t r6 r6)i"
|
|
|
|
|
${EndIf}
|
|
|
|
|
${ElseIf} $1 == "<>"
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Switch Case System:
|
|
|
|
|
;------------------
|
|
|
|
|
; Switch all characters cases to their inverse case.
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
System::Call "*(&t1 r6) i .r8"
|
|
|
|
|
System::Call "*$8(&i1 .r7)"
|
|
|
|
|
System::Free $8
|
|
|
|
|
System::Call "user32::IsCharUpper(i r7) i .r8"
|
|
|
|
|
${If} $8 = 0
|
|
|
|
|
System::Call "User32::CharUpper(t r6 r6)i"
|
|
|
|
|
${Else}
|
|
|
|
|
System::Call "User32::CharLower(t r6 r6)i"
|
|
|
|
|
${EndIf}
|
|
|
|
|
${EndIf}
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
; Write the character to TempString
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $7 $6
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
IgnoreLetter:
|
|
|
|
|
StrCpy $5 `$5$6`
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
${Next}
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCase_End:
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
; TempString is the final string
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $0 $5
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
Pop $8
|
|
|
|
|
Pop $7
|
|
|
|
|
Pop $6
|
|
|
|
|
Pop $5
|
|
|
|
|
Pop $4
|
|
|
|
|
Pop $3
|
|
|
|
|
Pop $2
|
|
|
|
|
Pop $1
|
|
|
|
|
Exch $0
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
FunctionEnd
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!macroend
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!macro FUNCTION_STRING_StrClb
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrClb` `2004 Diego Pedroso - Based on CopyToClipboard and CopyFromClipboard by Nik Medved`
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Get input from user
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
Exch $1
|
|
|
|
|
Exch
|
|
|
|
|
Exch $0
|
|
|
|
|
Exch
|
|
|
|
|
Push $2
|
|
|
|
|
Push $3
|
|
|
|
|
Push $4
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Open the clipboard to do the operations the user chose
|
|
|
|
|
System::Call 'user32::OpenClipboard(i $HWNDPARENT)'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
${If} $1 == ">" ;Set
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 1: Clear the clipboard
|
|
|
|
|
System::Call 'user32::EmptyClipboard()'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 2: Allocate global heap
|
|
|
|
|
StrLen $2 $0
|
|
|
|
|
IntOp $2 $2 + 1
|
|
|
|
|
System::Call 'kernel32::GlobalAlloc(i 2, i r2) i.r2'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 3: Lock the handle
|
|
|
|
|
System::Call 'kernel32::GlobalLock(i r2) i.r3'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 4: Copy the text to locked clipboard buffer
|
|
|
|
|
System::Call 'kernel32::lstrcpyA(i r3, t r0)'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 5: Unlock the handle again
|
|
|
|
|
System::Call 'kernel32::GlobalUnlock(i r2)'
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 6: Set the information to the clipboard
|
|
|
|
|
System::Call 'user32::SetClipboardData(i 1, i r2)'
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $0 ""
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
${ElseIf} $1 == "<" ;Get
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 1: Get clipboard data
|
|
|
|
|
System::Call 'user32::GetClipboardData(i 1) i .r2'
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 2: Lock and copy data
|
|
|
|
|
System::Call 'kernel32::GlobalLock(i r2) t .r0'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 3: Unlcok
|
|
|
|
|
System::Call 'kernel32::GlobalUnlock(i r2)'
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
${ElseIf} $1 == "<>" ;Swap
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 1: Get clipboard data
|
|
|
|
|
System::Call 'user32::GetClipboardData(i 1) t .r2'
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 2: Lock and copy data
|
|
|
|
|
System::Call 'kernel32::GlobalLock(i r2) t .r4'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 3: Unlcok
|
|
|
|
|
System::Call 'kernel32::GlobalUnlock(i r2)'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 4: Clear the clipboard
|
|
|
|
|
System::Call 'user32::EmptyClipboard()'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 5: Allocate global heap
|
|
|
|
|
StrLen $2 $0
|
|
|
|
|
IntOp $2 $2 + 1
|
|
|
|
|
System::Call 'kernel32::GlobalAlloc(i 2, i r2) i.r2'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 6: Lock the handle
|
|
|
|
|
System::Call 'kernel32::GlobalLock(i r2) i.r3'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 7: Copy the text to locked clipboard buffer
|
|
|
|
|
System::Call 'kernel32::lstrcpyA(i r3, t r0)'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 8: Unlock the handle again
|
|
|
|
|
System::Call 'kernel32::GlobalUnlock(i r2)'
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 9: Set the information to the clipboard
|
|
|
|
|
System::Call 'user32::SetClipboardData(i 1, i r2)'
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $0 $4
|
|
|
|
|
${Else} ;Clear
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Step 1: Clear the clipboard
|
|
|
|
|
System::Call 'user32::EmptyClipboard()'
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $0 ""
|
|
|
|
|
${EndIf}
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Close the clipboard
|
|
|
|
|
System::Call 'user32::CloseClipboard()'
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
;Return result to user
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
Pop $4
|
|
|
|
|
Pop $3
|
|
|
|
|
Pop $2
|
|
|
|
|
Pop $1
|
|
|
|
|
Exch $0
|
|
|
|
|
|
|
|
|
|
FunctionEnd
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!macroend
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
# Function StrIOToNSIS
|
|
|
|
|
####################
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!macro FUNCTION_STRING_StrIOToNSIS
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrIOToNSIS` `2003-2004 Amir Szekely, Joost Verburg and Dave Laundon`
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
Exch $0 ; The source
|
|
|
|
|
Push $1 ; The output
|
|
|
|
|
Push $2 ; Temporary char
|
|
|
|
|
StrCpy $1 `` ; Initialise the output
|
2004-04-09 13:17:55 +00:00
|
|
|
|
loop:
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $2 $0 1 ; Get the next source char
|
|
|
|
|
StrCmp $2 `` done ; Abort when none left
|
|
|
|
|
StrCpy $0 $0 `` 1 ; Remove it from the source
|
|
|
|
|
StrCmp $2 `\` +3 ; Escape character?
|
|
|
|
|
StrCpy $1 `$1$2` ; If not just output
|
|
|
|
|
Goto loop
|
|
|
|
|
StrCpy $2 $0 1 ; Get the next source char
|
|
|
|
|
StrCpy $0 $0 `` 1 ; Remove it from the source
|
|
|
|
|
StrCmp $2 `\` `` +3 ; Back-slash?
|
|
|
|
|
StrCpy $1 `$1\`
|
|
|
|
|
Goto loop
|
|
|
|
|
StrCmp $2 `r` `` +3 ; Carriage return?
|
|
|
|
|
StrCpy $1 `$1$\r`
|
|
|
|
|
Goto loop
|
|
|
|
|
StrCmp $2 `n` `` +3 ; Line feed?
|
|
|
|
|
StrCpy $1 `$1$\n`
|
|
|
|
|
Goto loop
|
|
|
|
|
StrCmp $2 `t` `` +3 ; Tab?
|
|
|
|
|
StrCpy $1 `$1$\t`
|
|
|
|
|
Goto loop
|
|
|
|
|
StrCpy $1 `$1$2` ; Anything else (should never get here)
|
|
|
|
|
Goto loop
|
2004-04-09 13:17:55 +00:00
|
|
|
|
done:
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $0 $1
|
|
|
|
|
Pop $2
|
|
|
|
|
Pop $1
|
|
|
|
|
Exch $0
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
# Function StrLoc
|
|
|
|
|
###############
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrLoc
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrLoc` `2004 Diego Pedroso`
|
|
|
|
|
|
|
|
|
|
Exch $R0
|
|
|
|
|
Exch
|
|
|
|
|
Exch $R1 ; st=haystack,old$R1, $R1=needle
|
|
|
|
|
Exch 2 ; st=old$R1,haystack
|
|
|
|
|
Exch $R2 ; st=old$R1,old$R2, $R2=haystack
|
|
|
|
|
Push $R3
|
|
|
|
|
Push $R4
|
|
|
|
|
Push $R5
|
|
|
|
|
StrLen $R3 $R1
|
|
|
|
|
StrCpy $R4 0
|
|
|
|
|
loop:
|
|
|
|
|
StrCpy $R5 $R2 $R3 $R4
|
|
|
|
|
StrCmp $R5 $R1 done
|
|
|
|
|
StrCmp $R5 `` error
|
|
|
|
|
IntOp $R4 $R4 + 1
|
|
|
|
|
Goto loop
|
|
|
|
|
done:
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCmp $R0 `<` 0 +5
|
|
|
|
|
StrLen $R0 $R2
|
|
|
|
|
IntOp $R5 $R3 + $R4
|
|
|
|
|
IntOp $R0 $R0 - $R5
|
|
|
|
|
Goto +2
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $R0 $R4
|
|
|
|
|
Goto +2
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
error:
|
|
|
|
|
StrCpy $R0 ``
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
Pop $R5
|
|
|
|
|
Pop $R4
|
|
|
|
|
Pop $R3
|
|
|
|
|
Pop $R2
|
|
|
|
|
Exch
|
|
|
|
|
Pop $R1
|
|
|
|
|
Exch $R0
|
|
|
|
|
FunctionEnd
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!macroend
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
# Function StrNSISToIO
|
|
|
|
|
####################
|
2004-02-07 15:47:54 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
!macro FUNCTION_STRING_StrNSISToIO
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrNSISToIO` `2003-2004 Amir Szekely, Joost Verburg and Dave Laundon`
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
Exch $0 ; The source
|
|
|
|
|
Push $1 ; The output
|
|
|
|
|
Push $2 ; Temporary char
|
|
|
|
|
StrCpy $1 `` ; Initialise the output
|
|
|
|
|
loop:
|
|
|
|
|
StrCpy $2 $0 1 ; Get the next source char
|
|
|
|
|
StrCmp $2 `` done ; Abort when none left
|
|
|
|
|
StrCpy $0 $0 `` 1 ; Remove it from the source
|
|
|
|
|
StrCmp $2 `\` `` +3 ; Back-slash?
|
|
|
|
|
StrCpy $1 `$1\\`
|
|
|
|
|
Goto loop
|
|
|
|
|
StrCmp $2 `$\r` `` +3 ; Carriage return?
|
|
|
|
|
StrCpy $1 `$1\r`
|
|
|
|
|
Goto loop
|
|
|
|
|
StrCmp $2 `$\n` `` +3 ; Line feed?
|
|
|
|
|
StrCpy $1 `$1\n`
|
|
|
|
|
Goto loop
|
|
|
|
|
StrCmp $2 `$\t` `` +3 ; Tab?
|
|
|
|
|
StrCpy $1 `$1\t`
|
|
|
|
|
Goto loop
|
|
|
|
|
StrCpy $1 `$1$2` ; Anything else
|
|
|
|
|
Goto loop
|
|
|
|
|
done:
|
|
|
|
|
StrCpy $0 $1
|
|
|
|
|
Pop $2
|
|
|
|
|
Pop $1
|
|
|
|
|
Exch $0
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
# Function StrRep
|
|
|
|
|
###############
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrRep
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrRep` `2002-2004 Hendri Adriaens`
|
|
|
|
|
|
|
|
|
|
Exch $0 ;this will replace wrong characters
|
|
|
|
|
Exch
|
|
|
|
|
Exch $1 ;needs to be replaced
|
|
|
|
|
Exch
|
|
|
|
|
Exch 2
|
|
|
|
|
Exch $2 ;the orginal string
|
|
|
|
|
Push $3 ;counter
|
|
|
|
|
Push $4 ;temp character
|
|
|
|
|
Push $5 ;temp string
|
|
|
|
|
Push $6 ;length of string that need to be replaced
|
|
|
|
|
Push $7 ;length of string that will replace
|
|
|
|
|
Push $R0 ;tempstring
|
|
|
|
|
Push $R1 ;tempstring
|
|
|
|
|
Push $R2 ;tempstring
|
|
|
|
|
StrCpy $3 `-1`
|
|
|
|
|
StrCpy $5 ``
|
|
|
|
|
StrLen $6 $1
|
|
|
|
|
StrLen $7 $0
|
|
|
|
|
Loop:
|
|
|
|
|
IntOp $3 $3 + 1
|
|
|
|
|
StrCpy $4 $2 $6 $3
|
|
|
|
|
StrCmp $4 `` ExitLoop
|
|
|
|
|
StrCmp $4 $1 Replace
|
|
|
|
|
Goto Loop
|
|
|
|
|
Replace:
|
|
|
|
|
StrCpy $R0 $2 $3
|
|
|
|
|
IntOp $R2 $3 + $6
|
|
|
|
|
StrCpy $R1 $2 `` $R2
|
|
|
|
|
StrCpy $2 $R0$0$R1
|
|
|
|
|
IntOp $3 $3 + $7
|
|
|
|
|
Goto Loop
|
|
|
|
|
ExitLoop:
|
|
|
|
|
StrCpy $0 $2
|
|
|
|
|
Pop $R2
|
|
|
|
|
Pop $R1
|
|
|
|
|
Pop $R0
|
|
|
|
|
Pop $7
|
|
|
|
|
Pop $6
|
|
|
|
|
Pop $5
|
|
|
|
|
Pop $4
|
|
|
|
|
Pop $3
|
|
|
|
|
Pop $2
|
|
|
|
|
Pop $1
|
|
|
|
|
Exch $0
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
# Function StrSort
|
|
|
|
|
################
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrSort
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrSort` `2004 Diego Pedroso - based on SortString by "Afrow UK"`
|
|
|
|
|
|
|
|
|
|
# Prepare Variables
|
|
|
|
|
|
|
|
|
|
Exch $R7 ;Include Center string
|
|
|
|
|
Exch
|
|
|
|
|
Exch $R6 ;Include Left and Right strings
|
|
|
|
|
Exch 2
|
|
|
|
|
Exch $0 ;Right String
|
|
|
|
|
Exch 3
|
|
|
|
|
Exch $1 ;Left String
|
|
|
|
|
Exch 4
|
|
|
|
|
Exch $2 ;Center String
|
|
|
|
|
Exch 5
|
|
|
|
|
Exch $R0 ;String
|
|
|
|
|
Push $3
|
|
|
|
|
Push $4
|
|
|
|
|
Push $5
|
|
|
|
|
Push $R1
|
|
|
|
|
Push $R2
|
|
|
|
|
Push $R3
|
|
|
|
|
Push $R4
|
|
|
|
|
Push $R5
|
|
|
|
|
|
|
|
|
|
StrLen $3 $0
|
|
|
|
|
StrLen $4 $1
|
|
|
|
|
StrLen $5 $2
|
|
|
|
|
StrCpy $R1 0
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
# Center String Search
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
loop:
|
|
|
|
|
StrCpy $R3 $R0 $5 $R1
|
|
|
|
|
StrCmp $R3 `` error
|
|
|
|
|
StrCmp $R3 $2 done
|
|
|
|
|
IntOp $R1 $R1 + 1
|
|
|
|
|
Goto loop
|
|
|
|
|
done:
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $R5 $R1
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
IntOp $R1 $R1 - $4
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
# Left String Search
|
2004-04-09 13:17:55 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
loop2:
|
|
|
|
|
StrCpy $R3 $R0 $4 $R1
|
|
|
|
|
StrCmp $R3 `` error2
|
|
|
|
|
StrCmp $R3 $1 done2
|
|
|
|
|
IntOp $R1 $R1 - 1
|
|
|
|
|
Goto loop2
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
error2:
|
|
|
|
|
StrCpy $R1 0
|
|
|
|
|
StrCpy $R3 0
|
|
|
|
|
Goto +2
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
done2:
|
|
|
|
|
StrCpy $R3 1
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $R4 $R0 $R5
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCmp $R1 0 +2
|
|
|
|
|
StrCpy $R4 $R4 `` $R1
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCmp $R3 1 0 +3
|
|
|
|
|
StrCmp $R6 0 0 +2
|
|
|
|
|
StrCpy $R4 $R4 `` $4
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
# Center String Addition
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCmp $R7 0 +2
|
|
|
|
|
StrCpy $R4 $R4$2
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $R1 $R5
|
|
|
|
|
IntOp $R1 $R1 + $5
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
# Right String Search
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
loop3:
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $R3 $R0 $3 $R1
|
|
|
|
|
StrCmp $R3 `` error3
|
|
|
|
|
StrCmp $R3 $0 done3
|
|
|
|
|
IntOp $R1 $R1 + 1
|
|
|
|
|
Goto loop3
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
error3:
|
|
|
|
|
StrCpy $R1 0
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
done3:
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
IntOp $R5 $R5 + $5
|
|
|
|
|
StrCpy $R3 $R0 `` $R5
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCmp $R1 0 +5
|
|
|
|
|
IntOp $R1 $R1 - $R5
|
|
|
|
|
StrCmp $R6 0 +2
|
|
|
|
|
IntOp $R1 $R1 + $3
|
|
|
|
|
StrCpy $R3 $R3 $R1
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $R4 $R4$R3
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
StrCpy $2 $R4
|
|
|
|
|
Goto +2
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
Error:
|
|
|
|
|
StrCpy $2 ``
|
|
|
|
|
|
|
|
|
|
# Return to User
|
|
|
|
|
|
|
|
|
|
Pop $R5
|
|
|
|
|
Pop $R4
|
|
|
|
|
Pop $R3
|
|
|
|
|
Pop $R2
|
|
|
|
|
Pop $R1
|
|
|
|
|
Pop $5
|
|
|
|
|
Pop $4
|
|
|
|
|
Pop $3
|
|
|
|
|
Pop $R0
|
|
|
|
|
Pop $R7
|
|
|
|
|
Pop $R6
|
|
|
|
|
Pop $0
|
|
|
|
|
Pop $1
|
|
|
|
|
Exch $2
|
|
|
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
# Function StrStr
|
|
|
|
|
###############
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrStr
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrStr` `2002-2004 Ximon Eighteen`
|
|
|
|
|
|
|
|
|
|
Exch $R1 ; st=haystack,old$R1, $R1=needle
|
|
|
|
|
Exch ; st=old$R1,haystack
|
|
|
|
|
Exch $R2 ; st=old$R1,old$R2, $R2=haystack
|
|
|
|
|
Push $R3
|
|
|
|
|
Push $R4
|
|
|
|
|
Push $R5
|
|
|
|
|
StrLen $R3 $R1
|
|
|
|
|
StrCpy $R4 0
|
|
|
|
|
; $R1=needle
|
|
|
|
|
; $R2=haystack
|
|
|
|
|
; $R3=len(needle)
|
|
|
|
|
; $R4=cnt
|
|
|
|
|
; $R5=tmp
|
|
|
|
|
loop:
|
|
|
|
|
StrCpy $R5 $R2 $R3 $R4
|
|
|
|
|
StrCmp $R5 $R1 done
|
|
|
|
|
StrCmp $R5 `` done
|
|
|
|
|
IntOp $R4 $R4 + 1
|
|
|
|
|
Goto loop
|
|
|
|
|
done:
|
|
|
|
|
StrCpy $R1 $R2 `` $R4
|
|
|
|
|
Pop $R5
|
|
|
|
|
Pop $R4
|
|
|
|
|
Pop $R3
|
|
|
|
|
Pop $R2
|
|
|
|
|
Exch $R1
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
# Function StrStrAdv
|
|
|
|
|
##################
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrStrAdv
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrStrAdv` `2003-2004 Diego Pedroso`
|
|
|
|
|
|
|
|
|
|
;Get input from user
|
|
|
|
|
|
|
|
|
|
Exch $6 ;CaseSensitive (input)
|
|
|
|
|
Exch
|
|
|
|
|
Exch $5 ;NumLoops (input)
|
|
|
|
|
Exch
|
|
|
|
|
Exch 2
|
|
|
|
|
Exch $4 ;ShowStrToSearch (input)
|
|
|
|
|
Exch 2
|
|
|
|
|
Exch 3
|
|
|
|
|
Exch $3 ;DirectionOfReturn (input)
|
|
|
|
|
Exch 3
|
|
|
|
|
Exch 4
|
|
|
|
|
Exch $2 ;DirectionOfSearch (input)
|
|
|
|
|
Exch 4
|
|
|
|
|
Exch 5
|
|
|
|
|
Exch $1 ;StrToSearch (input)
|
|
|
|
|
Exch 5
|
|
|
|
|
Exch 6
|
|
|
|
|
Exch $0 ;String (input)
|
|
|
|
|
Exch 6
|
|
|
|
|
Push $7 ;StringLength (temp)
|
|
|
|
|
Push $8 ;StrToSearchLength (temp)
|
|
|
|
|
Push $9 ;Loop (temp)
|
|
|
|
|
Push $R3 ;Temp (temp)
|
|
|
|
|
Push $R2 ;OutVar (output)
|
|
|
|
|
Push $R1 ;StartCharPos (output)
|
|
|
|
|
Push $R0 ;EndCharPos (output)
|
|
|
|
|
|
|
|
|
|
; Verify if we have the correct values on the variables
|
|
|
|
|
${If} $0 == ``
|
|
|
|
|
SetErrors ;AdvStrStr_StrToSearch not found
|
|
|
|
|
Goto AdvStrStr_End
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
${If} $1 == ``
|
|
|
|
|
SetErrors ;No text to search
|
|
|
|
|
Goto AdvStrStr_End
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
${If} $2 != <
|
|
|
|
|
StrCpy $2 >
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
${If} $3 != <
|
|
|
|
|
StrCpy $3 >
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
${If} $4 <> 0
|
|
|
|
|
StrCpy $4 1
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
${If} $5 <= 0
|
|
|
|
|
StrCpy $5 0
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
${If} $6 <> 1
|
|
|
|
|
StrCpy $6 0
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
; Find "AdvStrStr_String" length
|
|
|
|
|
StrLen $7 $0
|
|
|
|
|
|
|
|
|
|
; Then find "AdvStrStr_StrToSearch" length
|
|
|
|
|
StrLen $8 $1
|
|
|
|
|
|
|
|
|
|
; Now set up basic variables
|
|
|
|
|
|
|
|
|
|
${If} $2 == <
|
|
|
|
|
IntOp $R1 $7 - $8
|
|
|
|
|
StrCpy $R2 $7
|
|
|
|
|
${Else}
|
|
|
|
|
StrCpy $R1 0
|
|
|
|
|
StrCpy $R2 $8
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
StrCpy $9 0 ; First loop
|
|
|
|
|
|
|
|
|
|
;Let's begin the search
|
|
|
|
|
|
|
|
|
|
${Do}
|
|
|
|
|
; Step 1: If the starting or ending numbers are negative
|
|
|
|
|
; or more than AdvStrStr_StringLen, we return
|
|
|
|
|
; error
|
|
|
|
|
|
|
|
|
|
${If} $R1 < 0
|
|
|
|
|
StrCpy $R1 ``
|
|
|
|
|
StrCpy $R2 ``
|
|
|
|
|
StrCpy $R3 ``
|
|
|
|
|
SetErrors ;AdvStrStr_StrToSearch not found
|
|
|
|
|
Goto AdvStrStr_End
|
|
|
|
|
${ElseIf} $R2 > $7
|
|
|
|
|
StrCpy $R1 ``
|
|
|
|
|
StrCpy $R2 ``
|
|
|
|
|
StrCpy $R3 ``
|
|
|
|
|
SetErrors ;AdvStrStr_StrToSearch not found
|
|
|
|
|
Goto AdvStrStr_End
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
; Step 2: Start the search depending on
|
|
|
|
|
; AdvStrStr_DirectionOfSearch. Chop down not needed
|
|
|
|
|
; characters.
|
|
|
|
|
|
|
|
|
|
${If} $R1 <> 0
|
|
|
|
|
StrCpy $R3 $0 `` $R1
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
${If} $R2 <> $7
|
|
|
|
|
${If} $R1 = 0
|
|
|
|
|
StrCpy $R3 $0 $8
|
|
|
|
|
${Else}
|
|
|
|
|
StrCpy $R3 $R3 $8
|
|
|
|
|
${EndIf}
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
; Step 3: Make sure that's the string we want
|
|
|
|
|
|
|
|
|
|
; Case-Sensitive Support <- Use "AdvStrStr_Temp"
|
|
|
|
|
; variable because it won't be used anymore
|
|
|
|
|
|
|
|
|
|
${If} $6 == 1
|
|
|
|
|
System::Call `kernel32::lstrcmpA(ts, ts) i.s` `$R3` `$1`
|
|
|
|
|
Pop $R3
|
|
|
|
|
${If} $R3 = 0
|
|
|
|
|
StrCpy $R3 1 ; Continue
|
|
|
|
|
${Else}
|
|
|
|
|
StrCpy $R3 0 ; Break
|
|
|
|
|
${EndIf}
|
|
|
|
|
${Else}
|
|
|
|
|
${If} $R3 == $1
|
|
|
|
|
StrCpy $R3 1 ; Continue
|
|
|
|
|
${Else}
|
|
|
|
|
StrCpy $R3 0 ; Break
|
|
|
|
|
${EndIf}
|
|
|
|
|
${EndIf}
|
|
|
|
|
|
|
|
|
|
; After the comparasion, confirm that it is the
|
|
|
|
|
; value we want.
|
|
|
|
|
|
|
|
|
|
${If} $R3 = 1
|
|
|
|
|
|
|
|
|
|
;We found it, return except if the user has set up to
|
|
|
|
|
;search for another one:
|
|
|
|
|
${If} $9 >= $5
|
|
|
|
|
|
|
|
|
|
;Now, let's see if the user wants
|
|
|
|
|
;AdvStrStr_StrToSearch to appear:
|
|
|
|
|
${If} $4 == 0
|
|
|
|
|
;Return depends on AdvStrStr_DirectionOfReturn
|
|
|
|
|
${If} $3 == <
|
|
|
|
|
; RTL
|
|
|
|
|
StrCpy $R0 $0 $R1
|
|
|
|
|
${Else}
|
|
|
|
|
; LTR
|
|
|
|
|
StrCpy $R0 $0 `` $R2
|
|
|
|
|
${EndIf}
|
|
|
|
|
${Break}
|
|
|
|
|
${Else}
|
|
|
|
|
;Return depends on AdvStrStr_DirectionOfReturn
|
|
|
|
|
${If} $3 == <
|
|
|
|
|
; RTL
|
|
|
|
|
StrCpy $R0 $0 $R2
|
|
|
|
|
${Else}
|
|
|
|
|
; LTR
|
|
|
|
|
StrCpy $R0 $0 `` $R1
|
|
|
|
|
${EndIf}
|
|
|
|
|
${Break}
|
|
|
|
|
${EndIf}
|
|
|
|
|
${Else}
|
|
|
|
|
;If the user wants to have more loops, let's do it so!
|
|
|
|
|
IntOp $9 $9 + 1
|
|
|
|
|
|
|
|
|
|
${If} $2 == <
|
|
|
|
|
IntOp $R1 $R1 - 1
|
|
|
|
|
IntOp $R2 $R2 - 1
|
|
|
|
|
${Else}
|
|
|
|
|
IntOp $R1 $R1 + 1
|
|
|
|
|
IntOp $R2 $R2 + 1
|
|
|
|
|
${EndIf}
|
|
|
|
|
${EndIf}
|
|
|
|
|
${Else}
|
|
|
|
|
; Step 4: We didn't find it, so do steps 1 thru 3 again
|
|
|
|
|
|
|
|
|
|
${If} $2 == <
|
|
|
|
|
IntOp $R1 $R1 - 1
|
|
|
|
|
IntOp $R2 $R2 - 1
|
|
|
|
|
${Else}
|
|
|
|
|
IntOp $R1 $R1 + 1
|
|
|
|
|
IntOp $R2 $R2 + 1
|
|
|
|
|
${EndIf}
|
|
|
|
|
${EndIf}
|
|
|
|
|
${Loop}
|
|
|
|
|
|
|
|
|
|
AdvStrStr_End:
|
|
|
|
|
|
|
|
|
|
;Add 1 to AdvStrStr_EndCharPos to be supportable
|
|
|
|
|
;by "StrCpy"
|
|
|
|
|
|
|
|
|
|
IntOp $R2 $R2 - 1
|
|
|
|
|
|
|
|
|
|
;Return output to user
|
|
|
|
|
|
|
|
|
|
Exch $R0
|
|
|
|
|
Exch
|
|
|
|
|
Pop $R1
|
|
|
|
|
Exch
|
|
|
|
|
Pop $R2
|
|
|
|
|
Exch
|
|
|
|
|
Pop $R3
|
|
|
|
|
Exch
|
|
|
|
|
Pop $9
|
|
|
|
|
Exch
|
|
|
|
|
Pop $8
|
|
|
|
|
Exch
|
|
|
|
|
Pop $7
|
|
|
|
|
Exch
|
|
|
|
|
Pop $6
|
|
|
|
|
Exch
|
|
|
|
|
Pop $5
|
|
|
|
|
Exch
|
|
|
|
|
Pop $4
|
|
|
|
|
Exch
|
|
|
|
|
Pop $3
|
|
|
|
|
Exch
|
|
|
|
|
Pop $2
|
|
|
|
|
Exch
|
|
|
|
|
Pop $1
|
|
|
|
|
Exch
|
|
|
|
|
Pop $0
|
|
|
|
|
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
# Function StrTok
|
|
|
|
|
###############
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrTok
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrTok` `2004 Diego Pedroso - based on StrTok by "bigmac666"`
|
|
|
|
|
Exch $9
|
|
|
|
|
Exch
|
|
|
|
|
Exch $R0
|
|
|
|
|
Exch 2
|
|
|
|
|
Exch $R1
|
|
|
|
|
Exch 3
|
|
|
|
|
Exch $R2
|
|
|
|
|
Push $R3
|
|
|
|
|
Push $R4
|
|
|
|
|
Push $R5
|
|
|
|
|
Push $R6
|
|
|
|
|
Push $R7
|
|
|
|
|
Push $R8
|
|
|
|
|
Push $R9
|
|
|
|
|
Push $0
|
|
|
|
|
Push $1
|
|
|
|
|
Push $2
|
|
|
|
|
|
|
|
|
|
StrCpy $R8 0
|
|
|
|
|
StrCpy $R9 $R1
|
|
|
|
|
|
|
|
|
|
IntCmp $R0 0 0 0 +2
|
|
|
|
|
StrCpy $R0 L
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
StrCmp $R0 L 0 +5
|
|
|
|
|
StrCpy $2 1
|
|
|
|
|
StrCpy $R0 0
|
|
|
|
|
StrCpy $1 ``
|
|
|
|
|
StrCpy $9 1
|
|
|
|
|
|
|
|
|
|
PartLoop:
|
|
|
|
|
|
|
|
|
|
StrCpy $R4 0
|
|
|
|
|
IntOp $R8 $R8 + 1
|
|
|
|
|
StrCpy $0 0
|
|
|
|
|
|
|
|
|
|
loop:
|
|
|
|
|
|
|
|
|
|
StrCpy $R5 $R2 1 $R4
|
|
|
|
|
StrCmp $R5 `` done
|
|
|
|
|
|
|
|
|
|
StrCpy $R6 -1
|
|
|
|
|
StrCpy $R7 0
|
|
|
|
|
loop2:
|
|
|
|
|
|
|
|
|
|
IntOp $R6 $R6 + 1
|
|
|
|
|
IntOp $R7 $R6 + 1
|
|
|
|
|
StrCpy $R3 $R1 $R7 $R6
|
|
|
|
|
StrCmp $R3 `` 0 +3
|
|
|
|
|
IntOp $0 $0 + 1
|
|
|
|
|
Goto ContLoop2
|
|
|
|
|
StrCmp $R5 $R3 0 Loop2
|
|
|
|
|
StrCmp $9 1 0 done
|
|
|
|
|
StrCmp $0 0 0 done
|
|
|
|
|
StrCpy $R2 $R2 `` 1
|
|
|
|
|
Goto Loop
|
|
|
|
|
|
|
|
|
|
ContLoop2:
|
|
|
|
|
|
|
|
|
|
IntOp $R4 $R4 + 1
|
|
|
|
|
Goto loop
|
2004-02-17 13:38:45 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
done:
|
|
|
|
|
IntOp $R4 $R4 + $0
|
|
|
|
|
StrCpy $R1 $R2 $0
|
|
|
|
|
IntOp $0 $0 + 1
|
|
|
|
|
StrCpy $R2 $R2 `` $0
|
|
|
|
|
|
|
|
|
|
StrCmp $2 1 0 +4
|
|
|
|
|
StrCmp $R1 `` 0 +3
|
|
|
|
|
StrCpy $R1 $1
|
|
|
|
|
Goto End
|
|
|
|
|
|
|
|
|
|
StrCmp $R0 $R8 End
|
|
|
|
|
StrCmp $2 1 0 +2
|
|
|
|
|
StrCpy $1 $R1
|
|
|
|
|
StrCpy $R1 $R9
|
|
|
|
|
Goto PartLoop
|
|
|
|
|
|
|
|
|
|
End:
|
|
|
|
|
|
|
|
|
|
StrCpy $9 $R1
|
|
|
|
|
|
|
|
|
|
Pop $2
|
|
|
|
|
Pop $1
|
|
|
|
|
Pop $0
|
|
|
|
|
Pop $R9
|
|
|
|
|
Pop $R8
|
|
|
|
|
Pop $R7
|
|
|
|
|
Pop $R6
|
|
|
|
|
Pop $R5
|
|
|
|
|
Pop $R4
|
|
|
|
|
Pop $R3
|
|
|
|
|
Pop $R2
|
|
|
|
|
Pop $9
|
|
|
|
|
Pop $R0
|
|
|
|
|
Exch $R1
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
# Function StrTrimNewLines
|
|
|
|
|
########################
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrTrimNewLines
|
|
|
|
|
!insertmacro STRFUNC_FUNC `StrTrimNewLines` `2003-2004 Ximon Eighteen`
|
|
|
|
|
|
|
|
|
|
Exch $R0
|
|
|
|
|
Push $R1
|
|
|
|
|
Push $R2
|
|
|
|
|
StrCpy $R1 0
|
2004-02-07 00:39:42 +00:00
|
|
|
|
|
2004-09-24 13:59:03 +00:00
|
|
|
|
loop:
|
|
|
|
|
IntOp $R1 $R1 - 1
|
|
|
|
|
StrCpy $R2 $R0 1 $R1
|
|
|
|
|
StrCmp $R2 `$\r` loop
|
|
|
|
|
StrCmp $R2 `$\n` loop
|
|
|
|
|
|
|
|
|
|
IntOp $R1 $R1 + 1
|
|
|
|
|
IntCmp $R1 0 no_trim_needed
|
|
|
|
|
StrCpy $R0 $R0 $R1
|
|
|
|
|
|
|
|
|
|
no_trim_needed:
|
|
|
|
|
Pop $R2
|
|
|
|
|
Pop $R1
|
|
|
|
|
Exch $R0
|
|
|
|
|
FunctionEnd
|
|
|
|
|
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
;Function Calls for Install and Uninstall
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrCase_Call ResultVar String Type
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrCase} "${ResultVar}" "${String}" "${Type}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${Type}`
|
|
|
|
|
Call StrCase
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrCase_Call ResultVar String Type
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrCase} "${ResultVar}" "${String}" "${Type}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${Type}`
|
|
|
|
|
Call un.StrCase
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrClb_Call ResultVar String Action
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrClb} "${ResultVar}" "${String}" "${Action}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${Action}`
|
|
|
|
|
Call StrClb
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrClb_Call ResultVar String Action
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrClb} "${ResultVar}" "${String}" "${Action}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${Action}`
|
|
|
|
|
Call un.StrClb
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrIOToNSIS_Call ResultVar String
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrIOToNSIS} "${ResultVar}" "${String}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Call StrIOToNSIS
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrIOToNSIS_Call ResultVar String
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrIOToNSIS} "${ResultVar}" "${String}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Call un.StrIOToNSIS
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrLoc_Call ResultVar String StrToSearchFor OffsetDirection
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrLoc} "${ResultVar}" "${String}" "${StrToSearchFor}" "${OffsetDirection}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${StrToSearchFor}`
|
|
|
|
|
Push `${OffsetDirection}`
|
|
|
|
|
Call StrLoc
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrLoc_Call ResultVar String StrToSearchFor OffsetDirection
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrLoc} "${ResultVar}" "${String}" "${StrToSearchFor}" "${OffsetDirection}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${StrToSearchFor}`
|
|
|
|
|
Push `${OffsetDirection}`
|
|
|
|
|
Call un.StrLoc
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrNSISToIO_Call ResultVar String
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrNSISToIO} "${ResultVar}" "${String}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Call StrNSISToIO
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrNSISToIO_Call ResultVar String
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrNSISToIO} "${ResultVar}" "${String}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Call un.StrNSISToIO
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrRep_Call ResultVar String StringToReplace ReplacementString
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrRep} "${ResultVar}" "${String}" "${StringToReplace}" "${ReplacementString}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${StringToReplace}`
|
|
|
|
|
Push `${ReplacementString}`
|
|
|
|
|
Call StrRep
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrRep_Call ResultVar String StringToReplace ReplacementString
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrRep} "${ResultVar}" "${String}" "${StringToReplace}" "${ReplacementString}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${StringToReplace}`
|
|
|
|
|
Push `${ReplacementString}`
|
|
|
|
|
Call un.StrRep
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrSort_Call ResultVar String CenterStr LeftStr RightStr IncludeLeftRightStr IncludeCenterStr
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrSort} "${ResultVar}" "${String}" "${CenterStr}" "${LeftStr}" "${RightStr}" "${IncludeLeftRightStr}" "${IncludeCenterStr}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${CenterStr}`
|
|
|
|
|
Push `${LeftStr}`
|
|
|
|
|
Push `${RightStr}`
|
|
|
|
|
Push `${IncludeLeftRightStr}`
|
|
|
|
|
Push `${IncludeCenterStr}`
|
|
|
|
|
Call StrSort
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrSort_Call ResultVar String CenterStr LeftStr RightStr IncludeLeftRightStr IncludeCenterStr
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrSort} "${ResultVar}" "${String}" "${CenterStr}" "${LeftStr}" "${RightStr}" "${IncludeLeftRightStr}" "${IncludeCenterStr}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${CenterStr}`
|
|
|
|
|
Push `${LeftStr}`
|
|
|
|
|
Push `${RightStr}`
|
|
|
|
|
Push `${IncludeLeftRightStr}`
|
|
|
|
|
Push `${IncludeCenterStr}`
|
|
|
|
|
Call un.StrSort
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrStr_Call ResultVar String StrToSearchFor
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrStr} "${ResultVar}" "${String}" "${StrToSearchFor}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${StrToSearchFor}`
|
|
|
|
|
Call StrStr
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrStr_Call ResultVar String StrToSearchFor
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrStr} "${ResultVar}" "${String}" "${StrToSearchFor}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${StrToSearchFor}`
|
|
|
|
|
Call un.StrStr
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrStrAdv_Call ResultVar String StrToSearchFor SearchDirection ResultStrDirection DisplayStrToSearch Loops CaseSensitive
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrStrAdv} "${ResultVar}" "${String}" "${StrToSearchFor}" "${SearchDirection}" "${ResultStrDirection}" "${DisplayStrToSearch}" "${Loops}" "${CaseSensitive}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${StrToSearchFor}`
|
|
|
|
|
Push `${SearchDirection}`
|
|
|
|
|
Push `${ResultStrDirection}`
|
|
|
|
|
Push `${DisplayStrToSearch}`
|
|
|
|
|
Push `${Loops}`
|
|
|
|
|
Push `${CaseSensitive}`
|
|
|
|
|
Call StrStrAdv
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrStrAdv_Call ResultVar String StrToSearchFor SearchDirection ResultStrDirection DisplayStrToSearch Loops CaseSensitive
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrStrAdv} "${ResultVar}" "${String}" "${StrToSearchFor}" "${SearchDirection}" "${ResultStrDirection}" "${DisplayStrToSearch}" "${Loops}" "${CaseSensitive}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${StrToSearchFor}`
|
|
|
|
|
Push `${SearchDirection}`
|
|
|
|
|
Push `${ResultStrDirection}`
|
|
|
|
|
Push `${DisplayStrToSearch}`
|
|
|
|
|
Push `${Loops}`
|
|
|
|
|
Push `${CaseSensitive}`
|
|
|
|
|
Call un.StrStrAdv
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrTok_Call ResultVar String Separators ResultPart SkipEmptyParts
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrTok} "${ResultVar}" "${String}" "${Separators}" "${ResultPart}" "${SkipEmptyParts}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${Separators}`
|
|
|
|
|
Push `${ResultPart}`
|
|
|
|
|
Push `${SkipEmptyParts}`
|
|
|
|
|
Call StrTok
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrTok_Call ResultVar String Separators ResultPart SkipEmptyParts
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrTok} "${ResultVar}" "${String}" "${Separators}" "${ResultPart}" "${SkipEmptyParts}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Push `${Separators}`
|
|
|
|
|
Push `${ResultPart}`
|
|
|
|
|
Push `${SkipEmptyParts}`
|
|
|
|
|
Call un.StrTok
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!macro FUNCTION_STRING_StrTrimNewLines_Call ResultVar String
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {StrTrimNewLines} "${ResultVar}" "${String}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Call StrTrimNewLines
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
!macro FUNCTION_STRING_UnStrTrimNewLines_Call ResultVar String
|
|
|
|
|
!verbose push
|
|
|
|
|
!verbose 4
|
|
|
|
|
!echo `$ {UnStrTrimNewLines} "${ResultVar}" "${String}"`
|
|
|
|
|
!verbose pop
|
|
|
|
|
|
|
|
|
|
Push `${String}`
|
|
|
|
|
Call un.StrTrimNewLines
|
|
|
|
|
Pop `${ResultVar}`
|
|
|
|
|
!macroend
|
|
|
|
|
|
|
|
|
|
!ifndef MUI_VERBOSE
|
|
|
|
|
!define MUI_VERBOSE 4
|
|
|
|
|
!endif
|
2004-02-07 00:39:42 +00:00
|
|
|
|
!endif
|