Jim Park's Unicode NSIS merging - Step 1 : switch to TCHARs where relevant.

Compiler output is identical before & after this step

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/branches/wizou@6036 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
wizou 2010-03-24 17:22:56 +00:00
parent 4e48722b63
commit 752d7d239a
209 changed files with 9698 additions and 7658 deletions

View file

@ -12,6 +12,8 @@
*
* This software is provided 'as-is', without any express or implied
* warranty.
*
* Unicode support by Jim Park -- 08/13/2007
*/
#include "../Platform.h"
@ -27,6 +29,7 @@
#include "lang.h"
#include "resource.h"
#include "api.h"
#include "../tchar.h"
#define EXEC_ERROR 0x7FFFFFFF
@ -37,7 +40,7 @@ HWND g_SectionHack;
#ifdef NSIS_SUPPORT_STACK
typedef struct _stack_t {
struct _stack_t *next;
char text[NSIS_MAX_STRLEN];
TCHAR text[NSIS_MAX_STRLEN];
} stack_t;
static stack_t *g_st;
@ -59,6 +62,11 @@ HRESULT g_hres;
static int NSISCALL ExecuteEntry(entry *entry_);
/**
* If v is negative, then the address to resolve is actually
* stored in the global user variables. Convert the value
* to integer and return.
*/
int NSISCALL resolveaddr(int v)
{
if (v < 0)
@ -107,7 +115,7 @@ int NSISCALL ExecuteCallbackFunction(int num)
#endif
static char bufs[5][NSIS_MAX_STRLEN];
static TCHAR bufs[5][NSIS_MAX_STRLEN];
static int *parms;
void NSISCALL update_status_text_buf1(int strtab)
@ -123,10 +131,14 @@ static int NSISCALL GetIntFromParm(int id_)
// NB - USE CAUTION when rearranging code to make use of the new return value of
// this function - be sure the parm being accessed is not modified before the call.
// Use a negative number to get the string validated as a file name
static char * NSISCALL GetStringFromParm(int id_)
// Note: Calling GetNSISString has the side effect that the buffer holding
// the string to expand gets modified.
// When calling this function with numbers like 0x13, it means create the string
// from the string ID found in entry.offset[3] and put it into bufs[0].
static TCHAR * NSISCALL GetStringFromParm(int id_)
{
int id = id_ < 0 ? -id_ : id_;
char *result = GetNSISString(bufs[id >> 4], parms[id & 0xF]);
TCHAR *result = GetNSISString(bufs[id >> 4], parms[id & 0xF]);
if (id_ < 0) validate_filename(result);
return result;
}
@ -145,7 +157,7 @@ static LONG NSISCALL myRegDeleteKeyEx(HKEY thiskey, LPCTSTR lpSubKey, int onlyif
if (retval==ERROR_SUCCESS)
{
// NB - don't change this to static (recursive function)
char buffer[MAX_PATH+1];
TCHAR buffer[MAX_PATH+1];
while (RegEnumKey(key,0,buffer,MAX_PATH+1)==ERROR_SUCCESS)
{
if (onlyifempty)
@ -157,9 +169,9 @@ static LONG NSISCALL myRegDeleteKeyEx(HKEY thiskey, LPCTSTR lpSubKey, int onlyif
}
RegCloseKey(key);
{
typedef LONG (WINAPI * RegDeleteKeyExAPtr)(HKEY, LPCTSTR, REGSAM, DWORD);
RegDeleteKeyExAPtr RDKE = (RegDeleteKeyExAPtr)
myGetProcAddress(MGA_RegDeleteKeyExA);
typedef LONG (WINAPI * RegDeleteKeyExPtr)(HKEY, LPCTSTR, REGSAM, DWORD);
RegDeleteKeyExPtr RDKE = (RegDeleteKeyExPtr)
myGetProcAddress(MGA_RegDeleteKeyEx);
if (RDKE)
retval=RDKE(thiskey,lpSubKey,AlterRegistrySAM(0),0);
@ -195,14 +207,14 @@ static HKEY NSISCALL myRegOpenKey(REGSAM samDesired)
// otherwise, returns new_position+1
static int NSISCALL ExecuteEntry(entry *entry_)
{
char *buf0 = bufs[0];
char *buf1 = bufs[1];
char *buf2 = bufs[2];
char *buf3 = bufs[3];
TCHAR *buf0 = bufs[0];
TCHAR *buf1 = bufs[1];
TCHAR *buf2 = bufs[2];
TCHAR *buf3 = bufs[3];
//char *buf4 = bufs[4];
char *var0;
char *var1;
TCHAR *var0;
TCHAR *var1;
//char *var2;
//char *var3;
//char *var4;
@ -239,11 +251,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
switch (which)
{
case EW_NOP:
log_printf2("Jump: %d",parm0);
log_printf2(_T("Jump: %d"),parm0);
return parm0;
case EW_ABORT:
{
log_printf2("Aborting: \"%s\"",GetStringFromParm(0x00));
log_printf2(_T("Aborting: \"%s\""),GetStringFromParm(0x00));
update_status_text(parm0,0);
}
return EXEC_ERROR;
@ -254,23 +266,23 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_CALL:
{
int v=resolveaddr(parm0)-1; // address is -1, since we encode it as +1
log_printf2("Call: %d",v);
log_printf2(_T("Call: %d"),v);
return ExecuteCodeSegment(v,NULL);
}
case EW_UPDATETEXT:
log_printf2("detailprint: %s",GetStringFromParm(0x00));
log_printf2(_T("detailprint: %s"),GetStringFromParm(0x00));
update_status_text(parm0,0);
break;
case EW_SLEEP:
{
int x=GetIntFromParm(0);
log_printf2("Sleep(%d)",x);
log_printf2(_T("Sleep(%d)"),x);
Sleep(max(x,1));
}
break;
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
case EW_BRINGTOFRONT:
log_printf("BringToFront");
log_printf(_T("BringToFront"));
SetForegroundWindow(g_hwnd);
break;
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
@ -302,44 +314,44 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#endif//NSIS_CONFIG_VISIBLE_SUPPORT
case EW_SETFILEATTRIBUTES:
{
char *buf1=GetStringFromParm(-0x10);
log_printf3("SetFileAttributes: \"%s\":%08X",buf1,parm1);
TCHAR *buf1=GetStringFromParm(-0x10);
log_printf3(_T("SetFileAttributes: \"%s\":%08X"),buf1,parm1);
if (!SetFileAttributes(buf1,parm1))
{
exec_error++;
log_printf("SetFileAttributes failed.");
log_printf(_T("SetFileAttributes failed."));
}
}
break;
case EW_CREATEDIR: {
char *buf1=GetStringFromParm(-0x10);
log_printf3("CreateDirectory: \"%s\" (%d)",buf1,parm1);
TCHAR *buf1=GetStringFromParm(-0x10);
log_printf3(_T("CreateDirectory: \"%s\" (%d)"),buf1,parm1);
{
char *p = skip_root(buf1);
char c = 'c';
TCHAR *p = skip_root(buf1);
TCHAR c = _T('c');
if (p)
{
while (c)
{
p = findchar(p, '\\');
p = findchar(p, _T('\\'));
c = *p;
*p = 0;
if (!CreateDirectory(buf1, NULL))
{
if (GetLastError() != ERROR_ALREADY_EXISTS)
{
log_printf3("CreateDirectory: can't create \"%s\" (err=%d)",buf1,GetLastError());
{
log_printf3(_T("CreateDirectory: can't create \"%s\" (err=%d)"),buf1,GetLastError());
exec_error++;
}
else if ((GetFileAttributes(buf1) & FILE_ATTRIBUTE_DIRECTORY) == 0)
{
log_printf2("CreateDirectory: can't create \"%s\" - a file already exists",buf1);
log_printf2(_T("CreateDirectory: can't create \"%s\" - a file already exists"),buf1);
exec_error++;
}
}
else
{
log_printf2("CreateDirectory: \"%s\" created",buf1);
log_printf2(_T("CreateDirectory: \"%s\" created"),buf1);
}
*p++ = c;
}
@ -356,22 +368,22 @@ static int NSISCALL ExecuteEntry(entry *entry_)
break;
case EW_IFFILEEXISTS:
{
char *buf0=GetStringFromParm(0x00);
TCHAR *buf0=GetStringFromParm(0x00);
if (file_exists(buf0))
{
log_printf3("IfFileExists: file \"%s\" exists, jumping %d",buf0,parm1);
log_printf3(_T("IfFileExists: file \"%s\" exists, jumping %d"),buf0,parm1);
return parm1;
}
log_printf3("IfFileExists: file \"%s\" does not exist, jumping %d",buf0,parm2);
log_printf3(_T("IfFileExists: file \"%s\" does not exist, jumping %d"),buf0,parm2);
}
return parm2;
#ifdef NSIS_SUPPORT_RENAME
case EW_RENAME:
{
char *buf3=GetStringFromParm(-0x30);
char *buf2=GetStringFromParm(-0x21);
char *buf1=GetStringFromParm(0x13);
log_printf2("Rename: %s",buf1);
TCHAR *buf3=GetStringFromParm(-0x30);
TCHAR *buf2=GetStringFromParm(-0x21);
TCHAR *buf1=GetStringFromParm(0x13);
log_printf2(_T("Rename: %s"),buf1);
if (MoveFile(buf3,buf2))
{
update_status_text_buf1(LANG_RENAME);
@ -383,13 +395,13 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
MoveFileOnReboot(buf3,buf2);
update_status_text_buf1(LANG_RENAMEONREBOOT);
log_printf2("Rename on reboot: %s",buf1);
log_printf2(_T("Rename on reboot: %s"),buf1);
}
else
#endif
{
exec_error++;
log_printf2("Rename failed: %s",buf1);
log_printf2(_T("Rename failed: %s"),buf1);
}
}
}
@ -398,9 +410,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_FNUTIL
case EW_GETFULLPATHNAME:
{
char *fp;
char *p=var1;
char *buf0=GetStringFromParm(0x00);
TCHAR *fp;
TCHAR *p=var1;
TCHAR *buf0=GetStringFromParm(0x00);
if (!GetFullPathName(buf0,NSIS_MAX_STRLEN,p,&fp))
{
exec_error++;
@ -424,9 +436,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
break;
case EW_SEARCHPATH:
{
char *fp;
char *p=var0;
char *buf0=GetStringFromParm(-0x01);
TCHAR *fp;
TCHAR *p=var0;
TCHAR *buf0=GetStringFromParm(-0x01);
if (!SearchPath(NULL,buf0,NULL,NSIS_MAX_STRLEN,p,&fp))
{
exec_error++;
@ -436,7 +448,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
break;
case EW_GETTEMPFILENAME:
{
char *textout=var0;
TCHAR *textout=var0;
if (!my_GetTempFileName(textout, GetStringFromParm(-0x11)))
exec_error++;
}
@ -447,10 +459,10 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
HANDLE hOut;
int ret;
char *buf3 = GetStringFromParm(0x31);
TCHAR *buf3 = GetStringFromParm(0x31);
int overwriteflag = parm0 & 7;
log_printf4("File: overwriteflag=%d, allowskipfilesflag=%d, name=\"%s\"",overwriteflag,(parm0>>3)&MB_ABORTRETRYIGNORE,buf3);
log_printf4(_T("File: overwriteflag=%d, allowskipfilesflag=%d, name=\"%s\""),overwriteflag,(parm0>>3)&MB_ABORTRETRYIGNORE,buf3);
if (validpathspec(buf3))
{
mystrcpy(buf0,buf3);
@ -481,10 +493,10 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
update_status_text(LANG_SKIPPED,buf3);
if (overwriteflag==2) exec_error++;
log_printf3("File: skipped: \"%s\" (overwriteflag=%d)",buf0,overwriteflag);
log_printf3(_T("File: skipped: \"%s\" (overwriteflag=%d)"),buf0,overwriteflag);
break;
}
log_printf2("File: error creating \"%s\"",buf0);
log_printf2(_T("File: error creating \"%s\""),buf0);
mystrcpy(buf2,g_usrvars[0]); // save $0
mystrcpy(g_usrvars[0],buf0); // copy file name to $0
@ -495,14 +507,14 @@ static int NSISCALL ExecuteEntry(entry *entry_)
switch (my_MessageBox(buf1, parm0>>3))
{
case IDRETRY:
log_printf("File: error, user retry");
log_printf(_T("File: error, user retry"));
goto _tryagain;
case IDIGNORE:
log_printf("File: error, user cancel");
log_printf(_T("File: error, user cancel"));
g_exec_flags.exec_error++;
return 0;
default:
log_printf("File: error, user abort");
log_printf(_T("File: error, user abort"));
update_status_text(LANG_CANTWRITE,buf0);
return EXEC_ERROR;
}
@ -515,7 +527,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
g_exec_flags.status_update--;
}
log_printf3("File: wrote %d to \"%s\"",ret,buf0);
log_printf3(_T("File: wrote %d to \"%s\""),ret,buf0);
if (parm3 != 0xffffffff || parm4 != 0xffffffff)
SetFileTime(hOut,(FILETIME*)(lent.offsets+3),NULL,(FILETIME*)(lent.offsets+3));
@ -533,7 +545,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
GetNSISString(buf0,LANG_ERRORDECOMPRESSING);
}
log_printf2("%s",buf0);
log_printf2(_T("%s"),buf0);
my_MessageBox(buf0,MB_OK|MB_ICONSTOP|(IDOK<<21));
return EXEC_ERROR;
}
@ -543,8 +555,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_DELETE
case EW_DELETEFILE:
{
char *buf0=GetStringFromParm(0x00);
log_printf2("Delete: \"%s\"",buf0);
TCHAR *buf0=GetStringFromParm(0x00);
log_printf2(_T("Delete: \"%s\""),buf0);
myDelete(buf0,parm1);
}
break;
@ -553,8 +565,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_MESSAGEBOX: // MessageBox
{
int v;
char *buf3=GetStringFromParm(0x31);
log_printf3("MessageBox: %d,\"%s\"",parm0,buf3);
TCHAR *buf3=GetStringFromParm(0x31);
log_printf3(_T("MessageBox: %d,\"%s\""),parm0,buf3);
v=my_MessageBox(buf3,parm0);
if (v)
{
@ -574,8 +586,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_RMDIR
case EW_RMDIR:
{
char *buf1=GetStringFromParm(-0x10);
log_printf2("RMDir: \"%s\"",buf1);
TCHAR *buf1=GetStringFromParm(-0x10);
log_printf2(_T("RMDir: \"%s\""),buf1);
myDelete(buf1,parm1);
}
@ -584,7 +596,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_STROPTS
case EW_STRLEN:
{
char *buf0=GetStringFromParm(0x01);
TCHAR *buf0=GetStringFromParm(0x01);
myitoa(var0,mystrlen(buf0));
}
break;
@ -593,8 +605,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
int newlen=GetIntFromParm(2);
int start=GetIntFromParm(3);
int l;
char *p=var0;
char *buf0=GetStringFromParm(0x01);
TCHAR *p=var0;
TCHAR *buf0=GetStringFromParm(0x01);
*p=0;
if (!parm2 || newlen)
{
@ -617,8 +629,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
break;
case EW_STRCMP:
{
char *buf2=GetStringFromParm(0x20);
char *buf3=GetStringFromParm(0x31);
TCHAR *buf2=GetStringFromParm(0x20);
TCHAR *buf3=GetStringFromParm(0x31);
if (!parm4) {
// case insensitive
if (!lstrcmpi(buf2,buf3)) return parm2;
@ -633,8 +645,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_ENVIRONMENT
case EW_READENVSTR:
{
char *p=var0;
char *buf0=GetStringFromParm(0x01);
TCHAR *p=var0;
TCHAR *buf0=GetStringFromParm(0x01);
if (!ExpandEnvironmentStrings(buf0,p,NSIS_MAX_STRLEN)
|| (parm2 && !lstrcmp(buf0, p)))
{
@ -666,7 +678,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_INTOP:
{
int v,v2;
char *p=var0;
TCHAR *p=var0;
v=GetIntFromParm(1);
v2=GetIntFromParm(2);
switch (parm3)
@ -689,7 +701,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
}
break;
case EW_INTFMT: {
char *buf0=GetStringFromParm(0x01);
TCHAR *buf0=GetStringFromParm(0x01);
wsprintf(var0,
buf0,
GetIntFromParm(2));
@ -706,7 +718,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
while (cnt--&&s) s=s->next;
if (!s)
{
log_printf2("Exch: stack < %d elements",parm2);
log_printf2(_T("Exch: stack < %d elements"),parm2);
my_MessageBox(GetNSISStringTT(LANG_INSTCORRUPTED),MB_OK|MB_ICONSTOP|(IDOK<<21));
return EXEC_ERROR;
}
@ -718,7 +730,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
if (!s)
{
log_printf("Pop: stack empty");
log_printf(_T("Pop: stack empty"));
exec_error++;
break;
}
@ -752,12 +764,15 @@ static int NSISCALL ExecuteEntry(entry *entry_)
int msg=GetIntFromParm(2);
if (parm5>>2) exec_error += !SendMessageTimeout(hwnd,msg,b3,b4,SMTO_NORMAL,parm5>>2,(LPDWORD)&v);
// Jim Park: This sends script messages. Some messages require
// settings for Unicode. This means the user's script may need
// to change for Unicode NSIS.
else v=SendMessage(hwnd,msg,b3,b4);
}
else
{
char *buf0=GetStringFromParm(0x01);
char *buf1=GetStringFromParm(0x12);
TCHAR *buf0=GetStringFromParm(0x01);
TCHAR *buf1=GetStringFromParm(0x12);
v=(int)FindWindowEx((HWND)b3,(HWND)b4,buf0[0]?buf0:NULL,buf1[0]?buf1:NULL);
}
@ -825,7 +840,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
HWND hw=(HWND)GetIntFromParm(0);
int a=GetIntFromParm(1);
if (parm2) log_printf("HideWindow");
if (parm2) log_printf(_T("HideWindow"));
if (!parm3)
ShowWindow(hw,a);
else
@ -838,20 +853,20 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_SHELLEXEC: // this uses improvements of Andras Varga
{
int x;
char *buf0=GetStringFromParm(0x00);
char *buf3=GetStringFromParm(0x31);
char *buf2=GetStringFromParm(0x22);
char *buf1=GetStringFromParm(0x15);
TCHAR *buf0=GetStringFromParm(0x00);
TCHAR *buf3=GetStringFromParm(0x31);
TCHAR *buf2=GetStringFromParm(0x22);
TCHAR *buf1=GetStringFromParm(0x15);
update_status_text_buf1(LANG_EXECSHELL);
x=(int)ShellExecute(g_hwnd,buf0[0]?buf0:NULL,buf3,buf2[0]?buf2:NULL,state_output_directory,parm3);
if (x < 33)
{
log_printf5("ExecShell: warning: error (\"%s\": file:\"%s\" params:\"%s\")=%d",buf0,buf3,buf2,x);
log_printf5(_T("ExecShell: warning: error (\"%s\": file:\"%s\" params:\"%s\")=%d"),buf0,buf3,buf2,x);
exec_error++;
}
else
{
log_printf4("ExecShell: success (\"%s\": file:\"%s\" params:\"%s\")",buf0,buf3,buf2);
log_printf4(_T("ExecShell: success (\"%s\": file:\"%s\" params:\"%s\")"),buf0,buf3,buf2);
}
}
break;
@ -860,15 +875,15 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_EXECUTE:
{
HANDLE hProc;
char *buf0=GetStringFromParm(0x00);
log_printf2("Exec: command=\"%s\"",buf0);
TCHAR *buf0=GetStringFromParm(0x00);
log_printf2(_T("Exec: command=\"%s\""),buf0);
update_status_text(LANG_EXECUTE,buf0);
hProc=myCreateProcess(buf0);
if (hProc)
{
log_printf2("Exec: success (\"%s\")",buf0);
log_printf2(_T("Exec: success (\"%s\")"),buf0);
if (parm2)
{
DWORD lExitCode;
@ -886,7 +901,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
else
{
exec_error++;
log_printf2("Exec: failed createprocess (\"%s\")",buf0);
log_printf2(_T("Exec: failed createprocess (\"%s\")"),buf0);
}
}
break;
@ -898,9 +913,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
// also allows GetFileTime to be passed a wildcard.
{
WIN32_FIND_DATA *ffd;
char *highout=var0;
char *lowout=var1;
char *buf0=GetStringFromParm(0x02);
TCHAR *highout=var0;
TCHAR *lowout=var1;
TCHAR *buf0=GetStringFromParm(0x02);
ffd=file_exists(buf0);
if (ffd)
@ -919,12 +934,12 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_GETDLLVERSION
case EW_GETDLLVERSION:
{
char *highout=var0;
char *lowout=var1;
TCHAR *highout=var0;
TCHAR *lowout=var1;
DWORD s1;
VS_FIXEDFILEINFO *pvsf1;
DWORD d;
char *buf1=GetStringFromParm(-0x12);
TCHAR *buf1=GetStringFromParm(-0x12);
s1=GetFileVersionInfoSize(buf1,&d);
*lowout=*highout=0;
exec_error++;
@ -935,7 +950,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if (b1)
{
UINT uLen;
if (GetFileVersionInfo(buf1,0,s1,b1) && VerQueryValue(b1,"\\",(void*)&pvsf1,&uLen))
if (GetFileVersionInfo(buf1,0,s1,b1) && VerQueryValue(b1,_T("\\"),(void*)&pvsf1,&uLen))
{
myitoa(highout,pvsf1->dwFileVersionMS);
myitoa(lowout,pvsf1->dwFileVersionLS);
@ -955,8 +970,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if (SUCCEEDED(g_hres))
{
HANDLE h=NULL;
char *buf1=GetStringFromParm(-0x10);
char *buf0=GetStringFromParm(0x01);
TCHAR *buf1=GetStringFromParm(-0x10);
TCHAR *buf0=GetStringFromParm(0x01);
if (parm4)
h=GetModuleHandle(buf1);
@ -975,12 +990,12 @@ static int NSISCALL ExecuteEntry(entry *entry_)
}
else
{
void (*func)(HWND,int,char*,void*,void*);
void (*func)(HWND,int,TCHAR*,void*,void*);
func=(void*)funke;
func(
g_hwnd,
NSIS_MAX_STRLEN,
(char*)g_usrvars,
(TCHAR*)g_usrvars,
#ifdef NSIS_SUPPORT_STACK
(void*)&g_st,
#else
@ -993,20 +1008,20 @@ static int NSISCALL ExecuteEntry(entry *entry_)
else
{
update_status_text(LANG_CANNOTFINDSYMBOL,buf0);
log_printf3("Error registering DLL: %s not found in %s",buf0,buf1);
log_printf3(_T("Error registering DLL: %s not found in %s"),buf0,buf1);
}
if (!parm3 && Plugins_CanUnload(h)) FreeLibrary(h);
}
else
{
update_status_text_buf1(LANG_COULDNOTLOAD);
log_printf2("Error registering DLL: Could not load %s",buf1);
log_printf2(_T("Error registering DLL: Could not load %s"),buf1);
}
}
else
{
update_status_text_buf1(LANG_NOOLE);
log_printf("Error registering DLL: Could not initialize OLE");
log_printf(_T("Error registering DLL: Could not initialize OLE"));
}
}
break;
@ -1014,11 +1029,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_CREATESHORTCUT
case EW_CREATESHORTCUT:
{
char *buf1=GetStringFromParm(-0x10);
char *buf2=GetStringFromParm(-0x21);
char *buf0=GetStringFromParm(0x02);
char *buf3=GetStringFromParm(-0x33);
char *buf4=GetStringFromParm(0x45);
TCHAR *buf1=GetStringFromParm(-0x10);
TCHAR *buf2=GetStringFromParm(-0x21);
TCHAR *buf0=GetStringFromParm(0x02);
TCHAR *buf3=GetStringFromParm(-0x33);
TCHAR *buf4=GetStringFromParm(0x45);
HRESULT hres;
IShellLink* psl;
@ -1026,7 +1041,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if (!validpathspec(buf2))
GetStringFromParm(0x21);
log_printf8("CreateShortCut: out: \"%s\", in: \"%s %s\", icon: %s,%d, sw=%d, hk=%d",
log_printf8(_T("CreateShortCut: out: \"%s\", in: \"%s %s\", icon: %s,%d, sw=%d, hk=%d"),
buf1,buf2,buf0,buf3,parm4&0xff,(parm4&0xff00)>>8,parm4>>16);
hres = CoCreateInstance(&CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
@ -1075,10 +1090,10 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
int res;
SHFILEOPSTRUCT op;
char *buf0=GetStringFromParm(0x00);
char *buf1=GetStringFromParm(0x11);
char *buf2=GetStringFromParm(0x23); // LANG_COPYTO + buf1
log_printf3("CopyFiles \"%s\"->\"%s\"",buf0,buf1);
TCHAR *buf0=GetStringFromParm(0x00);
TCHAR *buf1=GetStringFromParm(0x11);
TCHAR *buf2=GetStringFromParm(0x23); // LANG_COPYTO + buf1
log_printf3(_T("CopyFiles \"%s\"->\"%s\""),buf0,buf1);
if (!file_exists(buf0))
{
@ -1127,9 +1142,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_INIFILES
case EW_WRITEINI:
{
char *sec=0, *key=0, *str=0;
TCHAR *sec=0, *key=0, *str=0;
#ifdef NSIS_CONFIG_LOG
mystrcpy(buf1,"<RM>");
mystrcpy(buf1,_T("<RM>"));
mystrcpy(buf2,buf1);
#endif
if (parm0)
@ -1145,18 +1160,18 @@ static int NSISCALL ExecuteEntry(entry *entry_)
str=GetStringFromParm(0x22);
}
buf3=GetStringFromParm(-0x33);
log_printf5("WriteINIStr: wrote [%s] %s=%s in %s",buf0,buf1,buf2,buf3);
log_printf5(_T("WriteINIStr: wrote [%s] %s=%s in %s"),buf0,buf1,buf2,buf3);
if (!WritePrivateProfileString(sec,key,str,buf3)) exec_error++;
}
break;
case EW_READINISTR:
{
DWORD errstr = CHAR4_TO_DWORD('!', 'N', '~', 0);
char *p=var0;
char *buf0=GetStringFromParm(0x01);
char *buf1=GetStringFromParm(0x12);
char *buf2=GetStringFromParm(-0x23);
GetPrivateProfileString(buf0,buf1,(LPCSTR)&errstr,p,NSIS_MAX_STRLEN-1,buf2);
DWORD errstr = CHAR4_TO_DWORD(_T('!'), _T('N'), _T('~'), 0);
TCHAR *p=var0;
TCHAR *buf0=GetStringFromParm(0x01);
TCHAR *buf1=GetStringFromParm(0x12);
TCHAR *buf2=GetStringFromParm(-0x23);
GetPrivateProfileString(buf0,buf1,(LPCTSTR)&errstr,p,NSIS_MAX_STRLEN-1,buf2);
if (*(DWORD*)p == errstr)
{
exec_error++;
@ -1169,22 +1184,22 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_DELREG:
{
long res=!ERROR_SUCCESS;
const char *rkn UNUSED=RegKeyHandleToName((HKEY)parm1);
const TCHAR *rkn UNUSED=RegKeyHandleToName((HKEY)parm1);
if (!parm4)
{
HKEY hKey=myRegOpenKey(KEY_SET_VALUE);
if (hKey)
{
char *buf3=GetStringFromParm(0x33);
TCHAR *buf3=GetStringFromParm(0x33);
res = RegDeleteValue(hKey,buf3);
log_printf4("DeleteRegValue: \"%s\\%s\" \"%s\"",rkn,buf2,buf3);
log_printf4(_T("DeleteRegValue: \"%s\\%s\" \"%s\""),rkn,buf2,buf3);
RegCloseKey(hKey);
}
}
else
{
char *buf2=GetStringFromParm(0x22);
log_printf3("DeleteRegKey: \"%s\\%s\"",rkn,buf2);
TCHAR *buf2=GetStringFromParm(0x22);
log_printf3(_T("DeleteRegKey: \"%s\\%s\""),rkn,buf2);
res = myRegDeleteKeyEx(GetRegRootKey(parm1),buf2,parm4&2);
}
if (res != ERROR_SUCCESS)
@ -1197,9 +1212,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
HKEY rootkey=GetRegRootKey(parm0);
int type=parm4;
int rtype=parm5;
char *buf0=GetStringFromParm(0x02);
char *buf1=GetStringFromParm(0x11);
const char *rkn UNUSED=RegKeyHandleToName(rootkey);
TCHAR *buf0=GetStringFromParm(0x02);
TCHAR *buf1=GetStringFromParm(0x11);
const TCHAR *rkn UNUSED=RegKeyHandleToName(rootkey);
exec_error++;
if (RegCreateKeyEx(rootkey,buf1,0,0,0,AlterRegistrySAM(KEY_SET_VALUE),0,&hKey,0) == ERROR_SUCCESS)
@ -1209,31 +1224,31 @@ static int NSISCALL ExecuteEntry(entry *entry_)
if (type == REG_SZ)
{
GetStringFromParm(0x23);
size = mystrlen((char *) data) + 1;
size = (mystrlen((TCHAR *) data) + 1)*sizeof(TCHAR);
if (rtype == REG_SZ)
{
log_printf5("WriteRegStr: \"%s\\%s\" \"%s\"=\"%s\"",rkn,buf1,buf0,data);
log_printf5(_T("WriteRegStr: \"%s\\%s\" \"%s\"=\"%s\""),rkn,buf1,buf0,data);
}
else
{
log_printf5("WriteRegExpandStr: \"%s\\%s\" \"%s\"=\"%s\"",rkn,buf1,buf0,data);
log_printf5(_T("WriteRegExpandStr: \"%s\\%s\" \"%s\"=\"%s\""),rkn,buf1,buf0,data);
}
}
if (type == REG_DWORD)
{
*(LPDWORD) data = GetIntFromParm(3);
size = sizeof(DWORD);
log_printf5("WriteRegDWORD: \"%s\\%s\" \"%s\"=\"0x%08x\"",rkn,buf1,buf0,*(LPDWORD) data);
log_printf5(_T("WriteRegDWORD: \"%s\\%s\" \"%s\"=\"0x%08x\""),rkn,buf1,buf0,*(LPDWORD) data);
}
if (type == REG_BINARY)
{
#ifdef NSIS_CONFIG_LOG
char binbuf[128];
TCHAR binbuf[128];
#endif
// use buf2, buf3 and buf4
size = GetCompressedDataFromDataBlockToMemory(parm3, data, 3 * NSIS_MAX_STRLEN);
size = GetCompressedDataFromDataBlockToMemory(parm3, data, (3 * NSIS_MAX_STRLEN)*sizeof(TCHAR));
LogData2Hex(binbuf, sizeof(binbuf), data, size);
log_printf5("WriteRegBin: \"%s\\%s\" \"%s\"=\"%s\"",rkn,buf1,buf0,binbuf);
log_printf5(_T("WriteRegBin: \"%s\\%s\" \"%s\"=\"%s\""),rkn,buf1,buf0,binbuf);
}
if (size >= 0 && RegSetValueEx(hKey,buf0,0,rtype,data,size) == ERROR_SUCCESS)
@ -1242,19 +1257,19 @@ static int NSISCALL ExecuteEntry(entry *entry_)
}
else
{
log_printf4("WriteReg: error writing into \"%s\\%s\" \"%s\"",rkn,buf1,buf0);
log_printf4(_T("WriteReg: error writing into \"%s\\%s\" \"%s\""),rkn,buf1,buf0);
}
RegCloseKey(hKey);
}
else { log_printf3("WriteReg: error creating key \"%s\\%s\"",rkn,buf1); }
else { log_printf3(_T("WriteReg: error creating key \"%s\\%s\""),rkn,buf1); }
}
break;
case EW_READREGSTR: // read registry string
{
HKEY hKey=myRegOpenKey(KEY_READ);
char *p=var0;
char *buf3=GetStringFromParm(0x33); // buf3 == key name
TCHAR *p=var0;
TCHAR *buf3=GetStringFromParm(0x33); // buf3 == key name
p[0]=0;
if (hKey)
{
@ -1288,7 +1303,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_REGENUM:
{
HKEY key=myRegOpenKey(KEY_READ);
char *p=var0;
TCHAR *p=var0;
int b=GetIntFromParm(3);
p[0]=0;
if (key)
@ -1311,15 +1326,15 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_FILEFUNCTIONS
case EW_FCLOSE:
{
char *t=var0;
TCHAR *t=var0;
if (*t) CloseHandle((HANDLE)myatoi(t));
}
break;
case EW_FOPEN:
{
HANDLE h;
char *handleout=var0;
char *buf1=GetStringFromParm(-0x13);
TCHAR *handleout=var0;
TCHAR *buf1=GetStringFromParm(-0x13);
h=myOpenFile(buf1,parm1,parm2);
if (h == INVALID_HANDLE_VALUE)
{
@ -1336,8 +1351,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
DWORD dw;
int l;
char *t=var0;
if (parm2)
TCHAR *t=var0;
if (parm2) // WriteByte
{
((unsigned char *)buf1)[0]=GetIntFromParm(1)&0xff;
l=1;
@ -1368,7 +1383,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
while (rpos<maxlen)
{
char c;
if (!ReadFile(h,&c,1,&dw,NULL) || dw != 1) break;
if (!ReadFile(h,&c,sizeof(c),&dw,NULL) || dw != sizeof(c)) break;
if (parm3)
{
myitoa(textout,(unsigned int)(unsigned char)c);
@ -1376,7 +1391,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
}
if (lc == '\r' || lc == '\n')
{
if (lc == c || (c != '\r' && c != '\n')) SetFilePointer(h,-1,NULL,FILE_CURRENT);
if (lc == c || (c != '\r' && c != '\n')) SetFilePointer(h,-((int)(sizeof(c))),NULL,FILE_CURRENT);
else textout[rpos++]=c;
break;
}
@ -1391,7 +1406,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
break;
case EW_FSEEK:
{
char *t=var0;
TCHAR *t=var0;
if (*t)
{
DWORD v=SetFilePointer((HANDLE)myatoi(t),GetIntFromParm(2),NULL,parm3);
@ -1407,14 +1422,14 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef NSIS_SUPPORT_FINDFIRST
case EW_FINDCLOSE:
{
char *t=var0;
TCHAR *t=var0;
if (*t) FindClose((HANDLE)myatoi(t));
}
break;
case EW_FINDNEXT:
{
char *textout=var0;
char *t=var1;
TCHAR *textout=var0;
TCHAR *t=var1;
WIN32_FIND_DATA fd;
if (*t && FindNextFile((HANDLE)myatoi(t),&fd))
{
@ -1430,11 +1445,11 @@ static int NSISCALL ExecuteEntry(entry *entry_)
break;
case EW_FINDFIRST:
{
char *textout=var0;
char *handleout=var1;
TCHAR *textout=var0;
TCHAR *handleout=var1;
HANDLE h;
WIN32_FIND_DATA fd;
char *buf0=GetStringFromParm(0x02);
TCHAR *buf0=GetStringFromParm(0x02);
h=FindFirstFile(buf0,&fd);
if (h == INVALID_HANDLE_VALUE)
{
@ -1455,7 +1470,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
{
int ret=-666;
HANDLE hFile;
char *buf1=GetStringFromParm(-0x10);
TCHAR *buf1=GetStringFromParm(-0x10);
if (!validpathspec(buf1))
GetStringFromParm(-0x13);
@ -1473,6 +1488,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
SetSelfFilePointer(0);
ReadSelfFile((char*)filebuf,filehdrsize);
{
// parm1 = uninstdata_offset
// parm2 = m_unicon_size
unsigned char* seeker;
unsigned char* unicon_data = seeker = (unsigned char*)GlobalAlloc(GPTR,parm2);
if (unicon_data) {
@ -1495,7 +1512,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
}
CloseHandle(hFile);
}
log_printf3("created uninstaller: %d, \"%s\"",ret,buf1);
log_printf3(_T("created uninstaller: %d, \"%s\""),ret,buf1);
{
int str = LANG_CREATEDUNINST;
if (ret < 0)
@ -1513,9 +1530,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
case EW_LOG:
if (parm0)
{
log_printf2("settings logging to %d",parm1);
log_printf2(_T("settings logging to %d"),parm1);
log_dolog=parm1;
log_printf2("logging set to %d",parm1);
log_printf2(_T("logging set to %d"),parm1);
#if !defined(NSIS_CONFIG_LOG_ODS) && !defined(NSIS_CONFIG_LOG_STDOUT)
if (parm1)
build_g_logfile();
@ -1525,8 +1542,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
}
else
{
char *buf0=GetStringFromParm(0x01);
log_printf2("%s",buf0);
TCHAR *buf0=GetStringFromParm(0x01);
log_printf2(_T("%s"),buf0);
}
break;
#endif//NSIS_CONFIG_LOG