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
This commit is contained in:
Thomas Guillemard 2019-02-14 01:44:39 +01:00 committed by jduncanator
parent 7e9f555574
commit b126ea48c6
17 changed files with 633 additions and 17 deletions

View file

@ -1,5 +1,6 @@
using Ryujinx.HLE.HOS;
using Ryujinx.HLE.HOS.Services.FspSrv;
using Ryujinx.HLE.Utilities;
using System;
using System.Collections.Generic;
using System.IO;
@ -279,5 +280,34 @@ namespace Ryujinx.HLE.FileSystem
throw new InvalidOperationException($"Path {path} is not a child directory of {_rootPath}");
}
public FileTimestamp GetFileTimeStampRaw(string name)
{
CheckIfDescendentOfRootPath(name);
DateTime creationDateTime = DateTime.UnixEpoch;
DateTime modifiedDateTime = DateTime.UnixEpoch;
DateTime lastAccessDateTime = DateTime.UnixEpoch;
if (File.Exists(name))
{
creationDateTime = File.GetCreationTime(name);
modifiedDateTime = File.GetLastWriteTime(name);
lastAccessDateTime = File.GetLastAccessTime(name);
}
else if (Directory.Exists(name))
{
creationDateTime = Directory.GetCreationTime(name);
modifiedDateTime = Directory.GetLastWriteTime(name);
lastAccessDateTime = Directory.GetLastAccessTime(name);
}
return new FileTimestamp
{
CreationDateTime = creationDateTime,
ModifiedDateTime = modifiedDateTime,
LastAccessDateTime = lastAccessDateTime
};
}
}
}