Fix FileNotFoundException when resolving non-existent paths in FileSystemUtils

This commit is contained in:
TSR Berry 2024-07-11 01:01:08 +02:00
commit abaa560ed5
No known key found for this signature in database
GPG key ID: 52353C0A4CCA15E2
2 changed files with 21 additions and 6 deletions

View file

@ -57,31 +57,46 @@ namespace Ryujinx.Common.Utilities
{ {
FileSystemInfo pathInfo = isDirectory ? new DirectoryInfo(path) : new FileInfo(path); FileSystemInfo pathInfo = isDirectory ? new DirectoryInfo(path) : new FileInfo(path);
if (pathInfo.Exists)
{
return pathInfo.ResolveLinkTarget(true)?.FullName ?? pathInfo.FullName; return pathInfo.ResolveLinkTarget(true)?.FullName ?? pathInfo.FullName;
} }
return pathInfo.FullName;
}
public static FileInfo GetActualFileInfo(this FileInfo fileInfo) public static FileInfo GetActualFileInfo(this FileInfo fileInfo)
{
if (fileInfo.Exists)
{ {
return (FileInfo)(fileInfo.ResolveLinkTarget(true) ?? fileInfo); return (FileInfo)(fileInfo.ResolveLinkTarget(true) ?? fileInfo);
} }
return fileInfo;
}
public static FileInfo GetActualFileInfo(string filePath) public static FileInfo GetActualFileInfo(string filePath)
{ {
FileInfo fileInfo = new(filePath); FileInfo fileInfo = new(filePath);
return (FileInfo)(fileInfo.ResolveLinkTarget(true) ?? fileInfo); return fileInfo.GetActualFileInfo();
} }
public static DirectoryInfo GetActualDirectoryInfo(this DirectoryInfo directoryInfo) public static DirectoryInfo GetActualDirectoryInfo(this DirectoryInfo directoryInfo)
{
if (directoryInfo.Exists)
{ {
return (DirectoryInfo)(directoryInfo.ResolveLinkTarget(true) ?? directoryInfo); return (DirectoryInfo)(directoryInfo.ResolveLinkTarget(true) ?? directoryInfo);
} }
return directoryInfo;
}
public static DirectoryInfo GetActualDirectoryInfo(string directoryPath) public static DirectoryInfo GetActualDirectoryInfo(string directoryPath)
{ {
DirectoryInfo directoryInfo = new(directoryPath); DirectoryInfo directoryInfo = new(directoryPath);
return (DirectoryInfo)(directoryInfo.ResolveLinkTarget(true) ?? directoryInfo); return directoryInfo.GetActualDirectoryInfo();
} }
} }
} }