diff --git a/libos/include/os/File.h b/libos/include/os/File.h index 0fe8a863..d26050da 100644 --- a/libos/include/os/File.h +++ b/libos/include/os/File.h @@ -31,9 +31,12 @@ namespace os void set_close_on_exec(); Result write(StringView str); + Result write(const Buffer& buf); Result read_line(); + Result read(Buffer& buf, usize size); + Result getchar(); File(Badge); diff --git a/libos/src/File.cpp b/libos/src/File.cpp index c00dbf47..9eb8b872 100644 --- a/libos/src/File.cpp +++ b/libos/src/File.cpp @@ -101,6 +101,13 @@ namespace os return {}; } + Result File::write(const Buffer& buf) + { + TRY(raw_write(buf.data(), buf.size())); + + return {}; + } + Result File::read_line() { Vector data; @@ -124,6 +131,17 @@ namespace os return String::from_cstring(data.data()); } + Result File::read(Buffer& buf, usize size) + { + u8* slice = TRY(buf.slice(0, size)); + + usize nread = TRY(raw_read(slice, size)); + + TRY(buf.try_resize(nread)); + + return {}; + } + Result File::getchar() { char value;