Win64 fixes
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6405 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
7f103f9e39
commit
942ea1d465
7 changed files with 61 additions and 53 deletions
|
@ -176,7 +176,7 @@ INT_PTR CALLBACK DialogProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam
|
||||||
{
|
{
|
||||||
g_sdata.hwnd=hwndDlg;
|
g_sdata.hwnd=hwndDlg;
|
||||||
HICON hIcon = LoadIcon(g_sdata.hInstance,MAKEINTRESOURCE(IDI_ICON));
|
HICON hIcon = LoadIcon(g_sdata.hInstance,MAKEINTRESOURCE(IDI_ICON));
|
||||||
SetClassLong(hwndDlg,GCL_HICON,(long)hIcon);
|
SetClassLongPtr(hwndDlg,GCLP_HICON,(LONG_PTR)hIcon);
|
||||||
// Altered by Darren Owen (DrO) on 29/9/2003
|
// Altered by Darren Owen (DrO) on 29/9/2003
|
||||||
// Added in receiving of mouse and key events from the richedit control
|
// Added in receiving of mouse and key events from the richedit control
|
||||||
SendMessage(GetDlgItem(hwndDlg,IDC_LOGWIN),EM_SETEVENTMASK,(WPARAM)NULL,ENM_SELCHANGE|ENM_MOUSEEVENTS|ENM_KEYEVENTS);
|
SendMessage(GetDlgItem(hwndDlg,IDC_LOGWIN),EM_SETEVENTMASK,(WPARAM)NULL,ENM_SELCHANGE|ENM_MOUSEEVENTS|ENM_KEYEVENTS);
|
||||||
|
|
|
@ -632,7 +632,7 @@ BOOL CALLBACK DlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
SetDlgItemText(hwndDlg,IDC_INSTPATH,gp_poi);
|
SetDlgItemText(hwndDlg,IDC_INSTPATH,gp_poi);
|
||||||
|
|
||||||
hIcon=LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_ICON1));
|
hIcon=LoadIcon(g_hInstance,MAKEINTRESOURCE(IDI_ICON1));
|
||||||
SetClassLong(hwndDlg,GCL_HICON,(long)hIcon);
|
SetClassLongPtr(hwndDlg,GCLP_HICON,(LONG_PTR)hIcon);
|
||||||
|
|
||||||
hFont=CreateFont(15,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,
|
hFont=CreateFont(15,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,
|
||||||
OUT_CHARACTER_PRECIS,
|
OUT_CHARACTER_PRECIS,
|
||||||
|
|
|
@ -113,7 +113,9 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
|
||||||
// mingw32 and w64-mingw32 do not define ULONG_PTR
|
// mingw32 and w64-mingw32 do not define ULONG_PTR
|
||||||
// but rather declare ULONG_PTR via typedef (see basetsd.h)
|
// but rather declare ULONG_PTR via typedef (see basetsd.h)
|
||||||
#if !defined(__MINGW32__) && !defined(ULONG_PTR)
|
#if !defined(__MINGW32__) && !defined(ULONG_PTR)
|
||||||
# define ULONG_PTR unsigned long
|
# ifndef _WIN64
|
||||||
|
# define ULONG_PTR unsigned long
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -248,6 +250,13 @@ typedef DWORDLONG ULONGLONG,*PULONGLONG;
|
||||||
# define ZeroMemory(x, y) memset(x, 0, y)
|
# define ZeroMemory(x, y) memset(x, 0, y)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef _WIN64
|
||||||
|
# ifndef GCLP_HICON
|
||||||
|
# define GCLP_HICON GCL_HICON
|
||||||
|
# define SetClassLongPtr SetClassLong
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// defines
|
// defines
|
||||||
|
|
||||||
#ifndef MEM_LARGE_PAGES
|
#ifndef MEM_LARGE_PAGES
|
||||||
|
|
|
@ -488,7 +488,7 @@ BOOL CALLBACK DialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
m_hwndOK=GetDlgItem(hwndDlg,IDOK);
|
m_hwndOK=GetDlgItem(hwndDlg,IDOK);
|
||||||
m_hwndCancel=GetDlgItem(hwndDlg,IDCANCEL);
|
m_hwndCancel=GetDlgItem(hwndDlg,IDCANCEL);
|
||||||
SetDlgItemTextFromLang(hwndDlg,IDC_VERSTR,LANG_BRANDING);
|
SetDlgItemTextFromLang(hwndDlg,IDC_VERSTR,LANG_BRANDING);
|
||||||
SetClassLong(hwndDlg,GCL_HICON,(long)g_hIcon);
|
SetClassLongPtr(hwndDlg,GCLP_HICON,(LONG_PTR)g_hIcon);
|
||||||
// use the following line instead of the above, if .rdata needs shirking
|
// use the following line instead of the above, if .rdata needs shirking
|
||||||
//SendMessage(hwndDlg,WM_SETICON,ICON_BIG,(LPARAM)g_hIcon);
|
//SendMessage(hwndDlg,WM_SETICON,ICON_BIG,(LPARAM)g_hIcon);
|
||||||
#if defined(NSIS_SUPPORT_CODECALLBACKS) && defined(NSIS_CONFIG_ENHANCEDUI_SUPPORT)
|
#if defined(NSIS_SUPPORT_CODECALLBACKS) && defined(NSIS_CONFIG_ENHANCEDUI_SUPPORT)
|
||||||
|
|
|
@ -122,10 +122,12 @@ void NSISCALL update_status_text_buf1(int strtab)
|
||||||
update_status_text(strtab, g_bufs[1]);
|
update_status_text(strtab, g_bufs[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int NSISCALL GetIntFromParm(int id_)
|
static INT_PTR NSISCALL GetIntPtrFromParm(int id_)
|
||||||
{
|
{
|
||||||
return myatoi(GetNSISStringTT(g_parms[id_]));
|
return strtoiptr(GetNSISStringTT(g_parms[id_]));
|
||||||
}
|
}
|
||||||
|
#define GetHwndFromParm(id_) ( (HWND)GetIntPtrFromParm(id_) )
|
||||||
|
#define GetIntFromParm(id_) ( (INT32)(UINT32)GetIntPtrFromParm(id_) )
|
||||||
|
|
||||||
// NB - USE CAUTION when rearranging code to make use of the new return value of
|
// 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.
|
// this function - be sure the parm being accessed is not modified before the call.
|
||||||
|
@ -685,7 +687,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
{
|
{
|
||||||
int v,v2;
|
int v,v2;
|
||||||
TCHAR *p=var0;
|
TCHAR *p=var0;
|
||||||
v=GetIntFromParm(1);
|
v=GetIntFromParm(1); // BUGBUG64: TODO: These should be INT_PTR, the script might be playing with pointers and System::Call
|
||||||
v2=GetIntFromParm(2);
|
v2=GetIntFromParm(2);
|
||||||
switch (parm3)
|
switch (parm3)
|
||||||
{
|
{
|
||||||
|
@ -710,7 +712,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
TCHAR *buf0=GetStringFromParm(0x01);
|
TCHAR *buf0=GetStringFromParm(0x01);
|
||||||
wsprintf(var0,
|
wsprintf(var0,
|
||||||
buf0,
|
buf0,
|
||||||
GetIntFromParm(2));
|
GetIntPtrFromParm(2));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#endif//NSIS_SUPPORT_INTOPTS
|
#endif//NSIS_SUPPORT_INTOPTS
|
||||||
|
@ -758,15 +760,15 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
case EW_FINDWINDOW:
|
case EW_FINDWINDOW:
|
||||||
case EW_SENDMESSAGE:
|
case EW_SENDMESSAGE:
|
||||||
{
|
{
|
||||||
int v;
|
LRESULT v;
|
||||||
int b3=GetIntFromParm(3);
|
INT_PTR b3=GetIntPtrFromParm(3);
|
||||||
int b4=GetIntFromParm(4);
|
INT_PTR b4=GetIntPtrFromParm(4);
|
||||||
if (parm5&1) b3=(int)GetStringFromParm(0x33);
|
if (parm5&1) b3=(INT_PTR)GetStringFromParm(0x33);
|
||||||
if (parm5&2) b4=(int)GetStringFromParm(0x44);
|
if (parm5&2) b4=(INT_PTR)GetStringFromParm(0x44);
|
||||||
|
|
||||||
if (which == EW_SENDMESSAGE)
|
if (which == EW_SENDMESSAGE)
|
||||||
{
|
{
|
||||||
HWND hwnd=(HWND)GetIntFromParm(1);
|
HWND hwnd=GetHwndFromParm(1);
|
||||||
int msg=GetIntFromParm(2);
|
int msg=GetIntFromParm(2);
|
||||||
|
|
||||||
if (parm5>>2) exec_error += !SendMessageTimeout(hwnd,msg,b3,b4,SMTO_NORMAL,parm5>>2,(LPDWORD)&v);
|
if (parm5>>2) exec_error += !SendMessageTimeout(hwnd,msg,b3,b4,SMTO_NORMAL,parm5>>2,(LPDWORD)&v);
|
||||||
|
@ -779,22 +781,21 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
{
|
{
|
||||||
TCHAR *buf0=GetStringFromParm(0x01);
|
TCHAR *buf0=GetStringFromParm(0x01);
|
||||||
TCHAR *buf1=GetStringFromParm(0x12);
|
TCHAR *buf1=GetStringFromParm(0x12);
|
||||||
v=(int)FindWindowEx((HWND)b3,(HWND)b4,buf0[0]?buf0:NULL,buf1[0]?buf1:NULL);
|
v=(LRESULT)FindWindowEx((HWND)b3,(HWND)b4,buf0[0]?buf0:NULL,buf1[0]?buf1:NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parm0>=0)
|
if (parm0>=0) iptrtostr(var0,v);
|
||||||
myitoa(var0,v);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EW_ISWINDOW:
|
case EW_ISWINDOW:
|
||||||
if (IsWindow((HWND)GetIntFromParm(0))) return parm1;
|
if (IsWindow(GetHwndFromParm(0))) return parm1;
|
||||||
return parm2;
|
return parm2;
|
||||||
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
|
||||||
case EW_GETDLGITEM:
|
case EW_GETDLGITEM:
|
||||||
myitoa(
|
iptrtostr(
|
||||||
var0,
|
var0,
|
||||||
(int)GetDlgItem(
|
(INT_PTR)GetDlgItem(
|
||||||
(HWND)GetIntFromParm(1),
|
GetHwndFromParm(1),
|
||||||
GetIntFromParm(2)
|
GetIntFromParm(2)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
@ -802,7 +803,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
case EW_SETCTLCOLORS:
|
case EW_SETCTLCOLORS:
|
||||||
{
|
{
|
||||||
ctlcolors *c = (ctlcolors *)(g_blocks[NB_CTLCOLORS].offset + parm1);
|
ctlcolors *c = (ctlcolors *)(g_blocks[NB_CTLCOLORS].offset + parm1);
|
||||||
SetWindowLongPtr((HWND) GetIntFromParm(0), GWLP_USERDATA, (LONG_PTR) c);
|
SetWindowLongPtr(GetHwndFromParm(0), GWLP_USERDATA, (LONG_PTR) c);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EW_SETBRANDINGIMAGE:
|
case EW_SETBRANDINGIMAGE:
|
||||||
|
@ -841,12 +842,12 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
f.lfStrikeOut=parm4&4;
|
f.lfStrikeOut=parm4&4;
|
||||||
f.lfCharSet=DEFAULT_CHARSET;
|
f.lfCharSet=DEFAULT_CHARSET;
|
||||||
GetNSISString(f.lfFaceName,parm1);
|
GetNSISString(f.lfFaceName,parm1);
|
||||||
myitoa(var0,(int)CreateFontIndirect(&f));
|
iptrtostr(var0,(INT_PTR)CreateFontIndirect(&f));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EW_SHOWWINDOW:
|
case EW_SHOWWINDOW:
|
||||||
{
|
{
|
||||||
HWND hw=(HWND)GetIntFromParm(0);
|
HWND hw=GetHwndFromParm(0);
|
||||||
int a=GetIntFromParm(1);
|
int a=GetIntFromParm(1);
|
||||||
if (parm2) log_printf(_T("HideWindow"));
|
if (parm2) log_printf(_T("HideWindow"));
|
||||||
if (!parm3)
|
if (!parm3)
|
||||||
|
@ -1077,7 +1078,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
#ifdef _UNICODE
|
#ifdef _UNICODE
|
||||||
hres = ppf->lpVtbl->Save(ppf,buf1,TRUE);
|
hres = ppf->lpVtbl->Save(ppf,buf1,TRUE);
|
||||||
#else
|
#else
|
||||||
WCHAR *wsz = (LPWSTR) buf2; // buf2...buf3 = WCHAR wsz[NSIS_MAX_STRLEN]
|
WCHAR *wsz = (LPWSTR) buf2; // buf2 + buf3 = WCHAR wsz[NSIS_MAX_STRLEN]
|
||||||
hres = E_FAIL;
|
hres = E_FAIL;
|
||||||
if (MultiByteToWideChar(CP_ACP,0,buf1,-1,wsz,NSIS_MAX_STRLEN))
|
if (MultiByteToWideChar(CP_ACP,0,buf1,-1,wsz,NSIS_MAX_STRLEN))
|
||||||
hres = ppf->lpVtbl->Save(ppf,wsz,TRUE);
|
hres = ppf->lpVtbl->Save(ppf,wsz,TRUE);
|
||||||
|
@ -1162,18 +1163,9 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
mystrcpy(buf1,_T("<RM>"));
|
mystrcpy(buf1,_T("<RM>"));
|
||||||
mystrcpy(buf2,buf1);
|
mystrcpy(buf2,buf1);
|
||||||
#endif
|
#endif
|
||||||
if (parm0)
|
if (parm0) sec=GetStringFromParm(0x00);
|
||||||
{
|
if (parm1) key=GetStringFromParm(0x11);
|
||||||
sec=GetStringFromParm(0x00);
|
if (parm4) str=GetStringFromParm(0x22);
|
||||||
}
|
|
||||||
if (parm1)
|
|
||||||
{
|
|
||||||
key=GetStringFromParm(0x11);
|
|
||||||
}
|
|
||||||
if (parm4)
|
|
||||||
{
|
|
||||||
str=GetStringFromParm(0x22);
|
|
||||||
}
|
|
||||||
buf3=GetStringFromParm(-0x33);
|
buf3=GetStringFromParm(-0x33);
|
||||||
log_printf5(_T("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++;
|
if (!WritePrivateProfileString(sec,key,str,buf3)) exec_error++;
|
||||||
|
@ -1346,7 +1338,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
case EW_FCLOSE:
|
case EW_FCLOSE:
|
||||||
{
|
{
|
||||||
TCHAR *t=var0;
|
TCHAR *t=var0;
|
||||||
if (*t) CloseHandle((HANDLE)myatoi(t));
|
if (*t) CloseHandle((HANDLE)strtoiptr(t));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EW_FOPEN:
|
case EW_FOPEN:
|
||||||
|
@ -1362,7 +1354,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
myitoa(handleout,(int)h);
|
iptrtostr(handleout,(INT_PTR)h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1393,7 +1385,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
{
|
{
|
||||||
l=mystrlen(GetStringFromParm(0x11))*sizeof(TCHAR);
|
l=mystrlen(GetStringFromParm(0x11))*sizeof(TCHAR);
|
||||||
}
|
}
|
||||||
if (!*t || !WriteFile((HANDLE)myatoi(t),buf1,l,&dw,NULL))
|
if (!*t || !WriteFile((HANDLE)strtoiptr(t),buf1,l,&dw,NULL))
|
||||||
{
|
{
|
||||||
exec_error++;
|
exec_error++;
|
||||||
}
|
}
|
||||||
|
@ -1414,7 +1406,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
if (*hptr)
|
if (*hptr)
|
||||||
{
|
{
|
||||||
TCHAR lc=0;
|
TCHAR lc=0;
|
||||||
HANDLE h=(HANDLE)myatoi(hptr);
|
HANDLE h=(HANDLE)strtoiptr(hptr);
|
||||||
while (rpos<maxlen)
|
while (rpos<maxlen)
|
||||||
{
|
{
|
||||||
TCHAR c;
|
TCHAR c;
|
||||||
|
@ -1468,7 +1460,8 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
TCHAR *t=var0;
|
TCHAR *t=var0;
|
||||||
if (*t)
|
if (*t)
|
||||||
{
|
{
|
||||||
DWORD v=SetFilePointer((HANDLE)myatoi(t),GetIntFromParm(2),NULL,parm3);
|
// TODO: Use SetFilePointerEx for > 4GB support on _WIN64
|
||||||
|
DWORD v=SetFilePointer((HANDLE)strtoiptr(t),GetIntFromParm(2),NULL,parm3);
|
||||||
|
|
||||||
if (parm1>=0)
|
if (parm1>=0)
|
||||||
{
|
{
|
||||||
|
@ -1482,7 +1475,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
case EW_FINDCLOSE:
|
case EW_FINDCLOSE:
|
||||||
{
|
{
|
||||||
TCHAR *t=var0;
|
TCHAR *t=var0;
|
||||||
if (*t) FindClose((HANDLE)myatoi(t));
|
if (*t) FindClose((HANDLE)strtoiptr(t));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EW_FINDNEXT:
|
case EW_FINDNEXT:
|
||||||
|
@ -1490,7 +1483,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
TCHAR *textout=var0;
|
TCHAR *textout=var0;
|
||||||
TCHAR *t=var1;
|
TCHAR *t=var1;
|
||||||
WIN32_FIND_DATA fd;
|
WIN32_FIND_DATA fd;
|
||||||
if (*t && FindNextFile((HANDLE)myatoi(t),&fd))
|
if (*t && FindNextFile((HANDLE)strtoiptr(t),&fd))
|
||||||
{
|
{
|
||||||
mystrcpy(textout,fd.cFileName);
|
mystrcpy(textout,fd.cFileName);
|
||||||
}
|
}
|
||||||
|
@ -1518,7 +1511,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
myitoa(handleout,(int)h);
|
iptrtostr(handleout,(INT_PTR)h);
|
||||||
mystrcpy(textout,fd.cFileName);
|
mystrcpy(textout,fd.cFileName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -603,16 +603,20 @@ void NSISCALL myRegGetStr(HKEY root, const TCHAR *sub, const TCHAR *name, TCHAR
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NSISCALL myitoa(TCHAR *s, int d)
|
void NSISCALL iptrtostr(TCHAR *s, INT_PTR d)
|
||||||
{
|
{
|
||||||
|
#ifdef _WIN64
|
||||||
|
static const TCHAR c[] = _T("%I64d");
|
||||||
|
#else
|
||||||
static const TCHAR c[] = _T("%d");
|
static const TCHAR c[] = _T("%d");
|
||||||
|
#endif
|
||||||
wsprintf(s,c,d);
|
wsprintf(s,c,d);
|
||||||
}
|
}
|
||||||
|
|
||||||
int NSISCALL myatoi(TCHAR *s)
|
INT_PTR NSISCALL strtoiptr(const TCHAR *s)
|
||||||
{
|
{
|
||||||
unsigned int v=0;
|
UINT_PTR v=0;
|
||||||
int sign=1; // sign of positive
|
INT_PTR sign=1; // sign of positive
|
||||||
TCHAR m=10; // base of 10
|
TCHAR m=10; // base of 10
|
||||||
TCHAR t=_T('9'); // cap top of numbers at 9
|
TCHAR t=_T('9'); // cap top of numbers at 9
|
||||||
|
|
||||||
|
@ -647,7 +651,7 @@ int NSISCALL myatoi(TCHAR *s)
|
||||||
v*=m;
|
v*=m;
|
||||||
v+=c;
|
v+=c;
|
||||||
}
|
}
|
||||||
return ((int)v)*sign;
|
return ((INT_PTR)v)*sign;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Straight copies of selected shell functions. Calling local functions
|
// Straight copies of selected shell functions. Calling local functions
|
||||||
|
@ -813,7 +817,7 @@ TCHAR * NSISCALL GetNSISString(TCHAR *outbuf, int strtab)
|
||||||
else if (nVarIdx == NS_VAR_CODE)
|
else if (nVarIdx == NS_VAR_CODE)
|
||||||
{
|
{
|
||||||
if (nData == 29) // $HWNDPARENT
|
if (nData == 29) // $HWNDPARENT
|
||||||
myitoa(out, (unsigned int) g_hwnd);
|
iptrtostr(out, (INT_PTR) g_hwnd);
|
||||||
else
|
else
|
||||||
mystrcpy(out, g_usrvars[nData]);
|
mystrcpy(out, g_usrvars[nData]);
|
||||||
// validate the directory name
|
// validate the directory name
|
||||||
|
|
|
@ -33,8 +33,10 @@ TCHAR * NSISCALL GetNSISString(TCHAR *outbuf, int strtab);
|
||||||
#define GetNSISTab(strtab) (strtab < 0 ? LANG_STR_TAB(strtab) : strtab)
|
#define GetNSISTab(strtab) (strtab < 0 ? LANG_STR_TAB(strtab) : strtab)
|
||||||
|
|
||||||
void NSISCALL myRegGetStr(HKEY root, const TCHAR *sub, const TCHAR *name, TCHAR *out, int x64);
|
void NSISCALL myRegGetStr(HKEY root, const TCHAR *sub, const TCHAR *name, TCHAR *out, int x64);
|
||||||
int NSISCALL myatoi(TCHAR *s);
|
#define myatoi(s) ( (int)strtoiptr(s) )
|
||||||
void NSISCALL myitoa(TCHAR *s, int d);
|
INT_PTR NSISCALL strtoiptr(const TCHAR *s);
|
||||||
|
#define myitoa iptrtostr
|
||||||
|
void NSISCALL iptrtostr(TCHAR *s, INT_PTR d);
|
||||||
TCHAR * NSISCALL mystrcpy(TCHAR *out, const TCHAR *in);
|
TCHAR * NSISCALL mystrcpy(TCHAR *out, const TCHAR *in);
|
||||||
int NSISCALL mystrlen(const TCHAR *in);
|
int NSISCALL mystrlen(const TCHAR *in);
|
||||||
TCHAR * NSISCALL mystrcat(TCHAR *out, const TCHAR *concat);
|
TCHAR * NSISCALL mystrcat(TCHAR *out, const TCHAR *concat);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue