From 0b4a56e64b52ac050e42192c635bd59527cd98b7 Mon Sep 17 00:00:00 2001 From: Johnny Jazeix Date: Sat, 18 Sep 2021 18:52:28 +0200 Subject: cmake: -E cat stops when an empty file is encountered Fixes: #22652 --- Source/cmcmd.cxx | 2 ++ Tests/RunCMake/CommandLine/RunCMakeTest.cmake | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 1e0f497..3e36f97 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -1068,6 +1068,8 @@ int cmcmd::ExecuteCMakeCommand(std::vector const& args, } else if (!cmSystemTools::FileExists(arg)) { cmSystemTools::Error(arg + ": no such file or directory (ignoring)"); return_value = 1; + } else if (cmSystemTools::FileLength(arg) == 0) { + // Ignore empty files, this is not an error } else { // Destroy console buffers to drop cout/cerr encoding transform. consoleBuf.reset(); diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake index cea5b1b..dc066f1 100644 --- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake +++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake @@ -647,9 +647,10 @@ run_cmake_command(E_cat_directory file(WRITE "${out}/first_file.txt" "first file to append\n") file(WRITE "${out}/second_file.txt" "second file to append\n") +file(WRITE "${out}/empty_file.txt" "") file(WRITE "${out}/unicode_file.txt" "àéùç - 한국어") # Korean in Korean run_cmake_command(E_cat_good_cat - ${CMAKE_COMMAND} -E cat "${out}/first_file.txt" "${out}/second_file.txt" "${out}/unicode_file.txt") + ${CMAKE_COMMAND} -E cat "${out}/first_file.txt" "${out}/second_file.txt" "${out}/empty_file.txt" "${out}/unicode_file.txt") unset(out) run_cmake_command(E_cat_good_binary_cat -- cgit v0.12