/* * TYPE.C - type internal command. * * History: * * 07/08/1998 (John P. Price) * started. * * 07/12/98 (Rob Lake) * Changed error messages * * 27-Jul-1998 (John P Price ) * added config.h include * * 07-Jan-1999 (Eric Kohl ) * Added support for quoted arguments (type "test file.dat"). * Cleaned up. * * 19-Jan-1999 (Eric Kohl ) * Unicode and redirection ready! */ #include "config.h" #ifdef INCLUDE_CMD_TYPE #include #include #include #include "cmd.h" INT cmd_type (LPTSTR cmd, LPTSTR param) { TCHAR szBuffer[256]; HANDLE hFile; DWORD dwBytesRead; DWORD dwBytesWritten; BOOL bResult; INT args; LPTSTR *arg; if (!_tcsncmp (param, _T("/?"), 2)) { ConOutPuts (_T("Displays the contents of text files.\n\n" "TYPE [drive:][path]filename")); return 0; } if (!*param) { error_req_param_missing (); return 1; } arg = split (param, &args); if (args > 1) { error_too_many_parameters (_T("\b \b")); freep (arg); return 1; } hFile = CreateFile (arg[0], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, NULL); if (hFile == INVALID_HANDLE_VALUE) { error_sfile_not_found (param); freep (arg); return 1; } do { bResult = ReadFile (hFile, szBuffer, sizeof(szBuffer), &dwBytesRead, NULL); if (dwBytesRead) WriteFile (GetStdHandle (STD_OUTPUT_HANDLE), szBuffer, dwBytesRead, &dwBytesWritten, NULL); } while (bResult && dwBytesRead > 0); CloseHandle (hFile); freep (arg); return 0; } #endif