From 4540b410dc2596dc3cef50f74a5a220d7bc50727 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Wed, 21 Apr 2021 00:05:37 -0500 Subject: [PATCH] [ox/fs] Add Result> FileSystem::read --- deps/ox/src/ox/fs/filesystem/filesystem.cpp | 9 +++++++++ deps/ox/src/ox/fs/filesystem/filesystem.hpp | 2 ++ 2 files changed, 11 insertions(+) diff --git a/deps/ox/src/ox/fs/filesystem/filesystem.cpp b/deps/ox/src/ox/fs/filesystem/filesystem.cpp index d551f396..b566db63 100644 --- a/deps/ox/src/ox/fs/filesystem/filesystem.cpp +++ b/deps/ox/src/ox/fs/filesystem/filesystem.cpp @@ -6,6 +6,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#include + #include "filesystem.hpp" namespace ox { @@ -34,6 +36,13 @@ Error FileSystem::read(FileAddress addr, void *buffer, std::size_t size) noexcep } } +Result> FileSystem::read(FileAddress addr) noexcept { + oxRequire(s, stat(addr)); + ox::Vector buff(s.size); + oxReturnError(read(addr, buff.data(), buff.size())); + return ox::move(buff); +} + Error FileSystem::read(FileAddress addr, std::size_t readStart, std::size_t readSize, void *buffer, std::size_t *size) noexcept { switch (addr.type()) { case FileAddressType::Inode: diff --git a/deps/ox/src/ox/fs/filesystem/filesystem.hpp b/deps/ox/src/ox/fs/filesystem/filesystem.hpp index aaf52210..8a443339 100644 --- a/deps/ox/src/ox/fs/filesystem/filesystem.hpp +++ b/deps/ox/src/ox/fs/filesystem/filesystem.hpp @@ -42,6 +42,8 @@ class FileSystem { Error read(FileAddress addr, void *buffer, std::size_t size) noexcept; + Result> read(FileAddress addr) noexcept; + Error read(FileAddress addr, std::size_t readStart, std::size_t readSize, void *buffer, std::size_t *size) noexcept; Result directAccess(FileAddress addr) noexcept;