mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-14 16:29:21 +01:00
IOS/ES: Create missing directories at boot
Something that IOS does and that Dolphin doesn't, for whatever reason.
This commit is contained in:
parent
f3bf1d626c
commit
07d83ada39
@ -40,8 +40,46 @@ static TitleContext s_title_context;
|
|||||||
// Title to launch after IOS has been reset and reloaded (similar to /sys/launch.sys).
|
// Title to launch after IOS has been reset and reloaded (similar to /sys/launch.sys).
|
||||||
static u64 s_title_to_launch;
|
static u64 s_title_to_launch;
|
||||||
|
|
||||||
|
struct DirectoryToCreate
|
||||||
|
{
|
||||||
|
const char* path;
|
||||||
|
u32 attributes;
|
||||||
|
OpenMode owner_perm;
|
||||||
|
OpenMode group_perm;
|
||||||
|
OpenMode other_perm;
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr std::array<DirectoryToCreate, 9> s_directories_to_create = {{
|
||||||
|
{"/sys", 0, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_NONE},
|
||||||
|
{"/ticket", 0, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_NONE},
|
||||||
|
{"/title", 0, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_READ},
|
||||||
|
{"/shared1", 0, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_NONE},
|
||||||
|
{"/shared2", 0, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW},
|
||||||
|
{"/tmp", 0, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW},
|
||||||
|
{"/import", 0, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_NONE},
|
||||||
|
{"/meta", 0, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_RW},
|
||||||
|
{"/wfs", 0, OpenMode::IOS_OPEN_RW, OpenMode::IOS_OPEN_NONE, OpenMode::IOS_OPEN_NONE},
|
||||||
|
}};
|
||||||
|
|
||||||
ES::ES(Kernel& ios, const std::string& device_name) : Device(ios, device_name)
|
ES::ES(Kernel& ios, const std::string& device_name) : Device(ios, device_name)
|
||||||
{
|
{
|
||||||
|
for (const auto& directory : s_directories_to_create)
|
||||||
|
{
|
||||||
|
const std::string path = Common::RootUserPath(Common::FROM_SESSION_ROOT) + directory.path;
|
||||||
|
|
||||||
|
// Create the directory if it does not exist.
|
||||||
|
if (File::IsDirectory(path))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
File::CreateFullPath(path);
|
||||||
|
if (File::CreateDir(path))
|
||||||
|
INFO_LOG(IOS_ES, "Created %s (at %s)", directory.path, path.c_str());
|
||||||
|
else
|
||||||
|
ERROR_LOG(IOS_ES, "Failed to create %s (at %s)", directory.path, path.c_str());
|
||||||
|
|
||||||
|
// TODO: Set permissions.
|
||||||
|
}
|
||||||
|
|
||||||
FinishAllStaleImports();
|
FinishAllStaleImports();
|
||||||
|
|
||||||
s_content_file = "";
|
s_content_file = "";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user