VOID ErrorMessage (DWORD dwErrorCode, LPTSTR szFormat, ...) { TCHAR szMsg[RC_STRING_MAX_SIZE]; TCHAR szMessage[1024]; LPTSTR szError; va_list arg_ptr; if (dwErrorCode == ERROR_SUCCESS) return; nErrorLevel = 1; if (szFormat) { va_start (arg_ptr, szFormat); _vstprintf (szMessage, szFormat, arg_ptr); va_end (arg_ptr); } if (FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, dwErrorCode, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&szError, 0, NULL)) { ConErrPrintf (_T("%s %s\n"), szError, szMessage); if(szError) LocalFree (szError); return; } /* Fall back just in case the error is not defined */ if (szFormat) ConErrPrintf (_T("%s -- %s\n"), szMsg, szMessage); else ConErrPrintf (_T("%s\n"), szMsg); }
VOID error_syntax (LPTSTR s) { TCHAR szMsg[RC_STRING_MAX_SIZE]; LoadString(CMD_ModuleHandle, STRING_ERROR_ERROR2, szMsg, RC_STRING_MAX_SIZE); if (s) ConErrPrintf(_T("%s - %s\n"), szMsg, s); else ConErrPrintf(_T("%s.\n"), szMsg); nErrorLevel = 1; }
VOID ConOutFormatMessage (DWORD MessageId, ...) { TCHAR szMsg[RC_STRING_MAX_SIZE]; DWORD ret; LPTSTR text; va_list arg_ptr; va_start (arg_ptr, MessageId); ret = FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, MessageId, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &text, 0, &arg_ptr); va_end (arg_ptr); if(ret > 0) { ConErrPuts (text); LocalFree(text); } else { LoadString(CMD_ModuleHandle, STRING_CONSOLE_ERROR, szMsg, RC_STRING_MAX_SIZE); ConErrPrintf(szMsg); } }
VOID error_sfile_not_found (LPTSTR f) { TCHAR szMsg[RC_STRING_MAX_SIZE]; LoadString(CMD_ModuleHandle, STRING_ERROR_FILE_NOT_FOUND, szMsg, RC_STRING_MAX_SIZE); ConErrPrintf(_T("%s - %s\n"), szMsg, f); nErrorLevel = 1; }
INT CommandEchoserr (LPTSTR param) { TRACE ("CommandEchoserr: '%s'\n", debugstr_aw(param)); if (!_tcsncmp (param, _T("/?"), 2)) { ConOutResPuts(STRING_ECHO_HELP3); return 0; } ConErrPrintf (_T("%s"), param); return 0; }
int main (int argc, char **argv) { INT i; HANDLE hFind; HANDLE hConsoleIn, hConsoleOut, hFile; char buff[BUFF_SIZE]; DWORD dwRead,dwWritten; BOOL bRet; WIN32_FIND_DATA FindData; hConsoleIn = GetStdHandle(STD_INPUT_HANDLE); hConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); if (argc == 2 && _tcsncmp (argv[1], _T("/?"), 2) == 0) { ConOutPuts(_T("copy stdin to stdout and then files to stdout\n" "\n" "Y [files]\n" "\n" "files files to copy to stdout")); return 0; } /*stdin to stdout*/ do { bRet = ReadFile(hConsoleIn,buff,sizeof(buff),&dwRead,NULL); if (dwRead>0 && bRet) WriteFile(hConsoleOut,buff,dwRead,&dwWritten,NULL); } while(dwRead>0 && bRet); /*files to stdout*/ Sleep(0); for (i = 1; i < argc; i++) { hFind=FindFirstFile(argv[i],&FindData); if (hFind==INVALID_HANDLE_VALUE) { ConErrPrintf("File not found - %s\n",argv[i]); continue; } do { hFile = CreateFile(FindData.cFileName, GENERIC_READ, FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if(hFile == INVALID_HANDLE_VALUE) { ConErrPrintf("File not found - %s\n",FindData.cFileName); continue; } do { bRet = ReadFile(hFile,buff,sizeof(buff),&dwRead,NULL); if (dwRead>0 && bRet) WriteFile(hConsoleOut,buff,dwRead,&dwWritten,NULL); } while(dwRead>0 && bRet); CloseHandle(hFile); } while(FindNextFile(hFind,&FindData)); FindClose(hFind); } return 0; }
static VOID PrintDiskInfo (LPTSTR szDisk) { TCHAR szMsg[RC_STRING_MAX_SIZE]; TCHAR szRootPath[4] = _T("A:\\"); TCHAR szDrive[2] = _T("A"); TCHAR szVolume[64]; TCHAR szSerial[10]; TCHAR szTotal[40]; TCHAR szUsed[40]; TCHAR szFree[40]; DWORD dwSerial; ULONGLONG uliSize; DWORD dwSecPerCl; DWORD dwBytPerSec; DWORD dwFreeCl; DWORD dwTotCl; if (_tcslen (szDisk) < 2 || szDisk[1] != _T(':')) { ConErrResPrintf(STRING_FREE_ERROR1); return; } szRootPath[0] = szDisk[0]; szDrive[0] = _totupper (szRootPath[0]); if (!GetVolumeInformation (szRootPath, szVolume, 64, &dwSerial, NULL, NULL, NULL, 0)) { LoadString(CMD_ModuleHandle, STRING_FREE_ERROR1, szMsg, RC_STRING_MAX_SIZE); ConErrPrintf(_T("%s %s:\n"), szMsg, szDrive); return; } if (szVolume[0] == _T('\0')) { LoadString(CMD_ModuleHandle, STRING_FREE_ERROR2, szMsg, RC_STRING_MAX_SIZE); _tcscpy (szVolume, szMsg); } _stprintf (szSerial, _T("%04X-%04X"), HIWORD(dwSerial), LOWORD(dwSerial)); if (!GetDiskFreeSpace (szRootPath, &dwSecPerCl, &dwBytPerSec, &dwFreeCl, &dwTotCl)) { LoadString(CMD_ModuleHandle, STRING_FREE_ERROR1, szMsg, RC_STRING_MAX_SIZE); ConErrPrintf(_T("%s %s:\n"), szMsg, szDrive); return; } uliSize = dwSecPerCl * dwBytPerSec * (ULONGLONG)dwTotCl; ConvertULargeInteger(uliSize, szTotal, 40, TRUE); uliSize = dwSecPerCl * dwBytPerSec * (ULONGLONG)(dwTotCl - dwFreeCl); ConvertULargeInteger(uliSize, szUsed, 40, TRUE); uliSize = dwSecPerCl * dwBytPerSec * (ULONGLONG)dwFreeCl; ConvertULargeInteger(uliSize, szFree, 40, TRUE); ConOutResPrintf(STRING_FREE_HELP1, szDrive, szVolume, szSerial, szTotal, szUsed, szFree); }
INT cmd_type (LPTSTR param) { TCHAR buff[256]; HANDLE hFile, hConsoleOut; DWORD dwRet; INT argc,i; LPTSTR *argv; LPTSTR errmsg; BOOL bPaging = FALSE; BOOL bFirstTime = TRUE; hConsoleOut=GetStdHandle (STD_OUTPUT_HANDLE); if (!_tcsncmp (param, _T("/?"), 2)) { ConOutResPaging(TRUE,STRING_TYPE_HELP1); return 0; } if (!*param) { error_req_param_missing (); return 1; } 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] && _totupper(argv[i][1]) != _T('P')) { ConErrResPrintf(STRING_TYPE_ERROR1, argv[i] + 1); continue; } nErrorLevel = 0; hFile = CreateFile(argv[i], GENERIC_READ, FILE_SHARE_READ,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,NULL); if(hFile == INVALID_HANDLE_VALUE) { FormatMessage (FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &errmsg, 0, NULL); ConErrPrintf (_T("%s - %s"), argv[i], errmsg); LocalFree (errmsg); nErrorLevel = 1; continue; } if (bPaging) { while (FileGetString (hFile, buff, sizeof(buff) / sizeof(TCHAR))) { if (ConOutPrintfPaging(bFirstTime, _T("%s"), buff) == 1) { 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; } } } CloseHandle(hFile); } freep (argv); return 0; }