From 003bdf8e6909732a96ea0563a8f26b7ec801b36a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delanoy?= Date: Sat, 27 Aug 2011 02:11:28 +0200 Subject: [PATCH] cmd: Ignore trailing whitespace when using cd. --- programs/cmd/builtins.c | 2 ++ programs/cmd/tests/test_builtins.cmd | 30 ++++++++---------------- programs/cmd/tests/test_builtins.cmd.exp | 6 ++--- 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 5d7df824884..a2c5eec353c 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -2118,6 +2118,8 @@ void WCMD_setshow_default (const WCHAR *command) { if (*command != '"') *pos++ = *command; command++; } + while (pos > command && (*(pos-1) == ' ' || *(pos-1) == '\t')) + pos--; *pos = 0x00; /* Search for appropriate directory */ diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index 78eea970140..1f9bb783438 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -103,8 +103,7 @@ type foo del foo echo food21>>foo type foo -cd .. -rd /s/q foobar +cd .. & rd /s/q foobar echo ------------ Testing ^^ escape character -------------- rem Using something like "echo foo^" asks for an additional char after a "More?" prompt on the following line; it's not possible to currently test that non-interactively @@ -494,8 +493,7 @@ if exist foo ( ) else ( echo *** ) -cd .. -rd foobar +cd .. & rd foobar echo ------------ Testing if/else -------------- echo if/else should work with blocks @@ -594,8 +592,7 @@ rem del tmp rem for /d %%i in (*) do echo %%i>> tmp rem sort < tmp rem del tmp -cd .. -rd /s/Q foobar +cd .. & rd /s/Q foobar echo ...for /L rem Some cases loop forever writing 0s, like e.g. (1,0,1), (1,a,3) or (a,b,c); those can't be tested here for /L %%i in (1,2,0) do echo %%i @@ -899,8 +896,7 @@ if exist foo (echo foo created) else echo foo not created! if exist bar (echo bar created) else echo bar not created! if exist foobar (echo foobar created) else echo foobar not created! if exist bar\baz (echo bar\baz created) else echo bar\baz not created! -cd .. -rd /s/q foobaz +cd .. & rd /s/q foobaz call :setError 0 mkdir foo\* echo mkdir foo\* errorlevel %ErrorLevel% @@ -970,8 +966,7 @@ if not exist foo (echo foo removed) else echo foo not removed! if not exist bar (echo bar removed) else echo bar not removed! if not exist foobar (echo foobar removed) else echo foobar not removed! if not exist bar\baz (echo bar\baz removed) else echo bar\baz not removed! -cd .. -rd /s/q foobaz +cd .. & rd /s/q foobaz echo ------------ Testing attrib -------------- rem FIXME Add tests for archive, hidden and system attributes + mixed attributes modifications @@ -1000,8 +995,7 @@ if not exist foo ( attrib -r foo del foo ) -cd .. -rd /s/q foobar +cd .. & rd /s/q foobar echo ... recursive behaviour mkdir foobar\baz & cd foobar echo > level1 @@ -1015,8 +1009,7 @@ attrib level1 attrib baz\level2 echo > bar attrib bar -cd .. -rd /s/q foobar +cd .. & rd /s/q foobar echo ... folders processing mkdir foobar attrib foobar @@ -1031,8 +1024,7 @@ type baz\toto echo > baz\lala rem Oddly windows allows file creation in a read-only directory... if exist baz\lala (echo file created in read-only dir) else echo file not created -cd .. -rd /s/q foobar +cd .. & rd /s/q foobar echo ------------ Testing CALL -------------- mkdir foobar & cd foobar @@ -1091,8 +1083,7 @@ echo %ErrorLevel% rem First look for programs in the path before trying a builtin echo echo non-builtin dir> dir.cmd call dir /b -cd .. -rd /s/q foobar +cd .. & rd /s/q foobar echo ------------ Testing setlocal/endlocal ------------ call :setError 0 @@ -1133,8 +1124,7 @@ set VAR=globalval call test.cmd echo %VAR% set VAR= -cd .. -rd /q/s foobar +cd .. & rd /q/s foobar echo -----------Testing Errorlevel----------- rem WARNING: Do *not* add tests using ErrorLevel after this section diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index 85afd342f3b..17d828c6d48 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -300,7 +300,7 @@ foo foo1 bar2@space@ foo2 -@todo_wine@foobar deleted +foobar deleted @todo_wine@...on success conditional && @todo_wine@foo3 not created bar4@space@ @@ -317,8 +317,8 @@ Current dir: @pwd@\foobar@or_broken@Current dir:@space@ @pwd@ @pwd@\foobar @pwd@ -@todo_wine@@pwd@ -@todo_wine@@pwd@ +@pwd@ +@pwd@ @pwd@\foobar\bar bak @pwd@\foobar\bar bak @pwd@\foobar\bar bak