diff --git a/reactos/subsys/system/cmd/cmd.h b/reactos/subsys/system/cmd/cmd.h index a1a8e0602c6..a90121f9c21 100644 --- a/reactos/subsys/system/cmd/cmd.h +++ b/reactos/subsys/system/cmd/cmd.h @@ -152,6 +152,7 @@ VOID ConErrChar (TCHAR); VOID ConErrPuts (LPTSTR); VOID ConErrPrintf (LPTSTR, ...); VOID ConOutFormatMessage (DWORD MessageId, ...); +VOID ConErrFormatMessage (DWORD MessageId, ...); SHORT GetCursorX (VOID); SHORT GetCursorY (VOID); diff --git a/reactos/subsys/system/cmd/console.c b/reactos/subsys/system/cmd/console.c index e9a5188787f..4adf0108590 100644 --- a/reactos/subsys/system/cmd/console.c +++ b/reactos/subsys/system/cmd/console.c @@ -330,6 +330,35 @@ VOID ConPrintfPaging(BOOL NewPage, LPTSTR szFormat, va_list arg_ptr, DWORD nStdH #endif } +VOID ConErrFormatMessage (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 ConOutFormatMessage (DWORD MessageId, ...) { TCHAR szMsg[RC_STRING_MAX_SIZE]; @@ -349,13 +378,13 @@ VOID ConOutFormatMessage (DWORD MessageId, ...) va_end (arg_ptr); if(ret > 0) { - ConOutPuts (text); + ConErrPuts (text); LocalFree(text); } else { LoadString(CMD_ModuleHandle, STRING_CONSOLE_ERROR, szMsg, RC_STRING_MAX_SIZE); - ConOutPrintf(szMsg); + ConErrPrintf(szMsg); } } diff --git a/reactos/subsys/system/cmd/internal.c b/reactos/subsys/system/cmd/internal.c index 3cc494b6f76..8ec6bbc39e7 100644 --- a/reactos/subsys/system/cmd/internal.c +++ b/reactos/subsys/system/cmd/internal.c @@ -364,7 +364,7 @@ INT cmd_chdir (LPTSTR cmd, LPTSTR param) { if(hFile == INVALID_HANDLE_VALUE) { - ConOutFormatMessage (GetLastError(), szFinalPath); + ConErrFormatMessage (GetLastError(), szFinalPath); nErrorLevel = 1; return 1; }