summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Source/cmOutputConverter.cxx18
-rw-r--r--Source/cmOutputConverter.h4
2 files changed, 17 insertions, 5 deletions
diff --git a/Source/cmOutputConverter.cxx b/Source/cmOutputConverter.cxx
index 5d31f02fdc..dfc1610b0c 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 fd887ae70e..745686b260 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