[1/4] cmd: Use ReadConsoleW directly for console reads
Frédéric Delanoy
frederic.delanoy at gmail.com
Mon Sep 26 17:42:40 CDT 2011
Previous WCMD_ReadFile calls were simply redirecting directly with unchanged params to ReadConsoleW
---
programs/cmd/builtins.c | 33 ++++++++++++++++++---------------
programs/cmd/wcmdmain.c | 4 ++--
2 files changed, 20 insertions(+), 17 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c
index 33437d1..e1f6447 100644
--- a/programs/cmd/builtins.c
+++ b/programs/cmd/builtins.c
@@ -115,8 +115,8 @@ static BOOL WCMD_ask_confirm (const WCHAR *message, BOOL showSureText,
WCMD_output_asis (Abuffer);
}
WCMD_output_asis (endBkt);
- WCMD_ReadFile (GetStdHandle(STD_INPUT_HANDLE), answer,
- sizeof(answer)/sizeof(WCHAR), &count, NULL);
+ ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), answer,
+ sizeof(answer)/sizeof(WCHAR), &count, NULL);
answer[0] = toupperW(answer[0]);
}
@@ -306,7 +306,10 @@ void WCMD_choice (const WCHAR * command) {
while (TRUE) {
/* FIXME: Add support for option /T */
- WCMD_ReadFile(GetStdHandle(STD_INPUT_HANDLE), answer, 1, &count, NULL);
+ if (have_console)
+ ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), answer, 1, &count, NULL);
+ else
+ WCMD_ReadFile(GetStdHandle(STD_INPUT_HANDLE), answer, 1, &count, NULL);
if (!opt_s)
answer[0] = toupperW(answer[0]);
@@ -1697,8 +1700,8 @@ void WCMD_pause (void) {
WCHAR string[32];
WCMD_output (anykey);
- WCMD_ReadFile (GetStdHandle(STD_INPUT_HANDLE), string,
- sizeof(string)/sizeof(WCHAR), &count, NULL);
+ ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), string,
+ sizeof(string)/sizeof(WCHAR), &count, NULL);
}
/****************************************************************************
@@ -2146,8 +2149,8 @@ void WCMD_setshow_date (void) {
WCMD_output (WCMD_LoadMessage(WCMD_CURRENTDATE), curdate);
if (strstrW (quals, parmT) == NULL) {
WCMD_output (WCMD_LoadMessage(WCMD_NEWDATE));
- WCMD_ReadFile (GetStdHandle(STD_INPUT_HANDLE),
- buffer, sizeof(buffer)/sizeof(WCHAR), &count, NULL);
+ ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE),
+ buffer, sizeof(buffer)/sizeof(WCHAR), &count, NULL);
if (count > 2) {
WCMD_output (WCMD_LoadMessage(WCMD_NYI));
}
@@ -2265,8 +2268,8 @@ void WCMD_setshow_env (WCHAR *s) {
if (strlenW(p) != 0) WCMD_output(p);
/* Read the reply */
- WCMD_ReadFile (GetStdHandle(STD_INPUT_HANDLE), string,
- sizeof(string)/sizeof(WCHAR), &count, NULL);
+ ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), string,
+ sizeof(string)/sizeof(WCHAR), &count, NULL);
if (count > 1) {
string[count-1] = '\0'; /* ReadFile output is not null-terminated! */
if (string[count-2] == '\r') string[count-2] = '\0'; /* Under Windoze we get CRLF! */
@@ -2376,8 +2379,8 @@ void WCMD_setshow_time (void) {
WCMD_output (WCMD_LoadMessage(WCMD_CURRENTTIME), curtime);
if (strstrW (quals, parmT) == NULL) {
WCMD_output (WCMD_LoadMessage(WCMD_NEWTIME));
- WCMD_ReadFile (GetStdHandle(STD_INPUT_HANDLE), buffer,
- sizeof(buffer)/sizeof(WCHAR), &count, NULL);
+ ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), buffer,
+ sizeof(buffer)/sizeof(WCHAR), &count, NULL);
if (count > 2) {
WCMD_output (WCMD_LoadMessage(WCMD_NYI));
}
@@ -2559,8 +2562,8 @@ void WCMD_more (WCHAR *command) {
wsprintfW(moreStrPage, moreFmt2, moreStr, 100);
WCMD_leave_paged_mode();
WCMD_output_asis(moreStrPage);
- WCMD_ReadFile (GetStdHandle(STD_INPUT_HANDLE), buffer,
- sizeof(buffer)/sizeof(WCHAR), &count, NULL);
+ ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), buffer,
+ sizeof(buffer)/sizeof(WCHAR), &count, NULL);
WCMD_enter_paged_mode(moreStrPage);
}
@@ -2683,8 +2686,8 @@ int WCMD_volume(BOOL set_label, const WCHAR *path)
curdir[0], label, HIWORD(serial), LOWORD(serial));
if (set_label) {
WCMD_output (WCMD_LoadMessage(WCMD_VOLUMEPROMPT));
- WCMD_ReadFile (GetStdHandle(STD_INPUT_HANDLE), string,
- sizeof(string)/sizeof(WCHAR), &count, NULL);
+ ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), string,
+ sizeof(string)/sizeof(WCHAR), &count, NULL);
if (count > 1) {
string[count-1] = '\0'; /* ReadFile output is not null-terminated! */
if (string[count-2] == '\r') string[count-2] = '\0'; /* Under Windoze we get CRLF! */
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 8e222a3..b1d67bc 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -293,8 +293,8 @@ static void WCMD_output_asis_handle (DWORD std_handle, const WCHAR *message) {
if (++line_count >= max_height - 1) {
line_count = 0;
WCMD_output_asis_len(pagedMessage, strlenW(pagedMessage), handle);
- WCMD_ReadFile (GetStdHandle(STD_INPUT_HANDLE), string,
- sizeof(string)/sizeof(WCHAR), &count, NULL);
+ ReadConsoleW(GetStdHandle(STD_INPUT_HANDLE), string,
+ sizeof(string)/sizeof(WCHAR), &count, NULL);
}
}
} while (((message = ptr) != NULL) && (*ptr));
--
1.7.6.3
More information about the wine-patches
mailing list