Jason Edmeades : cmd.exe: Move writing to console into a single
function.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 4 08:14:36 CDT 2007
Module: wine
Branch: master
Commit: 926da13e56ade5476069dd9562255b019d9bebf5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=926da13e56ade5476069dd9562255b019d9bebf5
Author: Jason Edmeades <jason.edmeades at googlemail.com>
Date: Sun Jun 3 22:07:40 2007 +0100
cmd.exe: Move writing to console into a single function.
---
programs/cmd/wcmdmain.c | 25 +++++++++++++++++--------
1 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 32b70f4..d0a08ec 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -1193,6 +1193,16 @@ int p = 0;
}
/*******************************************************************
+ * WCMD_output_asis_len - send output to current standard output
+ * device without formatting eg. when message contains '%'
+ * of a supplied length.
+ */
+static void WCMD_output_asis_len(const char *message, int len) {
+ DWORD count;
+ WriteFile (GetStdHandle(STD_OUTPUT_HANDLE), message, len, &count, NULL);
+}
+
+/*******************************************************************
* WCMD_output - send output to current standard output device.
*
*/
@@ -1208,9 +1218,10 @@ void WCMD_output (const char *format, ...) {
va_end(ap);
if( ret >= sizeof( string)) {
WINE_ERR("Output truncated in WCMD_output\n" );
- string[sizeof( string) -1] = '\0';
+ ret = sizeof(string) - 1;
+ string[ret] = '\0';
}
- WCMD_output_asis(string);
+ WCMD_output_asis_len(string, ret);
}
@@ -1250,22 +1261,20 @@ void WCMD_output_asis (const char *message) {
if (paged_mode) {
do {
if ((ptr = strchr(message, '\n')) != NULL) ptr++;
- WriteFile (GetStdHandle(STD_OUTPUT_HANDLE), message,
- (ptr) ? ptr - message : lstrlen(message), &count, NULL);
+ WCMD_output_asis_len(message, (ptr) ? ptr - message : lstrlen(message));
if (ptr) {
if (++line_count >= max_height - 1) {
- line_count = 0;
- WCMD_output_asis (pagedMessage);
+ line_count = 1;
+ WCMD_output_asis_len(pagedMessage, lstrlen(pagedMessage));
ReadFile (GetStdHandle(STD_INPUT_HANDLE), string, sizeof(string), &count, NULL);
}
}
} while ((message = ptr) != NULL);
} else {
- WriteFile (GetStdHandle(STD_OUTPUT_HANDLE), message, lstrlen(message), &count, NULL);
+ WCMD_output_asis_len(message, lstrlen(message));
}
}
-
/***************************************************************************
* WCMD_strtrim_leading_spaces
*
More information about the wine-cvs
mailing list