diff options
Diffstat (limited to 'source/compiler-core/slang-artifact-desc-util.cpp')
| -rw-r--r-- | source/compiler-core/slang-artifact-desc-util.cpp | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/source/compiler-core/slang-artifact-desc-util.cpp b/source/compiler-core/slang-artifact-desc-util.cpp index 7534e1265..7e274794f 100644 --- a/source/compiler-core/slang-artifact-desc-util.cpp +++ b/source/compiler-core/slang-artifact-desc-util.cpp @@ -704,7 +704,13 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S /* static */String ArtifactDescUtil::getBaseNameFromPath(const ArtifactDesc& desc, const UnownedStringSlice& path) { - String name = Path::getFileName(path); + const String name = Path::getFileName(path); + return getBaseNameFromName(desc, name.getUnownedSlice()); +} + +/* static */String ArtifactDescUtil::getBaseNameFromName(const ArtifactDesc& desc, const UnownedStringSlice& inName) +{ + String name(inName); const bool isSharedLibraryPrefixPlatform = SLANG_LINUX_FAMILY || SLANG_APPLE_FAMILY; if (isSharedLibraryPrefixPlatform) @@ -723,16 +729,19 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S } } - // Strip any extension + // Strip any extension { StringBuilder descExt; - - appendDefaultExtension(desc, descExt); - - // Strip the extension if it's a match - if (descExt.getLength() && - Path::getPathExt(name) == descExt) + if (SLANG_SUCCEEDED(appendDefaultExtension(desc, descExt)) && + descExt.getLength()) { + // TODO(JS): + // It has an extension. We could check if they are the same + // but if they are not that might be fine, because of case insensitivity + // or perhaps there are multiple valid extensions. So for now we just strip + // and don't bother confirming with something like.. + // if (Path::getPathExt(name) == descExt)) + name = Path::getFileNameWithoutExt(name); } } @@ -740,9 +749,9 @@ SlangResult ArtifactDescUtil::appendDefaultExtension(const ArtifactDesc& desc, S return name; } -/* static */String ArtifactDescUtil::getBaseName(const ArtifactDesc& desc, IFileArtifactRepresentation* fileRep) +/* static */String ArtifactDescUtil::getBaseName(const ArtifactDesc& desc, IPathArtifactRepresentation* pathRep) { - UnownedStringSlice path(fileRep->getPath()); + UnownedStringSlice path(pathRep->getPath()); return getBaseNameFromPath(desc, path); } |
