cmd: Fix handling of lines starting with echo. or echo:
Frédéric Delanoy
frederic.delanoy at gmail.com
Fri Aug 5 09:29:21 CDT 2011
---
programs/cmd/tests/test_builtins.cmd.exp | 8 ++++----
programs/cmd/wcmdmain.c | 14 +++++++++++++-
2 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index ec0ece4..7ebe57a 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -18,25 +18,25 @@ at-echoed-word
@pwd@>echo "/?"@space@
"/?"
- at todo_wine@@pwd@>echo.
+ at pwd@>echo.
@pwd@>echo . at space@
.
- at todo_wine@@pwd@>echo.word
+ at pwd@>echo.word
word
@pwd@>echo .word at space@
.word
- at todo_wine@@pwd@>echo:
+ at pwd@>echo:
@pwd@>echo :@space@
:
- at todo_wine@@pwd@>echo:word
+ at pwd@>echo:word
word
@pwd@>echo :word at space@
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 5dbf74c..0111c15 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -1786,10 +1786,22 @@ WCHAR *WCMD_ReadAndParseLine(WCHAR *optionalcmd, CMD_LIST **output, HANDLE readF
/* Show prompt before batch line IF echo is on and in batch program */
if (context && echo_mode && extraSpace[0] && (extraSpace[0] != '@')) {
const WCHAR spc[]={' ','\0'};
+ const WCHAR echoDot[] = {'e','c','h','o','.'};
+ const WCHAR echoCol[] = {'e','c','h','o',':'};
+ const DWORD len = sizeof(echoDot)/sizeof(echoDot[0]);
+ DWORD curr_size = strlenW(extraSpace);
+ DWORD min_len = (curr_size < len ? curr_size : len);
WCMD_show_prompt();
WCMD_output_asis(extraSpace);
/* I don't know why Windows puts a space here but it does */
- WCMD_output_asis(spc);
+ /* Except for lines starting with 'echo.' or 'echo:'. Ask MS why */
+ if (CompareStringW(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE,
+ extraSpace, min_len, echoDot, len) != CSTR_EQUAL
+ && CompareStringW(LOCALE_SYSTEM_DEFAULT, NORM_IGNORECASE,
+ extraSpace, min_len, echoCol, len) != CSTR_EQUAL)
+ {
+ WCMD_output_asis(spc);
+ }
WCMD_output_asis(newline);
}
--
1.7.6
More information about the wine-patches
mailing list