80 bytes saved

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@1153 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
eccles 2002-09-22 19:05:43 +00:00
parent e350836d8d
commit ef61466ef0
4 changed files with 37 additions and 33 deletions

View file

@ -121,15 +121,16 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdParam,
if (cmdline[0] != '/') break;
cmdline++;
#define END_OF_ARG(c) (((c)|' ')==' ')
#if defined(NSIS_CONFIG_VISIBLE_SUPPORT) && defined(NSIS_CONFIG_SILENT_SUPPORT)
if (cmdline[0] == 'S' && (cmdline[1] == ' ' || !cmdline[1])) silent++;
if (cmdline[0] == 'S' && END_OF_ARG(cmdline[1])) silent++;
#endif//NSIS_CONFIG_SILENT_SUPPORT && NSIS_CONFIG_VISIBLE_SUPPORT
#ifdef NSIS_CONFIG_CRC_SUPPORT
if (*(int*)cmdline == *(int*)"NCRC" && (cmdline[4] == ' ' || !cmdline[4])) no_crc++;
if (*(DWORD*)cmdline == CHAR4_TO_DWORD('N','C','R','C') && END_OF_ARG(cmdline[4])) no_crc++;
#endif//NSIS_CONFIG_CRC_SUPPORT
if (*(short*)cmdline == *(short*)"D=")
if (*(WORD*)cmdline == CHAR2_TO_WORD('D','='))
{
cmdline[-2]=0; // keep this from being passed to uninstaller if necessary
mystrcpy(state_install_directory,cmdline+2);
@ -138,7 +139,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdParam,
}
// skip over our parm
while (*cmdline && *cmdline != ' ') cmdline=CharNext(cmdline);
while (!END_OF_ARG(*cmdline)) cmdline=CharNext(cmdline);
}
mystrcpy(g_caption,_LANG_GENERIC_ERROR);
@ -273,7 +274,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst,LPSTR lpszCmdParam,
if (g_is_uninstaller)
{
char *p=cmdline;
while (*p) p++;
while (*p) p++;
while (p >= cmdline && (p[0] != '_' || p[1] != '?' || p[2] != '=')) p--;

View file

@ -146,16 +146,15 @@ static HWND NSISCALL GetUIItem(HWND defhw, WORD def, WORD custom) {
#ifdef NSIS_CONFIG_ENHANCEDUI_SUPPORT
#define HandleStaticBkColor() _HandleStaticBkColor(uMsg, wParam, lParam)
static BOOL NSISCALL _HandleStaticBkColor(UINT uMsg, WPARAM wParam, LPARAM lParam) {
BOOL ret=0;
if (uMsg == WM_CTLCOLORSTATIC) {
COLORREF color = GetWindowLong((HWND)lParam, GWL_USERDATA);
if (color) {
LOGBRUSH b={BS_SOLID, color-1, 0};
SetBkColor((HDC)wParam, b.lbColor);
ret=(BOOL)CreateBrushIndirect(&b);
return (BOOL)CreateBrushIndirect(&b);
}
}
return ret;
return 0;
}
#else//NSIS_CONFIG_ENHANCEDUI_SUPPORT
#define HandleStaticBkColor() 0
@ -405,9 +404,7 @@ int NSISCALL ui_doinstall(void)
static char str2[]="RichEdit20A";
if (!LoadLibrary(str1))
{
((short*)str1)[3]=*(short*)"32";
//str1[6]='3';
//str1[7]='2';
*(WORD*)(str1+6) = CHAR2_TO_WORD('3','2');
LoadLibrary(str1);
}
@ -862,7 +859,7 @@ static BOOL CALLBACK DirProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
mini_memcpy(s,state_install_directory,NSIS_MAX_STRLEN);
s[sizeof(s)-1]=0;
if (s[1] == ':') s[3]=0;
else if (s[0] == '\\' && s[1] == '\\') // \\ path
else if (*(WORD*)s == CHAR2_TO_WORD('\\','\\')) // \\ path
{
addtrailingslash(s);
}
@ -1046,7 +1043,7 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
tv.item.state=INDEXTOSTATEIMAGEMASK(l);
}
if (ps_tmpbuf[0] == '!' || (ps_tmpbuf[0] == '-' && ps_tmpbuf[1] == '!'))
if (ps_tmpbuf[0] == '!' || *(WORD*)ps_tmpbuf == CHAR2_TO_WORD('-','!'))
{
tv.item.pszText++;
tv.item.stateMask|=TVIS_BOLD;
@ -1236,13 +1233,13 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar
TVITEM tv;
int l=1;
if (t->default_state & (1<<m_whichcfg))
if (t->default_state & (1<<m_whichcfg))
{
l++;
t->default_state|=DFS_SET;
}
else t->default_state&=~DFS_SET;
// this can't happen because of the above if()
//if (t->default_state & DFS_RO) l+=3;
@ -1513,8 +1510,8 @@ static BOOL CALLBACK InstProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa
// -2 to allow for CR/LF
ListView_GetItemText(insthwnd,i,0,ptr,(endPtr-2)-ptr);
while (*ptr) ptr++;
*ptr++ = '\r';
*ptr++ = '\n';
*(WORD*)ptr = CHAR2_TO_WORD('\r','\n');
ptr+=2;
}
*ptr++ = 0;
GlobalUnlock(memory);

View file

@ -121,7 +121,7 @@ char * NSISCALL scanendslash(const char *str)
int NSISCALL validpathspec(char *ubuf)
{
return ((ubuf[0]=='\\' && ubuf[1]=='\\') || (ubuf[0] && *CharNext(ubuf)==':'));
return ((*(WORD*)ubuf==CHAR2_TO_WORD('\\','\\')) || (ubuf[0] && *CharNext(ubuf)==':'));
}
int NSISCALL is_valid_instpath(char *s)
@ -129,7 +129,7 @@ int NSISCALL is_valid_instpath(char *s)
int ivp=0;
// if 8 is set, req is 0, which means rootdirs are not allowed.
int req=!(g_inst_cmnheader->misc_flags&8);
if (s[0] == '\\' && s[1] == '\\') // \\ path
if (*(WORD*)s == CHAR2_TO_WORD('\\','\\')) // \\ path
{
if (lastchar(s)!='\\') ivp++;
while (*s)
@ -144,14 +144,10 @@ int NSISCALL is_valid_instpath(char *s)
if (*s)
{
s=CharNext(s);
if (*s == ':')
if (*(WORD*)s == CHAR2_TO_WORD(':','\\'))
{
s=CharNext(s);
if (*s == '\\')
{
s=CharNext(s);
if (req || (*s && *s != '\\')) ivp++;
}
s+=2;
if (req || (*s && *s != '\\')) ivp++;
}
}
}
@ -297,8 +293,8 @@ void NSISCALL recursive_create_directory(char *directory)
while (*p == ' ') p=CharNext(p);
if (!*p) return;
tp=CharNext(p);
if (*tp == ':' && tp[1] == '\\') p=tp+2;
else if (p[0] == '\\' && p[1] == '\\')
if (*(WORD*)tp == CHAR2_TO_WORD(':','\\')) p=tp+2;
else if (*(WORD*)p == CHAR2_TO_WORD('\\','\\'))
{
int x;
for (x = 0; x < 2; x ++)
@ -399,14 +395,13 @@ int NSISCALL myatoi(char *s)
{
int c=*s++;
if (c >= '0' && c <= '9') c-='0';
else if (c >= 'a' && c <= 'f') c-='a'-10;
else if (c >= 'A' && c <= 'F') c-='A'-10;
else if ((c & ~0x20) >= 'A' && (c & ~0x20) <= 'F') c = (c & 7) + 9;
else break;
v<<=4;
v+=c;
}
}
else if (*s == '0' && s[1] <= '7' && s[1] >= '0')
else if (*s == '0' && s[1] >= '0' && s[1] <= '7')
{
s++;
for (;;)
@ -424,8 +419,9 @@ int NSISCALL myatoi(char *s)
if (*s == '-') { s++; sign++; }
for (;;)
{
int c=*s++ - '0';
if (c < 0 || c > 9) break;
int c=*s++;
if (c >= '0' && c <= '9') c-='0';
else break;
v*=10;
v+=c;
}

View file

@ -54,3 +54,13 @@ char * NSISCALL scanendslash(const char *str);
int NSISCALL is_valid_instpath(char *s);
BOOL NSISCALL MoveFileOnReboot(LPCTSTR pszExisting, LPCTSTR pszNew);
void * NSISCALL mini_memcpy(void *out, const void *in, int len);
// 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