Fixed bug and Unicode support in RenameViaWininit function
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6057 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
36f6645935
commit
e438c2092b
2 changed files with 24 additions and 10 deletions
|
@ -1,3 +1,5 @@
|
|||
// Unicode support by Jim Park & Olivier Marcoux
|
||||
|
||||
#include <windows.h>
|
||||
#include <tchar.h>
|
||||
|
||||
|
@ -299,7 +301,11 @@ void RenameViaWininit(const TCHAR* prevName, const TCHAR* newName)
|
|||
spn = GetShortPathName(prevName,wininit,1024);
|
||||
if (!spn || spn > 1024)
|
||||
return;
|
||||
#ifdef _UNICODE
|
||||
cchRenameLine = wsprintfA(szRenameLine, "%ls=l%s\r\n", tmpbuf, wininit);
|
||||
#else
|
||||
cchRenameLine = wsprintfA(szRenameLine, "%s=%s\r\n", tmpbuf, wininit);
|
||||
#endif
|
||||
// Get the path to the wininit.ini file.
|
||||
GetWindowsDirectory(wininit, 1024-16);
|
||||
lstrcat(wininit, _T("\\wininit.ini"));
|
||||
|
@ -332,13 +338,15 @@ void RenameViaWininit(const TCHAR* prevName, const TCHAR* newName)
|
|||
char *pszNextSec = mystrstriA(pszFirstRenameLine,"\n[");
|
||||
if (pszNextSec)
|
||||
{
|
||||
char *p = ++pszNextSec;
|
||||
while (p < pszWinInit + dwFileSize) {
|
||||
p[cchRenameLine] = *p;
|
||||
p++;
|
||||
char *p = pszWinInit + dwFileSize;
|
||||
char *pEnd = pszWinInit + dwFileSize + cchRenameLine;
|
||||
|
||||
while (p > pszNextSec)
|
||||
{
|
||||
*pEnd-- = *p--;
|
||||
}
|
||||
|
||||
dwRenameLinePos = pszNextSec - pszWinInit;
|
||||
dwRenameLinePos = pszNextSec - pszWinInit + 1; // +1 for the \n
|
||||
}
|
||||
// rename section is last, stick item at end of file
|
||||
else dwRenameLinePos = dwFileSize;
|
||||
|
|
|
@ -460,7 +460,11 @@ void RenameViaWininit(const TCHAR* prevName, const TCHAR* newName)
|
|||
spn = GetShortPathName(prevName,wininit,1024);
|
||||
if (!spn || spn > 1024)
|
||||
return;
|
||||
#ifdef _UNICODE
|
||||
cchRenameLine = wsprintfA(szRenameLine, "%ls=%ls\r\n", tmpbuf, wininit);
|
||||
#else
|
||||
cchRenameLine = wsprintfA(szRenameLine, "%s=%s\r\n", tmpbuf, wininit);
|
||||
#endif
|
||||
// Get the path to the wininit.ini file.
|
||||
GetNSISString(wininit, g_header->str_wininit);
|
||||
|
||||
|
@ -492,13 +496,15 @@ void RenameViaWininit(const TCHAR* prevName, const TCHAR* newName)
|
|||
char *pszNextSec = mystrstriA(pszFirstRenameLine,"\n[");
|
||||
if (pszNextSec)
|
||||
{
|
||||
char *p = ++pszNextSec;
|
||||
while (p < pszWinInit + dwFileSize) {
|
||||
p[cchRenameLine] = *p;
|
||||
p++;
|
||||
char *p = pszWinInit + dwFileSize;
|
||||
char *pEnd = pszWinInit + dwFileSize + cchRenameLine;
|
||||
|
||||
while (p > pszNextSec)
|
||||
{
|
||||
*pEnd-- = *p--;
|
||||
}
|
||||
|
||||
dwRenameLinePos = pszNextSec - pszWinInit;
|
||||
dwRenameLinePos = pszNextSec - pszWinInit + 1; // +1 for the \n
|
||||
}
|
||||
// rename section is last, stick item at end of file
|
||||
else dwRenameLinePos = dwFileSize;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue