From f5ff17fcf29170541805e7fc7f4a74252fe39b10 Mon Sep 17 00:00:00 2001 From: scivision Date: Sun, 17 Sep 2023 23:01:40 -0400 Subject: Source: Remove redundant FileIsSymlink checks Replace `FileExists || FileIsSymlink` with `PathExists`. The latter does not resolve symlinks, so this is OK for use with broken symlinks, files, and directories. --- Source/cmFileCommand.cxx | 3 +-- Source/cmake.cxx | 2 +- Source/cmcmd.cxx | 12 +++++------- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 49a0e89..93bed9a 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -3020,8 +3020,7 @@ bool HandleCreateLinkCommand(std::vector const& args, } // Check if the new file already exists and remove it. - if ((cmSystemTools::FileExists(newFileName) || - cmSystemTools::FileIsSymlink(newFileName)) && + if (cmSystemTools::PathExists(newFileName) && !cmSystemTools::RemoveFile(newFileName)) { std::ostringstream e; e << "Failed to create link '" << newFileName diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 1d8a847..1fa0cbe 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -3264,7 +3264,7 @@ int cmake::CheckBuildSystem() // If any byproduct of makefile generation is missing we must re-run. cmList products{ mf.GetDefinition("CMAKE_MAKEFILE_PRODUCTS") }; for (auto const& p : products) { - if (!(cmSystemTools::FileExists(p) || cmSystemTools::FileIsSymlink(p))) { + if (!cmSystemTools::PathExists(p)) { if (verbose) { cmSystemTools::Stdout( cmStrCat("Re-run cmake, missing byproduct: ", p, '\n')); diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 431ffbf..3dcfbf1 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -1018,8 +1018,8 @@ int cmcmd::ExecuteCMakeCommand(std::vector const& args, // Complain if the -f option was not given and // either file does not exist or // file could not be removed and still exists - bool file_exists_or_forced_remove = cmSystemTools::FileExists(arg) || - cmSystemTools::FileIsSymlink(arg) || force; + bool file_exists_or_forced_remove = + cmSystemTools::PathExists(arg) || force; if (cmSystemTools::FileIsDirectory(arg)) { if (!cmRemoveDirectory(arg, recursive)) { return_value = 1; @@ -1239,8 +1239,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector const& args, // supporting them. if (args[1] == "create_symlink" && args.size() == 4) { std::string const& destinationFileName = args[3]; - if ((cmSystemTools::FileExists(destinationFileName) || - cmSystemTools::FileIsSymlink(destinationFileName)) && + if (cmSystemTools::PathExists(destinationFileName) && !cmSystemTools::RemoveFile(destinationFileName)) { std::string emsg = cmSystemTools::GetLastSystemError(); std::cerr << "failed to create symbolic link '" << destinationFileName @@ -1266,8 +1265,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector const& args, return 1; } - if ((cmSystemTools::FileExists(destinationFileName) || - cmSystemTools::FileIsSymlink(destinationFileName)) && + if (cmSystemTools::PathExists(destinationFileName) && !cmSystemTools::RemoveFile(destinationFileName)) { std::string emsg = cmSystemTools::GetLastSystemError(); std::cerr << "failed to create hard link '" << destinationFileName @@ -1750,7 +1748,7 @@ int cmcmd::SymlinkExecutable(std::vector const& args) cmsys::Status cmcmd::SymlinkInternal(std::string const& file, std::string const& link) { - if (cmSystemTools::FileExists(link) || cmSystemTools::FileIsSymlink(link)) { + if (cmSystemTools::PathExists(link)) { cmSystemTools::RemoveFile(link); } std::string linktext = cmSystemTools::GetFilenameName(file); -- cgit v0.12 From d49ea4a4d9d2efaa1321b224931ca0e5fea1cade Mon Sep 17 00:00:00 2001 From: scivision Date: Mon, 18 Sep 2023 23:11:15 -0400 Subject: Source: Remove redundant FileIsDirectory checks --- Source/CTest/cmCTestTestHandler.cxx | 6 ++---- Source/cmCTest.cxx | 3 +-- Source/cmInstallCommand.cxx | 3 +-- Source/cmOutputRequiredFilesCommand.cxx | 6 ++---- 4 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx index e4b9239..eb3b4dd 100644 --- a/Source/CTest/cmCTestTestHandler.cxx +++ b/Source/CTest/cmCTestTestHandler.cxx @@ -1711,8 +1711,7 @@ std::string cmCTestTestHandler::FindExecutable( // now look in the paths we specified above for (unsigned int ai = 0; ai < attempted.size() && fullPath.empty(); ++ai) { // first check without exe extension - if (cmSystemTools::FileExists(attempted[ai]) && - !cmSystemTools::FileIsDirectory(attempted[ai])) { + if (cmSystemTools::FileExists(attempted[ai], true)) { fullPath = cmSystemTools::CollapseFullPath(attempted[ai]); resultingConfig = attemptedConfigs[ai]; } @@ -1721,8 +1720,7 @@ std::string cmCTestTestHandler::FindExecutable( failed.push_back(attempted[ai]); tempPath = cmStrCat(attempted[ai], cmSystemTools::GetExecutableExtension()); - if (cmSystemTools::FileExists(tempPath) && - !cmSystemTools::FileIsDirectory(tempPath)) { + if (cmSystemTools::FileExists(tempPath, true)) { fullPath = cmSystemTools::CollapseFullPath(tempPath); resultingConfig = attemptedConfigs[ai]; } else { diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index 36fd3a8..b7232f3 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -1004,8 +1004,7 @@ int cmCTest::ProcessSteps() for (kk = 0; kk < d.GetNumberOfFiles(); kk++) { const char* file = d.GetFile(kk); std::string fullname = notes_dir + "/" + file; - if (cmSystemTools::FileExists(fullname) && - !cmSystemTools::FileIsDirectory(fullname)) { + if (cmSystemTools::FileExists(fullname, true)) { if (!this->Impl->NotesFiles.empty()) { this->Impl->NotesFiles += ";"; } diff --git a/Source/cmInstallCommand.cxx b/Source/cmInstallCommand.cxx index 7f5f15b..1b47ec4 100644 --- a/Source/cmInstallCommand.cxx +++ b/Source/cmInstallCommand.cxx @@ -1837,8 +1837,7 @@ bool HandleDirectoryMode(std::vector const& args, } // Make sure the name is a directory. - if (cmSystemTools::FileExists(dir) && - !cmSystemTools::FileIsDirectory(dir)) { + if (cmSystemTools::FileExists(dir, true)) { status.SetError(cmStrCat(args[0], " given non-directory \"", args[i], "\" to install.")); return false; diff --git a/Source/cmOutputRequiredFilesCommand.cxx b/Source/cmOutputRequiredFilesCommand.cxx index 6a9a74c..75d1501 100644 --- a/Source/cmOutputRequiredFilesCommand.cxx +++ b/Source/cmOutputRequiredFilesCommand.cxx @@ -414,8 +414,7 @@ protected: path += "/"; } path += fname; - if (cmSystemTools::FileExists(path, true) && - !cmSystemTools::FileIsDirectory(path)) { + if (cmSystemTools::FileExists(path, true)) { std::string fp = cmSystemTools::CollapseFullPath(path); this->DirectoryToFileToPathMap[extraPath][fname] = fp; return fp; @@ -428,8 +427,7 @@ protected: path = path + "/"; } path = path + fname; - if (cmSystemTools::FileExists(path, true) && - !cmSystemTools::FileIsDirectory(path)) { + if (cmSystemTools::FileExists(path, true)) { std::string fp = cmSystemTools::CollapseFullPath(path); this->DirectoryToFileToPathMap[extraPath][fname] = fp; return fp; -- cgit v0.12