diff options
author | Stephen Kelly <steveire@gmail.com> | 2016-10-04 20:56:30 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2016-10-06 18:02:06 (GMT) |
commit | c3264f48c2960325b9141d3ec58c6b49afe120c9 (patch) | |
tree | d5c7cca2ea2d5c6e40c029eaf70723b846ef7941 /Source | |
parent | 52168f3210ca07a8d80991958d588789c2693d63 (diff) | |
download | CMake-c3264f48c2960325b9141d3ec58c6b49afe120c9.zip CMake-c3264f48c2960325b9141d3ec58c6b49afe120c9.tar.gz CMake-c3264f48c2960325b9141d3ec58c6b49afe120c9.tar.bz2 |
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.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/cmOutputConverter.cxx | 18 | ||||
-rw-r--r-- | Source/cmOutputConverter.h | 4 |
2 files changed, 17 insertions, 5 deletions
diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx index 5d31f02..dfc1610 100644 --- a/Source/cmOutputConverter.cxx +++ b/Source/cmOutputConverter.cxx @@ -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; } diff --git a/Source/cmOutputConverter.h b/Source/cmOutputConverter.h index fd887ae..745686b 100644 --- a/Source/cmOutputConverter.h +++ b/Source/cmOutputConverter.h @@ -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 |