This commit is contained in:
Nekotekina 2015-04-21 21:18:15 +03:00
parent d05597ccdb
commit 978d578f4e
2 changed files with 8 additions and 67 deletions

View file

@ -225,43 +225,16 @@ s32 cellFsGetDirectoryEntries(u32 fd, vm::ptr<CellFsDirectoryEntry> 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<size_t>(info->name.length(), CELL_FS_MAX_FS_FILE_NAME_LENGTH));
strcpy_trunc(entries[count].entry_name.d_name, info->name);
}

View file

@ -255,30 +255,14 @@ s32 sys_fs_stat(vm::ptr<const char> path, vm::ptr<CellFsStat> 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<CellFsStat> 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;
}