/******************** 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;
HANDLE hOutput = GetStdHandle(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);
+ TCHAR szMsg[RC_STRING_MAX_SIZE];
+ LoadString(CMD_ModuleHandle, resID, szMsg, ARRAYSIZE(szMsg));
+ ConPuts(nStdHandle, szMsg);
}
-VOID ConOutResPuts(UINT resID)
+VOID ConOutChar(TCHAR c)
{
- TCHAR szMsg[RC_STRING_MAX_SIZE];
- LoadString(CMD_ModuleHandle, resID, szMsg, ARRAYSIZE(szMsg));
- ConPuts(szMsg, STD_OUTPUT_HANDLE);
+ ConWrite(STD_OUTPUT_HANDLE, &c, 1);
}
-VOID ConOutPuts(LPTSTR szText)
+VOID ConErrChar(TCHAR c)
{
- ConPuts(szText, STD_OUTPUT_HANDLE);
+ ConWrite(STD_ERROR_HANDLE, &c, 1);
}
VOID ConPrintfV(DWORD nStdHandle, LPTSTR szFormat, va_list arg_ptr)
DWORD len;
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, ...)
{
- 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_start(arg_ptr, szFormat);
+ ConPrintfV(nStdHandle, szFormat, 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 ConOutFormatMessage(DWORD MessageId, ...)
+VOID ConResPrintf(DWORD nStdHandle, 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(nStdHandle, szMsg, arg_ptr);
+ va_end(arg_ptr);
+}
+
+VOID ConFormatMessage(DWORD nStdHandle, DWORD MessageId, ...)
+{
DWORD ret;
LPTSTR text;
va_list arg_ptr;
NULL,
MessageId,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
- (LPTSTR) &text,
+ (LPTSTR)&text,
0,
&arg_ptr);
-
va_end(arg_ptr);
+
if (ret > 0)
{
- ConErrPuts(text);
+ ConPuts(nStdHandle, text);
LocalFree(text);
}
else
{
- LoadString(CMD_ModuleHandle, STRING_CONSOLE_ERROR, szMsg, ARRAYSIZE(szMsg));
- ConErrPrintf(szMsg);
+ ConResPrintf(nStdHandle, STRING_CONSOLE_ERROR, MessageId);
}
}
-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 ***************************/
VOID ConInKey (PINPUT_RECORD);
VOID ConInString (LPTSTR, DWORD);
+
VOID ConOutChar (TCHAR);
-VOID ConOutPuts (LPTSTR);
+VOID ConErrChar (TCHAR);
VOID ConPrintfV(DWORD, LPTSTR, va_list);
+
+VOID ConPuts(DWORD nStdHandle, LPTSTR szText);
+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);
-VOID ConOutPrintf (LPTSTR, ...);
INT ConOutPrintfPaging (BOOL NewPage, LPTSTR, ...);
-VOID ConErrChar (TCHAR);
-VOID ConErrPuts (LPTSTR);
-VOID ConErrPrintf (LPTSTR, ...);
-VOID ConOutFormatMessage (DWORD MessageId, ...);
-VOID ConErrFormatMessage (DWORD MessageId, ...);
+VOID ConOutResPaging(BOOL NewPage, UINT resID);
SHORT GetCursorX (VOID);
SHORT GetCursorY (VOID);
VOID GetScreenSize (PSHORT, PSHORT);
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);