aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/VirtualFileSystem.cs
diff options
context:
space:
mode:
authoremmauss <emmausssss@gmail.com>2018-09-09 01:04:26 +0300
committergdkchan <gab.dark.100@gmail.com>2018-09-08 19:04:26 -0300
commitfc77b089a6ab600ac6f954cb193d26239008975f (patch)
tree48e781b399eaf1776b82bb9735cad8d5845b63c2 /Ryujinx.HLE/VirtualFileSystem.cs
parent322721811441e5735c64a8821e4771d6872a0fb7 (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.cs123
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