]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
fix: Retain line CRLF in compiler output on Windows (#1173)
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>
Wed, 5 Oct 2022 18:24:14 +0000 (21:24 +0300)
committerGitHub <noreply@github.com>
Wed, 5 Oct 2022 18:24:14 +0000 (20:24 +0200)
When the cached data is read, the output to fd is binary
(Util::send_to_fd), so in order to maintain the original
line endings, the output must be stored as binary too.

src/ccache.cpp

index 7884a009b250aafc1a9f70366ba8363559d8e06d..820b58ea2d11134204fa08e89958e01cecbefce4 100644 (file)
@@ -732,21 +732,24 @@ do_execute(Context& ctx, Args& args, const bool capture_stdout = true)
 
   std::string stdout_data;
   if (capture_stdout) {
-    auto stdout_data_result = util::read_file<std::string>(tmp_stdout.path);
+    auto stdout_data_result = util::read_file<util::Bytes>(tmp_stdout.path);
     if (!stdout_data_result) {
       // The stdout file was removed - cleanup in progress? Better bail out.
       return nonstd::make_unexpected(Statistic::missing_cache_file);
     }
-    stdout_data = std::move(*stdout_data_result);
+    stdout_data = util::to_string(util::to_string_view(*stdout_data_result));
   }
 
-  auto stderr_data_result = util::read_file<std::string>(tmp_stderr.path);
+  auto stderr_data_result = util::read_file<util::Bytes>(tmp_stderr.path);
   if (!stderr_data_result) {
     // The stdout file was removed - cleanup in progress? Better bail out.
     return nonstd::make_unexpected(Statistic::missing_cache_file);
   }
 
-  return DoExecuteResult{status, stdout_data, *stderr_data_result};
+  return DoExecuteResult{
+    status,
+    stdout_data,
+    util::to_string(util::to_string_view(*stderr_data_result))};
 }
 
 static void