[CMD] Convert to explicitly unicode

This commit is contained in:
Timo Kreuzer 2024-05-18 14:56:29 +03:00
parent cca9acfa1d
commit c948ea859b
2 changed files with 25 additions and 29 deletions

View file

@ -78,21 +78,18 @@ VOID ConInKey(PINPUT_RECORD lpBuffer)
while (TRUE); while (TRUE);
} }
VOID ConInString(LPTSTR lpInput, DWORD dwLength) VOID ConInString(LPWSTR lpInput, DWORD dwLength)
{ {
DWORD dwOldMode; DWORD dwOldMode;
DWORD dwRead = 0; DWORD dwRead = 0;
HANDLE hFile; HANDLE hFile;
LPTSTR p; LPWSTR p;
PCHAR pBuf; PCHAR pBuf;
#ifdef _UNICODE
pBuf = (PCHAR)cmd_alloc(dwLength - 1); pBuf = (PCHAR)cmd_alloc(dwLength - 1);
#else
pBuf = lpInput; ZeroMemory(lpInput, dwLength * sizeof(WCHAR));
#endif
ZeroMemory(lpInput, dwLength * sizeof(TCHAR));
hFile = GetStdHandle(STD_INPUT_HANDLE); hFile = GetStdHandle(STD_INPUT_HANDLE);
GetConsoleMode(hFile, &dwOldMode); GetConsoleMode(hFile, &dwOldMode);
@ -100,15 +97,14 @@ VOID ConInString(LPTSTR lpInput, DWORD dwLength)
ReadFile(hFile, (PVOID)pBuf, dwLength - 1, &dwRead, NULL); ReadFile(hFile, (PVOID)pBuf, dwLength - 1, &dwRead, NULL);
#ifdef _UNICODE
MultiByteToWideChar(InputCodePage, 0, pBuf, dwRead, lpInput, dwLength - 1); MultiByteToWideChar(InputCodePage, 0, pBuf, dwRead, lpInput, dwLength - 1);
cmd_free(pBuf); cmd_free(pBuf);
#endif
for (p = lpInput; *p; p++) for (p = lpInput; *p; p++)
{ {
if (*p == _T('\r')) // Terminate at the carriage-return. if (*p == L'\r') // Terminate at the carriage-return.
{ {
*p = _T('\0'); *p = L'\0';
break; break;
} }
} }
@ -120,12 +116,12 @@ VOID ConInString(LPTSTR lpInput, DWORD dwLength)
/******************** Console STREAM OUT utility functions ********************/ /******************** Console STREAM OUT utility functions ********************/
VOID ConOutChar(TCHAR c) VOID ConOutChar(WCHAR c)
{ {
ConWrite(StdOut, &c, 1); ConWrite(StdOut, &c, 1);
} }
VOID ConErrChar(TCHAR c) VOID ConErrChar(WCHAR c)
{ {
ConWrite(StdErr, &c, 1); ConWrite(StdErr, &c, 1);
} }
@ -152,23 +148,23 @@ VOID __cdecl ConFormatMessage(PCON_STREAM Stream, DWORD MessageId, ...)
/************************** Console PAGER functions ***************************/ /************************** Console PAGER functions ***************************/
BOOL ConPrintfVPaging(PCON_PAGER Pager, BOOL StartPaging, LPTSTR szFormat, va_list arg_ptr) BOOL ConPrintfVPaging(PCON_PAGER Pager, BOOL StartPaging, LPWSTR szFormat, va_list arg_ptr)
{ {
// INT len; // INT len;
TCHAR szOut[OUTPUT_BUFFER_SIZE]; WCHAR szOut[OUTPUT_BUFFER_SIZE];
/* Return if no string has been given */ /* Return if no string has been given */
if (szFormat == NULL) if (szFormat == NULL)
return TRUE; return TRUE;
/*len =*/ _vstprintf(szOut, szFormat, arg_ptr); /*len =*/ vswprintf(szOut, szFormat, arg_ptr);
// return ConPutsPaging(Pager, PagePrompt, StartPaging, szOut); // return ConPutsPaging(Pager, PagePrompt, StartPaging, szOut);
return ConWritePaging(Pager, PagePrompt, StartPaging, return ConWritePaging(Pager, PagePrompt, StartPaging,
szOut, wcslen(szOut)); szOut, wcslen(szOut));
} }
BOOL __cdecl ConOutPrintfPaging(BOOL StartPaging, LPTSTR szFormat, ...) BOOL __cdecl ConOutPrintfPaging(BOOL StartPaging, LPWSTR szFormat, ...)
{ {
BOOL bRet; BOOL bRet;
va_list arg_ptr; va_list arg_ptr;
@ -277,7 +273,7 @@ BOOL ConGetDefaultAttributes(PWORD pwDefAttr)
#endif #endif
BOOL ConSetTitle(IN LPCTSTR lpConsoleTitle) BOOL ConSetTitle(IN LPCWSTR lpConsoleTitle)
{ {
/* Now really set the console title */ /* Now really set the console title */
return SetConsoleTitle(lpConsoleTitle); return SetConsoleTitle(lpConsoleTitle);

View file

@ -25,11 +25,11 @@
VOID VOID
ErrorMessage( ErrorMessage(
IN DWORD dwErrorCode, IN DWORD dwErrorCode,
IN PCTSTR szFormat OPTIONAL, IN PCWSTR szFormat OPTIONAL,
...) ...)
{ {
va_list arg_ptr; va_list arg_ptr;
PTSTR szError; PWSTR szError;
TCHAR szMsg[RC_STRING_MAX_SIZE]; TCHAR szMsg[RC_STRING_MAX_SIZE];
TCHAR szMessage[1024]; TCHAR szMessage[1024];
@ -40,7 +40,7 @@ ErrorMessage(
if (szFormat) if (szFormat)
{ {
va_start(arg_ptr, szFormat); va_start(arg_ptr, szFormat);
_vstprintf(szMessage, szFormat, arg_ptr); vswprintf(szMessage, szFormat, arg_ptr);
va_end(arg_ptr); va_end(arg_ptr);
} }
@ -62,21 +62,21 @@ ErrorMessage(
ConErrPrintf(_T("%s\n"), szMsg); ConErrPrintf(_T("%s\n"), szMsg);
} }
VOID error_parameter_format(TCHAR ch) VOID error_parameter_format(WCHAR ch)
{ {
ConErrResPrintf(STRING_ERROR_PARAMETERF_ERROR, ch); ConErrResPrintf(STRING_ERROR_PARAMETERF_ERROR, ch);
nErrorLevel = 1; nErrorLevel = 1;
} }
VOID error_invalid_switch(TCHAR ch) VOID error_invalid_switch(WCHAR ch)
{ {
ConErrResPrintf(STRING_ERROR_INVALID_SWITCH, ch); ConErrResPrintf(STRING_ERROR_INVALID_SWITCH, ch);
nErrorLevel = 1; nErrorLevel = 1;
} }
VOID error_too_many_parameters(PCTSTR s) VOID error_too_many_parameters(PCWSTR s)
{ {
ConErrResPrintf(STRING_ERROR_TOO_MANY_PARAMETERS, s); ConErrResPrintf(STRING_ERROR_TOO_MANY_PARAMETERS, s);
nErrorLevel = 1; nErrorLevel = 1;
@ -97,7 +97,7 @@ VOID error_file_not_found(VOID)
} }
VOID error_sfile_not_found(PCTSTR s) VOID error_sfile_not_found(PCWSTR s)
{ {
TCHAR szMsg[RC_STRING_MAX_SIZE]; TCHAR szMsg[RC_STRING_MAX_SIZE];
@ -121,7 +121,7 @@ VOID error_invalid_drive(VOID)
} }
VOID error_bad_command(PCTSTR s) VOID error_bad_command(PCWSTR s)
{ {
ConErrResPrintf(STRING_ERROR_BADCOMMAND, s); ConErrResPrintf(STRING_ERROR_BADCOMMAND, s);
nErrorLevel = 9009; nErrorLevel = 9009;
@ -142,16 +142,16 @@ VOID error_out_of_memory(VOID)
} }
VOID error_invalid_parameter_format(PCTSTR s) VOID error_invalid_parameter_format(PCWSTR s)
{ {
ConErrResPrintf(STRING_ERROR_INVALID_PARAM_FORMAT, s); ConErrResPrintf(STRING_ERROR_INVALID_PARAM_FORMAT, s);
nErrorLevel = 1; nErrorLevel = 1;
} }
VOID error_syntax(PCTSTR s) VOID error_syntax(PCWSTR s)
{ {
TCHAR szMsg[RC_STRING_MAX_SIZE]; WCHAR szMsg[RC_STRING_MAX_SIZE];
LoadString(CMD_ModuleHandle, STRING_ERROR_ERROR2, szMsg, ARRAYSIZE(szMsg)); LoadString(CMD_ModuleHandle, STRING_ERROR_ERROR2, szMsg, ARRAYSIZE(szMsg));