summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCristian Adam <cristian.adam@gmail.com>2021-02-02 14:18:48 (GMT)
committerCristian Adam <cristian.adam@gmail.com>2021-02-02 14:18:48 (GMT)
commit05f16ca7eefad41cbb8d6a973f47fe7c1a488ae5 (patch)
treed3e9aa594804b4df093b9af5bccf0ffe32384533
parent8387aa20f2c8ba870a8349665e2469f0e064f0b2 (diff)
downloadCMake-05f16ca7eefad41cbb8d6a973f47fe7c1a488ae5.zip
CMake-05f16ca7eefad41cbb8d6a973f47fe7c1a488ae5.tar.gz
CMake-05f16ca7eefad41cbb8d6a973f47fe7c1a488ae5.tar.bz2
file(CONFIGURE): Use text mode for default OUTPUT content
This affects only Windows where \n will be translated as \r\n Fixes: #21769
-rw-r--r--Source/cmFileCommand.cxx4
-rw-r--r--Tests/RunCMake/File_Configure/NewLineStyle-ValidArg.cmake6
2 files changed, 8 insertions, 2 deletions
diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx
index 5eff789..031e0d7 100644
--- a/Source/cmFileCommand.cxx
+++ b/Source/cmFileCommand.cxx
@@ -3122,12 +3122,14 @@ bool HandleConfigureCommand(std::vector<std::string> const& args,
}
std::string newLineCharacters = "\n";
+ bool open_with_binary_flag = false;
if (newLineStyle.IsValid()) {
newLineCharacters = newLineStyle.GetCharacters();
+ open_with_binary_flag = true;
}
cmGeneratedFileStream fout;
- fout.Open(outputFile, false, true);
+ fout.Open(outputFile, false, open_with_binary_flag);
if (!fout) {
cmSystemTools::Error("Could not open file for write in copy operation " +
outputFile);
diff --git a/Tests/RunCMake/File_Configure/NewLineStyle-ValidArg.cmake b/Tests/RunCMake/File_Configure/NewLineStyle-ValidArg.cmake
index 09aec45..5e35e5c 100644
--- a/Tests/RunCMake/File_Configure/NewLineStyle-ValidArg.cmake
+++ b/Tests/RunCMake/File_Configure/NewLineStyle-ValidArg.cmake
@@ -22,4 +22,8 @@ test_eol(CRLF "c" "630d0a")
test_eol(UNIX "d" "640a")
test_eol(LF "e" "650a")
-test_eol("" "a\nb" "610a62")
+if (WIN32)
+ test_eol("" "a\nb" "610d0a62")
+elseif(UNIX)
+ test_eol("" "a\nb" "610a62")
+endif()