[PATCH 2/6] CMD.EXE: Move writing to console into a single function

Jason Edmeades us at edmeades.me.uk
Sat May 5 13:20:18 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