[CMD]: Continue refactoring to lay out the way to using the CONUTILS library in CMD. Part 2/x

svn path=/trunk/; revision=76007
This commit is contained in:
Hermès Bélusca-Maïto 2017-09-30 19:52:30 +00:00
parent e97875595e
commit 03f438982b
3 changed files with 81 additions and 120 deletions

View file

@ -139,7 +139,7 @@ VOID ConInString(LPTSTR lpInput, DWORD dwLength)
/******************** Console STREAM OUT utility functions ********************/ /******************** Console STREAM OUT utility functions ********************/
static VOID ConWrite(TCHAR *str, DWORD len, DWORD nStdHandle) static VOID ConWrite(DWORD nStdHandle, TCHAR *str, DWORD len)
{ {
DWORD dwNumBytes = 0; DWORD dwNumBytes = 0;
HANDLE hOutput = GetStdHandle(nStdHandle); HANDLE hOutput = GetStdHandle(nStdHandle);
@ -260,26 +260,26 @@ static VOID ConWrite(TCHAR *str, DWORD len, DWORD nStdHandle)
} }
} }
VOID ConOutChar(TCHAR c) VOID ConPuts(DWORD nStdHandle, LPTSTR szText)
{ {
ConWrite(&c, 1, STD_OUTPUT_HANDLE); ConWrite(nStdHandle, szText, (DWORD)_tcslen(szText));
} }
VOID ConPuts(LPTSTR szText, DWORD nStdHandle) VOID ConResPuts(DWORD nStdHandle, UINT resID)
{
ConWrite(szText, (DWORD)_tcslen(szText), nStdHandle);
}
VOID ConOutResPuts(UINT resID)
{ {
TCHAR szMsg[RC_STRING_MAX_SIZE]; TCHAR szMsg[RC_STRING_MAX_SIZE];
LoadString(CMD_ModuleHandle, resID, szMsg, ARRAYSIZE(szMsg)); LoadString(CMD_ModuleHandle, resID, szMsg, ARRAYSIZE(szMsg));
ConPuts(szMsg, STD_OUTPUT_HANDLE); ConPuts(nStdHandle, szMsg);
} }
VOID ConOutPuts(LPTSTR szText) VOID ConOutChar(TCHAR c)
{ {
ConPuts(szText, STD_OUTPUT_HANDLE); ConWrite(STD_OUTPUT_HANDLE, &c, 1);
}
VOID ConErrChar(TCHAR c)
{
ConWrite(STD_ERROR_HANDLE, &c, 1);
} }
VOID ConPrintfV(DWORD nStdHandle, LPTSTR szFormat, va_list arg_ptr) VOID ConPrintfV(DWORD nStdHandle, LPTSTR szFormat, va_list arg_ptr)
@ -288,12 +288,31 @@ VOID ConPrintfV(DWORD nStdHandle, LPTSTR szFormat, va_list arg_ptr)
DWORD len; DWORD len;
len = (DWORD)_vstprintf(szOut, szFormat, arg_ptr); len = (DWORD)_vstprintf(szOut, szFormat, arg_ptr);
ConWrite(szOut, len, nStdHandle); ConWrite(nStdHandle, szOut, len);
} }
VOID ConErrFormatMessage(DWORD MessageId, ...) VOID ConPrintf(DWORD nStdHandle, LPTSTR szFormat, ...)
{
va_list arg_ptr;
va_start(arg_ptr, szFormat);
ConPrintfV(nStdHandle, szFormat, arg_ptr);
va_end(arg_ptr);
}
VOID ConResPrintf(DWORD nStdHandle, UINT resID, ...)
{ {
TCHAR szMsg[RC_STRING_MAX_SIZE]; TCHAR szMsg[RC_STRING_MAX_SIZE];
va_list arg_ptr;
va_start(arg_ptr, resID);
LoadString(CMD_ModuleHandle, resID, szMsg, ARRAYSIZE(szMsg));
ConPrintfV(nStdHandle, szMsg, arg_ptr);
va_end(arg_ptr);
}
VOID ConFormatMessage(DWORD nStdHandle, DWORD MessageId, ...)
{
DWORD ret; DWORD ret;
LPTSTR text; LPTSTR text;
va_list arg_ptr; va_list arg_ptr;
@ -303,109 +322,22 @@ VOID ConErrFormatMessage(DWORD MessageId, ...)
NULL, NULL,
MessageId, MessageId,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &text, (LPTSTR)&text,
0, 0,
&arg_ptr); &arg_ptr);
va_end(arg_ptr); va_end(arg_ptr);
if (ret > 0) if (ret > 0)
{ {
ConErrPuts(text); ConPuts(nStdHandle, text);
LocalFree(text); LocalFree(text);
} }
else else
{ {
LoadString(CMD_ModuleHandle, STRING_CONSOLE_ERROR, szMsg, ARRAYSIZE(szMsg)); ConResPrintf(nStdHandle, STRING_CONSOLE_ERROR, MessageId);
ConErrPrintf(szMsg);
} }
} }
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, ARRAYSIZE(szMsg));
ConErrPrintf(szMsg);
}
}
VOID ConOutResPrintf(UINT resID, ...)
{
TCHAR szMsg[RC_STRING_MAX_SIZE];
va_list arg_ptr;
va_start(arg_ptr, resID);
LoadString(CMD_ModuleHandle, resID, szMsg, ARRAYSIZE(szMsg));
ConPrintfV(STD_OUTPUT_HANDLE, szMsg, arg_ptr);
va_end(arg_ptr);
}
VOID ConOutPrintf(LPTSTR szFormat, ...)
{
va_list arg_ptr;
va_start(arg_ptr, szFormat);
ConPrintfV(STD_OUTPUT_HANDLE, szFormat, arg_ptr);
va_end(arg_ptr);
}
VOID ConErrChar(TCHAR c)
{
ConWrite(&c, 1, STD_ERROR_HANDLE);
}
VOID ConErrResPuts(UINT resID)
{
TCHAR szMsg[RC_STRING_MAX_SIZE];
LoadString(CMD_ModuleHandle, resID, szMsg, ARRAYSIZE(szMsg));
ConPuts(szMsg, STD_ERROR_HANDLE);
}
VOID ConErrPuts(LPTSTR szText)
{
ConPuts(szText, STD_ERROR_HANDLE);
}
VOID ConErrResPrintf(UINT resID, ...)
{
TCHAR szMsg[RC_STRING_MAX_SIZE];
va_list arg_ptr;
va_start(arg_ptr, resID);
LoadString(CMD_ModuleHandle, resID, szMsg, ARRAYSIZE(szMsg));
ConPrintfV(STD_ERROR_HANDLE, szMsg, arg_ptr);
va_end(arg_ptr);
}
VOID ConErrPrintf(LPTSTR szFormat, ...)
{
va_list arg_ptr;
va_start(arg_ptr, szFormat);
ConPrintfV(STD_ERROR_HANDLE, szFormat, arg_ptr);
va_end(arg_ptr);
}
/************************** Console PAGER functions ***************************/ /************************** Console PAGER functions ***************************/

