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:
Jeffrey Morlan 2009-03-02 20:00:26 +00:00
parent 642a549191
commit eff51218fb

View file

@ -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);