From: Alexander Merkle alexander.merkle@lauterbach.com
Signed-off-by: Alexander Merkle alexander.merkle@lauterbach.com --- programs/cmd/tests/test_builtins.cmd | 6 ++++++ programs/cmd/tests/test_builtins.cmd.exp | 3 +++ programs/cmd/wcmdmain.c | 6 ++++++ 3 files changed, 15 insertions(+)
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index d72fcf2385a..38423e3a72a 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -262,6 +262,12 @@ echo %WINE_FOO% echo %ErrorLevel% set WINE_FOO=
+echo --- circumflex EOF behaviour +echo @echo off>caret_eof.cmd +echo echo foo^^>>caret_eof.cmd +call caret_eof.cmd +del caret_eof.cmd + echo ------------ Testing chains ------------ rem The chain operators have the following bottom-up precedence: rem 'else' precedes nothing and matches the closest unmatched 'if' in the same bracket depth diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 145f97a550a..d265d5c4ed4 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -255,6 +255,9 @@ WINE_FOO=bar | baz WINE_FOO=bar ^| baz bar | baz 0 +--- circumflex EOF behaviour +foo + ------------ Testing chains ------------ --- chain success a1 diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 473ead28ab9..d901d85250f 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -2314,6 +2314,12 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_LIST **output, HANDLE if (!context) WCMD_output_asis( WCMD_LoadMessage(WCMD_MOREPROMPT)); if (!WCMD_fgets(extraData, MAXSTRING, readFrom)) { /* EOF in parentheses - abort don't execute block */ + /* caret followed by EOF - execute line */ + if (lastWasCaret && (curDepth == 0) && (*extraSpace == 0x00)) { + *extraData++ = '\r'; + *extraData = 0x00; + break; + } return NULL; }