diff options
| author | Thomas Guillemard <thog@protonmail.com> | 2019-02-14 01:44:39 +0100 |
|---|---|---|
| committer | jduncanator <1518948+jduncanator@users.noreply.github.com> | 2019-02-14 11:44:39 +1100 |
| commit | b126ea48c63a3de8da8f3b817860c0323f2621ef (patch) | |
| tree | eb58d7b31719050da390e2b79824d6e931b85da8 /Ryujinx.HLE/HOS/Services/FspSrv/IFileSystem.cs | |
| parent | 7e9f5555747315d142e1ae20266cb581647db0cd (diff) | |
Support HomeBrew Loader (#577)
* Make it possibles to load hb-loader and hb-menu
One issue remains with hb-menu homebrew icons because of SIMD issues
(libjpeg-turbo related) and netloader doesn't work.
* Implement GetApplicationControlData
* Fix shared fonts for NSO/NRO
* Add homebrew NRO romfs support
This readd the NRO support by parsing the ASET header
* Address comments about HomebrewRomFs
* override Dispose in homebrew romfs stream
* Use a struct for file timestamp
* Simplify positional increments in GetApplicationControlData
* Address comments
* improve readability of the memory permission check in SetProcessMemoryPermission
* Fix previous broken check
* Add address space checks in SetProcessMemoryPermission
Diffstat (limited to 'Ryujinx.HLE/HOS/Services/FspSrv/IFileSystem.cs')
| -rw-r--r-- | Ryujinx.HLE/HOS/Services/FspSrv/IFileSystem.cs | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystem.cs b/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystem.cs index 9e294460..bcb9dbaf 100644 --- a/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystem.cs +++ b/Ryujinx.HLE/HOS/Services/FspSrv/IFileSystem.cs @@ -38,8 +38,8 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv { 10, Commit }, { 11, GetFreeSpaceSize }, { 12, GetTotalSpaceSize }, - { 13, CleanDirectoryRecursively } - //{ 14, GetFileTimeStampRaw } + { 13, CleanDirectoryRecursively }, + { 14, GetFileTimeStampRaw } }; _openPaths = new HashSet<string>(); @@ -368,6 +368,34 @@ namespace Ryujinx.HLE.HOS.Services.FspSrv return 0; } + // GetFileTimeStampRaw(buffer<bytes<0x301>, 0x19, 0x301> path) -> bytes<0x20> timestamp + public long GetFileTimeStampRaw(ServiceCtx context) + { + string name = ReadUtf8String(context); + + string path = _provider.GetFullPath(name); + + if (_provider.FileExists(path) || _provider.DirectoryExists(path)) + { + FileTimestamp timestamp = _provider.GetFileTimeStampRaw(path); + + context.ResponseData.Write(new DateTimeOffset(timestamp.CreationDateTime).ToUnixTimeSeconds()); + context.ResponseData.Write(new DateTimeOffset(timestamp.ModifiedDateTime).ToUnixTimeSeconds()); + context.ResponseData.Write(new DateTimeOffset(timestamp.LastAccessDateTime).ToUnixTimeSeconds()); + + byte[] data = new byte[8]; + + // is valid? + data[0] = 1; + + context.ResponseData.Write(data); + + return 0; + } + + return MakeError(ErrorModule.Fs, FsErr.PathDoesNotExist); + } + private bool IsPathAlreadyInUse(string path) { lock (_openPaths) |
