From acf798c33b56b53606e7f04f43f4132baf0a46ce Mon Sep 17 00:00:00 2001 From: kichik Date: Fri, 28 Nov 2003 17:57:59 +0000 Subject: [PATCH] - Made CRC checking from CD-ROM or a network drive faster - Some more optimizations git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3225 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/exehead/Ui.c | 20 +++++++++++++------- Source/exehead/fileform.c | 5 ++--- Source/exehead/util.c | 6 +++--- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/Source/exehead/Ui.c b/Source/exehead/Ui.c index 4311e913..0140d143 100644 --- a/Source/exehead/Ui.c +++ b/Source/exehead/Ui.c @@ -1125,24 +1125,28 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar { int l=1; - if (sec->flags & SF_SELECTED) l++; + // Sf_SELECTED == 1 + l += sec->flags & SF_SELECTED; + //if (sec->flags & SF_SELECTED) l++; if (sec->flags & SF_RO) l+=3; tv.item.state=INDEXTOSTATEIMAGEMASK(l); } - if (sec->flags&SF_BOLD) + //if (sec->flags&SF_BOLD) { - tv.item.stateMask|=TVIS_BOLD; - tv.item.state|=TVIS_BOLD; + // SF_BOLD << 1 == 16 == TVIS_BOLD + tv.item.stateMask|=(sec->flags&SF_BOLD)<<1; + tv.item.state|=(sec->flags&SF_BOLD)<<1; } if (sec->flags&SF_SUBSEC) { tv.item.mask|=TVIF_CHILDREN; tv.item.cChildren=1; - if (sec->flags&SF_EXPAND) - tv.item.state|=TVIS_EXPANDED; + //if (sec->flags&SF_EXPAND) + // TVIS_EXPANDED == SF_EXPAND + tv.item.state|=sec->flags&SF_EXPAND; Par = hTreeItems[x] = TreeView_InsertItem(hwndTree1,&tv); doLines=1; } @@ -1188,7 +1192,9 @@ static BOOL CALLBACK SelProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPar tvItem.mask = TVIF_STATE; tvItem.stateMask = TVIS_BOLD; tvItem.state = 0; - if (flags&SF_BOLD) tvItem.state |= TVIS_BOLD; + //if (flags&SF_BOLD) tvItem.state |= TVIS_BOLD; + // SF_BOLD << 1 == 16 == TVIS_BOLD + tvItem.state|=(flags&SF_BOLD)<<1; TreeView_SetItem(hwndTree1, &tvItem); TreeView_Expand(hwndTree1, tvItem.hItem, flags & SF_EXPAND ? TVE_EXPAND : TVE_COLLAPSE); diff --git a/Source/exehead/fileform.c b/Source/exehead/fileform.c index 1f12b628..3a5a6e99 100644 --- a/Source/exehead/fileform.c +++ b/Source/exehead/fileform.c @@ -134,9 +134,8 @@ const char * NSISCALL loadHeaders(int cl_flags) left = m_length = GetFileSize(db_hFile,NULL); while (left > 0) { - static char temp[512]; - DWORD l = left; - l = min(l, 512); + static char temp[32768]; + DWORD l = min(left, (g_filehdrsize ? 32768 : 512)); if (!ReadSelfFile(temp, l)) { #if defined(NSIS_CONFIG_CRC_SUPPORT) && defined(NSIS_CONFIG_VISIBLE_SUPPORT) diff --git a/Source/exehead/util.c b/Source/exehead/util.c index a4bfd3c0..fbe342c9 100644 --- a/Source/exehead/util.c +++ b/Source/exehead/util.c @@ -152,7 +152,7 @@ void NSISCALL trimslashtoend(char *buf) int NSISCALL validpathspec(char *ubuf) { - char dl = ubuf[0] | 0x20; // convert drive letter to lower case + char dl = ubuf[0] | 0x20; // convert alleged drive letter to lower case return ((*(WORD*)ubuf==CHAR2_TO_WORD('\\','\\')) || (dl >= 'a' && dl <= 'z' && *CharNext(ubuf)==':')); } @@ -270,7 +270,7 @@ char * NSISCALL my_GetTempFileName(char *buf, const char *dir) while (n--) { char prefix[4] = "nsa"; - prefix[2] = 'a' + (char)(GetTickCount() % 26); + prefix[2] += (char)(GetTickCount() % 26); if (GetTempFileName(dir, prefix, 0, buf)) return buf; } @@ -415,7 +415,7 @@ int NSISCALL myatoi(char *s) m=8; // base of 8 t='7'; // cap top at 7 } - if (s[0] == 'x' || s[0] == 'X') + if ((s[0] & ~0x20) == 'X') { m=16; // base of 16 s++; // advance over 'x'