Add special case for relative includes from top-level files

This commit is contained in:
Ricardo Luís Vaz Silva 2022-07-23 21:33:47 -03:00 committed by Christoph Oelckers
parent 27d4fc28db
commit 12660b0015

View file

@ -52,12 +52,15 @@ static FString ResolveIncludePath(const FString &path,const FString &lumpname){
auto end = lumpname.LastIndexOf("/"); // find last '/'
FString fullPath = lumpname.Mid(start + 1, end - start - 1); // get path from lumpname (format 'wad:filepath/filename')
// it's a top-level file, if it's a folder being loaded ( /xxx/yyy/:whatever.zs ) end is before than start, or if it's a zip ( xxx.zip/whatever.zs ) end would be -1
bool topLevelFile = start > end ;
if (start != -1 && end != -1)
FString fullPath = topLevelFile ? FString {} : lumpname.Mid(start + 1, end - start - 1); // get path from lumpname (format 'wad:filepath/filename')
if (start != -1)
{
FString relativePath = path;
if ( relativePath.IndexOf("./") == 0 ) // strip initial marker
if (relativePath.IndexOf("./") == 0) // strip initial marker
{
relativePath = relativePath.Mid(2);
}
@ -77,7 +80,7 @@ static FString ResolveIncludePath(const FString &path,const FString &lumpname){
}
if (pathOk) // if '..' parsing was successful
{
return fullPath + "/" + relativePath;
return topLevelFile ? relativePath : fullPath + "/" + relativePath;
}
}
}