Add utility methods to resolve actual file paths

This commit is contained in:
TSR Berry 2024-07-11 00:37:28 +02:00
parent 81300d9ce5
commit 2e3bd31102
No known key found for this signature in database
GPG key ID: 52353C0A4CCA15E2

View file

@ -52,5 +52,36 @@ namespace Ryujinx.Common.Utilities
var reservedChars = new HashSet<char>(Path.GetInvalidFileNameChars());
return string.Concat(fileName.Select(c => reservedChars.Contains(c) ? '_' : c));
}
public static string ResolveFullPath(string path, bool isDirectory)
{
FileSystemInfo pathInfo = isDirectory ? new DirectoryInfo(path) : new FileInfo(path);
return pathInfo.ResolveLinkTarget(true)?.FullName ?? pathInfo.FullName;
}
public static FileInfo GetActualFileInfo(this FileInfo fileInfo)
{
return (FileInfo)(fileInfo.ResolveLinkTarget(true) ?? fileInfo);
}
public static FileInfo GetActualFileInfo(string filePath)
{
FileInfo fileInfo = new(filePath);
return (FileInfo)(fileInfo.ResolveLinkTarget(true) ?? fileInfo);
}
public static DirectoryInfo GetActualDirectoryInfo(this DirectoryInfo directoryInfo)
{
return (DirectoryInfo)(directoryInfo.ResolveLinkTarget(true) ?? directoryInfo);
}
public static DirectoryInfo GetActualDirectoryInfo(string directoryPath)
{
DirectoryInfo directoryInfo = new(directoryPath);
return (DirectoryInfo)(directoryInfo.ResolveLinkTarget(true) ?? directoryInfo);
}
}
}