From f8b81c2bf89b15d0eb3fc4fee03d3be81bc06143 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 5 Oct 2022 21:24:14 +0300 Subject: [PATCH] fix: Retain line CRLF in compiler output on Windows (#1173) 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 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/ccache.cpp b/src/ccache.cpp index 7884a009b..820b58ea2 100644 --- a/src/ccache.cpp +++ b/src/ccache.cpp @@ -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(tmp_stdout.path); + auto stdout_data_result = util::read_file(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(tmp_stderr.path); + auto stderr_data_result = util::read_file(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 -- 2.47.2