1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 19:45:07 +00:00

Get rid of FS::read_inode_bytes() and use Inode::read_bytes() everywhere.

This commit is contained in:
Andreas Kling 2018-12-21 17:28:16 +01:00
parent 951ed6692b
commit 8a71303827
8 changed files with 11 additions and 127 deletions

View file

@ -163,43 +163,6 @@ bool SynthFS::write_inode(InodeIdentifier, const ByteBuffer&)
return false;
}
ssize_t SynthFS::read_inode_bytes(InodeIdentifier inode, Unix::off_t offset, size_t count, byte* buffer, FileDescriptor* handle) const
{
ASSERT(inode.fsid() == id());
#ifdef SYNTHFS_DEBUG
kprintf("SynthFS: readInode %u\n", inode.index());
#endif
ASSERT(offset >= 0);
ASSERT(buffer);
const SynthFSInode* found_file;
{
InterruptDisabler disabler;
auto it = m_inodes.find(inode.index());
if (it == m_inodes.end())
return false;
found_file = (*it).value.ptr();
}
const SynthFSInode& file = *found_file;
ByteBuffer generatedData;
if (file.m_generator) {
if (!handle) {
generatedData = file.m_generator();
} else {
if (!handle->generator_cache())
handle->generator_cache() = file.m_generator();
generatedData = handle->generator_cache();
}
}
auto* data = generatedData ? &generatedData : &file.m_data;
ssize_t nread = min(static_cast<Unix::off_t>(data->size() - offset), static_cast<Unix::off_t>(count));
memcpy(buffer, data->pointer() + offset, nread);
if (nread == 0 && handle && handle->generator_cache())
handle->generator_cache().clear();
return nread;
}
InodeIdentifier SynthFS::create_directory(InodeIdentifier, const String&, Unix::mode_t, int& error)
{
error = -EROFS;