mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 14:28:12 +00:00
FileSystem: Use OutputMemoryStream instead of BufferStream.
This commit is contained in:
parent
c8ed882b8e
commit
206dcd84a6
3 changed files with 28 additions and 16 deletions
|
@ -24,7 +24,7 @@
|
|||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <AK/BufferStream.h>
|
||||
#include <AK/MemoryStream.h>
|
||||
#include <Kernel/Devices/BlockDevice.h>
|
||||
#include <Kernel/Devices/CharacterDevice.h>
|
||||
#include <Kernel/FileSystem/Custody.h>
|
||||
|
@ -178,26 +178,26 @@ ssize_t FileDescription::get_dir_entries(UserOrKernelBuffer& buffer, ssize_t siz
|
|||
size_t size_to_allocate = max(static_cast<size_t>(PAGE_SIZE), static_cast<size_t>(metadata.size));
|
||||
|
||||
auto temp_buffer = ByteBuffer::create_uninitialized(size_to_allocate);
|
||||
BufferStream stream(temp_buffer);
|
||||
OutputMemoryStream stream { temp_buffer };
|
||||
|
||||
KResult result = VFS::the().traverse_directory_inode(*m_inode, [&stream, this](auto& entry) {
|
||||
stream << (u32)entry.inode.index();
|
||||
stream << m_inode->fs().internal_file_type_to_directory_entry_type(entry);
|
||||
stream << (u32)entry.name.length();
|
||||
stream << entry.name;
|
||||
stream << entry.name.bytes();
|
||||
return true;
|
||||
});
|
||||
|
||||
if (result.is_error())
|
||||
return result;
|
||||
|
||||
stream.snip();
|
||||
|
||||
if (static_cast<size_t>(size) < temp_buffer.size())
|
||||
if (static_cast<size_t>(size) < stream.size())
|
||||
return -EINVAL;
|
||||
|
||||
if (!buffer.write(temp_buffer.data(), temp_buffer.size()))
|
||||
if (!buffer.write(stream.bytes()))
|
||||
return -EFAULT;
|
||||
return stream.offset();
|
||||
|
||||
return stream.size();
|
||||
}
|
||||
|
||||
bool FileDescription::is_device() const
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue