From 978d578f4ebd7703d5f1240f9f9601be76d11281 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Tue, 21 Apr 2015 21:18:15 +0300 Subject: [PATCH] Bugfix --- rpcs3/Emu/SysCalls/Modules/cellFs.cpp | 33 ++------------------- rpcs3/Emu/SysCalls/lv2/sys_fs.cpp | 42 ++++----------------------- 2 files changed, 8 insertions(+), 67 deletions(-) diff --git a/rpcs3/Emu/SysCalls/Modules/cellFs.cpp b/rpcs3/Emu/SysCalls/Modules/cellFs.cpp index d4d2554eba..1c628b03d6 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellFs.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellFs.cpp @@ -225,43 +225,16 @@ s32 cellFsGetDirectoryEntries(u32 fd, vm::ptr entries, u32 { if (const auto info = directory->Read()) { - s32 mode = 0; - - if (info->flags & DirEntry_PermReadable) - { - mode |= CELL_FS_S_IRUSR | CELL_FS_S_IRGRP | CELL_FS_S_IROTH; - } - - if (info->flags & DirEntry_PermWritable) - { - mode |= CELL_FS_S_IWUSR | CELL_FS_S_IWGRP | CELL_FS_S_IWOTH; - } - - if (info->flags & DirEntry_PermExecutable) - { - mode |= CELL_FS_S_IXUSR | CELL_FS_S_IXGRP | CELL_FS_S_IXOTH; - } - - if (info->flags & DirEntry_TypeDir) - { - mode |= CELL_FS_S_IFDIR; - } - - if (info->flags & DirEntry_TypeFile) - { - mode |= CELL_FS_S_IFREG; - } - - entries[count].attribute.mode = mode; + entries[count].attribute.mode = info->flags & DirEntry_TypeDir ? CELL_FS_S_IFDIR | 0777 : CELL_FS_S_IFREG | 0666; entries[count].attribute.uid = 1; // ??? entries[count].attribute.gid = 1; // ??? entries[count].attribute.atime = info->access_time; entries[count].attribute.mtime = info->modify_time; entries[count].attribute.ctime = info->create_time; entries[count].attribute.size = info->size; - entries[count].attribute.blksize = info->size ? align(info->size, 4096) : 4096; + entries[count].attribute.blksize = 4096; // ??? - entries[count].entry_name.d_type = (info->flags & DirEntry_TypeFile) ? CELL_FS_TYPE_REGULAR : CELL_FS_TYPE_DIRECTORY; + entries[count].entry_name.d_type = info->flags & DirEntry_TypeFile ? CELL_FS_TYPE_REGULAR : CELL_FS_TYPE_DIRECTORY; entries[count].entry_name.d_namlen = u8(std::min(info->name.length(), CELL_FS_MAX_FS_FILE_NAME_LENGTH)); strcpy_trunc(entries[count].entry_name.d_name, info->name); } diff --git a/rpcs3/Emu/SysCalls/lv2/sys_fs.cpp b/rpcs3/Emu/SysCalls/lv2/sys_fs.cpp index 8d7e4da184..0a9c422ad0 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_fs.cpp +++ b/rpcs3/Emu/SysCalls/lv2/sys_fs.cpp @@ -255,30 +255,14 @@ s32 sys_fs_stat(vm::ptr path, vm::ptr sb) return CELL_FS_ENOENT; } - s32 mode = CELL_FS_S_IRUSR | CELL_FS_S_IRGRP | CELL_FS_S_IROTH; - - if (info.isWritable) - { - mode |= CELL_FS_S_IWUSR | CELL_FS_S_IWGRP | CELL_FS_S_IWOTH; - } - - if (info.isDirectory) - { - mode |= CELL_FS_S_IFDIR; - mode |= CELL_FS_S_IXUSR | CELL_FS_S_IXGRP | CELL_FS_S_IXOTH; // ??? - } - else - { - mode |= CELL_FS_S_IFREG; - } - + sb->mode = info.isDirectory ? CELL_FS_S_IFDIR | 0777 : CELL_FS_S_IFREG | 0666; sb->uid = 1; // ??? sb->gid = 1; // ??? sb->atime = info.atime; sb->mtime = info.mtime; sb->ctime = info.ctime; sb->size = info.size; - sb->blksize = info.size ? align(info.size, 4096) : 4096; // ??? + sb->blksize = 4096; // ??? return CELL_OK; } @@ -311,30 +295,14 @@ s32 sys_fs_fstat(u32 fd, vm::ptr sb) return CELL_FS_EIO; // ??? } - s32 mode = CELL_FS_S_IRUSR | CELL_FS_S_IRGRP | CELL_FS_S_IROTH; - - if (info.isWritable) - { - mode |= CELL_FS_S_IWUSR | CELL_FS_S_IWGRP | CELL_FS_S_IWOTH; - } - - if (info.isDirectory) - { - mode |= CELL_FS_S_IFDIR; - mode |= CELL_FS_S_IXUSR | CELL_FS_S_IXGRP | CELL_FS_S_IXOTH; // ??? - } - else - { - mode |= CELL_FS_S_IFREG; - } - + sb->mode = info.isDirectory ? CELL_FS_S_IFDIR | 0777 : CELL_FS_S_IFREG | 0666; sb->uid = 1; // ??? sb->gid = 1; // ??? sb->atime = info.atime; sb->mtime = info.mtime; - sb->ctime = info.ctime; // may be incorrect + sb->ctime = info.ctime; // ctime may be incorrect sb->size = info.size; - sb->blksize = info.size ? align(info.size, 4096) : 4096; // ??? + sb->blksize = 4096; // ??? return CELL_OK; }