Use myWriteFile helper function in exehead

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@6628 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
anders_k 2015-10-31 16:27:34 +00:00
parent 1c1d1d5e12
commit 252adb2f39
4 changed files with 27 additions and 28 deletions

View file

@ -1367,7 +1367,6 @@ static int NSISCALL ExecuteEntry(entry *entry_)
// Jim Park/Wizou: in Unicode version of NSIS, EW_FPUTS still deals with ANSI files (conversion is done). We add EW_FPUTWS to deal with Unicode files.
#endif
{
DWORD dw;
int l; // number of bytes to write
TCHAR *t=var0;
const int writeCodPt = parm2, ansi = EW_FPUTS == which;
@ -1395,7 +1394,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
#ifdef _UNICODE
if ((ansi | writeCodPt) || !parm3 || SUCCEEDED(UTF16LEBOM(hFile,(INT_PTR)hFile)))
#endif
if (WriteFile(hFile,buf1,l,&dw,NULL))
if (myWriteFile(hFile,buf1,l))
break; // Success
}
exec_error++;
@ -1549,7 +1548,6 @@ static int NSISCALL ExecuteEntry(entry *entry_)
filebuf=(unsigned char *)GlobalAlloc(GPTR,filehdrsize);
if (filebuf)
{
DWORD lout;
SetSelfFilePointer(0);
ReadSelfFile((char*)filebuf,filehdrsize);
{
@ -1571,7 +1569,7 @@ static int NSISCALL ExecuteEntry(entry *entry_)
GlobalFree(unicon_data);
}
}
WriteFile(hFile,(char*)filebuf,filehdrsize,&lout,NULL);
myWriteFile(hFile,(char*)filebuf,filehdrsize);
GlobalFree(filebuf);
ret=GetCompressedDataFromDataBlock(-1,hFile);
}

View file

