From a06de608ffe84c14066d9506258426d55c98dc0e Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Wed, 27 Jul 2005 00:05:34 +0000 Subject: [PATCH] add /P as param for Type, from PCDOS by Brandon Turner svn path=/trunk/; revision=16765 --- reactos/subsys/system/cmd/type.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/reactos/subsys/system/cmd/type.c b/reactos/subsys/system/cmd/type.c index ad96d5b6c78..bedef7dd12e 100644 --- a/reactos/subsys/system/cmd/type.c +++ b/reactos/subsys/system/cmd/type.c @@ -38,11 +38,12 @@ INT cmd_type (LPTSTR cmd, LPTSTR param) TCHAR buff[256]; HANDLE hFile, hConsoleOut; DWORD dwRead; - DWORD dwWritten; BOOL bRet; INT argc,i; LPTSTR *argv; LPTSTR errmsg; + BOOL bPaging = FALSE; + BOOL bFirstTime = TRUE; hConsoleOut=GetStdHandle (STD_OUTPUT_HANDLE); @@ -60,9 +61,17 @@ INT cmd_type (LPTSTR cmd, LPTSTR param) argv = split (param, &argc, TRUE); + for(i = 0; i < argc; i++) + { + if(*argv[i] == _T('/') && _tcslen(argv[i]) >= 2 && _totupper(argv[i][1]) == _T('P')) + { + bPaging = TRUE; + } + } + for (i = 0; i < argc; i++) { - if (_T('/') == argv[i][0]) + if (_T('/') == argv[i][0] && _totupper(argv[i][1]) != _T('P')) { LoadString(CMD_ModuleHandle, STRING_TYPE_ERROR1, szMsg, RC_STRING_MAX_SIZE); ConErrPrintf(szMsg, argv[i] + 1); @@ -90,13 +99,22 @@ INT cmd_type (LPTSTR cmd, LPTSTR param) LocalFree (errmsg); continue; } - + do { bRet = ReadFile(hFile,buff,sizeof(buff),&dwRead,NULL); - if (dwRead>0 && bRet) - WriteFile(hConsoleOut,buff,dwRead,&dwWritten,NULL); + if(bPaging) + { + if(dwRead>0 && bRet) + ConOutPrintfPaging(bFirstTime, buff); + } + else + { + if(dwRead>0 && bRet) + ConOutPrintf(buff); + } + bFirstTime = FALSE; } while(dwRead>0 && bRet);