made win9x move/delete on reboot support proper and function like on win2k (in that shit is deleted in order). Also should be slightly smaller (though < 512 bytes difference)
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@900 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
18fbbd621f
commit
0bb9e63724
1 changed files with 11 additions and 14 deletions
|
@ -240,36 +240,33 @@ BOOL NSISCALL MoveFileOnReboot(LPCTSTR pszExisting, LPCTSTR pszNew)
|
|||
|
||||
if (pszWinInit != NULL)
|
||||
{
|
||||
int do_write=0;
|
||||
LPSTR pszRenameSecInFile = findinmem(pszWinInit, szRenameSec,-1);
|
||||
if (pszRenameSecInFile == NULL)
|
||||
{
|
||||
mystrcpy(pszWinInit+dwFileSize, szRenameSec);
|
||||
dwFileSize += 10;
|
||||
dwRenameLinePos = dwFileSize;
|
||||
do_write++;
|
||||
}
|
||||
else
|
||||
{
|
||||
char *pszFirstRenameLine = findinmem(pszRenameSecInFile, "\n",-1)+1;
|
||||
int l=pszWinInit + dwFileSize-pszFirstRenameLine;
|
||||
if (!findinmem(pszFirstRenameLine,szRenameLine,l))
|
||||
char *pszFirstRenameLine = pszRenameSecInFile+10;
|
||||
char *pszNextSec = findinmem(pszFirstRenameLine,"\n[",-1);
|
||||
if (pszNextSec)
|
||||
{
|
||||
int l=dwFileSize - (pszNextSec - pszWinInit);
|
||||
void* data=(void*)my_alloc(l);
|
||||
mini_memcpy(data, pszFirstRenameLine, l);
|
||||
mini_memcpy(pszFirstRenameLine + cchRenameLine, data, l);
|
||||
mini_memcpy(data, pszNextSec, l);
|
||||
mini_memcpy(pszNextSec + cchRenameLine, data, l);
|
||||
GlobalFree((HGLOBAL)data);
|
||||
|
||||
dwRenameLinePos = pszFirstRenameLine - pszWinInit;
|
||||
do_write++;
|
||||
dwRenameLinePos = pszNextSec - pszWinInit;
|
||||
}
|
||||
// rename section is last, stick item at end of file
|
||||
else dwRenameLinePos = dwFileSize;
|
||||
}
|
||||
|
||||
if (do_write)
|
||||
{
|
||||
mini_memcpy(&pszWinInit[dwRenameLinePos], szRenameLine,cchRenameLine);
|
||||
dwFileSize += cchRenameLine;
|
||||
}
|
||||
mini_memcpy(&pszWinInit[dwRenameLinePos], szRenameLine,cchRenameLine);
|
||||
dwFileSize += cchRenameLine;
|
||||
|
||||
UnmapViewOfFile(pszWinInit);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue