diff options
| author | emmauss <emmausssss@gmail.com> | 2018-09-09 01:04:26 +0300 |
|---|---|---|
| committer | gdkchan <gab.dark.100@gmail.com> | 2018-09-08 19:04:26 -0300 |
| commit | fc77b089a6ab600ac6f954cb193d26239008975f (patch) | |
| tree | 48e781b399eaf1776b82bb9735cad8d5845b63c2 /Ryujinx.HLE/VirtualFileSystem.cs | |
| parent | 322721811441e5735c64a8821e4771d6872a0fb7 (diff) | |
Implements proper save path (#386)
* initial save path implementation
* fix savedatatype offset, remove incomplete createsavedata implimentation
* address nits
* fix crash if npdm is not found
* made saveinfo readonly, other stuff
* remove context param from saveinfo contructor
* fix style
* remove whitespace
Diffstat (limited to 'Ryujinx.HLE/VirtualFileSystem.cs')
| -rw-r--r-- | Ryujinx.HLE/VirtualFileSystem.cs | 123 |
1 files changed, 0 insertions, 123 deletions
diff --git a/Ryujinx.HLE/VirtualFileSystem.cs b/Ryujinx.HLE/VirtualFileSystem.cs deleted file mode 100644 index 133538f9..00000000 --- a/Ryujinx.HLE/VirtualFileSystem.cs +++ /dev/null @@ -1,123 +0,0 @@ -using System; -using System.IO; - -namespace Ryujinx.HLE -{ - class VirtualFileSystem : IDisposable - { - private const string BasePath = "RyuFs"; - private const string NandPath = "nand"; - private const string SdCardPath = "sdmc"; - private const string SystemPath = "system"; - - public Stream RomFs { get; private set; } - - public void LoadRomFs(string FileName) - { - RomFs = new FileStream(FileName, FileMode.Open, FileAccess.Read); - } - - public void SetRomFs(Stream RomfsStream) - { - RomFs?.Close(); - RomFs = RomfsStream; - } - - public string GetFullPath(string BasePath, string FileName) - { - if (FileName.StartsWith("//")) - { - FileName = FileName.Substring(2); - } - else if (FileName.StartsWith('/')) - { - FileName = FileName.Substring(1); - } - else - { - return null; - } - - string FullPath = Path.GetFullPath(Path.Combine(BasePath, FileName)); - - if (!FullPath.StartsWith(GetBasePath())) - { - return null; - } - - return FullPath; - } - - public string GetSdCardPath() => MakeDirAndGetFullPath(SdCardPath); - - public string GetGameSavesPath() => MakeDirAndGetFullPath(NandPath); - - public string GetSystemPath() => MakeDirAndGetFullPath(SystemPath); - - public string SwitchPathToSystemPath(string SwitchPath) - { - string[] Parts = SwitchPath.Split(":"); - if (Parts.Length != 2) - { - return null; - } - return GetFullPath(MakeDirAndGetFullPath(Parts[0]), Parts[1]); - } - - public string SystemPathToSwitchPath(string SystemPath) - { - string BaseSystemPath = GetBasePath() + Path.DirectorySeparatorChar; - if (SystemPath.StartsWith(BaseSystemPath)) - { - string RawPath = SystemPath.Replace(BaseSystemPath, ""); - int FirstSeparatorOffset = RawPath.IndexOf(Path.DirectorySeparatorChar); - if (FirstSeparatorOffset == -1) - { - return $"{RawPath}:/"; - } - - string BasePath = RawPath.Substring(0, FirstSeparatorOffset); - string FileName = RawPath.Substring(FirstSeparatorOffset + 1); - return $"{BasePath}:/{FileName}"; - } - return null; - } - - private string MakeDirAndGetFullPath(string Dir) - { - string FullPath = Path.Combine(GetBasePath(), Dir); - - if (!Directory.Exists(FullPath)) - { - Directory.CreateDirectory(FullPath); - } - - return FullPath; - } - - public DriveInfo GetDrive() - { - return new DriveInfo(Path.GetPathRoot(GetBasePath())); - } - - public string GetBasePath() - { - string AppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); - - return Path.Combine(AppDataPath, BasePath); - } - - public void Dispose() - { - Dispose(true); - } - - protected virtual void Dispose(bool disposing) - { - if (disposing) - { - RomFs?.Dispose(); - } - } - } -}
\ No newline at end of file |
