1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 13:35:07 +00:00

Kernel: Port stat() to KResult/KResultOr<T>.

This commit is contained in:
Andreas Kling 2019-03-02 00:11:08 +01:00
parent f75eb9af16
commit 37f6844c6c
5 changed files with 31 additions and 40 deletions

View file

@ -112,30 +112,30 @@ bool addition_would_overflow(off_t a, off_t b)
return (ua + b) > maxFileOffset;
}
int FileDescriptor::fstat(stat* buffer)
KResult FileDescriptor::fstat(stat& buffer)
{
ASSERT(!is_fifo());
if (!m_inode && !m_device)
return -EBADF;
return KResult(-EBADF);
auto metadata = this->metadata();
if (!metadata.is_valid())
return -EIO;
return KResult(-EIO);
buffer->st_rdev = encoded_device(metadata.major_device, metadata.minor_device);
buffer->st_ino = metadata.inode.index();
buffer->st_mode = metadata.mode;
buffer->st_nlink = metadata.link_count;
buffer->st_uid = metadata.uid;
buffer->st_gid = metadata.gid;
buffer->st_dev = 0; // FIXME
buffer->st_size = metadata.size;
buffer->st_blksize = metadata.block_size;
buffer->st_blocks = metadata.block_count;
buffer->st_atime = metadata.atime;
buffer->st_mtime = metadata.mtime;
buffer->st_ctime = metadata.ctime;
return 0;
buffer.st_rdev = encoded_device(metadata.major_device, metadata.minor_device);
buffer.st_ino = metadata.inode.index();
buffer.st_mode = metadata.mode;
buffer.st_nlink = metadata.link_count;
buffer.st_uid = metadata.uid;
buffer.st_gid = metadata.gid;
buffer.st_dev = 0; // FIXME
buffer.st_size = metadata.size;
buffer.st_blksize = metadata.block_size;
buffer.st_blocks = metadata.block_count;
buffer.st_atime = metadata.atime;
buffer.st_mtime = metadata.mtime;
buffer.st_ctime = metadata.ctime;
return KSuccess;
}
KResult FileDescriptor::fchmod(mode_t mode)