cmake: -E cat stops when an empty file is encountered

Fixes: #22652
This commit is contained in:
Johnny Jazeix
2021-09-18 18:52:28 +02:00
parent e4ad87c5dd
commit 0b4a56e64b
2 changed files with 4 additions and 1 deletions

View File

@@ -1068,6 +1068,8 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> 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();

View File

@@ -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