[2/7] cmd: Add WCMD_output_asis_stderr function
Frédéric Delanoy
frederic.delanoy at gmail.com
Mon Aug 29 14:45:14 CDT 2011
Some error messages are currently wrongly sent to stdout.
This helper function allows stderr outputting.
---
programs/cmd/wcmd.h | 1 +
programs/cmd/wcmdmain.c | 37 ++++++++++++++++++++++++++++---------
2 files changed, 29 insertions(+), 9 deletions(-)
diff --git a/programs/cmd/wcmd.h b/programs/cmd/wcmd.h
index 885add4..27d9d9a 100644
--- a/programs/cmd/wcmd.h
+++ b/programs/cmd/wcmd.h
@@ -72,6 +72,7 @@ void WCMD_more (WCHAR *);
void WCMD_move (void);
void WCMD_output (const WCHAR *format, ...);
void WCMD_output_asis (const WCHAR *message);
+void WCMD_output_asis_stderr (const WCHAR *message);
void WCMD_pause (void);
void WCMD_popd (void);
void WCMD_print_error (void);
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index b282e99..ce07111 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -240,13 +240,15 @@ BOOL WCMD_ReadFile(const HANDLE hIn, WCHAR *intoBuf, const DWORD maxChars,
}
/*******************************************************************
- * WCMD_output_asis - send output to current standard output device.
- * without formatting eg. when message contains '%'
+ * WCMD_output_asis_handle
+ *
+ * Send output to specified handle without formatting e.g. when message contains '%'
*/
-void WCMD_output_asis (const WCHAR *message) {
+static void WCMD_output_asis_handle (DWORD std_handle, const WCHAR *message) {
DWORD count;
const WCHAR* ptr;
WCHAR string[1024];
+ HANDLE handle = GetStdHandle(std_handle);
if (paged_mode) {
do {
@@ -256,25 +258,42 @@ void WCMD_output_asis (const WCHAR *message) {
ptr++;
};
if (*ptr == '\n') ptr++;
- WCMD_output_asis_len(message, (ptr) ? ptr - message : strlenW(message),
- GetStdHandle(STD_OUTPUT_HANDLE));
+ WCMD_output_asis_len(message, (ptr) ? ptr - message : strlenW(message), handle);
if (ptr) {
numChars = 0;
if (++line_count >= max_height - 1) {
line_count = 0;
- WCMD_output_asis_len(pagedMessage, strlenW(pagedMessage),
- GetStdHandle(STD_OUTPUT_HANDLE));
+ WCMD_output_asis_len(pagedMessage, strlenW(pagedMessage), handle);
WCMD_ReadFile (GetStdHandle(STD_INPUT_HANDLE), string,
sizeof(string)/sizeof(WCHAR), &count, NULL);
}
}
} while (((message = ptr) != NULL) && (*ptr));
} else {
- WCMD_output_asis_len(message, lstrlenW(message),
- GetStdHandle(STD_OUTPUT_HANDLE));
+ WCMD_output_asis_len(message, lstrlenW(message), handle);
}
}
+/*******************************************************************
+ * WCMD_output_asis
+ *
+ * Send output to current standard output device, without formatting
+ * e.g. when message contains '%'
+ */
+void WCMD_output_asis (const WCHAR *message) {
+ WCMD_output_asis_handle(STD_OUTPUT_HANDLE, message);
+}
+
+/*******************************************************************
+ * WCMD_output_asis_stderr
+ *
+ * Send output to current standard error device, without formatting
+ * e.g. when message contains '%'
+ */
+void WCMD_output_asis_stderr (const WCHAR *message) {
+ WCMD_output_asis_handle(STD_ERROR_HANDLE, message);
+}
+
/****************************************************************************
* WCMD_print_error
*
--
1.7.6
More information about the wine-patches
mailing list