Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55662
Tests are not provided as its interactive.
-- v3: cmd: Do not set enviroment variable when no input is provided by set /p command.
From: Vijay Kiran Kamuju infyquest@gmail.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=55662 --- programs/cmd/builtins.c | 2 +- programs/cmd/tests/test_builtins.cmd | 14 +++++++++++--- programs/cmd/tests/test_builtins.cmd.exp | 5 ++++- 3 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/programs/cmd/builtins.c b/programs/cmd/builtins.c index 708e3c6dce6..d3182be99ea 100644 --- a/programs/cmd/builtins.c +++ b/programs/cmd/builtins.c @@ -3161,7 +3161,7 @@ void WCMD_setshow_env (WCHAR *s) { if (string[count-2] == '\r') string[count-2] = '\0'; /* Under Windoze we get CRLF! */ WINE_TRACE("set /p: Setting var '%s' to '%s'\n", wine_dbgstr_w(s), wine_dbgstr_w(string)); - SetEnvironmentVariableW(s, string); + if(wcslen(string)) SetEnvironmentVariableW(s, string); }
/* See if /A supplied, and if so calculate the results of all the expressions */ diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index d31cb3ef72a..82905f0cbd4 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -1727,8 +1727,8 @@ for %%i in (test) do ( ) echo d4 ) -echo --- set /a -goto :testseta +echo --- set +goto :testset
Rem Ideally for /f can be used rather than building a command to execute rem but that does not work on NT4 @@ -1747,9 +1747,17 @@ goto :checkenvvars %* goto :eof
-:testseta +:testset rem No output when using "set expr" syntax, unless in interactive mode rem Need to use "set envvar=expr" to use in a batch script +echo ------ interactive operations +set WINE_foo=test +echo wine> foo +set /p WINE_foo="prompt>" < NUL +call :checkenvvars WINE_foo test +set /p WINE_foo="prompt>" < foo +call :checkenvvars WINE_foo wine +del foo echo ------ individual operations set WINE_foo=0 set /a WINE_foo=1 +2 & call :checkenvvars WINE_foo 3 diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index c2dba03b740..68ca52925cb 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -1122,7 +1122,10 @@ d3 a4 c4 d4 ---- set /a +--- set +------ interactive operations +"prompt>" WINE_foo correctly test +"prompt>" WINE_foo correctly wine ------ individual operations WINE_foo correctly 3 WINE_foo correctly -1
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=146745
Your paranoid android.
=== w7u_2qxl (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w7u_adm (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w7u_el (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w8 (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w8adm (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w864 (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w1064v1507 (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w1064v1809 (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w1064_tsign (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w10pro64 (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w10pro64_en_AE_u8 (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w11pro64 (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w7pro64 (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w864 (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w1064v1507 (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w1064v1809 (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w1064_2qxl (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w1064_adm (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w1064_tsign (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w10pro64 (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w10pro64_ar (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w10pro64_ja (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w10pro64_zh_CN (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== w11pro64_amd (64 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 0 in line 1127 (got 'WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x45 position 0 in line 1128 (got 'ERROR: WINE_foo incorrectly [wine]', wanted '"prompt>" WINE_foo correctly wine')
=== debian11 (32 bit report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
=== debian11 (32 bit ar:MA report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
=== debian11 (32 bit de report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
=== debian11 (32 bit fr report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
=== debian11 (32 bit he:IL report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
=== debian11 (32 bit hi:IN report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
=== debian11 (32 bit ja:JP report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
=== debian11 (32 bit zh:CN report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
=== debian11b (32 bit WoW report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
=== debian11b (64 bit WoW report) ===
cmd.exe: batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1127 (got '"prompt>" WINE_foo correctly test', wanted '"prompt>" WINE_foo correctly test') batch.c:321: Test failed: unexpected char 0x57 position 10 in line 1128 (got '"prompt>" WINE_foo correctly wine', wanted '"prompt>" WINE_foo correctly wine')
eric pouech (@epo) commented about programs/cmd/tests/test_builtins.cmd:
%* goto :eof
-:testseta +:testset rem No output when using "set expr" syntax, unless in interactive mode rem Need to use "set envvar=expr" to use in a batch script +echo ------ interactive operations +set WINE_foo=test +echo wine> foo +set /p WINE_foo="prompt>" < NUL
nitpick: I'd rather user set /p "WINE_foo=prompt>" to not have the quotes in output
eric pouech (@epo) commented about programs/cmd/builtins.c:
if (string[count-2] == '\r') string[count-2] = '\0'; /* Under Windoze we get CRLF! */ WINE_TRACE("set /p: Setting var '%s' to '%s'\n", wine_dbgstr_w(s), wine_dbgstr_w(string));
SetEnvironmentVariableW(s, string);
if(wcslen(string)) SetEnvironmentVariableW(s, string);
nitpick: no need to call wcslen, testing *string is sufficient
after some digging, you could use: ``` echo:| set /p ... ``` to have a genuine crlf string as input to SET command (don't add spaces to the LHS of the pipe)
On Tue Jul 2 10:52:42 2024 +0000, eric pouech wrote:
after some digging, you could use:
echo:| set /p ...
to have a genuine crlf string as input to SET command (don't add spaces to the LHS of the pipe)
Can you give me an example, as it does not work in windows