summaryrefslogtreecommitdiffstats
path: root/src/core/hle/service
diff options
context:
space:
mode:
authorEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2014-10-25 18:12:57 +0200
committerEmmanuel Gil Peyrot <linkmauve@linkmauve.fr>2014-10-25 18:12:57 +0200
commit2d960f50404551fc2552e99a2e6070daacfd25db (patch)
tree4a41ea3070eb25e80b6093b2928c9275de261576 /src/core/hle/service
parentMerge pull request #133 from archshift/sdmc-enabled (diff)
downloadyuzu-2d960f50404551fc2552e99a2e6070daacfd25db.tar
yuzu-2d960f50404551fc2552e99a2e6070daacfd25db.tar.gz
yuzu-2d960f50404551fc2552e99a2e6070daacfd25db.tar.bz2
yuzu-2d960f50404551fc2552e99a2e6070daacfd25db.tar.lz
yuzu-2d960f50404551fc2552e99a2e6070daacfd25db.tar.xz
yuzu-2d960f50404551fc2552e99a2e6070daacfd25db.tar.zst
yuzu-2d960f50404551fc2552e99a2e6070daacfd25db.zip
Diffstat (limited to 'src/core/hle/service')
-rw-r--r--src/core/hle/service/fs.cpp15
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;