diff options
author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-08-29 09:24:29 (GMT) |
---|---|---|
committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-08-29 09:24:29 (GMT) |
commit | 908e496e8fd9227aa05156e3e9f1f2801ce14e16 (patch) | |
tree | 14d64d94d7e2c57c6a5d0337b7da91d700c8cc32 | |
parent | 3728831c291bc29f51ee826731bd206f28687d0d (diff) | |
download | tcl-908e496e8fd9227aa05156e3e9f1f2801ce14e16.zip tcl-908e496e8fd9227aa05156e3e9f1f2801ce14e16.tar.gz tcl-908e496e8fd9227aa05156e3e9f1f2801ce14e16.tar.bz2 |
(cherry-pick): Fix [b50fb21410dababca95baa122964b2e312cb9d8a|b50fb214] : exec redirection to append stdout and stderr to the same file
-rw-r--r-- | generic/tclPipe.c | 8 | ||||
-rw-r--r-- | tests/exec.test | 8 |
2 files changed, 13 insertions, 3 deletions
diff --git a/generic/tclPipe.c b/generic/tclPipe.c index 83fb818..2ecc5a6 100644 --- a/generic/tclPipe.c +++ b/generic/tclPipe.c @@ -668,7 +668,13 @@ TclCreatePipeline( if (*p == '>') { p++; atOK = 0; - flags = O_WRONLY | O_CREAT; + + /* + * Note that the O_APPEND flag only has an effect on POSIX + * platforms. On Windows, we just have to carry on regardless. + */ + + flags = O_WRONLY | O_CREAT | O_APPEND; } if (errorClose != 0) { errorClose = 0; diff --git a/tests/exec.test b/tests/exec.test index 38927d3..5f3a0cb 100644 --- a/tests/exec.test +++ b/tests/exec.test @@ -671,8 +671,12 @@ test exec-19.1 {exec >> uses O_APPEND} -constraints {exec unix} -setup { exec /bin/sh -c \ {for a in 1 2 3; do sleep 1; echo $a; done} >>$tmpfile & exec /bin/sh -c \ + {for a in 4 5 6; do sleep 1; echo $a >&2; done} 2>>$tmpfile & + exec /bin/sh -c \ {for a in a b c; do sleep 1; echo $a; done} >>$tmpfile & - # The above two shell invokations take about 3 seconds to finish, so allow + exec /bin/sh -c \ + {for a in d e f; do sleep 1; echo $a >&2; done} 2>>$tmpfile & + # The above four shell invokations take about 3 seconds to finish, so allow # 5s (in case the machine is busy) after 5000 # Check that no bytes have got lost through mixups with overlapping @@ -681,7 +685,7 @@ test exec-19.1 {exec >> uses O_APPEND} -constraints {exec unix} -setup { file size $tmpfile } -cleanup { removeFile $tmpfile -} -result 14 +} -result 26 # Tests to ensure batch files and .CMD (Bug 9ece99d58b) # can be executed on Windows |