mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 04:13:34 +00:00
Speed up batch file execution by reading a line at a time instead of a byte at a time.
svn path=/trunk/; revision=39848
This commit is contained in:
@@ -503,7 +503,6 @@ BOOL IsExistingDirectory (LPCTSTR pszPath)
|
||||
BOOL FileGetString (HANDLE hFile, LPTSTR lpBuffer, INT nBufferLength)
|
||||
{
|
||||
LPSTR lpString;
|
||||
CHAR ch;
|
||||
DWORD dwRead;
|
||||
INT len = 0;
|
||||
#ifdef _UNICODE
|
||||
@@ -511,18 +510,20 @@ BOOL FileGetString (HANDLE hFile, LPTSTR lpBuffer, INT nBufferLength)
|
||||
#else
|
||||
lpString = lpBuffer;
|
||||
#endif
|
||||
while ((--nBufferLength > 0) &&
|
||||
ReadFile(hFile, &ch, 1, &dwRead, NULL) && dwRead)
|
||||
|
||||
if (ReadFile(hFile, lpString, nBufferLength - 1, &dwRead, NULL))
|
||||
{
|
||||
lpString[len++] = ch;
|
||||
if (ch == '\n')
|
||||
/* break at new line*/
|
||||
CHAR *end = memchr(lpString, '\n', dwRead);
|
||||
len = dwRead;
|
||||
if (end)
|
||||
{
|
||||
/* break at new line*/
|
||||
break;
|
||||
len = (end - lpString) + 1;
|
||||
SetFilePointer(hFile, len - dwRead, NULL, FILE_CURRENT);
|
||||
}
|
||||
}
|
||||
|
||||
if (!dwRead && !len)
|
||||
if (!len)
|
||||
{
|
||||
#ifdef _UNICODE
|
||||
cmd_free(lpString);
|
||||
|
||||
Reference in New Issue
Block a user