Browse Source

file(CONFIGURE): Use text mode for default OUTPUT content

This affects only Windows where \n will be translated as \r\n

Fixes: #21769
Cristian Adam 4 years ago
parent
commit
05f16ca7ee

+ 3 - 1
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);

+ 5 - 1
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()