temp: Attempt to solve missing paths + add logging

This commit is contained in:
TSR Berry 2024-07-31 19:40:30 +02:00
parent 3f0ab45b9c
commit 8381bc7220
No known key found for this signature in database
GPG key ID: 52353C0A4CCA15E2
4 changed files with 21 additions and 10 deletions

View file

@ -1,3 +1,4 @@
using Ryujinx.Common.Logging;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@ -59,9 +60,15 @@ namespace Ryujinx.Common.Utilities
if (pathInfo.Exists)
{
return pathInfo.ResolveLinkTarget(true)?.FullName ?? pathInfo.FullName;
var fullPath = pathInfo.ResolveLinkTarget(true)?.FullName ?? pathInfo.FullName;
Logger.Warning?.Print(LogClass.Application, $"Resolved: {path} -> {pathInfo.FullName}");
return fullPath;
}
Logger.Warning?.Print(LogClass.Application, $"Can't resolve non-existent path: {path} -> {pathInfo.FullName}");
return pathInfo.FullName;
}
@ -85,7 +92,11 @@ namespace Ryujinx.Common.Utilities
fullPath = ResolveFullPath(Path.Combine(fullPath, paths[i]), true);
}
return ResolveFullPath(Path.Combine(fullPath, paths[^1]), isDirectory);
fullPath = ResolveFullPath(Path.Combine(fullPath, paths[^1]), isDirectory);
Logger.Warning?.Print(LogClass.Application, $"Combined and resolved: {fullPath}");
return fullPath;
}
public static FileInfo GetActualFileInfo(this FileInfo fileInfo)

View file

@ -30,11 +30,11 @@ namespace Ryujinx.HLE.FileSystem
{
realPath = switchContentPath switch
{
SystemContent => FileSystemUtils.CombineAndResolveFullPath(true, AppDataManager.BaseDirPath, SystemNandPath, Contents),
UserContent => FileSystemUtils.CombineAndResolveFullPath(true, AppDataManager.BaseDirPath, UserNandPath, Contents),
SystemContent => FileSystemUtils.CombineAndResolveFullPath(true, AppDataManager.BaseDirPath, AppDataManager.DefaultNandDir, "system", Contents),
UserContent => FileSystemUtils.CombineAndResolveFullPath(true, AppDataManager.BaseDirPath, AppDataManager.DefaultNandDir, "user", Contents),
SdCardContent => FileSystemUtils.CombineAndResolveFullPath(true, GetSdCardPath(), Nintendo, Contents),
System => FileSystemUtils.CombineAndResolveFullPath(true, AppDataManager.BaseDirPath, SystemNandPath),
User => FileSystemUtils.CombineAndResolveFullPath(true, AppDataManager.BaseDirPath, UserNandPath),
System => FileSystemUtils.CombineAndResolveFullPath(true, AppDataManager.BaseDirPath, AppDataManager.DefaultNandDir, "system"),
User => FileSystemUtils.CombineAndResolveFullPath(true, AppDataManager.BaseDirPath, AppDataManager.DefaultNandDir, "user"),
_ => null,
};

View file

@ -179,11 +179,11 @@ namespace Ryujinx.HLE.FileSystem
break;
}
string fullPath = Path.Combine(AppDataManager.BaseDirPath, path);
string fullPath = FileSystemUtils.CombineAndResolveFullPath(isDirectory, AppDataManager.BaseDirPath, path);
if (isDirectory && !Directory.Exists(fullPath))
{
Directory.CreateDirectory(fullPath);
Directory.CreateDirectory(fullPath!);
}
return fullPath;

View file

@ -395,7 +395,7 @@ namespace Ryujinx.UI.Common.Configuration
{
try
{
configurationFileFormat = JsonHelper.DeserializeFromFile(path, ConfigurationFileFormatSettings.SerializerContext.ConfigurationFileFormat);
configurationFileFormat = JsonHelper.DeserializeFromFile(FileSystemUtils.ResolveFullPath(path, false), ConfigurationFileFormatSettings.SerializerContext.ConfigurationFileFormat);
return configurationFileFormat.Version != 0;
}
@ -413,7 +413,7 @@ namespace Ryujinx.UI.Common.Configuration
/// <param name="path">The path to the JSON configuration file</param>
public void SaveConfig(string path)
{
JsonHelper.SerializeToFile(path, this, ConfigurationFileFormatSettings.SerializerContext.ConfigurationFileFormat);
JsonHelper.SerializeToFile(FileSystemUtils.ResolveFullPath(path, false), this, ConfigurationFileFormatSettings.SerializerContext.ConfigurationFileFormat);
}
}
}