diff --git a/Userland/Libraries/LibCore/System.cpp b/Userland/Libraries/LibCore/System.cpp index 93f44a0a5e..ad15a2437c 100644 --- a/Userland/Libraries/LibCore/System.cpp +++ b/Userland/Libraries/LibCore/System.cpp @@ -148,4 +148,20 @@ ErrorOr stat(StringView path) #endif } +ErrorOr read(int fd, void* buffer, size_t buffer_size) +{ + ssize_t rc = ::read(fd, buffer, buffer_size); + if (rc < 0) + return Error::from_syscall("read"sv, -errno); + return rc; +} + +ErrorOr write(int fd, void const* data, size_t data_size) +{ + ssize_t rc = ::write(fd, data, data_size); + if (rc < 0) + return Error::from_syscall("write"sv, -errno); + return rc; +} + } diff --git a/Userland/Libraries/LibCore/System.h b/Userland/Libraries/LibCore/System.h index 53dc7f578d..cbc6339d49 100644 --- a/Userland/Libraries/LibCore/System.h +++ b/Userland/Libraries/LibCore/System.h @@ -26,5 +26,7 @@ ErrorOr open(StringView path, int options, ...); ErrorOr close(int fd); ErrorOr ftruncate(int fd, off_t length); ErrorOr stat(StringView path); +ErrorOr read(int fd, void* buffer, size_t buffer_size); +ErrorOr write(int fd, void const* data, size_t data_size); }