diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2022-05-31 01:58:40 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2022-05-31 01:58:40 -0700 |
commit | 01b8820c28320434d3ef69bde1cf646d9592f590 (patch) | |
tree | 34637f08434aad4206c087438757b74631fa8064 | |
parent | c552f56aefca032aee55824bf17969040ae0060b (diff) | |
download | txr-01b8820c28320434d3ef69bde1cf646d9592f590.tar.gz txr-01b8820c28320434d3ef69bde1cf646d9592f590.tar.bz2 txr-01b8820c28320434d3ef69bde1cf646d9592f590.zip |
cygwin: bug: sh always uses cmd.exe.
* stream.c (sh): Use a single definition for this function,
which uses the shell and shell_arg variables to use
either /bin/sh -c or cmd.exe /c. We only want to use
cmd.exe when running as a Windows native program on Cygnal.
* tests/018/process.tl: Remove workaround from test case.
This is what was causing the weirdness.
-rw-r--r-- | stream.c | 13 | ||||
-rw-r--r-- | tests/018/process.tl | 12 |
2 files changed, 7 insertions, 18 deletions
@@ -4871,11 +4871,6 @@ static val run(val command, val args) return (status < 0) ? nil : num(status); } -static val sh(val command) -{ - return run(lit("cmd.exe"), list(lit("/C"), command, nao)); -} - #elif HAVE_FORK_STUFF static val run(val name, val args) @@ -4948,15 +4943,15 @@ out: return ret; } +#else +#error port me! +#endif + static val sh(val command) { return run(shell, list(shell_arg, command, nao)); } -#else -#error port me! -#endif - val remove_path(val path, val throw_on_error) { val self = lit("remove-path"); diff --git a/tests/018/process.tl b/tests/018/process.tl index ce545dc3..58a12fa2 100644 --- a/tests/018/process.tl +++ b/tests/018/process.tl @@ -16,15 +16,9 @@ ^(with-stream (s (open-subprocess nil "r" nil (lambda () ,*forms))) (get-string s))) -(caseq (os-symbol) - ((:cygwin :cygnal) - (mtest - (fcmd (let ((*stdout* *stdnull*)) (sh "echo foo"))) "" - (fcmd (let ((*stderr* *stdout*)) (sh "echo foo 1>&2"))) "foo \r\n")) - (t - (mtest - (fcmd (let ((*stdout* *stdnull*)) (sh "echo foo"))) "" - (fcmd (let ((*stderr* *stdout*)) (sh "echo foo 1>&2"))) "foo\n"))) +(mtest + (fcmd (let ((*stdout* *stdnull*)) (sh "echo foo"))) "" + (fcmd (let ((*stderr* *stdout*)) (sh "echo foo 1>&2"))) "foo\n") (caseq (os-symbol) ((:cygwin :cygnal)) |