From 2e3bd311022c2a08ec81275c842c8159ae61e978 Mon Sep 17 00:00:00 2001 From: TSR Berry <20988865+TSRBerry@users.noreply.github.com> Date: Thu, 11 Jul 2024 00:37:28 +0200 Subject: [PATCH] Add utility methods to resolve actual file paths --- .../Utilities/FileSystemUtils.cs | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/Ryujinx.Common/Utilities/FileSystemUtils.cs b/src/Ryujinx.Common/Utilities/FileSystemUtils.cs index a57fa8a788..06bcbff760 100644 --- a/src/Ryujinx.Common/Utilities/FileSystemUtils.cs +++ b/src/Ryujinx.Common/Utilities/FileSystemUtils.cs @@ -52,5 +52,36 @@ namespace Ryujinx.Common.Utilities var reservedChars = new HashSet(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); + } } }