diff --git a/reactos/base/shell/cmd/type.c b/reactos/base/shell/cmd/type.c index dd38a044206..38e65f8488e 100644 --- a/reactos/base/shell/cmd/type.c +++ b/reactos/base/shell/cmd/type.c @@ -35,7 +35,7 @@ INT cmd_type (LPTSTR param) { TCHAR buff[256]; HANDLE hFile, hConsoleOut; - BOOL bRet; + DWORD dwRet; INT argc,i; LPTSTR *argv; LPTSTR errmsg; @@ -99,28 +99,34 @@ INT cmd_type (LPTSTR param) continue; } - do + if (bPaging) { - bRet = FileGetString (hFile, buff, sizeof(buff) / sizeof(TCHAR)); - if(bPaging) + while (FileGetString (hFile, buff, sizeof(buff) / sizeof(TCHAR))) { - if(bRet) + if (ConOutPrintfPaging(bFirstTime, _T("%s"), buff) == 1) { - if (ConOutPrintfPaging(bFirstTime, _T("%s"), buff) == 1) - { - bCtrlBreak = FALSE; - return 0; - } + bCtrlBreak = FALSE; + CloseHandle(hFile); + freep(argv); + return 0; + } + bFirstTime = FALSE; + } + } + else + { + while (ReadFile(hFile, buff, sizeof(buff), &dwRet, NULL) && dwRet > 0) + { + WriteFile(hConsoleOut, buff, dwRet, &dwRet, NULL); + if (bCtrlBreak) + { + bCtrlBreak = FALSE; + CloseHandle(hFile); + freep(argv); + return 0; } } - else - { - if(bRet) - ConOutPrintf(_T("%s"), buff); - } - bFirstTime = FALSE; - - } while(bRet); + } CloseHandle(hFile); }