View file

@ -17,17 +17,51 @@ VOID ConInFlush (VOID);
VOID ConInKey (PINPUT_RECORD); VOID ConInKey (PINPUT_RECORD);
VOID ConInString (LPTSTR, DWORD); VOID ConInString (LPTSTR, DWORD);
VOID ConOutChar (TCHAR); VOID ConOutChar (TCHAR);
VOID ConOutPuts (LPTSTR);
VOID ConPrintfV(DWORD, LPTSTR, va_list);
INT ConPrintfVPaging(DWORD nStdHandle, BOOL, LPTSTR, va_list);
VOID ConOutPrintf (LPTSTR, ...);
INT ConOutPrintfPaging (BOOL NewPage, LPTSTR, ...);
VOID ConErrChar (TCHAR); VOID ConErrChar (TCHAR);
VOID ConErrPuts (LPTSTR); VOID ConPrintfV(DWORD, LPTSTR, va_list);
VOID ConErrPrintf (LPTSTR, ...);
VOID ConOutFormatMessage (DWORD MessageId, ...); VOID ConPuts(DWORD nStdHandle, LPTSTR szText);
VOID ConErrFormatMessage (DWORD MessageId, ...); VOID ConPrintf(DWORD nStdHandle, LPTSTR szFormat, ...);
VOID ConResPuts(DWORD nStdHandle, UINT resID);
VOID ConResPrintf(DWORD nStdHandle, UINT resID, ...);
VOID ConFormatMessage(DWORD nStdHandle, DWORD MessageId, ...);
#define ConOutPuts(szStr) \
ConPuts(STD_OUTPUT_HANDLE, (szStr))
#define ConErrPuts(szStr) \
ConPuts(STD_ERROR_HANDLE, (szStr))
#define ConOutResPuts(uID) \
ConResPuts(STD_OUTPUT_HANDLE, (uID))
#define ConErrResPuts(uID) \
ConResPuts(STD_ERROR_HANDLE, (uID))
#define ConOutPrintf(szStr, ...) \
ConPrintf(STD_OUTPUT_HANDLE, (szStr), ##__VA_ARGS__)
#define ConErrPrintf(szStr, ...) \
ConPrintf(STD_ERROR_HANDLE, (szStr), ##__VA_ARGS__)
#define ConOutResPrintf(uID, ...) \
ConResPrintf(STD_OUTPUT_HANDLE, (uID), ##__VA_ARGS__)
#define ConErrResPrintf(uID, ...) \
ConResPrintf(STD_ERROR_HANDLE, (uID), ##__VA_ARGS__)
#define ConOutFormatMessage(MessageId, ...) \
ConFormatMessage(STD_OUTPUT_HANDLE, (MessageId), ##__VA_ARGS__)
#define ConErrFormatMessage(MessageId, ...) \
ConFormatMessage(STD_ERROR_HANDLE, (MessageId), ##__VA_ARGS__)
INT ConPrintfVPaging(DWORD nStdHandle, BOOL, LPTSTR, va_list);
INT ConOutPrintfPaging (BOOL NewPage, LPTSTR, ...);
VOID ConOutResPaging(BOOL NewPage, UINT resID);
SHORT GetCursorX (VOID); SHORT GetCursorX (VOID);
SHORT GetCursorY (VOID); SHORT GetCursorY (VOID);
@ -37,12 +71,6 @@ VOID SetCursorXY (SHORT, SHORT);
VOID GetScreenSize (PSHORT, PSHORT); VOID GetScreenSize (PSHORT, PSHORT);
VOID SetCursorType (BOOL, BOOL); VOID SetCursorType (BOOL, BOOL);
VOID ConOutResPuts (UINT resID);
VOID ConErrResPuts (UINT resID);
VOID ConOutResPrintf (UINT resID, ...);
VOID ConErrResPrintf (UINT resID, ...);
VOID ConOutResPaging(BOOL NewPage, UINT resID);
BOOL ConSetTitle(IN LPCTSTR lpConsoleTitle); BOOL ConSetTitle(IN LPCTSTR lpConsoleTitle);

View file

@ -53,6 +53,7 @@ VOID ErrorMessage (DWORD dwErrorCode, LPTSTR szFormat, ...)
} }
/* Fall back just in case the error is not defined */ /* Fall back just in case the error is not defined */
LoadString(CMD_ModuleHandle, STRING_CONSOLE_ERROR, szMsg, ARRAYSIZE(szMsg));
if (szFormat) if (szFormat)
ConErrPrintf(_T("%s -- %s\n"), szMsg, szMessage); ConErrPrintf(_T("%s -- %s\n"), szMsg, szMessage);
else else