/* * ERROR.C - error reporting functions. * * * History: * * 07/12/98 (Rob Lake) * started * * 27-Jul-1998 (John P Price ) * added config.h include * * 24-Jan-1999 (Eric Kohl ) * Redirection safe! * * 02-Feb-1999 (Eric Kohl ) * Use FormatMessage() for error reports. */ #include "config.h" #include #include #include #include #include "cmd.h" #define INVALID_SWITCH _T("Invalid switch - /%c\n") #define TOO_MANY_PARAMETERS _T("Too many parameters - %s\n") #define PATH_NOT_FOUND _T("Path not found\n") #define FILE_NOT_FOUND _T("File not found\n") #define REQ_PARAM_MISSING _T("Required parameter missing\n") #define INVALID_DRIVE _T("Invalid drive specification\n") #define INVALID_PARAM_FORMAT _T("Invalid parameter format - %s\n") #define BADCOMMAND _T("Bad command or filename\n") #define OUT_OF_MEMORY _T("Out of memory error.\n") #define CANNOTPIPE _T("Error! Cannot pipe! Cannot open temporary file!\n") #define D_PAUSEMSG _T("Press any key to continue . . .") VOID ErrorMessage (DWORD dwErrorCode, LPTSTR szFormat, ...) { TCHAR szMessage[1024]; LPTSTR szError; va_list arg_ptr; if (dwErrorCode == ERROR_SUCCESS) return; va_start (arg_ptr, szFormat); _vstprintf (szMessage, szFormat, arg_ptr); va_end (arg_ptr); #ifndef __REACTOS__ 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); LocalFree (szError); return; } else { ConErrPrintf (_T("Unknown error! Error code: 0x%lx\n"), dwErrorCode); return; } #else switch (dwErrorCode) { case ERROR_FILE_NOT_FOUND: szError = _T("File not found --"); break; case ERROR_PATH_NOT_FOUND: szError = _T("Path not found --"); break; default: ConErrPrintf (_T("Unknown error! Error code: 0x%lx\n"), dwErrorCode); return; } ConErrPrintf (_T("%s %s\n"), szError, szMessage); #endif } VOID error_invalid_switch (TCHAR ch) { ConErrPrintf (INVALID_SWITCH, ch); } VOID error_too_many_parameters (LPTSTR s) { ConErrPrintf (TOO_MANY_PARAMETERS, s); } VOID error_path_not_found (VOID) { ConErrPrintf (PATH_NOT_FOUND); } VOID error_file_not_found (VOID) { ConErrPrintf (FILE_NOT_FOUND); } VOID error_sfile_not_found (LPTSTR f) { ConErrPrintf (FILE_NOT_FOUND _T(" - %s\n"), f); } VOID error_req_param_missing (VOID) { ConErrPrintf (REQ_PARAM_MISSING); } VOID error_invalid_drive (VOID) { ConErrPrintf (INVALID_DRIVE); } VOID error_bad_command (VOID) { ConErrPrintf (BADCOMMAND); } VOID error_no_pipe (VOID) { ConErrPrintf (CANNOTPIPE); } VOID error_out_of_memory (VOID) { ConErrPrintf (OUT_OF_MEMORY); } VOID error_invalid_parameter_format (LPTSTR s) { ConErrPrintf (INVALID_PARAM_FORMAT, s); } VOID error_syntax (LPTSTR s) { if (s) ConErrPrintf (_T("Syntax error - %s\n"), s); else ConErrPrintf (_T("Syntax error.\n")); } VOID msg_pause (VOID) { ConOutPuts (D_PAUSEMSG); }