Commit c3264f48 authored by Stephen Kelly's avatar Stephen Kelly

Convert: Extract method to determine if paths are in directory

The conditional early return can be moved to clients, which would have
many benefits, notably making cmOutputConverter independent of
directory-specific state.
parent 52168f32
Pipeline #29741 passed with stage
......@@ -76,13 +76,14 @@ static bool cmOutputConverterNotAbove(const char* a, const char* b)
cmSystemTools::IsSubDirectory(a, b));
}
std::string cmOutputConverter::ConvertToRelativePath(
std::string const& local_path, std::string const& remote_path) const
bool cmOutputConverter::ContainedInDirectory(std::string const& local_path,
std::string const& remote_path,
cmState::Directory directory)
{
const std::string relativePathTopBinary =
this->StateSnapshot.GetDirectory().GetRelativePathTopBinary();
directory.GetRelativePathTopBinary();
const std::string relativePathTopSource =
this->StateSnapshot.GetDirectory().GetRelativePathTopSource();
directory.GetRelativePathTopSource();
const bool bothInBinary =
cmOutputConverterNotAbove(local_path.c_str(),
......@@ -96,7 +97,14 @@ std::string cmOutputConverter::ConvertToRelativePath(
cmOutputConverterNotAbove(remote_path.c_str(),
relativePathTopSource.c_str());
if (!(bothInSource || bothInBinary)) {
return bothInSource || bothInBinary;
}
std::string cmOutputConverter::ConvertToRelativePath(
std::string const& local_path, std::string const& remote_path) const
{
if (!ContainedInDirectory(local_path, remote_path,
this->StateSnapshot.GetDirectory())) {
return remote_path;
}
......
......@@ -99,6 +99,10 @@ public:
};
static FortranFormat GetFortranFormat(const char* value);
static bool ContainedInDirectory(std::string const& local_path,
std::string const& remote_path,
cmState::Directory directory);
/**
* Convert the given remote path to a relative path with respect to
* the given local path. Both paths must use forward slashes and not
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment