From: Eric Pouech epouech@codeweavers.com
Signed-off-by: Eric Pouech epouech@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) {