[3/6] cmd: Fix redirection handle parsing
Frédéric Delanoy
frederic.delanoy at gmail.com
Fri Aug 26 17:26:42 CDT 2011
---
programs/cmd/tests/test_builtins.cmd | 9 +++++++++
programs/cmd/tests/test_builtins.cmd.exp | 23 +++++++++++++----------
programs/cmd/wcmdmain.c | 9 +++++----
3 files changed, 27 insertions(+), 14 deletions(-)
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd
index 7a264d4..0f78376 100644
--- a/programs/cmd/tests/test_builtins.cmd
+++ b/programs/cmd/tests/test_builtins.cmd
@@ -81,6 +81,12 @@ echo foo>foo
type foo
echo foo 1> foo
type foo
+echo foo at tab@1> foo
+type foo
+echo foo 1>@tab at foo
+type foo
+echo foo at tab@1>@tab at foo
+type foo
echo foo7 7> foo
type foo
echo foo9 9> foo
@@ -91,6 +97,9 @@ echo foo11> foo
type foo
echo foo12> foo
type foo
+del foo
+echo1>foo
+type foo
echo ...stdout appending
echo foo>foo
echo foo >>foo
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index 2f9471b..3cbb569 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -120,11 +120,14 @@ word
...stdout redirection
foo
foo at space@
+foo at tab@
+foo at space@
+foo at tab@
foo7 at space@@or_broken at foo@space@
foo9 at space@@or_broken at foo@space@
- at todo_wine@foo1
- at todo_wine@foo11
- at todo_wine@foo12
+foo1
+foo11
+foo12
...stdout appending
foo
foo at space@
@@ -133,12 +136,12 @@ foob at space@
fooc at space@
foob at space@
fooc at space@
- at todo_wine@food1
- at todo_wine@foob at space@
- at todo_wine@fooc at space@
- at todo_wine@food1
- at todo_wine@food2
- at todo_wine@food21
+food1
+foob at space@
+fooc at space@
+food1
+food2
+food21
@todo_wine at foo7@space@@space@@or_broken at not supported at space@
@todo_wine at foo@or_broken at not supported
@todo_wine at ------------ Testing ^ escape character --------------
@@ -621,7 +624,7 @@ lulu
file created in read-only dir
------------ Testing CALL --------------
foo at space@
- at todo_wine@foo 8
+foo 8
foo at space@@space@
foo bar at space@
@todo_wine at foo ""@space@
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c
index 04e1391..2c1c2e5 100644
--- a/programs/cmd/wcmdmain.c
+++ b/programs/cmd/wcmdmain.c
@@ -1944,10 +1944,11 @@ WCHAR *WCMD_ReadAndParseLine(const WCHAR *optionalcmd, CMD_LIST **output, HANDLE
}
/* See if 1>, 2> etc, in which case we have some patching up
- to do */
- if (curPos != extraSpace &&
- *(curPos-1)>='1' && *(curPos-1)<='9') {
-
+ to do (provided there's a preceding whitespace, and enough
+ chars read so far) */
+ if (curStringLen > 2
+ && (*(curPos-1)>='1') && (*(curPos-1)<='9')
+ && ((*(curPos-2)==' ') || (*(curPos-2)=='\t'))) {
curStringLen--;
curString[curStringLen] = 0x00;
curCopyTo[(*curLen)++] = *(curPos-1);
--
1.7.6
More information about the wine-patches
mailing list