diff --git a/Docs/src/headers.but b/Docs/src/headers.but index 506734f5..3c188a19 100644 --- a/Docs/src/headers.but +++ b/Docs/src/headers.but @@ -30,7 +30,7 @@ Call functions: \c SectionEnd -\S1{} Locate +\S1{locate} Locate \b Find files, directories and empty directories with mask and size options. @@ -80,8 +80,9 @@ Call functions: \c FunctionEnd \\Note:\\ -\\-Error flag if disk or directory isn't exist -\\-Error flag if syntax error +\\- Error flag if disk or directory isn't exist +\\- Error flag if syntax error +\\- See also \W{http://nsis.sourceforge.net/Locate_plugin}{Locate plugin} \\Example (Find one file):\\ @@ -263,7 +264,7 @@ Call functions: \c Push $0 \c FunctionEnd -\\Example (Locate with banner - "\W{http://nsis.sourceforge.net/Banner_with_Cancel_button}{NxS}" plugin required):\\ +\\Example (Locate with banner - \W{http://nsis.sourceforge.net/Nxs_plug-in}{NxS plugin} required):\\ \c Section \c nxs::Show /NOUNLOAD `$(^Name) Setup` /top `Setup searching something$\r$\nPlease wait... If you can..` /h 1 /can 1 /end @@ -289,7 +290,7 @@ Call functions: \c Push $0 \c FunctionEnd -\S1{} GetSize +\S1{getsize} GetSize \b Find the size of a file, files mask or directory. @@ -322,8 +323,9 @@ Call functions: \c $var3 ; Result3: Sum of directories \\Note:\\ -\\-Error flag if disk or directory isn't exist -\\-Error flag if syntax error +\\- Error flag if disk or directory isn't exist +\\- Error flag if syntax error +\\- See also \W{http://nsis.sourceforge.net/Locate_plugin}{Locate plugin} \\Example (1):\\ @@ -368,7 +370,7 @@ Call functions: \c MessageBox MB_OK "Error" \c SectionEnd -\S1{} DriveSpace +\S1{drivespace} DriveSpace \b Get total, occupied or free space of the drive. @@ -391,8 +393,8 @@ Call functions: \c $var ; Result: Size \\Note:\\ -\\-Error flag if disk isn't exist or not ready -\\-Error flag if syntax error +\\- Error flag if disk isn't exist or not ready +\\- Error flag if syntax error \\Example:\\ @@ -402,7 +404,7 @@ Call functions: \c ; $R0="2530" megabytes free on drive C: \c SectionEnd -\S1{} GetDrives +\S1{getdrives} GetDrives \b Find all available drives in the system. @@ -475,7 +477,7 @@ Call functions: \c Push $0 \c FunctionEnd -\S1{} GetTime +\S1{gettime} GetTime \b Get local or system time. @@ -506,8 +508,9 @@ Call functions: \c $var7 ; Result7: seconds \\Note:\\ -\\-Error flag if file isn't exist -\\-Error flag if syntax error +\\- Error flag if file isn't exist +\\- Error flag if syntax error +\\- See also \W{http://nsis.sourceforge.net/Time_plugin}{Time plugin} \\Example (Get local time):\\ @@ -575,7 +578,7 @@ Call functions: \c MessageBox MB_OK 'Date=$0/$1/$2 ($3)$\nTime=$4:$5:$6 $7' \c SectionEnd -\S1{} GetFileAttributes +\S1{getfileattributes} GetFileAttributes \b Get attributes of file or directory. @@ -599,7 +602,7 @@ Call functions: \c ; $var=0 file has no specified attributes \\Note:\\ -\\-Error flag if file isn't exist +\\- Error flag if file doesn't exist \\Example1:\\ @@ -623,7 +626,7 @@ Call functions: \c ; $R0=0 \c SectionEnd -\S1{} GetFileVersion +\S1{getfileversion} GetFileVersion \b Get version information from executable file. @@ -635,8 +638,8 @@ Call functions: \c $var ; Result: Version number \\Note:\\ -\\-Error flag if file isn't exist -\\-Error flag if file isn't contain version information +\\- Error flag if file doesn't exist +\\- Error flag if file doesn't contain version information \\Example:\\ @@ -646,7 +649,7 @@ Call functions: \c ; $R0="1.1.0.12" \c SectionEnd -\S1{} GetExeName +\S1{getexename} GetExeName \b Get installer filename (with valid case for Windows 98/Me). @@ -661,7 +664,7 @@ Call functions: \c ; $R0="C:\ftp\program.exe" \c SectionEnd -\S1{} GetExePath +\S1{getexepath} GetExePath \b Get installer pathname ($EXEDIR with valid case for Windows 98/Me). @@ -676,7 +679,7 @@ Call functions: \c ; $R0="C:\ftp" \c SectionEnd -\S1{} GetParameters +\S1{headers_getparameters} GetParameters \b Get command line parameters. @@ -691,7 +694,7 @@ Call functions: \c ; $R0="[parameters]" \c SectionEnd -\S1{} GetOptions +\S1{getoptions} GetOptions \b Get options from command line parameters. @@ -706,14 +709,18 @@ Call functions: \c $var ; Result: option string \\Note:\\ -\\-First option symbol it is delimiter +\\- Error flag if option not found +\\- First option symbol it is delimiter \\Example1:\\ \c Section -\c ${GetOptions} "/INSTDIR=Temp /SILENT=yes /ADMIN=qwerty" "/ADMIN=" $R0 -\c ;$R0=qwerty +\c ${GetOptions} "/S /T" "/T" $R0 +\c +\c IfErrors 0 +2 +\c MessageBox MB_OK "Not found" IDOK +2 +\c MessageBox MB_OK "Found" \c SectionEnd \\Example2:\\ @@ -737,7 +744,11 @@ Call functions: \c ;$R0="C:/Program Files/Common Files" \c SectionEnd -\S1{} GetRoot +\S1{getoptionss} GetOptionsS + +\b Same as \R{getoptions}{GetOptions}, but case sensitive. + +\S1{getroot} GetRoot \b Get root directory. @@ -759,7 +770,7 @@ Call functions: \c ; $R0="\\SuperPimp\NSIS" \c SectionEnd -\S1{} GetParent +\S1{headers_getparent} GetParent \b Get parent directory. @@ -774,7 +785,7 @@ Call functions: \c ; $R0="C:\Program Files\Winamp" \c SectionEnd -\S1{} GetFileName +\S1{getfilename} GetFileName \b Get last part from directory path. @@ -789,7 +800,7 @@ Call functions: \c ; $R0="uninstwa.exe" \c SectionEnd -\S1{} GetBaseName +\S1{getbasename} GetBaseName \b Get file name without extension. @@ -804,7 +815,7 @@ Call functions: \c ; $R0="program" \c SectionEnd -\S1{} GetFileExt +\S1{getfileext} GetFileExt \b Get extention of file. @@ -819,7 +830,7 @@ Call functions: \c ; $R0="exe" \c SectionEnd -\S1{} BannerTrimPath +\S1{bannertrimpath} BannerTrimPath \b Trim string path for banner. @@ -882,7 +893,7 @@ Call functions: \c Push $0 \c FunctionEnd -\\Example (\W{http://nsis.sourceforge.net/Banner_with_Cancel_button}{NxS} plugin):\\ +\\Example (\W{http://nsis.sourceforge.net/Nxs_plug-in}{NxS plugin}):\\ \c !include "FileFunc.nsh" \c !insertmacro Locate @@ -914,7 +925,7 @@ Call functions: \c Push $0 \c FunctionEnd -\S1{} DirState +\S1{dirstate} DirState \b Check directory full, empty or not exist. @@ -935,7 +946,7 @@ Call functions: \c ; $R0="1" directory is full \c SectionEnd -\S1{} RefreshShellIcons +\S1{refreshshellicons} RefreshShellIcons \b After changing file associations, you can call this function to refresh the shell immediately. @@ -981,7 +992,7 @@ Call functions: \c SectionEnd -\S1{} LineFind +\S1{linefind} LineFind \b Find specified lines in text file, and edit or view these lines in callback function. @@ -1025,10 +1036,10 @@ Call functions: \c FunctionEnd \\Note:\\ -\\-Error flag if input file isn't exists -\\-Error flag if output file path isn't exists -\\-Ranges must be specified on growth (2 4:5 9:-8 -5:-4 -2:-1) -\\-Output file will not be updated if no changes made. +\\- Error flag if input file doesn't exist +\\- Error flag if output file path doesn't exist +\\- Ranges must be specified on growth (2 4:5 9:-8 -5:-4 -2:-1) +\\- Output file will not be updated if no changes made. \\Example1 (delete first two symbols):\\ @@ -1182,7 +1193,7 @@ Call functions: \c Push $0 \c FunctionEnd -\S1{} LineRead +\S1{lineread} LineRead \b Get line in file specified with number. @@ -1199,8 +1210,8 @@ Call functions: \c $var ; Result: Line \\Note:\\ -\\-Error flag if input file isn't exists -\\-Error flag if line number not found +\\- Error flag if input file doesn't exist +\\- Error flag if line number not found \\Example:\\ @@ -1209,7 +1220,7 @@ Call functions: \c ; $R0="Last line$\r$\n" \c SectionEnd -\S1{} FileReadFromEnd +\S1{filereadfromend} FileReadFromEnd \b Read text file from end line by line. @@ -1232,7 +1243,7 @@ Call functions: \c FunctionEnd \\Note:\\ -\\-Error flag if input file isn't exists +\\- Error flag if input file doesn't exist \\Example1:\\ @@ -1275,7 +1286,7 @@ Call functions: \c Push $0 \c FunctionEnd -\S1{} LineSum +\S1{linesum} LineSum \b Get sum of lines in text file. @@ -1287,7 +1298,7 @@ Call functions: \c $var ; Result: Sum of lines \\Note:\\ -\\-Error flag if input file isn't exists +\\- Error flag if input file doesn't exist \\Example:\\ @@ -1296,7 +1307,7 @@ Call functions: \c ; $R0="54" \c SectionEnd -\S1{} FileJoin +\S1{filejoin} FileJoin \b Join two files in one (File1 + File2 = File3). @@ -1310,8 +1321,8 @@ Call functions: \c ; If [File3]="" Then add [File2] to [File1] \\Note:\\ -\\-Error flag if input files aren't exists -\\-Error flag if output file path isn't exists +\\- Error flag if input files don't exist +\\- Error flag if output file path doesn't exist \\Example1 (Join: a.log + b.log = Z.log):\\ @@ -1325,7 +1336,7 @@ Call functions: \c ${FileJoin} "C:\a.log" "C:\logs\b.log" "C:\a.log" \c SectionEnd -\S1{} TextCompare +\S1{textcompare} TextCompare \b Compare two text files. @@ -1360,8 +1371,8 @@ Call functions: \c FunctionEnd \\Note:\\ -\\-Error flag if File1 or File2 isn't exist -\\-Error flag if syntax error +\\- Error flag if File1 or File2 doesn't exist +\\- Error flag if syntax error \\Example (Different or Equal):\\ @@ -1496,7 +1507,11 @@ Call functions: \c Push $0 \c FunctionEnd -\S1{} ConfigRead +\S1{textcompares} TextCompareS + +\b Same as \R{textcompare}{TextCompare}, but case sensitive. + +\S1{configread} ConfigRead \b Read value from entry name in config file. @@ -1511,7 +1526,8 @@ Call functions: \c $var ; Result: Value \\Note:\\ -\\-Error flag if file isn't exist +\\- Error flag if entry not found +\\- Error flag if file doesn't exist \\Example1:\\ @@ -1527,7 +1543,11 @@ Call functions: \c ;$R0=30 \c SectionEnd -\S1{} ConfigWrite +\S1{configreads} ConfigReadS + +\b Same as \R{configread}{ConfigRead}, but case sensitive. + +\S1{configwrite} ConfigWrite \b Write value from entry name in config file. @@ -1549,8 +1569,8 @@ Call functions: \c ; $var=SAME Entry and Value already exist \\Note:\\ -\\-Error flag if file isn't exist -\\-Error flag if file can't be opened +\\- Error flag if file doesn't exist +\\- Error flag if file can't be opened \\Example1:\\ @@ -1573,7 +1593,11 @@ Call functions: \c ;$R0=DELETED \c SectionEnd -\S1{} FileRecode +\S1{configwrites} ConfigWriteS + +\b Same as \R{configwrite}{ConfigWrite}, but case sensitive. + +\S1{filerecode} FileRecode \b Recode text file from DOS to Windows format and vice-versa. @@ -1587,8 +1611,8 @@ Call functions: \c ; CharToOem -from Windows to DOS \\Note:\\ -\\-Error flag if file isn't exist -\\-Error flag if syntax error +\\- Error flag if file doesn't exist +\\- Error flag if syntax error \\Example:\\ @@ -1596,7 +1620,7 @@ Call functions: \c ${FileRecode} "C:\SCANDISK.LOG" "CharToOem" \c SectionEnd -\S1{} TrimNewLines +\S1{headers_trimnewlines} TrimNewLines \b Trim newlines in a string. @@ -1644,7 +1668,7 @@ Call functions: \c SectionEnd -\S1{} WordFind +\S1{wordfind} WordFind \b Multi-features string function. @@ -1705,7 +1729,7 @@ Call functions: \c $var ;output (result) \\Note:\\ -\\-Accepted numbers 1,01,001,... +\\- Accepted numbers 1,01,001,... \\Example (Find word by number):\\ @@ -1867,7 +1891,11 @@ Call functions: \c ; $R0="OneWord" \c SectionEnd -\S1{} WordFind2X +\S1{wordfinds} WordFindS + +\b Same as \R{wordfind}{WordFind}, but case sensitive. + +\S1{wordfind2x} WordFind2X \b Find word between two delimiters. @@ -1975,7 +2003,11 @@ Call functions: \c end: \c SectionEnd -\S1{} WordFind3X +\S1{wordfind2xs} WordFind2XS + +\b Same as \R{wordfind2x}{WordFind2X}, but case sensitive. + +\S1{wordfind3x} WordFind3X \b Find a word that contains a string, between two delimiters. @@ -2079,7 +2111,11 @@ Call functions: \c end: \c SectionEnd -\S1{} WordReplace +\S1{wordfind3xs} WordFind3XS + +\b Same as \R{wordfind3x}{WordFind3X}, but case sensitive. + +\S1{wordreplace} WordReplace \b Replace or delete word from string. @@ -2098,17 +2134,25 @@ Call functions: \c ; -number : word number from end \c ; +number* : word number from start multiple-replace \c ; -number* : word number from end multiple-replace -\c ; + : replace or delete all found -\c ; +* : multiple-replace all found -\c ; {} : if exists replace or delete all delimiters -\c ; from edges (no errorlevel output) -\c ; {}* : if exists multiple-replace all delimiters -\c ; from edges (no errorlevel output) +\c ; + : replace all results +\c ; +* : multiple-replace all results +\c ; { : if exists replace all delimiters +\c ; from left edge +\c ; } : if exists replace all delimiters +\c ; from right edge +\c ; {} : if exists replace all delimiters +\c ; from edges +\c ; {* : if exists multiple-replace all +\c ; delimiters from left edge +\c ; }* : if exists multiple-replace all +\c ; delimiters from right edge +\c ; {}* : if exists multiple-replace all +\c ; delimiters from edges \c ; \c ;[E] \c ; with errorlevel output \c ; IfErrors: -\c ; $var=1 word to replace or delete not found +\c ; $var=1 word to replace not found \c ; $var=2 no such word number \c ; $var=3 syntax error (Use: +1,-1,+1*,-1*,+,+*,{},{}*) \c ;[] @@ -2168,7 +2212,11 @@ Call functions: \c end: \c SectionEnd -\S1{} WordAdd +\S1{wordreplaces} WordReplaceS + +\b Same as \R{wordreplace}{WordReplace}, but case sensitive. + +\S1{wordadd} WordAdd \b Add words to string1 from string2 if not exist or delete words if exist. @@ -2254,7 +2302,11 @@ Call functions: \c end: \c SectionEnd -\S1{} WordInsert +\S1{wordadds} WordAddS + +\b Same as \R{wordadd}{WordAdd}, but case sensitive. + +\S1{wordinsert} WordInsert \b Insert word in string. @@ -2320,7 +2372,11 @@ Call functions: \c end: \c SectionEnd -\S1{} StrFilter +\S1{wordinserts} WordInsertS + +\b Same as \R{wordinsert}{WordInsert}, but case sensitive. + +\S1{strfilter} StrFilter \b Convert string to uppercase or lowercase. @@ -2354,8 +2410,8 @@ Call functions: \c $var ;output (result) \\Note:\\ -\\-Error flag if syntax error -\\-Same symbol to include & to exclude = to exclude +\\- Error flag if syntax error +\\- Same symbol to include & to exclude = to exclude \\Example (UpperCase):\\ @@ -2464,7 +2520,11 @@ Call functions: \c Exch $R0 \c FunctionEnd -\S1{} VersionCompare +\S1{strfilters} StrFilterS + +\b Same as \R{strfilter}{StrFilter}, but case sensitive. + +\S1{versioncompare} VersionCompare \b Compare version numbers. @@ -2486,7 +2546,7 @@ Call functions: \c ; $R0="1" \c SectionEnd -\S1{} VersionConvert +\S1{versionconvert} VersionConvert \b Convert version in the numerical format which can be compared. @@ -2502,8 +2562,8 @@ Call functions: \c $var ; Result: converted version \\Note:\\ -\\-Converted letters are separated with dot -\\-If character is non-digit and not in list then it will be converted to dot +\\- Converted letters are separated with dot +\\- If character is non-digit and not in list then it will be converted to dot \\Example1:\\ diff --git a/Examples/FileFunc.nsi b/Examples/FileFunc.nsi index cab7e113..0f59e744 100644 --- a/Examples/FileFunc.nsi +++ b/Examples/FileFunc.nsi @@ -3,7 +3,7 @@ ; File Functions ;_____________________________________________________________________________ ; -; 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) Name "File Functions" OutFile "FileFunc.exe" @@ -670,6 +670,7 @@ Function LeaveCustom GetOptions: ${GetOptions} "$R1" "$R3" $0 + IfErrors error StrCpy $R0 '$0' goto send diff --git a/Examples/FileFuncTest.nsi b/Examples/FileFuncTest.nsi index ca1da81e..5e96fa14 100644 --- a/Examples/FileFuncTest.nsi +++ b/Examples/FileFuncTest.nsi @@ -3,7 +3,7 @@ ; File Functions Test ;_____________________________________________________________________________ ; -; 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) Name "File Functions Test" OutFile "FileFuncTest.exe" @@ -33,6 +33,7 @@ Var OUT7 !insertmacro GetExePath !insertmacro GetParameters !insertmacro GetOptions +!insertmacro GetOptionsS !insertmacro GetRoot !insertmacro GetParent !insertmacro GetFileName @@ -53,6 +54,7 @@ Var OUT7 !insertmacro un.GetExePath !insertmacro un.GetParameters !insertmacro un.GetOptions +!insertmacro un.GetOptionsS !insertmacro un.GetRoot !insertmacro un.GetParent !insertmacro un.GetFileName @@ -281,9 +283,38 @@ Section GetOptions StrCmp $OUT1 '"C:/Program Files/Common Files"' 0 error ${GetOptions} `/INSTDIR='"C:/Program Files/Common Files"' /SILENT=yes` '/INSTDIR*=' $OUT1 + IfErrors 0 error StrCmp $OUT1 '' 0 error ${GetOptions} `/INSTDIR="C:/Program Files/Common Files" /SILENT=yes` '' $OUT1 + IfErrors 0 error + StrCmp $OUT1 '' 0 error + + ${GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT' '/SILENT' $OUT1 + IfErrors error + StrCmp $OUT1 '' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section GetOptionsS + ${StackVerificationStart} GetOptionsS + + ${GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT=yes' '/INSTDIR=' $OUT1 + IfErrors error + StrCmp $OUT1 'C:\Program Files\Common Files' 0 error + + ${GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT=yes' '/Instdir=' $OUT1 + IfErrors 0 error + StrCmp $OUT1 '' 0 error + + ${GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT' '/SILENT' $OUT1 + IfErrors error StrCmp $OUT1 '' 0 error goto +2 @@ -510,6 +541,7 @@ Section un.Uninstall ${un.GetExePath} $OUT1 ${un.GetParameters} $OUT1 ${un.GetOptions} '/INSTDIR=C:\Program Files\Common Files /SILENT=yes' '/INSTDIR=' $OUT1 + ${un.GetOptionsS} '/INSTDIR=C:\Program Files\Common Files /SILENT=yes' '/INSTDIR=' $OUT1 ${un.GetRoot} 'C:\Program Files\NSIS' $OUT1 ${un.GetParent} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 ${un.GetFileName} 'C:\Program Files\Winamp\uninstwa.exe' $OUT1 diff --git a/Examples/TextFunc.nsi b/Examples/TextFunc.nsi index bf2cbfd7..81526258 100644 --- a/Examples/TextFunc.nsi +++ b/Examples/TextFunc.nsi @@ -3,7 +3,7 @@ ; Text Functions ;_____________________________________________________________________________ ; -; 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) Name "Text Functions" OutFile "TextFunc.exe" @@ -142,12 +142,19 @@ Function LeaveCustom goto +2 FileWrite $0 '!include "WordFunc.nsh"$\r$\n' FileWrite $0 '!insertmacro WordFind$\r$\n' + FileWrite $0 '!insertmacro WordFindS$\r$\n' FileWrite $0 '!insertmacro WordFind2X$\r$\n' + FileWrite $0 '!insertmacro WordFind2XS$\r$\n' FileWrite $0 '!insertmacro WordFind3X$\r$\n' + FileWrite $0 '!insertmacro WordFind3XS$\r$\n' FileWrite $0 '!insertmacro WordReplace$\r$\n' + FileWrite $0 '!insertmacro WordReplaceS$\r$\n' FileWrite $0 '!insertmacro WordAdd$\r$\n' + FileWrite $0 '!insertmacro WordAddS$\r$\n' FileWrite $0 '!insertmacro WordInsert$\r$\n' + FileWrite $0 '!insertmacro WordInsertS$\r$\n' FileWrite $0 '!insertmacro StrFilter$\r$\n' + FileWrite $0 '!insertmacro StrFilterS$\r$\n' TextFuncInclude: IfFileExists '$EXEDIR\TextFunc.nsh' 0 +3 FileWrite $0 '!include "$EXEDIR\TextFunc.nsh"$\r$\n' @@ -257,9 +264,11 @@ Function LeaveCustom FileWrite $0 " FileWrite $$R4 '---Second Line ...---$$\$8$$\$9'$\r$\n$\r$\n" goto endwrite Example5LF: - FileWrite $0 " ; Use any of WordFunctions:$\r$\n" - FileWrite $0 " ; $7WordFind}|$7WordFind2X}|$7WordFind3X}|$\r$\n" - FileWrite $0 " ; $7WordReplace}|$7WordAdd}|$7WordInsert}|$7StrFilter}$\r$\n$\r$\n" + FileWrite $0 " ; You can use:$\r$\n" + FileWrite $0 " ; $7WordFind}|$7WordFindS}|$7WordFind2X}|$7WordFind2XS}|$\r$\n" + FileWrite $0 " ; $7WordFind3X}|$7WordFind3XS}|$7WordReplace}|$7WordReplaceS}|$\r$\n" + FileWrite $0 " ; $7WordAdd}|$7WordAddS}|$7WordInsert}|$7WordInsertS}|$\r$\n" + FileWrite $0 " ; $7StrFilter}|$7StrFilterS}$\r$\n$\r$\n" FileWrite $0 " $7WordReplace} '$$R9' ' ' '_' '+*' $$R9$\r$\n$\r$\n" goto endwrite Example6LF: diff --git a/Examples/TextFuncTest.nsi b/Examples/TextFuncTest.nsi index 35809e68..fa6ae95a 100644 --- a/Examples/TextFuncTest.nsi +++ b/Examples/TextFuncTest.nsi @@ -3,7 +3,7 @@ ; Text Functions Test ;_____________________________________________________________________________ ; -; 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) Name "Text Functions Test" OutFile "TextFuncTest.exe" @@ -26,8 +26,11 @@ Var OUT !insertmacro LineSum !insertmacro FileJoin !insertmacro TextCompare +!insertmacro TextCompareS !insertmacro ConfigRead +!insertmacro ConfigReadS !insertmacro ConfigWrite +!insertmacro ConfigWriteS !insertmacro FileRecode !insertmacro TrimNewLines @@ -37,8 +40,11 @@ Var OUT !insertmacro un.LineSum !insertmacro un.FileJoin !insertmacro un.TextCompare +!insertmacro un.TextCompareS !insertmacro un.ConfigRead +!insertmacro un.ConfigReadS !insertmacro un.ConfigWrite +!insertmacro un.ConfigWriteS !insertmacro un.FileRecode !insertmacro un.TrimNewLines @@ -120,16 +126,16 @@ FunctionEnd Section CreateTestFile - GetTempFileName $TEMPFILE1 $PLUGINSDIR + GetTempFileName $TEMPFILE1 FileOpen $HANDLE $TEMPFILE1 w - FileWrite $HANDLE '1=a$\r$\n' - FileWrite $HANDLE '2=b$\r$\n' - FileWrite $HANDLE '3=c$\r$\n' - FileWrite $HANDLE '4=d$\r$\n' - FileWrite $HANDLE '5=e$\r$\n' + FileWrite $HANDLE '1A=a$\r$\n' + FileWrite $HANDLE '2B=b$\r$\n' + FileWrite $HANDLE '3C=c$\r$\n' + FileWrite $HANDLE '4D=d$\r$\n' + FileWrite $HANDLE '5E=e$\r$\n' FileClose $HANDLE - GetTempFileName $TEMPFILE2 $PLUGINSDIR - GetTempFileName $TEMPFILE3 $PLUGINSDIR + GetTempFileName $TEMPFILE2 + GetTempFileName $TEMPFILE3 SectionEnd @@ -138,14 +144,14 @@ Section LineFind ${LineFind} '$TEMPFILE1' '/NUL' '1:-4 3 -1' 'LineFindCallback1' IfErrors error - StrCmp $OUT '|1:2|-5|1|1=a$\r$\n|1:2|-4|2|2=b$\r$\n|3:3|-3|3|3=c$\r$\n' 0 error + StrCmp $OUT '|1:2|-5|1|1A=a$\r$\n|1:2|-4|2|2B=b$\r$\n|3:3|-3|3|3C=c$\r$\n' 0 error StrCpy $OUT '' SetDetailsPrint none ${LineFind} '$TEMPFILE1' '$TEMPFILE2' '1:-1' 'LineFindCallback2' SetDetailsPrint both IfErrors error - StrCmp $OUT '|1:-1||1|1=a$\r$\n|1:-1||2|4=d$\r$\n|1:-1||3|3=c$\r$\n|1:-1||4|2=x$\r$\n|1:-1||5|5=e$\r$\n' 0 error + StrCmp $OUT '|1:-1||1|1A=a$\r$\n|1:-1||2|4D=d$\r$\n|1:-1||3|3C=c$\r$\n|1:-1||4|2B=B$\r$\n|1:-1||5|5E=e$\r$\n' 0 error goto +2 error: @@ -164,9 +170,9 @@ FunctionEnd Function LineFindCallback2 StrCmp $R8 2 0 +2 - StrCpy $R9 '4=d$\r$\n' + StrCpy $R9 '4D=d$\r$\n' StrCmp $R8 4 0 +2 - StrCpy $R9 '2=x$\r$\n' + StrCpy $R9 '2B=B$\r$\n' StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9' @@ -179,7 +185,7 @@ Section LineRead ${LineRead} '$TEMPFILE1' '-1' $OUT IfErrors error - StrCmp $OUT '5=e$\r$\n' 0 error + StrCmp $OUT '5E=e$\r$\n' 0 error goto +2 error: @@ -195,7 +201,7 @@ Section FileReadFromEnd StrCpy $OUT '' ${FileReadFromEnd} '$TEMPFILE1' 'FileReadFromEndCallback' IfErrors error - StrCmp $OUT '|-1|5|5=e$\r$\n|-2|4|4=d$\r$\n|-3|3|3=c$\r$\n|-4|2|2=b$\r$\n' 0 error + StrCmp $OUT '|-1|5|5E=e$\r$\n|-2|4|4D=d$\r$\n|-3|3|3C=c$\r$\n|-4|2|2B=b$\r$\n' 0 error goto +2 error: @@ -244,19 +250,37 @@ Section TextCompare StrCpy $OUT '' ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'TextCompareCallback' - StrCmp $OUT '|2|4=d$\r$\n|2|2=b$\r$\n|4|2=x$\r$\n|4|4=d$\r$\n' 0 error + StrCmp $OUT '|2|4D=d$\r$\n|2|2B=b$\r$\n|4|2B=B$\r$\n|4|4D=d$\r$\n' 0 error StrCpy $OUT '' ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastEqual' 'TextCompareCallback' - StrCmp $OUT '|1|1=a$\r$\n|1|1=a$\r$\n|3|3=c$\r$\n|3|3=c$\r$\n|5|5=e$\r$\n|5|5=e$\r$\n' 0 error + StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error StrCpy $OUT '' ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback' - StrCmp $OUT '|||2|2=b$\r$\n' 0 error + StrCmp $OUT '' 0 error StrCpy $OUT '' ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback' - StrCmp $OUT '|1|1=a$\r$\n|1|1=a$\r$\n|3|3=c$\r$\n|3|3=c$\r$\n|2|4=d$\r$\n|4|4=d$\r$\n|5|5=e$\r$\n|5|5=e$\r$\n' 0 error + StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|4|2B=B$\r$\n|2|2B=b$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|2|4D=d$\r$\n|4|4D=d$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + +Section TextCompareS + ${StackVerificationStart} TextCompareS + + StrCpy $OUT '' + ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback' + StrCmp $OUT '|||2|2B=b$\r$\n' 0 error + + StrCpy $OUT '' + ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback' + StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|2|4D=d$\r$\n|4|4D=d$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error goto +2 error: @@ -275,10 +299,31 @@ FunctionEnd Section ConfigRead ${StackVerificationStart} ConfigRead - ${ConfigRead} '$TEMPFILE1' '3=' $OUT + ${ConfigRead} '$TEMPFILE1' '3c=' $OUT StrCmp $OUT 'c' 0 error - ${ConfigRead} '$TEMPFILE1' '6=' $OUT + ${ConfigRead} '$TEMPFILE1' '6F=' $OUT + StrCmp $OUT '' 0 error + + ${ConfigRead} '$TEMPFILE1' 'FF=' $OUT + IfErrors 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section ConfigReadS + ${StackVerificationStart} ConfigReadS + + ${ConfigReadS} '$TEMPFILE1' '3C=' $OUT + StrCmp $OUT 'c' 0 error + + ${ConfigReadS} '$TEMPFILE1' '3c=' $OUT + IfErrors 0 error StrCmp $OUT '' 0 error goto +2 @@ -292,16 +337,30 @@ SectionEnd Section ConfigWrite ${StackVerificationStart} ConfigWrite - ${ConfigWrite} '$TEMPFILE1' '5=' 'e**' $OUT + ${ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT StrCmp $OUT 'CHANGED' 0 error - ${ConfigWrite} '$TEMPFILE1' '2=' '' $OUT + ${ConfigWrite} '$TEMPFILE1' '2B=' '' $OUT StrCmp $OUT 'DELETED' 0 error - ${ConfigWrite} '$TEMPFILE1' '3=' 'c' $OUT + ${ConfigWrite} '$TEMPFILE1' '3c=' 'c' $OUT StrCmp $OUT 'SAME' 0 error - ${ConfigWrite} '$TEMPFILE1' '6=' '*' $OUT + ${ConfigWrite} '$TEMPFILE1' '6F=' '*' $OUT + StrCmp $OUT 'ADDED' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + +Section ConfigWriteS + ${StackVerificationStart} ConfigWriteS + + ${ConfigWriteS} '$TEMPFILE1' '5e=' 'e**' $OUT StrCmp $OUT 'ADDED' 0 error goto +2 @@ -342,15 +401,16 @@ SectionEnd Section WriteUninstaller + SetDetailsPrint none + Delete $TEMPFILE1 + Delete $TEMPFILE2 + Delete $TEMPFILE3 + SetDetailsPrint both goto +2 WriteUninstaller '$EXEDIR\un.TextFuncTest.exe' SectionEnd -Function .onInit - InitPluginsDir -FunctionEnd - ;############### UNINSTALL ############### @@ -361,8 +421,11 @@ Section un.Uninstall ${un.LineSum} '$TEMPFILE1' $OUT ${un.FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3' ${un.TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback' - ${un.ConfigRead} '$TEMPFILE1' '3=' $OUT - ${un.ConfigWrite} '$TEMPFILE1' '5=' 'e**' $OUT + ${un.TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback' + ${un.ConfigRead} '$TEMPFILE1' '3c=' $OUT + ${un.ConfigReadS} '$TEMPFILE1' '3c=' $OUT + ${un.ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT + ${un.ConfigWriteS} '$TEMPFILE1' '5E=' 'e**' $OUT ${un.FileRecode} '$TEMPFILE1' 'CharToOem' ${un.TrimNewLines} 'Text Line$\r$\n' $OUT SectionEnd diff --git a/Examples/WordFuncTest.nsi b/Examples/WordFuncTest.nsi index f8c13bef..4dbe1e67 100644 --- a/Examples/WordFuncTest.nsi +++ b/Examples/WordFuncTest.nsi @@ -3,7 +3,7 @@ ; Word Functions Test ;_____________________________________________________________________________ ; -; 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) +; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) Name "Word Functions Test" OutFile "WordFuncTest.exe" @@ -17,22 +17,36 @@ Var OUT !include "WordFunc.nsh" !insertmacro WordFind +!insertmacro WordFindS !insertmacro WordFind2X +!insertmacro WordFind2XS !insertmacro WordFind3X +!insertmacro WordFind3XS !insertmacro WordReplace +!insertmacro WordReplaceS !insertmacro WordAdd +!insertmacro WordAddS !insertmacro WordInsert +!insertmacro WordInsertS !insertmacro StrFilter +!insertmacro StrFilterS !insertmacro VersionCompare !insertmacro VersionConvert !insertmacro un.WordFind +!insertmacro un.WordFindS !insertmacro un.WordFind2X +!insertmacro un.WordFind2XS !insertmacro un.WordFind3X +!insertmacro un.WordFind3XS !insertmacro un.WordReplace +!insertmacro un.WordReplaceS !insertmacro un.WordAdd +!insertmacro un.WordAddS !insertmacro un.WordInsert +!insertmacro un.WordInsertS !insertmacro un.StrFilter +!insertmacro un.StrFilterS !insertmacro un.VersionCompare !insertmacro un.VersionConvert @@ -175,6 +189,23 @@ Section WordFind SectionEnd +Section WordFindS + ${StackVerificationStart} WordFindS + + ${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|PROGRAM FILES' $OUT + StrCmp $OUT 'C:\io.sys|||Program Files|||WINDOWS' 0 error + + ${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|Program Files' $OUT + StrCmp $OUT '2' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + Section WordFind2X ${StackVerificationStart} WordFind2X @@ -219,6 +250,23 @@ Section WordFind2X SectionEnd +Section WordFind2XS + ${StackVerificationStart} WordFind2XS + + ${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/LOGO' $OUT + StrCmp $OUT 'C:\WINDOWS C:\io.sys C:\logo.sys' 0 error + + ${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/logo' $OUT + StrCmp $OUT '2' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + Section WordFind3X ${StackVerificationStart} WordFind3X @@ -260,6 +308,23 @@ Section WordFind3X SectionEnd +Section WordFind3XS + ${StackVerificationStart} WordFind3XS + + ${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.baa' $OUT + StrCmp $OUT '[1.AAB];[2.BAA];[3.BBB];' 0 error + + ${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.BAA' $OUT + StrCmp $OUT '2' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + Section WordReplace ${StackVerificationStart} WordReplace @@ -301,6 +366,23 @@ Section WordReplace SectionEnd +Section WordReplaceS + ${StackVerificationStart} WordReplaceS + + ${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error + + ${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'sys' 'bmp' '+2' $OUT + StrCmp $OUT 'C:\io.sys C:\logo.bmp C:\WINDOWS' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + Section WordAdd ${StackVerificationStart} WordAdd @@ -339,6 +421,23 @@ Section WordAdd SectionEnd +Section WordAddS + ${StackVerificationStart} WordAddS + + ${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\windows C:\config.sys' $OUT + StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\windows C:\config.sys' 0 error + + ${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT + StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + Section WordInsert ${StackVerificationStart} WordInsert @@ -371,6 +470,23 @@ Section WordInsert SectionEnd +Section WordInsertS + ${StackVerificationStart} WordInsertS + + ${WordInsertS} 'C:\io.sys x C:\logo.sys' ' X ' 'C:\NTLDR' '+2' $OUT + StrCmp $OUT 'C:\io.sys x C:\logo.sys X C:\NTLDR' 0 error + + ${WordInsertS} 'C:\io.sys x C:\logo.sys' ' x ' 'C:\NTLDR' '+2' $OUT + StrCmp $OUT 'C:\io.sys x C:\NTLDR x C:\logo.sys' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + Section StrFilter ${StackVerificationStart} StrFilter @@ -409,6 +525,21 @@ Section StrFilter SectionEnd +Section StrFilterS + ${StackVerificationStart} StrFilterS + + ${StrFilterS} '123abc 456DEF 7890|%#' '13' 'af' '4590' $OUT + IfErrors error + StrCmp $OUT '123a 6 78|%#' 0 error + + goto +2 + error: + SetErrors + + ${StackVerificationEnd} +SectionEnd + + Section VersionCompare ${StackVerificationStart} VersionCompare @@ -478,12 +609,19 @@ SectionEnd Section un.Uninstall ${un.WordFind} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT + ${un.WordFindS} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT ${un.WordFind2X} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT + ${un.WordFind2XS} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT ${un.WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT + ${un.WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT ${un.WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT + ${un.WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT ${un.WordAdd} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT + ${un.WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT ${un.WordInsert} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT + ${un.WordInsertS} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT ${un.StrFilter} '123abc 456DEF 7890|%#' '+' '' '' $OUT + ${un.StrFilterS} '123abc 456DEF 7890|%#' '+' '' '' $OUT ${un.VersionCompare} '1.1.1.9' '1.1.1.01' $OUT ${un.VersionConvert} '9.0a' '' $OUT -SectionEnd \ No newline at end of file +SectionEnd diff --git a/Include/FileFunc.nsh b/Include/FileFunc.nsh index 62e39e69..8da16243 100644 --- a/Include/FileFunc.nsh +++ b/Include/FileFunc.nsh @@ -1,10 +1,10 @@ /* _____________________________________________________________________________ - File Functions Header v2.9 + File Functions Header v3.0 _____________________________________________________________________________ - 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) See documentation for more information about the following functions. @@ -18,14 +18,14 @@ _____________________________________________________________________________ FileFunction=[Locate|GetSize|DriveSpace|GetDrives|GetTime|GetFileAttributes| GetFileVersion|GetExeName|GetExePath|GetParameters|GetOptions| - GetRoot|GetParent|GetFileName|GetBaseName|GetFileExt| + GetOptionsS|GetRoot|GetParent|GetFileName|GetBaseName|GetFileExt| BannerTrimPath|DirState|RefreshShellIcons] un.FileFunction=[un.Locate|un.GetSize|un.DriveSpace|un.GetDrives|un.GetTime| un.GetFileAttributes|un.GetFileVersion|un.GetExeName| - un.GetExePath|un.GetParameters|un.GetOptions|un.GetRoot| - un.GetParent|un.GetFileName|un.GetBaseName|un.GetFileExt| - un.BannerTrimPath|un.DirState|un.RefreshShellIcons] + un.GetExePath|un.GetParameters|un.GetOptions|un.GetOptionsS| + un.GetRoot|un.GetParent|un.GetFileName|un.GetBaseName| + un.GetFileExt|un.BannerTrimPath|un.DirState|un.RefreshShellIcons] _____________________________________________________________________________ @@ -61,7 +61,7 @@ RefreshShellIcons ;_____________________________________________________________________________ ; -; Macros +; Macros ;_____________________________________________________________________________ ; ; Change log window verbosity (default: 3=no script) @@ -70,7 +70,7 @@ RefreshShellIcons ; !include "FileFunc.nsh" ; !insertmacro Locate ; ${FILEFUNC_VERBOSE} 4 # all verbosity -; !insertmacro GetTime +; !insertmacro VersionCompare ; ${FILEFUNC_VERBOSE} 3 # no script !verbose push @@ -81,6 +81,7 @@ RefreshShellIcons !verbose ${_FILEFUNC_VERBOSE} !define FILEFUNC_VERBOSE `!insertmacro FILEFUNC_VERBOSE` !define _FILEFUNC_UN +!define _FILEFUNC_S !verbose pop !macro FILEFUNC_VERBOSE _VERBOSE @@ -88,12 +89,12 @@ RefreshShellIcons !verbose 3 !undef _FILEFUNC_VERBOSE !define _FILEFUNC_VERBOSE ${_VERBOSE} - !verbose 4 - !echo `"verbosity=${_VERBOSE}"` !verbose pop !macroend +# Install. Case insensitive. # + !macro LocateCall _PATH _OPTIONS _FUNC !verbose push !verbose ${_FILEFUNC_VERBOSE} @@ -563,8 +564,6 @@ RefreshShellIcons Pop $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -796,8 +795,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -913,8 +910,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1041,8 +1036,6 @@ RefreshShellIcons Pop $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1178,8 +1171,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1327,8 +1318,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1372,8 +1361,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1397,8 +1384,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1422,8 +1407,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1467,19 +1450,17 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend !macro GetOptions - !ifndef ${_FILEFUNC_UN}GetOptions + !ifndef ${_FILEFUNC_UN}GetOptions${_FILEFUNC_S} !verbose push !verbose ${_FILEFUNC_VERBOSE} - !define ${_FILEFUNC_UN}GetOptions `!insertmacro ${_FILEFUNC_UN}GetOptionsCall` + !define ${_FILEFUNC_UN}GetOptions${_FILEFUNC_S} `!insertmacro ${_FILEFUNC_UN}GetOptions${_FILEFUNC_S}Call` - Function ${_FILEFUNC_UN}GetOptions + Function ${_FILEFUNC_UN}GetOptions${_FILEFUNC_S} Exch $1 Exch Exch $0 @@ -1490,6 +1471,7 @@ RefreshShellIcons Push $5 Push $6 Push $7 + ClearErrors StrCpy $2 $1 '' 1 StrCpy $1 $1 1 @@ -1503,44 +1485,44 @@ RefreshShellIcons quote: IntOp $4 $4 + 1 StrCpy $5 $0 1 $4 - StrCmp $5$7 '0' notfound - StrCmp $5 '' trimright - StrCmp $5 '"' 0 +7 - StrCmp $6 '' 0 +3 + StrCmp${_FILEFUNC_S} $5$7 '0' notfound + StrCmp${_FILEFUNC_S} $5 '' trimright + StrCmp${_FILEFUNC_S} $5 '"' 0 +7 + StrCmp${_FILEFUNC_S} $6 '' 0 +3 StrCpy $6 '"' goto quote - StrCmp $6 '"' 0 +3 + StrCmp${_FILEFUNC_S} $6 '"' 0 +3 StrCpy $6 '' goto quote - StrCmp $5 `'` 0 +7 - StrCmp $6 `` 0 +3 + StrCmp${_FILEFUNC_S} $5 `'` 0 +7 + StrCmp${_FILEFUNC_S} $6 `` 0 +3 StrCpy $6 `'` goto quote - StrCmp $6 `'` 0 +3 + StrCmp${_FILEFUNC_S} $6 `'` 0 +3 StrCpy $6 `` goto quote - StrCmp $5 '`' 0 +7 - StrCmp $6 '' 0 +3 + StrCmp${_FILEFUNC_S} $5 '`' 0 +7 + StrCmp${_FILEFUNC_S} $6 '' 0 +3 StrCpy $6 '`' goto quote - StrCmp $6 '`' 0 +3 + StrCmp${_FILEFUNC_S} $6 '`' 0 +3 StrCpy $6 '' goto quote - StrCmp $6 '"' quote - StrCmp $6 `'` quote - StrCmp $6 '`' quote - StrCmp $5 $1 0 quote - StrCmp $7 0 trimleft trimright + StrCmp${_FILEFUNC_S} $6 '"' quote + StrCmp${_FILEFUNC_S} $6 `'` quote + StrCmp${_FILEFUNC_S} $6 '`' quote + StrCmp${_FILEFUNC_S} $5 $1 0 quote + StrCmp${_FILEFUNC_S} $7 0 trimleft trimright trimleft: IntOp $4 $4 + 1 StrCpy $5 $0 $3 $4 - StrCmp $5 '' notfound - StrCmp $5 $2 0 quote + StrCmp${_FILEFUNC_S} $5 '' notfound + StrCmp${_FILEFUNC_S} $5 $2 0 quote IntOp $4 $4 + $3 StrCpy $0 $0 '' $4 StrCpy $4 $0 1 - StrCmp $4 ' ' 0 +3 + StrCmp${_FILEFUNC_S} $4 ' ' 0 +3 StrCpy $0 $0 '' 1 goto -3 StrCpy $7 1 @@ -1549,19 +1531,20 @@ RefreshShellIcons trimright: StrCpy $0 $0 $4 StrCpy $4 $0 1 -1 - StrCmp $4 ' ' 0 +3 + StrCmp${_FILEFUNC_S} $4 ' ' 0 +3 StrCpy $0 $0 -1 goto -3 StrCpy $3 $0 1 StrCpy $4 $0 1 -1 - StrCmp $3 $4 0 end - StrCmp $3 '"' +3 - StrCmp $3 `'` +2 - StrCmp $3 '`' 0 end + StrCmp${_FILEFUNC_S} $3 $4 0 end + StrCmp${_FILEFUNC_S} $3 '"' +3 + StrCmp${_FILEFUNC_S} $3 `'` +2 + StrCmp${_FILEFUNC_S} $3 '`' 0 end StrCpy $0 $0 -1 1 goto end notfound: + SetErrors StrCpy $0 '' end: @@ -1575,8 +1558,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1628,8 +1609,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1662,8 +1641,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1698,8 +1675,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1747,8 +1722,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1787,8 +1760,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1882,8 +1853,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1918,8 +1887,6 @@ RefreshShellIcons Exch $0 FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -1934,12 +1901,13 @@ RefreshShellIcons System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v (0x08000000, 0, 0, 0)' FunctionEnd - !undef _FILEFUNC_UN - !define _FILEFUNC_UN !verbose pop !endif !macroend + +# Uninstall. Case insensitive. # + !macro un.LocateCall _PATH _OPTIONS _FUNC !verbose push !verbose ${_FILEFUNC_VERBOSE} @@ -2136,6 +2104,8 @@ RefreshShellIcons !insertmacro Locate + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2149,6 +2119,8 @@ RefreshShellIcons !insertmacro GetSize + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2162,6 +2134,8 @@ RefreshShellIcons !insertmacro DriveSpace + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2175,6 +2149,8 @@ RefreshShellIcons !insertmacro GetDrives + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2188,6 +2164,8 @@ RefreshShellIcons !insertmacro GetTime + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2201,6 +2179,8 @@ RefreshShellIcons !insertmacro GetFileAttributes + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2214,6 +2194,8 @@ RefreshShellIcons !insertmacro GetFileVersion + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2227,6 +2209,8 @@ RefreshShellIcons !insertmacro GetExeName + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2240,6 +2224,8 @@ RefreshShellIcons !insertmacro GetExePath + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2253,6 +2239,8 @@ RefreshShellIcons !insertmacro GetParameters + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2266,6 +2254,8 @@ RefreshShellIcons !insertmacro GetOptions + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2279,6 +2269,8 @@ RefreshShellIcons !insertmacro GetRoot + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2292,6 +2284,8 @@ RefreshShellIcons !insertmacro GetParent + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2305,6 +2299,8 @@ RefreshShellIcons !insertmacro GetFileName + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2318,6 +2314,8 @@ RefreshShellIcons !insertmacro GetBaseName + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2331,6 +2329,8 @@ RefreshShellIcons !insertmacro GetFileExt + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2344,6 +2344,8 @@ RefreshShellIcons !insertmacro BannerTrimPath + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2357,6 +2359,8 @@ RefreshShellIcons !insertmacro DirState + !undef _FILEFUNC_UN + !define _FILEFUNC_UN !verbose pop !endif !macroend @@ -2370,6 +2374,68 @@ RefreshShellIcons !insertmacro RefreshShellIcons + !undef _FILEFUNC_UN + !define _FILEFUNC_UN + !verbose pop + !endif +!macroend + + +# Install. Case sensitive. # + +!macro GetOptionsSCall _PARAMETERS _OPTION _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PARAMETERS}` + Push `${_OPTION}` + Call GetOptionsS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro GetOptionsS + !ifndef GetOptionsS + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + !undef _FILEFUNC_S + !define _FILEFUNC_S `S` + + !insertmacro GetOptions + + !undef _FILEFUNC_S + !define _FILEFUNC_S + !verbose pop + !endif +!macroend + + +# Uninstall. Case sensitive. # + +!macro un.GetOptionsSCall _PARAMETERS _OPTION _RESULT + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + Push `${_PARAMETERS}` + Push `${_OPTION}` + Call un.GetOptionsS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.GetOptionsS + !ifndef un.GetOptionsS + !verbose push + !verbose ${_FILEFUNC_VERBOSE} + !undef _FILEFUNC_UN + !define _FILEFUNC_UN `un.` + !undef _FILEFUNC_S + !define _FILEFUNC_S `S` + + !insertmacro GetOptions + + !undef _FILEFUNC_UN + !define _FILEFUNC_UN + !undef _FILEFUNC_S + !define _FILEFUNC_S !verbose pop !endif !macroend diff --git a/Include/TextFunc.nsh b/Include/TextFunc.nsh index e4155adc..64f78d4d 100644 --- a/Include/TextFunc.nsh +++ b/Include/TextFunc.nsh @@ -1,10 +1,10 @@ /* _____________________________________________________________________________ - Text Functions Header v2.1 + Text Functions Header v2.2 _____________________________________________________________________________ - 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) See documentation for more information about the following functions. @@ -17,12 +17,13 @@ _____________________________________________________________________________ TextFunction=[LineFind|LineRead|FileReadFromEnd|LineSum|FileJoin| - TextCompare|ConfigRead|ConfigWrite|FileRecode|TrimNewLines] + TextCompare|TextCompareS|ConfigRead|ConfigReadS| + ConfigWrite|ConfigWriteS|FileRecode|TrimNewLines] un.TextFunction=[un.LineFind|un.LineRead|un.FileReadFromEnd|un.LineSum| - un.FileJoin|un.TextCompare|un.ConfigRead|un.ConfigWrite| - un.FileRecode|un.TrimNewLines] - + un.FileJoin|un.TextCompare|un.TextCompareS|un.ConfigRead| + un.ConfigReadS|un.ConfigWrite|un.ConfigWriteS|un.FileRecode| + un.TrimNewLines] _____________________________________________________________________________ @@ -66,6 +67,7 @@ TrimNewLines !verbose ${_TEXTFUNC_VERBOSE} !define TEXTFUNC_VERBOSE `!insertmacro TEXTFUNC_VERBOSE` !define _TEXTFUNC_UN +!define _TEXTFUNC_S !verbose pop !macro TEXTFUNC_VERBOSE _VERBOSE @@ -73,12 +75,12 @@ TrimNewLines !verbose 3 !undef _TEXTFUNC_VERBOSE !define _TEXTFUNC_VERBOSE ${_VERBOSE} - !verbose 4 - !echo `"verbosity=${_VERBOSE}"` !verbose pop !macroend +# Install. Case insensitive. # + !macro LineFindCall _INPUT _OUTPUT _RANGE _FUNC !verbose push !verbose ${_TEXTFUNC_VERBOSE} @@ -432,8 +434,6 @@ TrimNewLines Pop $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -493,8 +493,6 @@ TrimNewLines Exch $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -560,8 +558,6 @@ TrimNewLines Pop $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -600,8 +596,6 @@ TrimNewLines Exch $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -680,19 +674,17 @@ TrimNewLines Pop $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend !macro TextCompare - !ifndef ${_TEXTFUNC_UN}TextCompare + !ifndef ${_TEXTFUNC_UN}TextCompare${_TEXTFUNC_S} !verbose push !verbose ${_TEXTFUNC_VERBOSE} - !define ${_TEXTFUNC_UN}TextCompare `!insertmacro ${_TEXTFUNC_UN}TextCompareCall` + !define ${_TEXTFUNC_UN}TextCompare${_TEXTFUNC_S} `!insertmacro ${_TEXTFUNC_UN}TextCompare${_TEXTFUNC_S}Call` - Function ${_TEXTFUNC_UN}TextCompare + Function ${_TEXTFUNC_UN}TextCompare${_TEXTFUNC_S} Exch $3 Exch Exch $2 @@ -729,31 +721,31 @@ TrimNewLines StrCpy $8 0 nextline: - StrCmp $4 '' fast + StrCmp${_TEXTFUNC_S} $4 '' fast IntOp $8 $8 + 1 FileRead $4 $9 IfErrors 0 +4 FileClose $4 StrCpy $4 '' - StrCmp $5 '' end + StrCmp${_TEXTFUNC_S} $5 '' end StrCmp $2 'FastDiff' fast StrCmp $2 'FastEqual' fast slow fast: - StrCmp $5 '' call + StrCmp${_TEXTFUNC_S} $5 '' call IntOp $6 $6 + 1 FileRead $5 $7 IfErrors 0 +5 FileClose $5 StrCpy $5 '' - StrCmp $4 '' end + StrCmp${_TEXTFUNC_S} $4 '' end StrCmp $2 'FastDiff' call close StrCmp $2 'FastDiff' 0 +2 - StrCmp $7 $9 nextline call - StrCmp $7 $9 call nextline + StrCmp${_TEXTFUNC_S} $7 $9 nextline call + StrCmp${_TEXTFUNC_S} $7 $9 call nextline slow: - StrCmp $4 '' close + StrCmp${_TEXTFUNC_S} $4 '' close StrCpy $6 '' DetailPrint '$8. $9' FileSeek $5 0 @@ -763,9 +755,9 @@ TrimNewLines IfErrors 0 +2 StrCmp $2 'SlowDiff' call nextline StrCmp $2 'SlowDiff' 0 +2 - StrCmp $7 $9 nextline slownext + StrCmp${_TEXTFUNC_S} $7 $9 nextline slownext IntOp $6 $6 + 1 - StrCmp $7 $9 0 slownext + StrCmp${_TEXTFUNC_S} $7 $9 0 slownext call: Push $2 @@ -810,19 +802,17 @@ TrimNewLines Pop $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend !macro ConfigRead - !ifndef ${_TEXTFUNC_UN}ConfigRead + !ifndef ${_TEXTFUNC_UN}ConfigRead${_TEXTFUNC_S} !verbose push !verbose ${_TEXTFUNC_VERBOSE} - !define ${_TEXTFUNC_UN}ConfigRead `!insertmacro ${_TEXTFUNC_UN}ConfigReadCall` + !define ${_TEXTFUNC_UN}ConfigRead${_TEXTFUNC_S} `!insertmacro ${_TEXTFUNC_UN}ConfigRead${_TEXTFUNC_S}Call` - Function ${_TEXTFUNC_UN}ConfigRead + Function ${_TEXTFUNC_UN}ConfigRead${_TEXTFUNC_S} Exch $1 Exch Exch $0 @@ -835,24 +825,22 @@ TrimNewLines FileOpen $2 $0 r IfErrors error StrLen $0 $1 - StrCmp $0 0 error + StrCmp${_TEXTFUNC_S} $0 0 error readnext: FileRead $2 $3 - IfErrors empty + IfErrors error StrCpy $4 $3 $0 - StrCmp $4 $1 0 readnext + StrCmp${_TEXTFUNC_S} $4 $1 0 readnext StrCpy $0 $3 '' $0 StrCpy $4 $0 1 -1 - StrCmp $4 '$\r' +2 - StrCmp $4 '$\n' 0 close + StrCmp${_TEXTFUNC_S} $4 '$\r' +2 + StrCmp${_TEXTFUNC_S} $4 '$\n' 0 close StrCpy $0 $0 -1 goto -4 error: SetErrors - - empty: StrCpy $0 '' close: @@ -865,19 +853,17 @@ TrimNewLines Exch $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend !macro ConfigWrite - !ifndef ${_TEXTFUNC_UN}ConfigWrite + !ifndef ${_TEXTFUNC_UN}ConfigWrite${_TEXTFUNC_S} !verbose push !verbose ${_TEXTFUNC_VERBOSE} - !define ${_TEXTFUNC_UN}ConfigWrite `!insertmacro ${_TEXTFUNC_UN}ConfigWriteCall` + !define ${_TEXTFUNC_UN}ConfigWrite${_TEXTFUNC_S} `!insertmacro ${_TEXTFUNC_UN}ConfigWrite${_TEXTFUNC_S}Call` - Function ${_TEXTFUNC_UN}ConfigWrite + Function ${_TEXTFUNC_UN}ConfigWrite${_TEXTFUNC_S} Exch $2 Exch Exch $1 @@ -896,7 +882,7 @@ TrimNewLines IfErrors error StrLen $0 $1 - StrCmp $0 0 0 readnext + StrCmp${_TEXTFUNC_S} $0 0 0 readnext StrCpy $0 '' goto close @@ -904,20 +890,20 @@ TrimNewLines FileRead $3 $4 IfErrors add StrCpy $5 $4 $0 - StrCmp $5 $1 0 readnext + StrCmp${_TEXTFUNC_S} $5 $1 0 readnext StrCpy $5 0 IntOp $5 $5 - 1 StrCpy $6 $4 1 $5 - StrCmp $6 '$\r' -2 - StrCmp $6 '$\n' -3 + StrCmp${_TEXTFUNC_S} $6 '$\r' -2 + StrCmp${_TEXTFUNC_S} $6 '$\n' -3 StrCpy $6 $4 - StrCmp $5 -1 +3 + StrCmp${_TEXTFUNC_S} $5 -1 +3 IntOp $5 $5 + 1 StrCpy $6 $4 $5 - StrCmp $2 '' change - StrCmp $6 '$1$2' 0 change + StrCmp${_TEXTFUNC_S} $2 '' change + StrCmp${_TEXTFUNC_S} $6 '$1$2' 0 change StrCpy $0 SAME goto close @@ -933,26 +919,26 @@ TrimNewLines FileSeek $3 $5 SET System::Call 'kernel32::ReadFile(i r3, i r0, i $6, t.,)' FileSeek $3 $4 SET - StrCmp $2 '' +2 + 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 $2 '' +3 + StrCmp${_TEXTFUNC_S} $2 '' +3 StrCpy $0 CHANGED goto close StrCpy $0 DELETED goto close add: - StrCmp $2 '' 0 +3 + StrCmp${_TEXTFUNC_S} $2 '' 0 +3 StrCpy $0 SAME goto close FileSeek $3 -1 END FileRead $3 $4 IfErrors +4 - StrCmp $4 '$\r' +3 - StrCmp $4 '$\n' +2 + 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 @@ -975,8 +961,6 @@ TrimNewLines Exch $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1026,8 +1010,6 @@ TrimNewLines Pop $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1057,12 +1039,13 @@ TrimNewLines Exch $0 FunctionEnd - !undef _TEXTFUNC_UN - !define _TEXTFUNC_UN !verbose pop !endif !macroend + +# Uninstall. Case insensitive. # + !macro un.LineFindCall _INPUT _OUTPUT _RANGE _FUNC !verbose push !verbose ${_TEXTFUNC_VERBOSE} @@ -1180,6 +1163,8 @@ TrimNewLines !insertmacro LineFind + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1193,6 +1178,8 @@ TrimNewLines !insertmacro LineRead + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1206,6 +1193,8 @@ TrimNewLines !insertmacro FileReadFromEnd + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1219,6 +1208,8 @@ TrimNewLines !insertmacro LineSum + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1232,6 +1223,8 @@ TrimNewLines !insertmacro FileJoin + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1245,6 +1238,8 @@ TrimNewLines !insertmacro TextCompare + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1258,6 +1253,8 @@ TrimNewLines !insertmacro ConfigRead + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1271,6 +1268,8 @@ TrimNewLines !insertmacro ConfigWrite + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1284,6 +1283,8 @@ TrimNewLines !insertmacro FileRecode + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN !verbose pop !endif !macroend @@ -1297,6 +1298,186 @@ TrimNewLines !insertmacro TrimNewLines + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN + !verbose pop + !endif +!macroend + + +# Install. Case sensitive. # + +!macro TextCompareSCall _FILE1 _FILE2 _OPTION _FUNC + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push $0 + Push `${_FILE1}` + Push `${_FILE2}` + Push `${_OPTION}` + GetFunctionAddress $0 `${_FUNC}` + Push `$0` + Call TextCompareS + Pop $0 + !verbose pop +!macroend + +!macro ConfigReadSCall _FILE _ENTRY _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_ENTRY}` + Call ConfigReadS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro ConfigWriteSCall _FILE _ENTRY _VALUE _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_ENTRY}` + Push `${_VALUE}` + Call ConfigWriteS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro TextCompareS + !ifndef TextCompareS + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + !undef _TEXTFUNC_S + !define _TEXTFUNC_S `S` + + !insertmacro TextCompare + + !undef _TEXTFUNC_S + !define _TEXTFUNC_S + !verbose pop + !endif +!macroend + +!macro ConfigReadS + !ifndef ConfigReadS + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + !undef _TEXTFUNC_S + !define _TEXTFUNC_S `S` + + !insertmacro ConfigRead + + !undef _TEXTFUNC_S + !define _TEXTFUNC_S + !verbose pop + !endif +!macroend + +!macro ConfigWriteS + !ifndef ConfigWriteS + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + !undef _TEXTFUNC_S + !define _TEXTFUNC_S `S` + + !insertmacro ConfigWrite + + !undef _TEXTFUNC_S + !define _TEXTFUNC_S + !verbose pop + !endif +!macroend + + +# Uninstall. Case sensitive. # + +!macro un.TextCompareSCall _FILE1 _FILE2 _OPTION _FUNC + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push $0 + Push `${_FILE1}` + Push `${_FILE2}` + Push `${_OPTION}` + GetFunctionAddress $0 `${_FUNC}` + Push `$0` + Call un.TextCompareS + Pop $0 + !verbose pop +!macroend + +!macro un.ConfigReadSCall _FILE _ENTRY _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_ENTRY}` + Call un.ConfigReadS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.ConfigWriteSCall _FILE _ENTRY _VALUE _RESULT + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + Push `${_FILE}` + Push `${_ENTRY}` + Push `${_VALUE}` + Call un.ConfigWriteS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.TextCompareS + !ifndef un.TextCompareS + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN `un.` + !undef _TEXTFUNC_S + !define _TEXTFUNC_S `S` + + !insertmacro TextCompare + + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN + !undef _TEXTFUNC_S + !define _TEXTFUNC_S + !verbose pop + !endif +!macroend + +!macro un.ConfigReadS + !ifndef un.ConfigReadS + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN `un.` + !undef _TEXTFUNC_S + !define _TEXTFUNC_S `S` + + !insertmacro ConfigRead + + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN + !undef _TEXTFUNC_S + !define _TEXTFUNC_S + !verbose pop + !endif +!macroend + +!macro un.ConfigWriteS + !ifndef un.ConfigWriteS + !verbose push + !verbose ${_TEXTFUNC_VERBOSE} + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN `un.` + !undef _TEXTFUNC_S + !define _TEXTFUNC_S `S` + + !insertmacro ConfigWrite + + !undef _TEXTFUNC_UN + !define _TEXTFUNC_UN + !undef _TEXTFUNC_S + !define _TEXTFUNC_S !verbose pop !endif !macroend diff --git a/Include/WordFunc.nsh b/Include/WordFunc.nsh index a7b8500c..bd34f6f0 100644 --- a/Include/WordFunc.nsh +++ b/Include/WordFunc.nsh @@ -1,10 +1,10 @@ /* _____________________________________________________________________________ - Word Functions Header v3.1 + Word Functions Header v3.2 _____________________________________________________________________________ - 2005 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) + 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) See documentation for more information about the following functions. @@ -16,13 +16,14 @@ _____________________________________________________________________________ [SectionEnd|FunctionEnd] - WordFunction=[WordFind|WordFind2X|WordFind3X|WordReplace|WordAdd|WordInsert| - StrFilter|VersionCompare|VersionConvert] - - un.WordFunction=[un.WordFind|un.WordFind2X|un.WordFind3X|un.WordReplace| - un.WordAdd|un.WordInsert|un.StrFilter|un.VersionCompare| - un.VersionConvert] + WordFunction=[WordFind|WordFindS|WordFind2X|WordFind2XS|WordFind3X|WordFind3XS| + WordReplace|WordReplaceS|WordAdd|WordAddS|WordInsert|WordInsertS| + StrFilter|StrFilterS|VersionCompare|VersionConvert] + un.WordFunction=[un.WordFind|un.WordFindS|un.WordFind2X|un.WordFind2XS| + un.WordFind3X|un.WordFind3XS|un.WordReplace|un.WordReplaceS| + un.WordAdd|un.WordAddS|un.WordInsert|un.WordInsertS| + un.StrFilter|un.StrFilterS|un.VersionCompare|un.VersionConvert] _____________________________________________________________________________ @@ -42,7 +43,7 @@ VersionConvert ;_____________________________________________________________________________ ; -; Macros +; Macros ;_____________________________________________________________________________ ; ; Change log window verbosity (default: 3=no script) @@ -61,8 +62,8 @@ VersionConvert !endif !verbose ${_WORDFUNC_VERBOSE} !define WORDFUNC_VERBOSE `!insertmacro WORDFUNC_VERBOSE` -!define _WORDFUNC_UN1 -!define _WORDFUNC_UN2 +!define _WORDFUNC_UN +!define _WORDFUNC_S !verbose pop !macro WORDFUNC_VERBOSE _VERBOSE @@ -70,12 +71,12 @@ VersionConvert !verbose 3 !undef _WORDFUNC_VERBOSE !define _WORDFUNC_VERBOSE ${_VERBOSE} - !verbose 4 - !echo `"verbosity=${_VERBOSE}"` !verbose pop !macroend +# Install. Case insensitive. # + !macro WordFindCall _STRING _DELIMITER _OPTION _RESULT !verbose push !verbose ${_WORDFUNC_VERBOSE} @@ -180,12 +181,12 @@ VersionConvert !macroend !macro WordFind - !ifndef ${_WORDFUNC_UN1}WordFind + !ifndef ${_WORDFUNC_UN}WordFind${_WORDFUNC_S} !verbose push !verbose ${_WORDFUNC_VERBOSE} - !define ${_WORDFUNC_UN1}WordFind `!insertmacro ${_WORDFUNC_UN1}WordFindCall` + !define ${_WORDFUNC_UN}WordFind${_WORDFUNC_S} `!insertmacro ${_WORDFUNC_UN}WordFind${_WORDFUNC_S}Call` - Function ${_WORDFUNC_UN1}WordFind + Function ${_WORDFUNC_UN}WordFind${_WORDFUNC_S} Exch $1 Exch Exch $0 @@ -212,29 +213,29 @@ VersionConvert goto -4 StrCpy $3 '' - StrCmp $2 '+' +6 - StrCmp $2 '-' +5 - StrCmp $2 '/' restart - StrCmp $2 '#' restart - StrCmp $2 '*' restart + StrCmp${_WORDFUNC_S} $2 '+' +6 + StrCmp${_WORDFUNC_S} $2 '-' +5 + StrCmp${_WORDFUNC_S} $2 '/' restart + StrCmp${_WORDFUNC_S} $2 '#' restart + StrCmp${_WORDFUNC_S} $2 '*' restart goto error3 StrCpy $4 $1 1 -1 - StrCmp $4 '*' +4 - StrCmp $4 '}' +3 - StrCmp $4 '{' +2 + StrCmp${_WORDFUNC_S} $4 '*' +4 + StrCmp${_WORDFUNC_S} $4 '}' +3 + StrCmp${_WORDFUNC_S} $4 '{' +2 goto +4 StrCpy $1 $1 -1 StrCpy $3 '$4$3' goto -7 - StrCmp $3 '*' error3 - StrCmp $3 '**' error3 - StrCmp $3 '}{' error3 + StrCmp${_WORDFUNC_S} $3 '*' error3 + StrCmp${_WORDFUNC_S} $3 '**' error3 + StrCmp${_WORDFUNC_S} $3 '}{' error3 IntOp $1 $1 + 0 - StrCmp $1 0 error2 + StrCmp${_WORDFUNC_S} $1 0 error2 restart: - StrCmp $R0 '' error1 + StrCmp${_WORDFUNC_S} $R0 '' error1 StrCpy $4 0 StrCpy $5 0 StrCpy $6 0 @@ -246,23 +247,23 @@ VersionConvert loop: StrCpy $8 $R0 $7 $6 - StrCmp $8$5 0 error1 - StrCmp $8 '' +2 - StrCmp $8 $0 +5 preloop - StrCmp $3 '{' minus - StrCmp $3 '}' minus - StrCmp $2 '*' minus - StrCmp $5 $6 minus +5 - StrCmp $3 '{' +4 - StrCmp $3 '}' +3 - StrCmp $2 '*' +2 - StrCmp $5 $6 nextword + StrCmp${_WORDFUNC_S} $8$5 0 error1 + StrCmp${_WORDFUNC_S} $8 '' +2 + StrCmp${_WORDFUNC_S} $8 $0 +5 preloop + StrCmp${_WORDFUNC_S} $3 '{' minus + StrCmp${_WORDFUNC_S} $3 '}' minus + StrCmp${_WORDFUNC_S} $2 '*' minus + StrCmp${_WORDFUNC_S} $5 $6 minus +5 + StrCmp${_WORDFUNC_S} $3 '{' +4 + StrCmp${_WORDFUNC_S} $3 '}' +3 + StrCmp${_WORDFUNC_S} $2 '*' +2 + StrCmp${_WORDFUNC_S} $5 $6 nextword IntOp $4 $4 + 1 - StrCmp $2$4 +$1 plus - StrCmp $2 '/' 0 nextword + StrCmp${_WORDFUNC_S} $2$4 +$1 plus + StrCmp${_WORDFUNC_S} $2 '/' 0 nextword IntOp $8 $6 - $5 StrCpy $8 $R0 $8 $5 - StrCmp $1 $8 0 nextword + StrCmp${_WORDFUNC_S} $1 $8 0 nextword StrCpy $R1 $4 goto end nextword: @@ -271,62 +272,62 @@ VersionConvert goto loop minus: - StrCmp $2 '-' 0 sum + StrCmp${_WORDFUNC_S} $2 '-' 0 sum StrCpy $2 '+' IntOp $1 $4 - $1 IntOp $1 $1 + 1 IntCmp $1 0 error2 error2 restart sum: - StrCmp $2 '#' 0 sumdelim + StrCmp${_WORDFUNC_S} $2 '#' 0 sumdelim StrCpy $R1 $4 goto end sumdelim: - StrCmp $2 '*' 0 error2 + StrCmp${_WORDFUNC_S} $2 '*' 0 error2 StrCpy $R1 $4 goto end plus: - StrCmp $3 '' 0 +4 + StrCmp${_WORDFUNC_S} $3 '' 0 +4 IntOp $6 $6 - $5 StrCpy $R1 $R0 $6 $5 goto end - StrCmp $3 '{' 0 +3 + StrCmp${_WORDFUNC_S} $3 '{' 0 +3 StrCpy $R1 $R0 $6 goto end - StrCmp $3 '}' 0 +4 + StrCmp${_WORDFUNC_S} $3 '}' 0 +4 IntOp $6 $6 + $7 StrCpy $R1 $R0 '' $6 goto end - StrCmp $3 '{*' +2 - StrCmp $3 '*{' 0 +3 + StrCmp${_WORDFUNC_S} $3 '{*' +2 + StrCmp${_WORDFUNC_S} $3 '*{' 0 +3 StrCpy $R1 $R0 $6 goto end - StrCmp $3 '*}' +2 - StrCmp $3 '}*' 0 +3 + StrCmp${_WORDFUNC_S} $3 '*}' +2 + StrCmp${_WORDFUNC_S} $3 '}*' 0 +3 StrCpy $R1 $R0 '' $5 goto end - StrCmp $3 '}}' 0 +3 + StrCmp${_WORDFUNC_S} $3 '}}' 0 +3 StrCpy $R1 $R0 '' $6 goto end - StrCmp $3 '{{' 0 +3 + StrCmp${_WORDFUNC_S} $3 '{{' 0 +3 StrCpy $R1 $R0 $5 goto end - StrCmp $3 '{}' 0 error3 + StrCmp${_WORDFUNC_S} $3 '{}' 0 error3 StrLen $3 $R0 - StrCmp $3 $6 0 +3 + StrCmp${_WORDFUNC_S} $3 $6 0 +3 StrCpy $0 '' goto +2 IntOp $6 $6 + $7 StrCpy $8 $R0 '' $6 - StrCmp $4$8 1 +6 - StrCmp $4 1 +2 +7 + StrCmp${_WORDFUNC_S} $4$8 1 +6 + StrCmp${_WORDFUNC_S} $4 1 +2 +7 IntOp $6 $6 + $7 StrCpy $3 $R0 $7 $6 - StrCmp $3 '' +2 - StrCmp $3 $0 -3 +3 + StrCmp${_WORDFUNC_S} $3 '' +2 + StrCmp${_WORDFUNC_S} $3 $0 -3 +3 StrCpy $R1 '' goto end - StrCmp $5 0 0 +3 + StrCmp${_WORDFUNC_S} $5 0 0 +3 StrCpy $0 '' goto +2 IntOp $5 $5 - $7 @@ -363,22 +364,17 @@ VersionConvert Exch $R0 FunctionEnd - - !ifndef _WORDFUNC_UN2 - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 - !endif !verbose pop !endif !macroend !macro WordFind2X - !ifndef ${_WORDFUNC_UN1}WordFind2X + !ifndef ${_WORDFUNC_UN}WordFind2X${_WORDFUNC_S} !verbose push !verbose ${_WORDFUNC_VERBOSE} - !define ${_WORDFUNC_UN1}WordFind2X `!insertmacro ${_WORDFUNC_UN1}WordFind2XCall` + !define ${_WORDFUNC_UN}WordFind2X${_WORDFUNC_S} `!insertmacro ${_WORDFUNC_UN}WordFind2X${_WORDFUNC_S}Call` - Function ${_WORDFUNC_UN1}WordFind2X + Function ${_WORDFUNC_UN}WordFind2X${_WORDFUNC_S} Exch $2 Exch Exch $1 @@ -407,28 +403,28 @@ VersionConvert StrCpy $R2 E goto -4 - StrCmp $3 '+' +5 - StrCmp $3 '-' +4 - StrCmp $3 '#' restart - StrCmp $3 '/' restart + StrCmp${_WORDFUNC_S} $3 '+' +5 + StrCmp${_WORDFUNC_S} $3 '-' +4 + StrCmp${_WORDFUNC_S} $3 '#' restart + StrCmp${_WORDFUNC_S} $3 '/' restart goto error3 StrCpy $4 $2 2 -2 - StrCmp $4 '{{' +9 - StrCmp $4 '}}' +8 - StrCmp $4 '{*' +7 - StrCmp $4 '*{' +6 - StrCmp $4 '*}' +5 - StrCmp $4 '}*' +4 - StrCmp $4 '{}' +3 + StrCmp${_WORDFUNC_S} $4 '{{' +9 + StrCmp${_WORDFUNC_S} $4 '}}' +8 + StrCmp${_WORDFUNC_S} $4 '{*' +7 + StrCmp${_WORDFUNC_S} $4 '*{' +6 + StrCmp${_WORDFUNC_S} $4 '*}' +5 + StrCmp${_WORDFUNC_S} $4 '}*' +4 + StrCmp${_WORDFUNC_S} $4 '{}' +3 StrCpy $4 '' goto +2 StrCpy $2 $2 -2 IntOp $2 $2 + 0 - StrCmp $2 0 error2 + StrCmp${_WORDFUNC_S} $2 0 error2 restart: - StrCmp $R0 '' error1 + StrCmp${_WORDFUNC_S} $R0 '' error1 StrCpy $5 -1 StrCpy $6 0 StrCpy $7 '' @@ -440,25 +436,25 @@ VersionConvert delim1: StrCpy $R1 $R0 $8 $5 - StrCmp $R1$6 0 error1 - StrCmp $R1 '' minus - StrCmp $R1 $0 +2 - StrCmp $7 '' loop delim2 - StrCmp $0 $1 0 +2 - StrCmp $7 '' 0 delim2 + StrCmp${_WORDFUNC_S} $R1$6 0 error1 + StrCmp${_WORDFUNC_S} $R1 '' minus + StrCmp${_WORDFUNC_S} $R1 $0 +2 + StrCmp${_WORDFUNC_S} $7 '' loop delim2 + StrCmp${_WORDFUNC_S} $0 $1 0 +2 + StrCmp${_WORDFUNC_S} $7 '' 0 delim2 IntOp $7 $5 + $8 StrCpy $5 $7 goto delim1 delim2: StrCpy $R1 $R0 $9 $5 - StrCmp $R1 $1 0 loop + StrCmp${_WORDFUNC_S} $R1 $1 0 loop IntOp $6 $6 + 1 - StrCmp $3$6 '+$2' plus - StrCmp $3 '/' 0 nextword + StrCmp${_WORDFUNC_S} $3$6 '+$2' plus + StrCmp${_WORDFUNC_S} $3 '/' 0 nextword IntOp $R1 $5 - $7 StrCpy $R1 $R0 $R1 $7 - StrCmp $R1 $2 0 +3 + StrCmp${_WORDFUNC_S} $R1 $2 0 +3 StrCpy $R1 $6 goto end nextword: @@ -467,38 +463,38 @@ VersionConvert goto delim1 minus: - StrCmp $3 '-' 0 sum + StrCmp${_WORDFUNC_S} $3 '-' 0 sum StrCpy $3 + IntOp $2 $6 - $2 IntOp $2 $2 + 1 IntCmp $2 0 error2 error2 restart sum: - StrCmp $3 '#' 0 error2 + StrCmp${_WORDFUNC_S} $3 '#' 0 error2 StrCpy $R1 $6 goto end plus: - StrCmp $4 '' 0 +4 + StrCmp${_WORDFUNC_S} $4 '' 0 +4 IntOp $R1 $5 - $7 StrCpy $R1 $R0 $R1 $7 goto end IntOp $5 $5 + $9 IntOp $7 $7 - $8 - StrCmp $4 '{*' +2 - StrCmp $4 '*{' 0 +3 + StrCmp${_WORDFUNC_S} $4 '{*' +2 + StrCmp${_WORDFUNC_S} $4 '*{' 0 +3 StrCpy $R1 $R0 $5 goto end - StrCmp $4 '*}' +2 - StrCmp $4 '}*' 0 +3 + StrCmp${_WORDFUNC_S} $4 '*}' +2 + StrCmp${_WORDFUNC_S} $4 '}*' 0 +3 StrCpy $R1 $R0 '' $7 goto end - StrCmp $4 '}}' 0 +3 + StrCmp${_WORDFUNC_S} $4 '}}' 0 +3 StrCpy $R1 $R0 '' $5 goto end - StrCmp $4 '{{' 0 +3 + StrCmp${_WORDFUNC_S} $4 '{{' 0 +3 StrCpy $R1 $R0 $7 goto end - StrCmp $4 '{}' 0 error3 + StrCmp${_WORDFUNC_S} $4 '{}' 0 error3 StrCpy $5 $R0 '' $5 StrCpy $7 $R0 $7 StrCpy $R1 '$7$5' @@ -534,19 +530,17 @@ VersionConvert Exch $R0 FunctionEnd - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 !verbose pop !endif !macroend !macro WordFind3X - !ifndef ${_WORDFUNC_UN1}WordFind3X + !ifndef ${_WORDFUNC_UN}WordFind3X${_WORDFUNC_S} !verbose push !verbose ${_WORDFUNC_VERBOSE} - !define ${_WORDFUNC_UN1}WordFind3X `!insertmacro ${_WORDFUNC_UN1}WordFind3XCall` + !define ${_WORDFUNC_UN}WordFind3X${_WORDFUNC_S} `!insertmacro ${_WORDFUNC_UN}WordFind3X${_WORDFUNC_S}Call` - Function ${_WORDFUNC_UN1}WordFind3X + Function ${_WORDFUNC_UN}WordFind3X${_WORDFUNC_S} Exch $3 Exch Exch $2 @@ -580,28 +574,28 @@ VersionConvert StrCpy $R5 E goto -4 - StrCmp $4 '+' +5 - StrCmp $4 '-' +4 - StrCmp $4 '#' restart - StrCmp $4 '/' restart + StrCmp${_WORDFUNC_S} $4 '+' +5 + StrCmp${_WORDFUNC_S} $4 '-' +4 + StrCmp${_WORDFUNC_S} $4 '#' restart + StrCmp${_WORDFUNC_S} $4 '/' restart goto error3 StrCpy $5 $3 2 -2 - StrCmp $5 '{{' +9 - StrCmp $5 '}}' +8 - StrCmp $5 '{*' +7 - StrCmp $5 '*{' +6 - StrCmp $5 '*}' +5 - StrCmp $5 '}*' +4 - StrCmp $5 '{}' +3 + StrCmp${_WORDFUNC_S} $5 '{{' +9 + StrCmp${_WORDFUNC_S} $5 '}}' +8 + StrCmp${_WORDFUNC_S} $5 '{*' +7 + StrCmp${_WORDFUNC_S} $5 '*{' +6 + StrCmp${_WORDFUNC_S} $5 '*}' +5 + StrCmp${_WORDFUNC_S} $5 '}*' +4 + StrCmp${_WORDFUNC_S} $5 '{}' +3 StrCpy $5 '' goto +2 StrCpy $3 $3 -2 IntOp $3 $3 + 0 - StrCmp $3 0 error2 + StrCmp${_WORDFUNC_S} $3 0 error2 restart: - StrCmp $R0 '' error1 + StrCmp${_WORDFUNC_S} $R0 '' error1 StrCpy $6 -1 StrCpy $7 0 StrCpy $8 '' @@ -615,34 +609,34 @@ VersionConvert delim1: StrCpy $R4 $R0 $R1 $6 - StrCmp $R4$7 0 error1 - StrCmp $R4 '' minus - StrCmp $R4 $0 +2 - StrCmp $8 '' loop center - StrCmp $0 $1 +2 - StrCmp $0 $2 0 +2 - StrCmp $8 '' 0 center + StrCmp${_WORDFUNC_S} $R4$7 0 error1 + StrCmp${_WORDFUNC_S} $R4 '' minus + StrCmp${_WORDFUNC_S} $R4 $0 +2 + StrCmp${_WORDFUNC_S} $8 '' loop center + StrCmp${_WORDFUNC_S} $0 $1 +2 + StrCmp${_WORDFUNC_S} $0 $2 0 +2 + StrCmp${_WORDFUNC_S} $8 '' 0 center IntOp $8 $6 + $R1 StrCpy $6 $8 goto delim1 center: - StrCmp $9 '' 0 delim2 + StrCmp${_WORDFUNC_S} $9 '' 0 delim2 StrCpy $R4 $R0 $R2 $6 - StrCmp $R4 $1 0 loop + StrCmp${_WORDFUNC_S} $R4 $1 0 loop IntOp $9 $6 + $R2 StrCpy $6 $9 goto delim1 delim2: StrCpy $R4 $R0 $R3 $6 - StrCmp $R4 $2 0 loop + StrCmp${_WORDFUNC_S} $R4 $2 0 loop IntOp $7 $7 + 1 - StrCmp $4$7 '+$3' plus - StrCmp $4 '/' 0 nextword + StrCmp${_WORDFUNC_S} $4$7 '+$3' plus + StrCmp${_WORDFUNC_S} $4 '/' 0 nextword IntOp $R4 $6 - $8 StrCpy $R4 $R0 $R4 $8 - StrCmp $R4 $3 0 +3 + StrCmp${_WORDFUNC_S} $R4 $3 0 +3 StrCpy $R4 $7 goto end nextword: @@ -652,38 +646,38 @@ VersionConvert goto delim1 minus: - StrCmp $4 '-' 0 sum + StrCmp${_WORDFUNC_S} $4 '-' 0 sum StrCpy $4 + IntOp $3 $7 - $3 IntOp $3 $3 + 1 IntCmp $3 0 error2 error2 restart sum: - StrCmp $4 '#' 0 error2 + StrCmp${_WORDFUNC_S} $4 '#' 0 error2 StrCpy $R4 $7 goto end plus: - StrCmp $5 '' 0 +4 + StrCmp${_WORDFUNC_S} $5 '' 0 +4 IntOp $R4 $6 - $8 StrCpy $R4 $R0 $R4 $8 goto end IntOp $6 $6 + $R3 IntOp $8 $8 - $R1 - StrCmp $5 '{*' +2 - StrCmp $5 '*{' 0 +3 + StrCmp${_WORDFUNC_S} $5 '{*' +2 + StrCmp${_WORDFUNC_S} $5 '*{' 0 +3 StrCpy $R4 $R0 $6 goto end - StrCmp $5 '*}' +2 - StrCmp $5 '}*' 0 +3 + StrCmp${_WORDFUNC_S} $5 '*}' +2 + StrCmp${_WORDFUNC_S} $5 '}*' 0 +3 StrCpy $R4 $R0 '' $8 goto end - StrCmp $5 '}}' 0 +3 + StrCmp${_WORDFUNC_S} $5 '}}' 0 +3 StrCpy $R4 $R0 '' $6 goto end - StrCmp $5 '{{' 0 +3 + StrCmp${_WORDFUNC_S} $5 '{{' 0 +3 StrCpy $R4 $R0 $8 goto end - StrCmp $5 '{}' 0 error3 + StrCmp${_WORDFUNC_S} $5 '{}' 0 error3 StrCpy $6 $R0 '' $6 StrCpy $8 $R0 $8 StrCpy $R4 '$8$6' @@ -721,19 +715,17 @@ VersionConvert Exch $R0 FunctionEnd - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 !verbose pop !endif !macroend !macro WordReplace - !ifndef ${_WORDFUNC_UN1}WordReplace + !ifndef ${_WORDFUNC_UN}WordReplace${_WORDFUNC_S} !verbose push !verbose ${_WORDFUNC_VERBOSE} - !define ${_WORDFUNC_UN1}WordReplace `!insertmacro ${_WORDFUNC_UN1}WordReplaceCall` + !define ${_WORDFUNC_UN}WordReplace${_WORDFUNC_S} `!insertmacro ${_WORDFUNC_UN}WordReplace${_WORDFUNC_S}Call` - Function ${_WORDFUNC_UN1}WordReplace + Function ${_WORDFUNC_UN}WordReplace${_WORDFUNC_S} Exch $2 Exch Exch $1 @@ -757,69 +749,71 @@ VersionConvert StrCpy $R1 $R0 StrCpy $9 '' StrCpy $3 $2 1 - StrCmp $3 'E' 0 +4 - StrCpy $9 E StrCpy $2 $2 '' 1 + StrCmp $3 'E' 0 +3 + StrCpy $9 E goto -4 - StrLen $7 $0 - - StrCpy $4 $2 3 - StrCpy $5 $2 2 - StrCmp $4 '{}*' +3 - StrCmp $5 '{}' +2 - goto errorchk - StrCmp $7 0 end + StrCpy $4 $2 1 -1 StrCpy $5 '' StrCpy $6 '' - StrCpy $3 $R0 $7 - StrCmp $3 $0 0 +4 + StrLen $7 $0 + + StrCmp${_WORDFUNC_S} $7 0 error1 + StrCmp${_WORDFUNC_S} $R0 '' error1 + StrCmp${_WORDFUNC_S} $3 '{' beginning + StrCmp${_WORDFUNC_S} $3 '}' ending errorchk + + beginning: + StrCpy $8 $R0 $7 + StrCmp${_WORDFUNC_S} $8 $0 0 +4 StrCpy $R0 $R0 '' $7 - StrCpy $5 '$1$5' + StrCpy $5 '$5$1' goto -4 - StrCpy $3 $R0 '' -$7 - StrCmp $3 $0 0 +4 + StrCpy $3 $2 1 + StrCmp${_WORDFUNC_S} $3 '}' 0 merge + + ending: + StrCpy $8 $R0 '' -$7 + StrCmp${_WORDFUNC_S} $8 $0 0 +4 StrCpy $R0 $R0 -$7 StrCpy $6 '$6$1' goto -4 - StrCmp $4 '{}*' 0 +5 - StrCmp $5 '' +2 + + merge: + StrCmp${_WORDFUNC_S} $4 '*' 0 +5 + StrCmp${_WORDFUNC_S} $5 '' +2 StrCpy $5 $1 - StrCmp $6 '' +2 + StrCmp${_WORDFUNC_S} $6 '' +2 StrCpy $6 $1 StrCpy $R0 '$5$R0$6' goto end errorchk: - StrCpy $3 $2 1 - StrCpy $2 $2 '' 1 - StrCmp $3 '+' +2 - StrCmp $3 '-' 0 error3 - StrCmp $R0 '' error1 - StrCmp $7 0 error1 + StrCmp${_WORDFUNC_S} $3 '+' +2 + StrCmp${_WORDFUNC_S} $3 '-' 0 error3 - StrCpy $4 $2 1 -1 StrCpy $5 $2 1 IntOp $2 $2 + 0 - StrCmp $2 0 0 one - StrCmp $5 0 error2 + StrCmp${_WORDFUNC_S} $2 0 0 one + StrCmp${_WORDFUNC_S} $5 0 error2 StrCpy $3 '' all: StrCpy $5 0 StrCpy $2 $R0 $7 $5 - StrCmp $2 '' +4 - StrCmp $2 $0 +6 + StrCmp${_WORDFUNC_S} $2 '' +4 + StrCmp${_WORDFUNC_S} $2 $0 +6 IntOp $5 $5 + 1 goto -4 - StrCmp $R0 $R1 error1 + StrCmp${_WORDFUNC_S} $R0 $R1 error1 StrCpy $R0 '$3$R0' goto end StrCpy $2 $R0 $5 IntOp $5 $5 + $7 - StrCmp $4 '*' 0 +3 + StrCmp${_WORDFUNC_S} $4 '*' 0 +3 StrCpy $6 $R0 $7 $5 - StrCmp $6 $0 -3 + StrCmp${_WORDFUNC_S} $6 $0 -3 StrCpy $R0 $R0 '' $5 StrCpy $3 '$3$2$1' goto all @@ -834,16 +828,16 @@ VersionConvert loop: StrCpy $6 $R0 $7 $5 - StrCmp $6$8 0 error1 - StrCmp $6 '' minus - StrCmp $6 $0 0 preloop + StrCmp${_WORDFUNC_S} $6$8 0 error1 + StrCmp${_WORDFUNC_S} $6 '' minus + StrCmp${_WORDFUNC_S} $6 $0 0 preloop IntOp $8 $8 + 1 - StrCmp $3$8 +$2 found + StrCmp${_WORDFUNC_S} $3$8 +$2 found IntOp $5 $5 + $7 goto loop minus: - StrCmp $3 '-' 0 error2 + StrCmp${_WORDFUNC_S} $3 '-' 0 error2 StrCpy $3 + IntOp $2 $8 - $2 IntOp $2 $2 + 1 @@ -851,15 +845,15 @@ VersionConvert found: StrCpy $3 $R0 $5 - StrCmp $4 '*' 0 +5 + StrCmp${_WORDFUNC_S} $4 '*' 0 +5 StrCpy $6 $3 '' -$7 - StrCmp $6 $0 0 +3 + StrCmp${_WORDFUNC_S} $6 $0 0 +3 StrCpy $3 $3 -$7 goto -3 IntOp $5 $5 + $7 - StrCmp $4 '*' 0 +3 + StrCmp${_WORDFUNC_S} $4 '*' 0 +3 StrCpy $6 $R0 $7 $5 - StrCmp $6 $0 -3 + StrCmp${_WORDFUNC_S} $6 $0 -3 StrCpy $R0 $R0 '' $5 StrCpy $R0 '$3$1$R0' goto end @@ -893,21 +887,19 @@ VersionConvert Exch $R0 FunctionEnd - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 !verbose pop !endif !macroend !macro WordAdd - !ifndef ${_WORDFUNC_UN1}WordAdd + !ifndef ${_WORDFUNC_UN}WordAdd${_WORDFUNC_S} !verbose push !verbose ${_WORDFUNC_VERBOSE} !insertmacro WordFind - !define ${_WORDFUNC_UN1}WordAdd `!insertmacro ${_WORDFUNC_UN1}WordAddCall` + !define ${_WORDFUNC_UN}WordAdd${_WORDFUNC_S} `!insertmacro ${_WORDFUNC_UN}WordAdd${_WORDFUNC_S}Call` - Function ${_WORDFUNC_UN1}WordAdd + Function ${_WORDFUNC_UN}WordAdd${_WORDFUNC_S} Exch $1 Exch Exch $0 @@ -935,14 +927,14 @@ VersionConvert StrCpy $R1 $R0 StrCpy $2 $1 '' 1 StrCpy $1 $1 1 - StrCmp $1 '+' +2 - StrCmp $1 '-' 0 error3 + StrCmp${_WORDFUNC_S} $1 '+' +2 + StrCmp${_WORDFUNC_S} $1 '-' 0 error3 - StrCmp $0 '' error1 - StrCmp $2 '' end - StrCmp $R0 '' 0 +5 - StrCmp $1 '-' end - StrCmp $1 '+' 0 +3 + StrCmp${_WORDFUNC_S} $0 '' error1 + StrCmp${_WORDFUNC_S} $2 '' end + StrCmp${_WORDFUNC_S} $R0 '' 0 +5 + StrCmp${_WORDFUNC_S} $1 '-' end + StrCmp${_WORDFUNC_S} $1 '+' 0 +3 StrCpy $R0 $2 goto end @@ -951,36 +943,36 @@ VersionConvert Push `$2` Push `$0` Push `E+$5` - Call ${_WORDFUNC_UN1}WordFind + Call ${_WORDFUNC_UN}WordFind${_WORDFUNC_S} Pop $3 IfErrors 0 /word - StrCmp $3 2 +4 - StrCmp $3$5 11 0 +3 + StrCmp${_WORDFUNC_S} $3 2 +4 + StrCmp${_WORDFUNC_S} $3$5 11 0 +3 StrCpy $3 $2 goto /word - StrCmp $1 '-' end preend + StrCmp${_WORDFUNC_S} $1 '-' end preend /word: Push `$R0` Push `$0` Push `E/$3` - Call ${_WORDFUNC_UN1}WordFind + Call ${_WORDFUNC_UN}WordFind${_WORDFUNC_S} Pop $4 IfErrors +2 - StrCmp $1 '-' delete loop - StrCmp $1$4 '-1' +2 - StrCmp $1 '-' loop +4 - StrCmp $R0 $3 0 loop + StrCmp${_WORDFUNC_S} $1 '-' delete loop + StrCmp${_WORDFUNC_S} $1$4 '-1' +2 + StrCmp${_WORDFUNC_S} $1 '-' loop +4 + StrCmp${_WORDFUNC_S} $R0 $3 0 loop StrCpy $R0 '' goto end - StrCmp $1$4 '+1' 0 +2 - StrCmp $R0 $3 loop - StrCmp $R0 $R1 +3 + StrCmp${_WORDFUNC_S} $1$4 '+1' 0 +2 + StrCmp${_WORDFUNC_S} $R0 $3 loop + StrCmp${_WORDFUNC_S} $R0 $R1 +3 StrCpy $R1 '$R1$0$3' goto loop StrLen $6 $0 StrCpy $6 $R0 '' -$6 - StrCmp $6 $0 0 -4 + StrCmp${_WORDFUNC_S} $6 $0 0 -4 StrCpy $R1 '$R1$3' goto loop @@ -988,7 +980,7 @@ VersionConvert Push `$R0` Push `$0` Push `E+$4{}` - Call ${_WORDFUNC_UN1}WordFind + Call ${_WORDFUNC_UN}WordFind${_WORDFUNC_S} Pop $R0 goto /word @@ -1017,21 +1009,19 @@ VersionConvert Exch $R0 FunctionEnd - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 !verbose pop !endif !macroend !macro WordInsert - !ifndef ${_WORDFUNC_UN1}WordInsert + !ifndef ${_WORDFUNC_UN}WordInsert${_WORDFUNC_S} !verbose push !verbose ${_WORDFUNC_VERBOSE} !insertmacro WordFind - !define ${_WORDFUNC_UN1}WordInsert `!insertmacro ${_WORDFUNC_UN1}WordInsertCall` + !define ${_WORDFUNC_UN}WordInsert${_WORDFUNC_S} `!insertmacro ${_WORDFUNC_UN}WordInsert${_WORDFUNC_S}Call` - Function ${_WORDFUNC_UN1}WordInsert + Function ${_WORDFUNC_UN}WordInsert${_WORDFUNC_S} Exch $2 Exch Exch $1 @@ -1064,21 +1054,21 @@ VersionConvert StrCpy $9 'E' goto -4 - StrCmp $3 '+' +2 - StrCmp $3 '-' 0 error3 + StrCmp${_WORDFUNC_S} $3 '+' +2 + StrCmp${_WORDFUNC_S} $3 '-' 0 error3 IntOp $2 $2 + 0 - StrCmp $2 0 error2 - StrCmp $0 '' error1 + StrCmp${_WORDFUNC_S} $2 0 error2 + StrCmp${_WORDFUNC_S} $0 '' error1 - StrCmp $2 1 0 two + StrCmp${_WORDFUNC_S} $2 1 0 two GetLabelAddress $8 oneback - StrCmp $3 '+' call + StrCmp${_WORDFUNC_S} $3 '+' call StrCpy $7 { goto call oneback: IfErrors 0 +2 StrCpy $4 $R0 - StrCmp $3 '+' 0 +3 + StrCmp${_WORDFUNC_S} $3 '+' 0 +3 StrCpy $R0 '$1$0$4' goto end StrCpy $R0 '$4$0$1' @@ -1087,13 +1077,13 @@ VersionConvert two: IntOp $2 $2 - 1 GetLabelAddress $8 twoback - StrCmp $3 '+' 0 call + StrCmp${_WORDFUNC_S} $3 '+' 0 call StrCpy $7 { goto call twoback: IfErrors 0 tree - StrCmp $2$4 11 0 error2 - StrCmp $3 '+' 0 +3 + StrCmp${_WORDFUNC_S} $2$4 11 0 error2 + StrCmp${_WORDFUNC_S} $3 '+' 0 +3 StrCpy $R0 '$R0$0$1' goto end StrCpy $R0 '$1$0$R0' @@ -1104,14 +1094,14 @@ VersionConvert StrCpy $5 $4 IntOp $2 $2 + 1 GetLabelAddress $8 treeback - StrCmp $3 '+' call + StrCmp${_WORDFUNC_S} $3 '+' call StrCpy $7 { goto call treeback: IfErrors 0 +3 StrCpy $4 '' StrCpy $6 '' - StrCmp $3 '+' 0 +3 + StrCmp${_WORDFUNC_S} $3 '+' 0 +3 StrCpy $R0 '$5$0$1$6$4' goto end StrCpy $R0 '$4$6$1$0$5' @@ -1121,7 +1111,7 @@ VersionConvert Push '$R0' Push '$0' Push 'E$3$2*$7' - Call ${_WORDFUNC_UN1}WordFind + Call ${_WORDFUNC_UN}WordFind${_WORDFUNC_S} Pop $4 goto $8 @@ -1154,19 +1144,17 @@ VersionConvert Exch $R0 FunctionEnd - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 !verbose pop !endif !macroend !macro StrFilter - !ifndef ${_WORDFUNC_UN1}StrFilter + !ifndef ${_WORDFUNC_UN}StrFilter${_WORDFUNC_S} !verbose push !verbose ${_WORDFUNC_VERBOSE} - !define ${_WORDFUNC_UN1}StrFilter `!insertmacro ${_WORDFUNC_UN1}StrFilterCall` + !define ${_WORDFUNC_UN}StrFilter${_WORDFUNC_S} `!insertmacro ${_WORDFUNC_UN}StrFilter${_WORDFUNC_S}Call` - Function ${_WORDFUNC_UN1}StrFilter + Function ${_WORDFUNC_UN}StrFilter${_WORDFUNC_S} Exch $2 Exch Exch $1 @@ -1213,46 +1201,46 @@ VersionConvert StrCpy $R7 '' StrCpy $R8 '' - StrCmp $2 '' 0 begin + StrCmp${_WORDFUNC_S} $2 '' 0 begin restart1: StrCpy $2 '' StrCpy $3 $0 1 - StrCmp $3 '+' +2 - StrCmp $3 '-' 0 +3 + StrCmp${_WORDFUNC_S} $3 '+' +2 + StrCmp${_WORDFUNC_S} $3 '-' 0 +3 StrCpy $0 $0 '' 1 goto +2 StrCpy $3 '' IntOp $0 $0 + 0 - StrCmp $0 0 +5 + StrCmp${_WORDFUNC_S} $0 0 +5 StrCpy $R7 $0 1 0 StrCpy $R8 $0 1 1 StrCpy $R2 $0 1 2 - StrCmp $R2 '' filter error + StrCmp${_WORDFUNC_S} $R2 '' filter error restart2: - StrCmp $3 '' end + StrCmp${_WORDFUNC_S} $3 '' end StrCpy $R7 '' StrCpy $R8 '+-' goto begin filter: - StrCmp $R7 '1' +3 - StrCmp $R7 '2' +2 - StrCmp $R7 '3' 0 error + StrCmp${_WORDFUNC_S} $R7 '1' +3 + StrCmp${_WORDFUNC_S} $R7 '2' +2 + StrCmp${_WORDFUNC_S} $R7 '3' 0 error - StrCmp $R8 '' begin - StrCmp $R7$R8 '23' +2 - StrCmp $R7$R8 '32' 0 +3 + StrCmp${_WORDFUNC_S} $R8 '' begin + StrCmp${_WORDFUNC_S} $R7$R8 '23' +2 + StrCmp${_WORDFUNC_S} $R7$R8 '32' 0 +3 StrCpy $R7 -1 goto begin - StrCmp $R7$R8 '13' +2 - StrCmp $R7$R8 '31' 0 +3 + StrCmp${_WORDFUNC_S} $R7$R8 '13' +2 + StrCmp${_WORDFUNC_S} $R7$R8 '31' 0 +3 StrCpy $R7 -2 goto begin - StrCmp $R7$R8 '12' +2 - StrCmp $R7$R8 '21' 0 error + StrCmp${_WORDFUNC_S} $R7$R8 '12' +2 + StrCmp${_WORDFUNC_S} $R7$R8 '21' 0 error StrCpy $R7 -3 begin: @@ -1261,31 +1249,31 @@ VersionConvert loop: StrCpy $R2 $R0 1 $R6 - StrCmp $R2 '' restartchk + StrCmp${_WORDFUNC_S} $R2 '' restartchk - StrCmp $2 '' +7 + StrCmp${_WORDFUNC_S} $2 '' +7 StrCpy $R4 0 StrCpy $R5 $2 1 $R4 - StrCmp $R5 '' addsymbol - StrCmp $R5 $R2 skipsymbol + StrCmp${_WORDFUNC_S} $R5 '' addsymbol + StrCmp${_WORDFUNC_S} $R5 $R2 skipsymbol IntOp $R4 $R4 + 1 goto -4 - StrCmp $1 '' +7 + StrCmp${_WORDFUNC_S} $1 '' +7 StrCpy $R4 0 StrCpy $R5 $1 1 $R4 - StrCmp $R5 '' +4 - StrCmp $R5 $R2 addsymbol + StrCmp${_WORDFUNC_S} $R5 '' +4 + StrCmp${_WORDFUNC_S} $R5 $R2 addsymbol IntOp $R4 $R4 + 1 goto -4 - StrCmp $R7 '1' +2 - StrCmp $R7 '-1' 0 +4 + StrCmp${_WORDFUNC_S} $R7 '1' +2 + StrCmp${_WORDFUNC_S} $R7 '-1' 0 +4 StrCpy $R4 48 StrCpy $R5 57 goto loop2 - StrCmp $R8 '+-' 0 +2 - StrCmp $3 '+' 0 +4 + StrCmp${_WORDFUNC_S} $R8 '+-' 0 +2 + StrCmp${_WORDFUNC_S} $3 '+' 0 +4 StrCpy $R4 $4 StrCpy $R5 $5 goto loop2 @@ -1300,21 +1288,21 @@ VersionConvert goto loop2 found: - StrCmp $R8 '+-' setcase - StrCmp $R7 '3' skipsymbol - StrCmp $R7 '-3' addsymbol - StrCmp $R8 '' addsymbol skipsymbol + StrCmp${_WORDFUNC_S} $R8 '+-' setcase + StrCmp${_WORDFUNC_S} $R7 '3' skipsymbol + StrCmp${_WORDFUNC_S} $R7 '-3' addsymbol + StrCmp${_WORDFUNC_S} $R8 '' addsymbol skipsymbol notfound: - StrCmp $R8 '+-' addsymbol - StrCmp $R7 '3' 0 +2 - StrCmp $R5 57 addsymbol +3 - StrCmp $R7 '-3' 0 +5 - StrCmp $R5 57 skipsymbol + StrCmp${_WORDFUNC_S} $R8 '+-' addsymbol + StrCmp${_WORDFUNC_S} $R7 '3' 0 +2 + StrCmp${_WORDFUNC_S} $R5 57 addsymbol +3 + StrCmp${_WORDFUNC_S} $R7 '-3' 0 +5 + StrCmp${_WORDFUNC_S} $R5 57 skipsymbol StrCpy $R4 48 StrCpy $R5 57 goto loop2 - StrCmp $R8 '' skipsymbol addsymbol + StrCmp${_WORDFUNC_S} $R8 '' skipsymbol addsymbol setcase: StrCpy $R2 $R3 @@ -1331,8 +1319,8 @@ VersionConvert restartchk: StrCpy $R0 $R1 - StrCmp $2 '' 0 restart1 - StrCmp $R8 '+-' 0 restart2 + StrCmp${_WORDFUNC_S} $2 '' 0 restart1 + StrCmp${_WORDFUNC_S} $R8 '+-' 0 restart2 end: Pop $R8 @@ -1354,19 +1342,17 @@ VersionConvert Exch $R0 FunctionEnd - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 !verbose pop !endif !macroend !macro VersionCompare - !ifndef ${_WORDFUNC_UN1}VersionCompare + !ifndef ${_WORDFUNC_UN}VersionCompare !verbose push !verbose ${_WORDFUNC_VERBOSE} - !define ${_WORDFUNC_UN1}VersionCompare `!insertmacro ${_WORDFUNC_UN1}VersionCompareCall` + !define ${_WORDFUNC_UN}VersionCompare `!insertmacro ${_WORDFUNC_UN}VersionCompareCall` - Function ${_WORDFUNC_UN1}VersionCompare + Function ${_WORDFUNC_UN}VersionCompare Exch $1 Exch Exch $0 @@ -1442,19 +1428,17 @@ VersionConvert Exch $0 FunctionEnd - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 !verbose pop !endif !macroend !macro VersionConvert - !ifndef ${_WORDFUNC_UN1}VersionConvert + !ifndef ${_WORDFUNC_UN}VersionConvert !verbose push !verbose ${_WORDFUNC_VERBOSE} - !define ${_WORDFUNC_UN1}VersionConvert `!insertmacro ${_WORDFUNC_UN1}VersionConvertCall` + !define ${_WORDFUNC_UN}VersionConvert `!insertmacro ${_WORDFUNC_UN}VersionConvertCall` - Function ${_WORDFUNC_UN1}VersionConvert + Function ${_WORDFUNC_UN}VersionConvert Exch $1 Exch Exch $0 @@ -1559,12 +1543,13 @@ VersionConvert Exch $0 FunctionEnd - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 !verbose pop !endif !macroend + +# Uninstall. Case insensitive. # + !macro un.WordFindCall _STRING _DELIMITER _OPTION _RESULT !verbose push !verbose ${_WORDFUNC_VERBOSE} @@ -1668,17 +1653,18 @@ VersionConvert !verbose pop !macroend + !macro un.WordFind !ifndef un.WordFind !verbose push !verbose ${_WORDFUNC_VERBOSE} - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 `un.` + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` - !undef _WORDFUNC_UN2 !insertmacro WordFind - !define _WORDFUNC_UN2 + !undef _WORDFUNC_UN + !define _WORDFUNC_UN !verbose pop !endif !macroend @@ -1687,11 +1673,13 @@ VersionConvert !ifndef un.WordFind2X !verbose push !verbose ${_WORDFUNC_VERBOSE} - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 `un.` + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` !insertmacro WordFind2X + !undef _WORDFUNC_UN + !define _WORDFUNC_UN !verbose pop !endif !macroend @@ -1700,11 +1688,13 @@ VersionConvert !ifndef un.WordFind3X !verbose push !verbose ${_WORDFUNC_VERBOSE} - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 `un.` + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` !insertmacro WordFind3X + !undef _WORDFUNC_UN + !define _WORDFUNC_UN !verbose pop !endif !macroend @@ -1713,11 +1703,13 @@ VersionConvert !ifndef un.WordReplace !verbose push !verbose ${_WORDFUNC_VERBOSE} - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 `un.` + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` !insertmacro WordReplace + !undef _WORDFUNC_UN + !define _WORDFUNC_UN !verbose pop !endif !macroend @@ -1726,11 +1718,13 @@ VersionConvert !ifndef un.WordAdd !verbose push !verbose ${_WORDFUNC_VERBOSE} - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 `un.` + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` !insertmacro WordAdd + !undef _WORDFUNC_UN + !define _WORDFUNC_UN !verbose pop !endif !macroend @@ -1739,11 +1733,13 @@ VersionConvert !ifndef un.WordInsert !verbose push !verbose ${_WORDFUNC_VERBOSE} - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 `un.` + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` !insertmacro WordInsert + !undef _WORDFUNC_UN + !define _WORDFUNC_UN !verbose pop !endif !macroend @@ -1752,11 +1748,13 @@ VersionConvert !ifndef un.StrFilter !verbose push !verbose ${_WORDFUNC_VERBOSE} - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 `un.` + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` !insertmacro StrFilter + !undef _WORDFUNC_UN + !define _WORDFUNC_UN !verbose pop !endif !macroend @@ -1765,11 +1763,13 @@ VersionConvert !ifndef un.VersionCompare !verbose push !verbose ${_WORDFUNC_VERBOSE} - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 `un.` + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` !insertmacro VersionCompare + !undef _WORDFUNC_UN + !define _WORDFUNC_UN !verbose pop !endif !macroend @@ -1778,11 +1778,423 @@ VersionConvert !ifndef un.VersionConvert !verbose push !verbose ${_WORDFUNC_VERBOSE} - !undef _WORDFUNC_UN1 - !define _WORDFUNC_UN1 `un.` + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` !insertmacro VersionConvert + !undef _WORDFUNC_UN + !define _WORDFUNC_UN + !verbose pop + !endif +!macroend + + +# Install. Case sensitive. # + +!macro WordFindSCall _STRING _DELIMITER _OPTION _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER}` + Push `${_OPTION}` + Call WordFindS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordFind2XSCall _STRING _DELIMITER1 _DELIMITER2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER1}` + Push `${_DELIMITER2}` + Push `${_NUMBER}` + Call WordFind2XS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordFind3XSCall _STRING _DELIMITER1 _CENTER _DELIMITER2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER1}` + Push `${_CENTER}` + Push `${_DELIMITER2}` + Push `${_NUMBER}` + Call WordFind3XS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordReplaceSCall _STRING _WORD1 _WORD2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_WORD1}` + Push `${_WORD2}` + Push `${_NUMBER}` + Call WordReplaceS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordAddSCall _STRING1 _DELIMITER _STRING2 _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING1}` + Push `${_DELIMITER}` + Push `${_STRING2}` + Call WordAddS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordInsertSCall _STRING _DELIMITER _WORD _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER}` + Push `${_WORD}` + Push `${_NUMBER}` + Call WordInsertS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro StrFilterSCall _STRING _FILTER _INCLUDE _EXCLUDE _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_FILTER}` + Push `${_INCLUDE}` + Push `${_EXCLUDE}` + Call StrFilterS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro WordFindS + !ifndef WordFindS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordFind + + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro WordFind2XS + !ifndef WordFind2XS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordFind2X + + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro WordFind3XS + !ifndef WordFind3XS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordFind3X + + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro WordReplaceS + !ifndef WordReplaceS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordReplace + + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro WordAddS + !ifndef WordAddS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordAdd + + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro WordInsertS + !ifndef WordInsertS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordInsert + + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro StrFilterS + !ifndef StrFilterS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro StrFilter + + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + + +# Uninstall. Case sensitive. # + +!macro un.WordFindSCall _STRING _DELIMITER _OPTION _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER}` + Push `${_OPTION}` + Call un.WordFindS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.WordFind2XSCall _STRING _DELIMITER1 _DELIMITER2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER1}` + Push `${_DELIMITER2}` + Push `${_NUMBER}` + Call un.WordFind2XS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.WordFind3XSCall _STRING _DELIMITER1 _CENTER _DELIMITER2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER1}` + Push `${_CENTER}` + Push `${_DELIMITER2}` + Push `${_NUMBER}` + Call un.WordFind3XS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.WordReplaceSCall _STRING _WORD1 _WORD2 _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_WORD1}` + Push `${_WORD2}` + Push `${_NUMBER}` + Call un.WordReplaceS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.WordAddSCall _STRING1 _DELIMITER _STRING2 _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING1}` + Push `${_DELIMITER}` + Push `${_STRING2}` + Call un.WordAddS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.WordInsertSCall _STRING _DELIMITER _WORD _NUMBER _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_DELIMITER}` + Push `${_WORD}` + Push `${_NUMBER}` + Call un.WordInsertS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.StrFilterSCall _STRING _FILTER _INCLUDE _EXCLUDE _RESULT + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + Push `${_STRING}` + Push `${_FILTER}` + Push `${_INCLUDE}` + Push `${_EXCLUDE}` + Call un.StrFilterS + Pop ${_RESULT} + !verbose pop +!macroend + +!macro un.WordFindS + !ifndef un.WordFindS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_S + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` + !define _WORDFUNC_S `S` + + !insertmacro WordFind + + !undef _WORDFUNC_UN + !define _WORDFUNC_UN + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro un.WordFind2XS + !ifndef un.WordFind2XS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordFind2X + + !undef _WORDFUNC_UN + !define _WORDFUNC_UN + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro un.WordFind3XS + !ifndef un.WordFind3XS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordFind3X + + !undef _WORDFUNC_UN + !define _WORDFUNC_UN + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro un.WordReplaceS + !ifndef un.WordReplaceS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordReplace + + !undef _WORDFUNC_UN + !define _WORDFUNC_UN + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro un.WordAddS + !ifndef un.WordAddS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordAdd + + !undef _WORDFUNC_UN + !define _WORDFUNC_UN + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro un.WordInsertS + !ifndef un.WordInsertS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro WordInsert + + !undef _WORDFUNC_UN + !define _WORDFUNC_UN + !undef _WORDFUNC_S + !define _WORDFUNC_S + !verbose pop + !endif +!macroend + +!macro un.StrFilterS + !ifndef un.StrFilterS + !verbose push + !verbose ${_WORDFUNC_VERBOSE} + !undef _WORDFUNC_UN + !define _WORDFUNC_UN `un.` + !undef _WORDFUNC_S + !define _WORDFUNC_S `S` + + !insertmacro StrFilter + + !undef _WORDFUNC_UN + !define _WORDFUNC_UN + !undef _WORDFUNC_S + !define _WORDFUNC_S !verbose pop !endif !macroend