Updates by Instructor:

- Added /NOUNLOAD flag for the system plugin calls. Functions that uses system plugin calls several times, now 25-75% faster.
 - Added tests for new WordReplace options "{", "}", "{*", "}*"


git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@4518 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2006-02-10 10:51:26 +00:00
parent aa43f0c349
commit 7332ff04d7
3 changed files with 49 additions and 33 deletions

View file

@ -343,6 +343,24 @@ Section WordReplace
${WordReplace} 'C:\io.sys C:\logo.sysSYSsys C:\WINDOWS' 'sys' 'bmp' '+*' $OUT ${WordReplace} 'C:\io.sys C:\logo.sysSYSsys C:\WINDOWS' 'sys' 'bmp' '+*' $OUT
StrCmp $OUT 'C:\io.bmp C:\logo.bmp C:\WINDOWS' 0 error StrCmp $OUT 'C:\io.bmp C:\logo.bmp C:\WINDOWS' 0 error
${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{' $OUT
StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error
${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}' $OUT
StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error
${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}' $OUT
StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error
${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{*' $OUT
StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error
${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}*' $OUT
StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|' 0 error
${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT
StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error
${WordReplace} 'sysSYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT ${WordReplace} 'sysSYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT
StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error

View file

@ -1,7 +1,7 @@
/* /*
_____________________________________________________________________________ _____________________________________________________________________________
File Functions Header v3.0 File Functions Header v3.1
_____________________________________________________________________________ _____________________________________________________________________________
2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
@ -722,7 +722,7 @@ RefreshShellIcons
StrCmp $6 '' +2 StrCmp $6 '' +2
IntCmp $R6 $6 0 0 findnext IntCmp $R6 $6 0 0 findnext
IntOp $R4 $R4 + 1 IntOp $R4 $R4 + 1
System::Int64Op $R3 + $R6 System::Int64Op /NOUNLOAD $R3 + $R6
Pop $R3 Pop $R3
findnext: findnext:
@ -732,7 +732,7 @@ RefreshShellIcons
show: show:
StrCmp $5$6 '' nosize StrCmp $5$6 '' nosize
System::Int64Op $R3 / $1 System::Int64Op /NOUNLOAD $R3 / $1
Pop $9 Pop $9
DetailPrint 'Size:$9 $2 Files:$R4 Folders:$R5' DetailPrint 'Size:$9 $2 Files:$R4 Folders:$R5'
goto subdir goto subdir
@ -879,13 +879,13 @@ RefreshShellIcons
StrCpy $6 1073741824 StrCpy $6 1073741824
getspace: getspace:
System::Call 'kernel32::GetDiskFreeSpaceExA(t, *l, *l, *l)i(r0,.r2,.r3,.)' System::Call /NOUNLOAD 'kernel32::GetDiskFreeSpaceExA(t, *l, *l, *l)i(r0,.r2,.r3,.)'
StrCmp $5 T 0 +3 StrCmp $5 T 0 +3
StrCpy $0 $3 StrCpy $0 $3
goto getsize goto getsize
StrCmp $5 O 0 +4 StrCmp $5 O 0 +4
System::Int64Op $3 - $2 System::Int64Op /NOUNLOAD $3 - $2
Pop $0 Pop $0
goto getsize goto getsize
StrCmp $5 F 0 +2 StrCmp $5 F 0 +2
@ -933,9 +933,9 @@ RefreshShellIcons
Push $8 Push $8
Push $9 Push $9
System::Alloc 1024 System::Alloc /NOUNLOAD 1024
Pop $2 Pop $2
System::Call 'kernel32::GetLogicalDriveStringsA(i,i) i(1024, r2)' System::Call /NOUNLOAD 'kernel32::GetLogicalDriveStringsA(i,i) i(1024, r2)'
StrCmp $0 ALL drivestring StrCmp $0 ALL drivestring
StrCmp $0 '' 0 typeset StrCmp $0 '' 0 typeset
@ -972,10 +972,10 @@ RefreshShellIcons
StrCpy $3 $2 StrCpy $3 $2
enumok: enumok:
System::Call 'kernel32::lstrlenA(t) i(i r3) .r4' System::Call /NOUNLOAD 'kernel32::lstrlenA(t) i(i r3) .r4'
StrCmp $4$0 '0ALL' enumex StrCmp $4$0 '0ALL' enumex
StrCmp $4 0 typeset StrCmp $4 0 typeset
System::Call 'kernel32::GetDriveTypeA(t) i(i r3) .r5' System::Call /NOUNLOAD 'kernel32::GetDriveTypeA(t) i(i r3) .r5'
StrCmp $0 ALL +2 StrCmp $0 ALL +2
StrCmp $5 $6 letter enumnext StrCmp $5 $6 letter enumnext
@ -995,7 +995,7 @@ RefreshShellIcons
StrCpy $8 RAM StrCpy $8 RAM
letter: letter:
System::Call '*$3(&t1024 .r9)' System::Call /NOUNLOAD '*$3(&t1024 .r9)'
Push $0 Push $0
Push $1 Push $1
@ -1071,23 +1071,23 @@ RefreshShellIcons
getfile: getfile:
IfFileExists $0 0 error IfFileExists $0 0 error
System::Call '*(i,l,l,l,i,i,i,i,&t260,&t14) i .r6' System::Call /NOUNLOAD '*(i,l,l,l,i,i,i,i,&t260,&t14) i .r6'
System::Call 'kernel32::FindFirstFileA(t,i)i(r0,r6) .r2' System::Call /NOUNLOAD 'kernel32::FindFirstFileA(t,i)i(r0,r6) .r2'
System::Call 'kernel32::FindClose(i)i(r2)' System::Call /NOUNLOAD 'kernel32::FindClose(i)i(r2)'
gettime: gettime:
System::Call '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2) i .r7' System::Call /NOUNLOAD '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2) i .r7'
StrCmp $1 'L' 0 systemtime StrCmp $1 'L' 0 systemtime
System::Call 'kernel32::GetLocalTime(i)i(r7)' System::Call /NOUNLOAD 'kernel32::GetLocalTime(i)i(r7)'
goto convert goto convert
systemtime: systemtime:
StrCmp $1 'LS' 0 filetime StrCmp $1 'LS' 0 filetime
System::Call 'kernel32::GetSystemTime(i)i(r7)' System::Call /NOUNLOAD 'kernel32::GetSystemTime(i)i(r7)'
goto convert goto convert
filetime: filetime:
System::Call '*$6(i,l,l,l,i,i,i,i,&t260,&t14)i(,.r4,.r3,.r2)' System::Call /NOUNLOAD '*$6(i,l,l,l,i,i,i,i,&t260,&t14)i(,.r4,.r3,.r2)'
System::Free $6 System::Free /NOUNLOAD $6
StrCmp $1 'A' 0 +3 StrCmp $1 'A' 0 +3
StrCpy $2 $3 StrCpy $2 $3
goto tolocal goto tolocal
@ -1105,12 +1105,12 @@ RefreshShellIcons
goto tosystem goto tosystem
tolocal: tolocal:
System::Call 'kernel32::FileTimeToLocalFileTime(*l,*l)i(r2,.r3)' System::Call /NOUNLOAD 'kernel32::FileTimeToLocalFileTime(*l,*l)i(r2,.r3)'
tosystem: tosystem:
System::Call 'kernel32::FileTimeToSystemTime(*l,i)i(r3,r7)' System::Call /NOUNLOAD 'kernel32::FileTimeToSystemTime(*l,i)i(r3,r7)'
convert: convert:
System::Call '*$7(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2)i(.r5,.r6,.r4,.r0,.r3,.r2,.r1,)' System::Call /NOUNLOAD '*$7(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2)i(.r5,.r6,.r4,.r0,.r3,.r2,.r1,)'
System::Free $7 System::Free $7
IntCmp $0 9 0 0 +2 IntCmp $0 9 0 0 +2
@ -1375,7 +1375,7 @@ RefreshShellIcons
Push $0 Push $0
Push $1 Push $1
Push $2 Push $2
System::Call 'kernel32::GetModuleFileNameA(i 0, t .r0, i 1024)' System::Call /NOUNLOAD 'kernel32::GetModuleFileNameA(i 0, t .r0, i 1024)'
System::Call 'kernel32::GetLongPathNameA(t r0, t .r1, i 1024)i .r2' System::Call 'kernel32::GetLongPathNameA(t r0, t .r1, i 1024)i .r2'
StrCmp $2 error +2 StrCmp $2 error +2
StrCpy $0 $1 StrCpy $0 $1

View file

@ -1,7 +1,7 @@
/* /*
_____________________________________________________________________________ _____________________________________________________________________________
Text Functions Header v2.2 Text Functions Header v2.3
_____________________________________________________________________________ _____________________________________________________________________________
2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
@ -914,15 +914,15 @@ TrimNewLines
FileSeek $3 0 END $6 FileSeek $3 0 END $6
IntOp $6 $6 - $5 IntOp $6 $6 - $5
System::Alloc $6 System::Alloc /NOUNLOAD $6
Pop $0 Pop $0
FileSeek $3 $5 SET FileSeek $3 $5 SET
System::Call 'kernel32::ReadFile(i r3, i r0, i $6, t.,)' System::Call /NOUNLOAD 'kernel32::ReadFile(i r3, i r0, i $6, t.,)'
FileSeek $3 $4 SET FileSeek $3 $4 SET
StrCmp${_TEXTFUNC_S} $2 '' +2 StrCmp${_TEXTFUNC_S} $2 '' +2
FileWrite $3 '$1$2$\r$\n' FileWrite $3 '$1$2$\r$\n'
System::Call 'kernel32::WriteFile(i r3, i r0, i $6, t.,)' System::Call /NOUNLOAD 'kernel32::WriteFile(i r3, i r0, i $6, t.,)'
System::Call 'kernel32::SetEndOfFile(i r3)' System::Call /NOUNLOAD 'kernel32::SetEndOfFile(i r3)'
System::Free $0 System::Free $0
StrCmp${_TEXTFUNC_S} $2 '' +3 StrCmp${_TEXTFUNC_S} $2 '' +3
StrCpy $0 CHANGED StrCpy $0 CHANGED
@ -986,15 +986,13 @@ TrimNewLines
FileOpen $2 $0 a FileOpen $2 $0 a
FileSeek $2 0 END $3 FileSeek $2 0 END $3
System::Alloc $3 System::Alloc /NOUNLOAD $3
Pop $4 Pop $4
FileSeek $2 0 SET FileSeek $2 0 SET
System::Call 'kernel32::ReadFile(i r2, i r4, i $3, t.,)' System::Call /NOUNLOAD 'kernel32::ReadFile(i r2, i r4, i $3, t.,)'
System::Call 'user32::$1Buff(i r4, i r4, i $3)' System::Call /NOUNLOAD 'user32::$1Buff(i r4, i r4, i $3)'
FileSeek $2 0 SET FileSeek $2 0 SET
System::Call 'kernel32::WriteFile(i r2, i r4, i $3, t.,)' System::Call /NOUNLOAD 'kernel32::WriteFile(i r2, i r4, i $3, t.,)'
System::Free $4 System::Free $4
FileClose $2 FileClose $2
goto end goto end