diff options
author | Ben Boeckel <ben.boeckel@kitware.com> | 2014-12-05 17:47:18 (GMT) |
---|---|---|
committer | Ben Boeckel <ben.boeckel@kitware.com> | 2014-12-05 17:47:18 (GMT) |
commit | 29b0c8c3606f07f3baee245138552c3c0256ded6 (patch) | |
tree | 33c118dd36196acb7844b93d81c98ecce8699941 /Source/CTest/cmCTestLaunch.cxx | |
parent | 356f7cf4457271ee85a71face453ea9579f05da3 (diff) | |
download | CMake-29b0c8c3606f07f3baee245138552c3c0256ded6.zip CMake-29b0c8c3606f07f3baee245138552c3c0256ded6.tar.gz CMake-29b0c8c3606f07f3baee245138552c3c0256ded6.tar.bz2 |
ctest --launch: write to cout and cerr in binary
Because ctest reads in binary but writes in text mode, Windows' newline
transformation can be applied multiple times causing '\n' in the source
application to be written out as '\r\r\n' instead.
Diffstat (limited to 'Source/CTest/cmCTestLaunch.cxx')
-rw-r--r-- | Source/CTest/cmCTestLaunch.cxx | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/Source/CTest/cmCTestLaunch.cxx b/Source/CTest/cmCTestLaunch.cxx index b65d23b..77c5d57 100644 --- a/Source/CTest/cmCTestLaunch.cxx +++ b/Source/CTest/cmCTestLaunch.cxx @@ -21,6 +21,12 @@ #include <cmsys/RegularExpression.hxx> #include <cmsys/FStream.hxx> +#ifdef _WIN32 +#include <io.h> // for _setmode +#include <fcntl.h> // for _O_BINARY +#include <stdio.h> // for std{out,err} and fileno +#endif + //---------------------------------------------------------------------------- cmCTestLaunch::cmCTestLaunch(int argc, const char* const* argv) { @@ -259,6 +265,13 @@ void cmCTestLaunch::RunChild() std::ios::out | std::ios::binary); } +#ifdef _WIN32 + // Do this so that newline transformation is not done when writing to cout + // and cerr below. + _setmode(fileno(stdout), _O_BINARY); + _setmode(fileno(stderr), _O_BINARY); +#endif + // Run the real command. cmsysProcess_Execute(cp); |