Adapting CHAR4_TO_DWORD-style constructions. No change in exehead.
git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6054 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
parent
759ae312b5
commit
408a5d5169
5 changed files with 26 additions and 38 deletions
|
@ -4,16 +4,6 @@
|
||||||
|
|
||||||
// Unicode support added by Jim Park -- 08/02/2007
|
// Unicode support added by Jim Park -- 08/02/2007
|
||||||
|
|
||||||
// Turn a pair of chars into a word
|
|
||||||
// Turn four chars into a dword
|
|
||||||
#ifdef __BIG_ENDIAN__ // Not very likely, but, still...
|
|
||||||
#define CHAR2_TO_WORD(a,b) (((WORD)(b))|((a)<<8))
|
|
||||||
#define CHAR4_TO_DWORD(a,b,c,d) (((DWORD)CHAR2_TO_WORD(c,d))|(CHAR2_TO_WORD(a,b)<<16))
|
|
||||||
#else
|
|
||||||
#define CHAR2_TO_WORD(a,b) (((WORD)(a))|((b)<<8))
|
|
||||||
#define CHAR4_TO_DWORD(a,b,c,d) (((DWORD)CHAR2_TO_WORD(a,b))|(CHAR2_TO_WORD(c,d)<<16))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
HINSTANCE hInstance;
|
HINSTANCE hInstance;
|
||||||
HWND hwBanner;
|
HWND hwBanner;
|
||||||
HANDLE hThread;
|
HANDLE hThread;
|
||||||
|
|
|
@ -48,16 +48,6 @@ TCHAR *WINAPI STRDUP(const TCHAR *c)
|
||||||
return lstrcpy(t,c);
|
return lstrcpy(t,c);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Turn a pair of chars into a word
|
|
||||||
// Turn four chars into a dword
|
|
||||||
#ifdef __BIG_ENDIAN__ // Not very likely, but, still...
|
|
||||||
#define CHAR2_TO_WORD(a,b) (((WORD)(b))|((a)<<8))
|
|
||||||
#define CHAR4_TO_DWORD(a,b,c,d) (((DWORD)CHAR2_TO_WORD(c,d))|(CHAR2_TO_WORD(a,b)<<16))
|
|
||||||
#else
|
|
||||||
#define CHAR2_TO_WORD(a,b) (((WORD)(a))|((b)<<8))
|
|
||||||
#define CHAR4_TO_DWORD(a,b,c,d) (((DWORD)CHAR2_TO_WORD(a,b))|(CHAR2_TO_WORD(c,d)<<16))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Field types
|
// Field types
|
||||||
// NB - the order of this list is important - see below
|
// NB - the order of this list is important - see below
|
||||||
|
|
||||||
|
|
|
@ -75,16 +75,6 @@ BOOL WINAPI DllMain(HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved) {
|
||||||
#define TAB_REPLACE _T(" ")
|
#define TAB_REPLACE _T(" ")
|
||||||
#define TAB_REPLACE_SIZE (sizeof(TAB_REPLACE)-1)
|
#define TAB_REPLACE_SIZE (sizeof(TAB_REPLACE)-1)
|
||||||
|
|
||||||
// Turn a pair of chars into a word
|
|
||||||
// Turn four chars into a dword
|
|
||||||
#ifdef __BIG_ENDIAN__ // Not very likely, but, still...
|
|
||||||
#define CHAR2_TO_WORD(a,b) (((WORD)(b))|((a)<<8))
|
|
||||||
#define CHAR4_TO_DWORD(a,b,c,d) (((DWORD)CHAR2_TO_WORD(c,d))|(CHAR2_TO_WORD(a,b)<<16))
|
|
||||||
#else
|
|
||||||
#define CHAR2_TO_WORD(a,b) (((WORD)(a))|((b)<<8))
|
|
||||||
#define CHAR4_TO_DWORD(a,b,c,d) (((DWORD)CHAR2_TO_WORD(a,b))|(CHAR2_TO_WORD(c,d)<<16))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
BOOL IsWOW64() {
|
BOOL IsWOW64() {
|
||||||
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
|
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
|
||||||
BOOL wow64;
|
BOOL wow64;
|
||||||
|
|
|
@ -153,11 +153,11 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPTSTR lpszCmdPara
|
||||||
cl_flags |= FH_FLAGS_SILENT;
|
cl_flags |= FH_FLAGS_SILENT;
|
||||||
#endif//NSIS_CONFIG_SILENT_SUPPORT && NSIS_CONFIG_VISIBLE_SUPPORT
|
#endif//NSIS_CONFIG_SILENT_SUPPORT && NSIS_CONFIG_VISIBLE_SUPPORT
|
||||||
#ifdef NSIS_CONFIG_CRC_SUPPORT
|
#ifdef NSIS_CONFIG_CRC_SUPPORT
|
||||||
if (*(LPDWORD)cmdline == CHAR4_TO_DWORD(_T('N'),_T('C'),_T('R'),_T('C')) && END_OF_ARG(cmdline[4]))
|
if (CMP4CHAR(cmdline, _T("NCRC")) && END_OF_ARG(cmdline[4]))
|
||||||
cl_flags |= FH_FLAGS_NO_CRC;
|
cl_flags |= FH_FLAGS_NO_CRC;
|
||||||
#endif//NSIS_CONFIG_CRC_SUPPORT
|
#endif//NSIS_CONFIG_CRC_SUPPORT
|
||||||
|
|
||||||
if (*(LPDWORD)(cmdline-2) == CHAR4_TO_DWORD(_T(' '), _T('/'), _T('D'),_T('=')))
|
if (CMP4CHAR(cmdline-2, _T(" /D=")))
|
||||||
{
|
{
|
||||||
*(LPDWORD)(cmdline-2)=0; // keep this from being passed to uninstaller if necessary
|
*(LPDWORD)(cmdline-2)=0; // keep this from being passed to uninstaller if necessary
|
||||||
mystrcpy(state_install_directory,cmdline+2);
|
mystrcpy(state_install_directory,cmdline+2);
|
||||||
|
@ -194,7 +194,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPTSTR lpszCmdPara
|
||||||
|
|
||||||
// state_command_line has state_install_directory right after it in memory, so reading
|
// state_command_line has state_install_directory right after it in memory, so reading
|
||||||
// a bit over state_command_line won't do any harm
|
// a bit over state_command_line won't do any harm
|
||||||
while (p >= state_command_line && *(LPDWORD)p != CHAR4_TO_DWORD(_T(' '), _T('_'), _T('?'), _T('='))) p--;
|
while (p >= state_command_line && !CMP4CHAR(p, _T(" _?="))) p--;
|
||||||
|
|
||||||
m_Err = _LANG_UNINSTINITERROR;
|
m_Err = _LANG_UNINSTINITERROR;
|
||||||
|
|
||||||
|
@ -231,7 +231,7 @@ int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPTSTR lpszCmdPara
|
||||||
mystrcpy(state_install_directory,state_exe_directory);
|
mystrcpy(state_install_directory,state_exe_directory);
|
||||||
|
|
||||||
mystrcpy(g_usrvars[0], realcmds);
|
mystrcpy(g_usrvars[0], realcmds);
|
||||||
*(LPWORD)g_usrvars[1] = CHAR2_TO_WORD(_T('A'),0);
|
SET2CHAR(g_usrvars[1], _T("A\0"));
|
||||||
|
|
||||||
for (x = 0; x < 26; x ++)
|
for (x = 0; x < 26; x ++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -139,11 +139,29 @@ void * NSISCALL NSISGetProcAddress(HANDLE dllHandle, TCHAR* funcName);
|
||||||
// Turn a pair of chars into a word
|
// Turn a pair of chars into a word
|
||||||
// Turn four chars into a dword
|
// Turn four chars into a dword
|
||||||
#ifdef __BIG_ENDIAN__ // Not very likely, but, still...
|
#ifdef __BIG_ENDIAN__ // Not very likely, but, still...
|
||||||
#define CHAR2_TO_WORD(a,b) (((WORD)(b))|((a)<<8))
|
#ifdef _UNICODE
|
||||||
#define CHAR4_TO_DWORD(a,b,c,d) (((DWORD)CHAR2_TO_WORD(c,d))|(CHAR2_TO_WORD(a,b)<<16))
|
#ifdef _NSIS_NO_INT64_SHR
|
||||||
|
#define CMP4CHAR(mem, const4) ((((LPDWORD)(mem))[0] == (const4[3]|const4[2]<<16)) && (((LPDWORD)(mem))[1] == (const4[1]|const4[0]<<16)))
|
||||||
#else
|
#else
|
||||||
#define CHAR2_TO_WORD(a,b) (((WORD)(a))|((b)<<8))
|
#define CMP4CHAR(mem, const4) (*(PDWORD64)(mem) == (const4[3]|const4[2]<<16|(DWORD64)const4[1]<<32|(DWORD64)const4[0]<<48))
|
||||||
#define CHAR4_TO_DWORD(a,b,c,d) (((DWORD)CHAR2_TO_WORD(a,b))|(CHAR2_TO_WORD(c,d)<<16))
|
#endif
|
||||||
|
#define SET2CHAR(mem, const2) (*(LPDWORD)(mem) = (const2[1]|const2[0]<<16))
|
||||||
|
#else
|
||||||
|
#define CMP4CHAR(mem, const4) (*(LPDWORD)(mem) == (const4[3]|const4[2]<<8|const4[1]<<16|const4[0]<<24))
|
||||||
|
#define SET2CHAR(mem, const2) (*(LPWORD)(mem) = (const2[1]|const2[0]<<8))
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#ifdef _UNICODE
|
||||||
|
#ifdef _NSIS_NO_INT64_SHR
|
||||||
|
#define CMP4CHAR(mem, const4) ((((LPDWORD)(mem))[0] == (const4[0]|const4[1]<<16)) && (((LPDWORD)(mem))[1] == (const4[2]|const4[3]<<16)))
|
||||||
|
#else
|
||||||
|
#define CMP4CHAR(mem, const4) (*(PDWORD64)(mem) == (const4[0]|const4[1]<<16|(DWORD64)const4[2]<<32|(DWORD64)const4[3]<<48))
|
||||||
|
#endif
|
||||||
|
#define SET2CHAR(mem, const2) (*(LPDWORD)(mem) = (const2[0]|const2[1]<<16))
|
||||||
|
#else
|
||||||
|
#define CMP4CHAR(mem, const4) (*(LPDWORD)(mem) == (const4[0]|const4[1]<<8|const4[2]<<16|const4[3]<<24))
|
||||||
|
#define SET2CHAR(mem, const2) (*(LPWORD)(mem) = (const2[0]|const2[1]<<8))
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif//!___NSIS_UTIL_H___
|
#endif//!___NSIS_UTIL_H___
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue