FileHandle.cpp 559 B

12345678910111213141516171819202122232425
  1. #include "FileHandle.h"
  2. #include "FileSystem.h"
  3. #include "CharacterDevice.h"
  4. FileHandle::FileHandle(RetainPtr<VirtualFileSystem::Node>&& vnode)
  5. : m_vnode(std::move(vnode))
  6. {
  7. }
  8. FileHandle::~FileHandle()
  9. {
  10. }
  11. ByteBuffer FileHandle::read()
  12. {
  13. if (m_vnode->isCharacterDevice()) {
  14. auto buffer = ByteBuffer::createUninitialized(1024);
  15. ssize_t nread = m_vnode->characterDevice()->read(buffer.pointer(), buffer.size());
  16. buffer.trim(nread);
  17. return buffer;
  18. }
  19. return m_vnode->fileSystem()->readInode(m_vnode->inode);
  20. }