@ -430,8 +430,7 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, unsigned char *outbuf, int o
if (!outbuf)
{
DWORD r;
if (!WriteFile(hFileOut,outbuffer,u,&r,NULL) || (int)r != u) return -2;
if (!myWriteFile(hFileOut,outbuffer,u)) return -2;
retval+=u;
}
else
@ -452,9 +451,8 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, unsigned char *outbuf, int o
while (input_len > 0)
{
DWORD l=min(input_len,outbuffer_len);
DWORD t;
if (!ReadSelfFile((LPVOID)inbuffer,l)) return -3;
if (!WriteFile(hFileOut,inbuffer,l,&t,NULL) || l!=t) return -2;
if (!myWriteFile(hFileOut,inbuffer,l)) return -2;
retval+=l;
input_len-=l;
}
@ -498,7 +496,7 @@ static int NSISCALL __ensuredata(int amount)
g_inflate_stream.avail_in=l;
do
{
DWORD r,t;
DWORD r;
#ifdef NSIS_CONFIG_VISIBLE_SUPPORT
if (g_header)
#ifdef NSIS_CONFIG_SILENT_SUPPORT
@ -520,7 +518,7 @@ static int NSISCALL __ensuredata(int amount)
r=BUGBUG64TRUNCATE(DWORD,(UINT_PTR)g_inflate_stream.next_out)-BUGBUG64TRUNCATE(DWORD,(UINT_PTR)_outbuffer);
if (r)
{
if (!WriteFile(dbd_hFile,_outbuffer,r,&t,NULL) || r != t)
if (!myWriteFile(dbd_hFile,_outbuffer,r))
{
return -2;
}
@ -568,10 +566,9 @@ int NSISCALL _dodecomp(int offset, HANDLE hFileOut, unsigned char *outbuf, int o
{
while (input_len > 0)
{
DWORD t;
DWORD l=min(input_len,IBUFSIZE);
if (!myReadFile(dbd_hFile,(LPVOID)_inbuffer,r=l)) return -3;
if (!WriteFile(hFileOut,_inbuffer,r,&t,NULL) || t != l) return -2;
if (!myWriteFile(hFileOut,_inbuffer,r)) return -2;
retval+=r;
input_len-=r;
dbd_pos+=r;

View file

@ -452,14 +452,19 @@ TCHAR * NSISCALL my_GetTempFileName(TCHAR *buf, const TCHAR *dir)
BOOL NSISCALL myReadFile(HANDLE h, LPVOID buf, DWORD cb)
{
DWORD cbio;
BOOL r = ReadFile(h, buf, cb, &cbio, NULL);
return r && cb == cbio;
return ReadFile(h, buf, cb, &cbio, NULL) && cb == cbio;
}
BOOL NSISCALL myWriteFile(HANDLE h, const void*buf, DWORD cb)
{
DWORD cbio;
return WriteFile(h, buf, cb, &cbio, NULL) && cb == cbio;
}
// Reading skips the BOM if present, writing writes it to a empty file
HRESULT NSISCALL UTF16LEBOM(HANDLE h, INT_PTR ForWrite)
{
DWORD orgpos = SetFilePointer(h, 0, NULL, FILE_CURRENT), cbio;
DWORD orgpos = SetFilePointer(h, 0, NULL, FILE_CURRENT);
if (0 == orgpos)
{
BYTE bom[2];
@ -472,11 +477,10 @@ HRESULT NSISCALL UTF16LEBOM(HANDLE h, INT_PTR ForWrite)
if (0 == SetFilePointer(h, 0, NULL, FILE_CURRENT)) // Is the file empty?
{
static const BYTE bom16le[] = { 0xff, 0xfe };
return (WriteFile(h, bom16le, 2, &cbio, NULL) && 2 == cbio)
? S_OK : E_FAIL;
return myWriteFile(h, bom16le, 2) ? S_OK : E_FAIL;
}
}
SetFilePointer(h, 0, NULL, FILE_BEGIN); // The file may have starting with something that was not a BOM, undo the read
SetFilePointer(h, 0, NULL, FILE_BEGIN); // The file may have started with something that was not a BOM, undo the read
}
return S_FALSE;
}
@ -498,9 +502,7 @@ void RenameViaWininit(const TCHAR* prevName, const TCHAR* newName)
int cchRenameLine;
LPCSTR szRenameSec = "[Rename]\r\n"; // rename section marker
HANDLE hfile;
DWORD dwFileSize;
DWORD dwBytes;
DWORD dwRenameLinePos;
DWORD dwFileSize, dwRenameLinePos;
char *pszWinInit; // Contains the file contents of wininit.ini
int spn; // length of the short path name in TCHARs.
@ -572,7 +574,7 @@ void RenameViaWininit(const TCHAR* prevName, const TCHAR* newName)
dwFileSize += cchRenameLine;
SetFilePointer(hfile, 0, NULL, FILE_BEGIN);
WriteFile(hfile, pszWinInit, dwFileSize, &dwBytes, NULL);
myWriteFile(hfile, pszWinInit, dwFileSize);
GlobalFree(pszWinInit);
}
@ -952,9 +954,8 @@ void NSISCALL log_write(int close)
}
if (fp!=INVALID_HANDLE_VALUE)
{
DWORD d;
mystrcat(log_text,_T("\r\n"));
WriteFile(fp,log_text,mystrlen(log_text)*sizeof(TCHAR),&d,NULL);
myWriteFile(fp,log_text,mystrlen(log_text)*sizeof(TCHAR));
}
}
}
@ -1013,6 +1014,9 @@ void log_timestamp(TCHAR *buf)
void log_printf(TCHAR *format, ...)
{
#ifdef NSIS_CONFIG_LOG_STDOUT
HANDLE hStdOut;
#endif
va_list val;
va_start(val,format);
@ -1026,11 +1030,10 @@ void log_printf(TCHAR *format, ...)
OutputDebugString(log_text);
#endif
#ifdef NSIS_CONFIG_LOG_STDOUT
if (log_dolog && GetStdHandle(STD_OUTPUT_HANDLE) != INVALID_HANDLE_VALUE)
if (log_dolog && (hStdOut = GetStdHandle(STD_OUTPUT_HANDLE)) != INVALID_HANDLE_VALUE)
{
DWORD dwBytes;
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), log_text, lstrlen(log_text), &dwBytes, NULL);
WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), _T("\n"), 1, &dwBytes, NULL);
myWriteFile(hStdOut, log_text, lstrlen(log_text)); // BUGBUG: Should this be lstrlen*sizeof(TCHAR)?
myWriteFile(hStdOut, _T("\n"), 1); // BUGBUG: sizeof(TCHAR)?
}
#endif
#if !defined(NSIS_CONFIG_LOG_ODS) && !defined(NSIS_CONFIG_LOG_STDOUT)

View file

@ -44,6 +44,7 @@ TCHAR * NSISCALL mystrstr(TCHAR *a, TCHAR *b);
WIN32_FIND_DATA * NSISCALL file_exists(TCHAR *buf);
TCHAR * NSISCALL my_GetTempFileName(TCHAR *buf, const TCHAR *dir);
BOOL NSISCALL myReadFile(HANDLE h, LPVOID buf, DWORD cb);
BOOL NSISCALL myWriteFile(HANDLE h, const void*buf, DWORD cb);
HRESULT NSISCALL UTF16LEBOM(HANDLE h, INT_PTR ForWrite);
//BOOL NSISCALL my_SetWindowText(HWND hWnd, const TCHAR *val);