diff options
author | bunnei <bunneidev@gmail.com> | 2014-10-25 18:39:22 +0200 |
---|---|---|
committer | bunnei <bunneidev@gmail.com> | 2014-10-25 18:39:22 +0200 |
commit | fd7f92d2422058cc2eddbaa4d6c46aaa099c16a1 (patch) | |
tree | 4a41ea3070eb25e80b6093b2928c9275de261576 /src/core/hle | |
parent | Merge pull request #133 from archshift/sdmc-enabled (diff) | |
parent | Don’t fail on empty filename in OpenFileDirectly, return the archive handle instead (diff) | |
download | yuzu-fd7f92d2422058cc2eddbaa4d6c46aaa099c16a1.tar yuzu-fd7f92d2422058cc2eddbaa4d6c46aaa099c16a1.tar.gz yuzu-fd7f92d2422058cc2eddbaa4d6c46aaa099c16a1.tar.bz2 yuzu-fd7f92d2422058cc2eddbaa4d6c46aaa099c16a1.tar.lz yuzu-fd7f92d2422058cc2eddbaa4d6c46aaa099c16a1.tar.xz yuzu-fd7f92d2422058cc2eddbaa4d6c46aaa099c16a1.tar.zst yuzu-fd7f92d2422058cc2eddbaa4d6c46aaa099c16a1.zip |
Diffstat (limited to 'src/core/hle')
-rw-r--r-- | src/core/hle/service/fs.cpp | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/src/core/hle/service/fs.cpp b/src/core/hle/service/fs.cpp index 8469d9840..662c4f247 100644 --- a/src/core/hle/service/fs.cpp +++ b/src/core/hle/service/fs.cpp @@ -83,7 +83,7 @@ void OpenFileDirectly(Service::Interface* self) { auto archive_id = static_cast<FileSys::Archive::IdCode>(cmd_buff[2]); LowPathType archive_type = static_cast<LowPathType>(cmd_buff[3]); u32 archive_size = cmd_buff[4]; - LowPathType type = static_cast<LowPathType>(cmd_buff[5]); + LowPathType file_type = static_cast<LowPathType>(cmd_buff[5]); u32 size = cmd_buff[6]; FileSys::Mode mode; mode.hex = cmd_buff[7]; u32 attributes = cmd_buff[8]; // TODO(Link Mauve): do something with those attributes. @@ -96,19 +96,13 @@ void OpenFileDirectly(Service::Interface* self) { return; } - if (type != LowPathType::Char) { - ERROR_LOG(KERNEL, "file LowPath type other than char is currently unsupported"); - cmd_buff[1] = -1; - return; - } - std::string archive_name = GetStringFromCmdBuff(archive_pointer, archive_size); std::string file_name = GetStringFromCmdBuff(pointer, size); DEBUG_LOG(KERNEL, "archive_type=%d archive_size=%d archive_data=%s" "file_type=%d file_size=%d file_mode=%d file_attrs=%d file_data=%s", archive_type, archive_size, archive_name.c_str(), - type, size, mode, attributes, file_name.c_str()); + file_type, size, mode, attributes, file_name.c_str()); // TODO(Link Mauve): check if we should even get a handle for the archive, and don't leak it. Handle archive_handle = Kernel::OpenArchive(archive_id); @@ -123,6 +117,11 @@ void OpenFileDirectly(Service::Interface* self) { return; } + if (file_type != LowPathType::Char) { + WARN_LOG(KERNEL, "file LowPath type other than char is currently unsupported; returning archive handle instead"); + return; + } + Handle handle = Kernel::OpenFileFromArchive(archive_handle, file_name, mode); if (handle) { cmd_buff[1] = 0; |