Frédéric Delanoy : cmd: Fix redirection handle parsing.
Alexandre Julliard
julliard at winehq.org
Mon Aug 29 11:28:38 CDT 2011
Module: wine
Branch: master
Commit: bbdaed2f33157eaf7ac6eefbade697f2967965ae
URL: http://source.winehq.org/git/wine.git/?a=commit;h=bbdaed2f33157eaf7ac6eefbade697f2967965ae
Author: Frédéric Delanoy <frederic.delanoy at gmail.com>
Date: Sat Aug 27 02:11:30 2011 +0200
cmd: Fix redirection handle parsing.
---
programs/cmd/tests/test_builtins.cmd | 9 +++++++++
programs/cmd/tests/test_builtins.cmd.exp | 27 +++++++++++++++------------
programs/cmd/wcmdmain.c | 9 +++++----
3 files changed, 29 insertions(+), 16 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..1869117 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@
-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
+foo at tab@
+foo at space@
+foo at tab@
+foo7 at space@@or_broken at foo@tab@
+foo9 at space@@or_broken at foo@tab@
+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);
More information about the wine-cvs
mailing list