[CONSRV] Introduce a CON_SET_OUTPUT_CP() macro to simplify setting the console's output CP + associated changes. Simplify ConDrvSetConsoleCP() as well.

This commit is contained in:
Hermès Bélusca-Maïto 2022-01-27 21:36:16 +01:00
parent f80de47c85
commit f79c02bd8a
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
3 changed files with 19 additions and 15 deletions

View file

@ -116,9 +116,10 @@ ConDrvInitConsole(
/* Set-up the code page */
if (IsValidCodePage(ConsoleInfo->CodePage))
Console->InputCodePage = Console->OutputCodePage = ConsoleInfo->CodePage;
Console->IsCJK = IsCJKCodePage(Console->OutputCodePage);
{
CON_SET_OUTPUT_CP(Console, ConsoleInfo->CodePage);
Console->InputCodePage = ConsoleInfo->CodePage;
}
/* Initialize a new text-mode screen buffer with default settings */
ScreenBufferInfo.ScreenBufferSize = ConsoleInfo->ScreenBufferSize;
@ -424,27 +425,24 @@ ConDrvSetConsoleCP(IN PCONSOLE Console,
IN UINT CodePage,
IN BOOLEAN OutputCP)
{
BOOL Success = TRUE;
if (Console == NULL || !IsValidCodePage(CodePage))
return STATUS_INVALID_PARAMETER;
if (OutputCP)
{
/* Request the terminal to change its code page support */
Success = TermSetCodePage(Console, CodePage);
if (Success)
{
Console->OutputCodePage = CodePage;
Console->IsCJK = IsCJKCodePage(CodePage);
}
if (!TermSetCodePage(Console, CodePage))
return STATUS_UNSUCCESSFUL;
/* All is fine, actually set the output code page */
CON_SET_OUTPUT_CP(Console, CodePage);
return STATUS_SUCCESS;
}
else
{
Console->InputCodePage = CodePage;
return STATUS_SUCCESS;
}
return (Success ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
}
/* EOF */

View file

@ -320,6 +320,12 @@ ConDrvUnpause(PCONSOLE Console);
#define GetConsoleInputBufferMode(Console) \
(Console)->InputBuffer.Mode
#define CON_SET_OUTPUT_CP(Console, CodePage)\
do { \
(Console)->OutputCodePage = (CodePage); \
(Console)->IsCJK = IsCJKCodePage((Console)->OutputCodePage); \
} while (0)
/* conoutput.c */
PCHAR_INFO ConioCoordToPointer(PTEXTMODE_SCREEN_BUFFER Buff, ULONG X, ULONG Y);

View file

@ -68,8 +68,8 @@ ConSrvApplyUserSettings(
// ConDrvSetConsoleCP(Console, ConsoleInfo->CodePage, FALSE); // Input
if (TermSetCodePage(Console, ConsoleInfo->CodePage))
{
Console->InputCodePage = Console->OutputCodePage = ConsoleInfo->CodePage;
Console->IsCJK = IsCJKCodePage(Console->OutputCodePage);
CON_SET_OUTPUT_CP(Console, ConsoleInfo->CodePage);
Console->InputCodePage = ConsoleInfo->CodePage;
}
}