[PATCH 2/9] CMD.EXE: Move writing to console into a single function
Jason Edmeades
jason.edmeades at googlemail.com
Sun Jun 3 16:07:40 CDT 2007
This is in preperation for when it is unicoded, when the output needs
to go to the console or a file, and needs to be treated differently
depending on where it is going
---
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
*
--
1.5.0
More information about the wine-patches
mailing list