summaryrefslogtreecommitdiff
path: root/source/core/slang-implicit-directory-collector.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/core/slang-implicit-directory-collector.cpp')
-rw-r--r--source/core/slang-implicit-directory-collector.cpp23
1 files changed, 20 insertions, 3 deletions
diff --git a/source/core/slang-implicit-directory-collector.cpp b/source/core/slang-implicit-directory-collector.cpp
index 199fd6155..994ebd4d7 100644
--- a/source/core/slang-implicit-directory-collector.cpp
+++ b/source/core/slang-implicit-directory-collector.cpp
@@ -1,5 +1,7 @@
#include "slang-implicit-directory-collector.h"
+#include "slang-io.h"
+
namespace Slang
{
@@ -8,13 +10,28 @@ namespace Slang
ImplicitDirectoryCollector::ImplicitDirectoryCollector(const String& canonicalPath, bool directoryExists) :
m_directoryExists(directoryExists)
{
- StringBuilder buffer;
- if (canonicalPath != ".")
+ if (!isRootPath(canonicalPath.getUnownedSlice()))
{
+ StringBuilder buffer;
buffer << canonicalPath;
buffer.append('/');
+ m_prefix = buffer.ProduceString();
+ }
+}
+
+/* static */bool ImplicitDirectoryCollector::isRootPath(const UnownedStringSlice& path)
+{
+ const auto length = path.getLength();
+ if (length == 0)
+ {
+ return true;
+ }
+ else if (length == 1)
+ {
+ const auto c = path[0];
+ return c == '.' || Path::isDelimiter(c);
}
- m_prefix = buffer.ProduceString();
+ return false;
}
void ImplicitDirectoryCollector::addRemainingPath(SlangPathType pathType, const UnownedStringSlice& inPathRemainder)