summaryrefslogtreecommitdiffstats
path: root/source/core/slang-io.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-02-28 15:09:19 -0800
committerGitHub <noreply@github.com>2023-02-28 15:09:19 -0800
commitf7db44a236bb867003395d1a91d6907901653528 (patch)
tree84d65caea539337bf19fb4435a1fe6fa5de589fb /source/core/slang-io.cpp
parentf23e36243e9c59c02f66ec2e18b80ba4ea540f45 (diff)
Add `SourceBlobWithPathInfoArtifactRepresentation`. (#2682)
Diffstat (limited to 'source/core/slang-io.cpp')
-rw-r--r--source/core/slang-io.cpp18
1 files changed, 17 insertions, 1 deletions
diff --git a/source/core/slang-io.cpp b/source/core/slang-io.cpp
index f2be44f4f..12cbb9ba8 100644
--- a/source/core/slang-io.cpp
+++ b/source/core/slang-io.cpp
@@ -286,7 +286,23 @@ namespace Slang
// If ioBuilder doesn't end in a delimiter, add one
if (!isDelimiter(ioBuilder[ioBuilder.getLength() - 1]))
{
- ioBuilder.append(kPathDelimiter);
+ // Determine the preferred delimiter to use based on existing path.
+ char preferedDelimiter = kOSCanonicalPathDelimiter;
+ if (kOSAlternativePathDelimiter != preferedDelimiter)
+ {
+ // If we found the existing path uses the alternative delimiter, we will
+ // use that instead of the canonical one.
+ constexpr Index kMaxDelimiterSearchRange = 32;
+ for (Index i = 0; i < Math::Min(kMaxDelimiterSearchRange, ioBuilder.getLength()); i++)
+ {
+ if (ioBuilder[i] == kOSAlternativePathDelimiter)
+ {
+ preferedDelimiter = kOSAlternativePathDelimiter;
+ break;
+ }
+ }
+ }
+ ioBuilder.append(preferedDelimiter);
}
// Check that path doesn't start with a path delimiter
SLANG_ASSERT(!isDelimiter(path[0]));