From: Eric Pouech <epouech(a)codeweavers.com> Signed-off-by: Eric Pouech <epouech(a)codeweavers.com> --- programs/cmd/wcmdmain.c | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 1e9142ad805..d308cdc9731 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -59,12 +59,14 @@ WCHAR quals[MAXSTRING], param1[MAXSTRING], param2[MAXSTRING]; FOR_CONTEXT *forloopcontext; /* The 'for' loop context */ BOOL delayedsubst = FALSE; /* The current delayed substitution setting */ -BOOL echo_mode = TRUE; - WCHAR anykey[100], version_string[100]; static BOOL unicodeOutput = FALSE; +/* input handling */ +static HANDLE console_input; +BOOL echo_mode = TRUE; + /* Variables pertaining to paging */ static BOOL paged_mode; static const WCHAR *pagedMessage = NULL; @@ -75,7 +77,6 @@ static HANDLE control_c_event; #define MAX_WRITECONSOLE_SIZE 65535 - static BOOL is_directory_operation(WCHAR *inputBuffer) { WCHAR *param = NULL, *first_param; @@ -558,17 +559,14 @@ WCHAR* WINAPIV WCMD_format_string (const WCHAR *format, ...) void WCMD_enter_paged_mode(const WCHAR *msg) { - CONSOLE_SCREEN_BUFFER_INFO consoleInfo; + CONSOLE_SCREEN_BUFFER_INFO consoleInfo; - if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &consoleInfo)) { /* Use console window dimensions, not screen buffer dimensions. */ - max_height = consoleInfo.srWindow.Bottom - consoleInfo.srWindow.Top + 1; - } else { - max_height = 25; - } - paged_mode = TRUE; - line_count = 0; - pagedMessage = (msg==NULL)? anykey : msg; + max_height = GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &consoleInfo) ? + consoleInfo.srWindow.Bottom - consoleInfo.srWindow.Top + 1 : 65535; + paged_mode = TRUE; + line_count = 0; + pagedMessage = msg ? msg : anykey; } void WCMD_leave_paged_mode(void) @@ -695,7 +693,7 @@ RETURN_CODE WCMD_output_asis(const WCHAR *message) { line_count = 0; WCMD_output_unbuffered(pagedMessage, -1, handle); - return_code = WCMD_wait_for_input(GetStdHandle(STD_INPUT_HANDLE)); + return_code = WCMD_wait_for_input(console_input); WCMD_output_unbuffered(L"\r\n", 2, handle); } } @@ -4513,6 +4511,8 @@ int __cdecl wmain(int argc, WCHAR *argvW[]) control_c_event = CreateEventW(NULL, TRUE, FALSE, NULL); SetConsoleCtrlHandler(my_event_handler, TRUE); + console_input = CreateFileW(L"CONIN$", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, + FILE_ATTRIBUTE_NORMAL, 0); if (parameters.opt_c) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9020