1
0
Fork 0
mirror of https://github.com/LadybirdBrowser/ladybird.git synced 2025-06-10 18:10:56 +09:00

AK: Rename Stream::write_entire_buffer to Stream::write_until_depleted

No functional changes.
This commit is contained in:
Tim Schumacher 2023-03-01 15:37:45 +01:00 committed by Linus Groh
parent a3f73e7d85
commit ecd1862859
Notes: sideshowbarker 2024-07-18 00:34:07 +09:00
46 changed files with 141 additions and 141 deletions

View file

@ -34,7 +34,7 @@ public:
return m_stream->read_some(bytes); return m_stream->read_some(bytes);
} }
virtual ErrorOr<size_t> write_some(ReadonlyBytes bytes) override { return m_stream->write_some(bytes); } virtual ErrorOr<size_t> write_some(ReadonlyBytes bytes) override { return m_stream->write_some(bytes); }
virtual ErrorOr<void> write_entire_buffer(ReadonlyBytes bytes) override { return m_stream->write_entire_buffer(bytes); } virtual ErrorOr<void> write_until_depleted(ReadonlyBytes bytes) override { return m_stream->write_until_depleted(bytes); }
virtual bool is_eof() const override { return m_stream->is_eof() && !m_current_byte.has_value(); } virtual bool is_eof() const override { return m_stream->is_eof() && !m_current_byte.has_value(); }
virtual bool is_open() const override { return m_stream->is_open(); } virtual bool is_open() const override { return m_stream->is_open(); }
virtual void close() override virtual void close() override
@ -141,7 +141,7 @@ public:
return m_stream->read_some(bytes); return m_stream->read_some(bytes);
} }
virtual ErrorOr<size_t> write_some(ReadonlyBytes bytes) override { return m_stream->write_some(bytes); } virtual ErrorOr<size_t> write_some(ReadonlyBytes bytes) override { return m_stream->write_some(bytes); }
virtual ErrorOr<void> write_entire_buffer(ReadonlyBytes bytes) override { return m_stream->write_entire_buffer(bytes); } virtual ErrorOr<void> write_until_depleted(ReadonlyBytes bytes) override { return m_stream->write_until_depleted(bytes); }
virtual bool is_eof() const override { return m_stream->is_eof() && !m_current_byte.has_value(); } virtual bool is_eof() const override { return m_stream->is_eof() && !m_current_byte.has_value(); }
virtual bool is_open() const override { return m_stream->is_open(); } virtual bool is_open() const override { return m_stream->is_open(); }
virtual void close() override virtual void close() override

View file

@ -89,7 +89,7 @@ ErrorOr<size_t> FixedMemoryStream::write_some(ReadonlyBytes bytes)
return nwritten; return nwritten;
} }
ErrorOr<void> FixedMemoryStream::write_entire_buffer(ReadonlyBytes bytes) ErrorOr<void> FixedMemoryStream::write_until_depleted(ReadonlyBytes bytes)
{ {
if (remaining() < bytes.size()) if (remaining() < bytes.size())
return Error::from_string_view_or_print_error_and_return_errno("Write of entire buffer ends past the memory area"sv, EINVAL); return Error::from_string_view_or_print_error_and_return_errno("Write of entire buffer ends past the memory area"sv, EINVAL);

View file

@ -28,7 +28,7 @@ public:
virtual ErrorOr<size_t> seek(i64 offset, SeekMode seek_mode = SeekMode::SetPosition) override; virtual ErrorOr<size_t> seek(i64 offset, SeekMode seek_mode = SeekMode::SetPosition) override;
virtual ErrorOr<size_t> write_some(ReadonlyBytes bytes) override; virtual ErrorOr<size_t> write_some(ReadonlyBytes bytes) override;
virtual ErrorOr<void> write_entire_buffer(ReadonlyBytes bytes) override; virtual ErrorOr<void> write_until_depleted(ReadonlyBytes bytes) override;
Bytes bytes(); Bytes bytes();
ReadonlyBytes bytes() const; ReadonlyBytes bytes() const;

View file

@ -78,7 +78,7 @@ ErrorOr<void> Stream::discard(size_t discarded_bytes)
return {}; return {};
} }
ErrorOr<void> Stream::write_entire_buffer(ReadonlyBytes buffer) ErrorOr<void> Stream::write_until_depleted(ReadonlyBytes buffer)
{ {
size_t nwritten = 0; size_t nwritten = 0;
while (nwritten < buffer.size()) { while (nwritten < buffer.size()) {

View file

@ -44,7 +44,7 @@ public:
virtual ErrorOr<size_t> write_some(ReadonlyBytes) = 0; virtual ErrorOr<size_t> write_some(ReadonlyBytes) = 0;
/// Same as write, but does not return until either the entire buffer /// Same as write, but does not return until either the entire buffer
/// contents are written or an error occurs. /// contents are written or an error occurs.
virtual ErrorOr<void> write_entire_buffer(ReadonlyBytes); virtual ErrorOr<void> write_until_depleted(ReadonlyBytes);
template<typename T> template<typename T>
requires(requires(Stream& stream) { { T::read_from_stream(stream) } -> SameAs<ErrorOr<T>>; }) requires(requires(Stream& stream) { { T::read_from_stream(stream) } -> SameAs<ErrorOr<T>>; })
@ -73,7 +73,7 @@ public:
requires(Traits<T>::is_trivially_serializable()) requires(Traits<T>::is_trivially_serializable())
ErrorOr<void> write_value(T const& value) ErrorOr<void> write_value(T const& value)
{ {
return write_entire_buffer({ &value, sizeof(value) }); return write_until_depleted({ &value, sizeof(value) });
} }
/// Returns whether the stream has reached the end of file. For sockets, /// Returns whether the stream has reached the end of file. For sockets,

View file

@ -796,7 +796,7 @@ ErrorOr<void> Ext2FSInode::write_directory(Vector<Ext2FSDirectoryEntry>& entries
MUST(stream.write_value<u16>(entry.record_length)); MUST(stream.write_value<u16>(entry.record_length));
MUST(stream.write_value<u8>(entry.name->length())); MUST(stream.write_value<u8>(entry.name->length()));
MUST(stream.write_value<u8>(entry.file_type)); MUST(stream.write_value<u8>(entry.file_type));
MUST(stream.write_entire_buffer(entry.name->bytes())); MUST(stream.write_until_depleted(entry.name->bytes()));
int padding = entry.record_length - entry.name->length() - 8; int padding = entry.record_length - entry.name->length() - 8;
for (int j = 0; j < padding; ++j) for (int j = 0; j < padding; ++j)
MUST(stream.write_value<u8>(0)); MUST(stream.write_value<u8>(0));

View file

@ -249,7 +249,7 @@ ErrorOr<size_t> OpenFileDescription::get_dir_entries(UserOrKernelBuffer& output_
MUST(stream.write_value<u64>(entry.inode.index().value())); MUST(stream.write_value<u64>(entry.inode.index().value()));
MUST(stream.write_value(m_inode->fs().internal_file_type_to_directory_entry_type(entry))); MUST(stream.write_value(m_inode->fs().internal_file_type_to_directory_entry_type(entry)));
MUST(stream.write_value<u32>(entry.name.length())); MUST(stream.write_value<u32>(entry.name.length()));
MUST(stream.write_entire_buffer(entry.name.bytes())); MUST(stream.write_until_depleted(entry.name.bytes()));
return {}; return {};
}); });

View file

@ -29,7 +29,7 @@ TEST_CASE(allocating_memory_stream_empty)
TEST_CASE(allocating_memory_stream_offset_of) TEST_CASE(allocating_memory_stream_offset_of)
{ {
AllocatingMemoryStream stream; AllocatingMemoryStream stream;
MUST(stream.write_entire_buffer("Well Hello Friends! :^)"sv.bytes())); MUST(stream.write_until_depleted("Well Hello Friends! :^)"sv.bytes()));
{ {
auto offset = MUST(stream.offset_of(" "sv.bytes())); auto offset = MUST(stream.offset_of(" "sv.bytes()));
@ -79,12 +79,12 @@ TEST_CASE(allocating_memory_stream_offset_of_oob)
// First, fill exactly one chunk. // First, fill exactly one chunk.
for (size_t i = 0; i < 256; ++i) for (size_t i = 0; i < 256; ++i)
MUST(stream.write_entire_buffer("AAAAAAAAAAAAAAAA"sv.bytes())); MUST(stream.write_until_depleted("AAAAAAAAAAAAAAAA"sv.bytes()));
// Then discard it all. // Then discard it all.
MUST(stream.discard(4096)); MUST(stream.discard(4096));
// Now we can write into this chunk again, knowing that it's initialized to all 'A's. // Now we can write into this chunk again, knowing that it's initialized to all 'A's.
MUST(stream.write_entire_buffer("Well Hello Friends! :^)"sv.bytes())); MUST(stream.write_until_depleted("Well Hello Friends! :^)"sv.bytes()));
{ {
auto offset = MUST(stream.offset_of("A"sv.bytes())); auto offset = MUST(stream.offset_of("A"sv.bytes()));

View file

@ -221,7 +221,7 @@ TEST_CASE(tcp_socket_write)
auto server_socket = maybe_server_socket.release_value(); auto server_socket = maybe_server_socket.release_value();
EXPECT(!server_socket->set_blocking(true).is_error()); EXPECT(!server_socket->set_blocking(true).is_error());
EXPECT(!client_socket->write_entire_buffer({ sent_data.characters_without_null_termination(), sent_data.length() }).is_error()); EXPECT(!client_socket->write_until_depleted({ sent_data.characters_without_null_termination(), sent_data.length() }).is_error());
client_socket->close(); client_socket->close();
auto maybe_receive_buffer = ByteBuffer::create_uninitialized(64); auto maybe_receive_buffer = ByteBuffer::create_uninitialized(64);
@ -285,7 +285,7 @@ TEST_CASE(udp_socket_read_write)
auto client_socket = maybe_client_socket.release_value(); auto client_socket = maybe_client_socket.release_value();
EXPECT(client_socket->is_open()); EXPECT(client_socket->is_open());
EXPECT(!client_socket->write_entire_buffer({ sent_data.characters_without_null_termination(), sent_data.length() }).is_error()); EXPECT(!client_socket->write_until_depleted({ sent_data.characters_without_null_termination(), sent_data.length() }).is_error());
// FIXME: UDPServer::receive sadly doesn't give us a way to block on it, // FIXME: UDPServer::receive sadly doesn't give us a way to block on it,
// currently. // currently.
@ -405,7 +405,7 @@ TEST_CASE(local_socket_write)
EXPECT(!maybe_client_socket.is_error()); EXPECT(!maybe_client_socket.is_error());
auto client_socket = maybe_client_socket.release_value(); auto client_socket = maybe_client_socket.release_value();
EXPECT(!client_socket->write_entire_buffer({ sent_data.characters_without_null_termination(), sent_data.length() }).is_error()); EXPECT(!client_socket->write_until_depleted({ sent_data.characters_without_null_termination(), sent_data.length() }).is_error());
client_socket->close(); client_socket->close();
return 0; return 0;

View file

@ -37,7 +37,7 @@ static void expect_bitmap_equals_reference(Gfx::Bitmap const& bitmap, StringView
auto target_path = LexicalPath("/home/anon").append(reference_filename); auto target_path = LexicalPath("/home/anon").append(reference_filename);
auto qoi_buffer = MUST(Gfx::QOIWriter::encode(bitmap)); auto qoi_buffer = MUST(Gfx::QOIWriter::encode(bitmap));
auto qoi_output_stream = MUST(Core::File::open(target_path.string(), Core::File::OpenMode::Write)); auto qoi_output_stream = MUST(Core::File::open(target_path.string(), Core::File::OpenMode::Write));
MUST(qoi_output_stream->write_entire_buffer(qoi_buffer)); MUST(qoi_output_stream->write_until_depleted(qoi_buffer));
} }
auto reference_image_path = DeprecatedString::formatted(REFERENCE_IMAGE_DIR "/{}", reference_filename); auto reference_image_path = DeprecatedString::formatted(REFERENCE_IMAGE_DIR "/{}", reference_filename);

View file

@ -161,7 +161,7 @@ public:
} }
for (DeprecatedString const& line : lines) { for (DeprecatedString const& line : lines) {
if (m_output->write_entire_buffer(DeprecatedString::formatted("{}\n", line).bytes()).is_error()) if (m_output->write_until_depleted(DeprecatedString::formatted("{}\n", line).bytes()).is_error())
break; break;
} }
@ -427,7 +427,7 @@ void write_per_file(HashMap<size_t, TestResult> const& result_map, Vector<Deprec
complete_results.set("duration", time_taken_in_ms / 1000.); complete_results.set("duration", time_taken_in_ms / 1000.);
complete_results.set("results", result_object); complete_results.set("results", result_object);
if (file->write_entire_buffer(complete_results.to_deprecated_string().bytes()).is_error()) if (file->write_until_depleted(complete_results.to_deprecated_string().bytes()).is_error())
warnln("Failed to write per-file"); warnln("Failed to write per-file");
file->close(); file->close();
} }

View file

@ -96,17 +96,17 @@ TEST_CASE(test_TLS_hello_handshake)
loop.quit(0); loop.quit(0);
}; };
if (tls->write_entire_buffer("GET / HTTP/1.1\r\nHost: "_b).is_error()) { if (tls->write_until_depleted("GET / HTTP/1.1\r\nHost: "_b).is_error()) {
FAIL("write(0) failed"); FAIL("write(0) failed");
return; return;
} }
auto the_server = DEFAULT_SERVER; auto the_server = DEFAULT_SERVER;
if (tls->write_entire_buffer(the_server.bytes()).is_error()) { if (tls->write_until_depleted(the_server.bytes()).is_error()) {
FAIL("write(1) failed"); FAIL("write(1) failed");
return; return;
} }
if (tls->write_entire_buffer("\r\nConnection : close\r\n\r\n"_b).is_error()) { if (tls->write_until_depleted("\r\nConnection : close\r\n\r\n"_b).is_error()) {
FAIL("write(2) failed"); FAIL("write(2) failed");
return; return;
} }

View file

@ -177,7 +177,7 @@ ErrorOr<void> Image::export_bmp_to_file(NonnullOwnPtr<Stream> stream, bool prese
auto bitmap = TRY(compose_bitmap(bitmap_format)); auto bitmap = TRY(compose_bitmap(bitmap_format));
auto encoded_data = TRY(Gfx::BMPWriter::encode(*bitmap)); auto encoded_data = TRY(Gfx::BMPWriter::encode(*bitmap));
TRY(stream->write_entire_buffer(encoded_data)); TRY(stream->write_until_depleted(encoded_data));
return {}; return {};
} }
@ -187,7 +187,7 @@ ErrorOr<void> Image::export_png_to_file(NonnullOwnPtr<Stream> stream, bool prese
auto bitmap = TRY(compose_bitmap(bitmap_format)); auto bitmap = TRY(compose_bitmap(bitmap_format));
auto encoded_data = TRY(Gfx::PNGWriter::encode(*bitmap)); auto encoded_data = TRY(Gfx::PNGWriter::encode(*bitmap));
TRY(stream->write_entire_buffer(encoded_data)); TRY(stream->write_until_depleted(encoded_data));
return {}; return {};
} }
@ -196,7 +196,7 @@ ErrorOr<void> Image::export_qoi_to_file(NonnullOwnPtr<Stream> stream) const
auto bitmap = TRY(compose_bitmap(Gfx::BitmapFormat::BGRA8888)); auto bitmap = TRY(compose_bitmap(Gfx::BitmapFormat::BGRA8888));
auto encoded_data = TRY(Gfx::QOIWriter::encode(bitmap)); auto encoded_data = TRY(Gfx::QOIWriter::encode(bitmap));
TRY(stream->write_entire_buffer(encoded_data)); TRY(stream->write_until_depleted(encoded_data));
return {}; return {};
} }

View file

@ -793,7 +793,7 @@ ErrorOr<void> ImageEditor::save_project_to_file(NonnullOwnPtr<Core::File> file)
TRY(json_guides.finish()); TRY(json_guides.finish());
TRY(json.finish()); TRY(json.finish());
TRY(file->write_entire_buffer(builder.string_view().bytes())); TRY(file->write_until_depleted(builder.string_view().bytes()));
return {}; return {};
} }

View file

@ -248,8 +248,8 @@ ErrorOr<Vector<Color>> PaletteWidget::load_palette_path(DeprecatedString const&
ErrorOr<void> PaletteWidget::save_palette_file(Vector<Color> palette, NonnullOwnPtr<Core::File> file) ErrorOr<void> PaletteWidget::save_palette_file(Vector<Color> palette, NonnullOwnPtr<Core::File> file)
{ {
for (auto& color : palette) { for (auto& color : palette) {
TRY(file->write_entire_buffer(color.to_deprecated_string_without_alpha().bytes())); TRY(file->write_until_depleted(color.to_deprecated_string_without_alpha().bytes()));
TRY(file->write_entire_buffer({ "\n", 1 })); TRY(file->write_until_depleted({ "\n", 1 }));
} }
return {}; return {};
} }

View file

@ -205,7 +205,7 @@ ErrorOr<void> ExportDialog::make_and_run_for(StringView mime, Core::File& file,
array.append(sheet->to_json()); array.append(sheet->to_json());
auto file_content = array.to_deprecated_string(); auto file_content = array.to_deprecated_string();
return file.write_entire_buffer(file_content.bytes()); return file.write_until_depleted(file_content.bytes());
}; };
if (mime == "text/csv") { if (mime == "text/csv") {

View file

@ -48,7 +48,7 @@ public:
auto with_headers = has_flag(writer.m_behaviors, WriterBehavior::WriteHeaders); auto with_headers = has_flag(writer.m_behaviors, WriterBehavior::WriteHeaders);
if (with_headers) { if (with_headers) {
TRY(writer.write_row(writer.m_names)); TRY(writer.write_row(writer.m_names));
TRY(writer.m_output.write_entire_buffer({ "\n", 1 })); TRY(writer.m_output.write_until_depleted({ "\n", 1 }));
} }
for (auto&& row : writer.m_data) { for (auto&& row : writer.m_data) {
@ -58,7 +58,7 @@ public:
} }
TRY(writer.write_row(row)); TRY(writer.write_row(row));
TRY(writer.m_output.write_entire_buffer({ "\n", 1 })); TRY(writer.m_output.write_until_depleted({ "\n", 1 }));
} }
return {}; return {};
} }
@ -72,7 +72,7 @@ public:
auto with_headers = has_flag(writer.m_behaviors, WriterBehavior::WriteHeaders); auto with_headers = has_flag(writer.m_behaviors, WriterBehavior::WriteHeaders);
if (with_headers) { if (with_headers) {
TRY(writer.write_row(writer.m_names)); TRY(writer.write_row(writer.m_names));
TRY(writer.m_output.write_entire_buffer({ "\n", 1 })); TRY(writer.m_output.write_until_depleted({ "\n", 1 }));
++lines_written; ++lines_written;
} }
@ -83,7 +83,7 @@ public:
} }
TRY(writer.write_row(row)); TRY(writer.write_row(row));
TRY(writer.m_output.write_entire_buffer({ "\n", 1 })); TRY(writer.m_output.write_until_depleted({ "\n", 1 }));
++lines_written; ++lines_written;
if (lines_written >= max_preview_lines) if (lines_written >= max_preview_lines)
@ -110,7 +110,7 @@ private:
bool first = true; bool first = true;
for (auto&& entry : row) { for (auto&& entry : row) {
if (!first) { if (!first) {
TRY(m_output.write_entire_buffer(m_traits.separator.bytes())); TRY(m_output.write_until_depleted(m_traits.separator.bytes()));
} }
first = false; first = false;
TRY(write_entry(entry)); TRY(write_entry(entry));
@ -136,33 +136,33 @@ private:
if (safe_to_write_normally) { if (safe_to_write_normally) {
if (!string.is_empty()) if (!string.is_empty())
TRY(m_output.write_entire_buffer(string.bytes())); TRY(m_output.write_until_depleted(string.bytes()));
return {}; return {};
} }
TRY(m_output.write_entire_buffer(m_traits.quote.bytes())); TRY(m_output.write_until_depleted(m_traits.quote.bytes()));
GenericLexer lexer(string); GenericLexer lexer(string);
while (!lexer.is_eof()) { while (!lexer.is_eof()) {
if (lexer.consume_specific(m_traits.quote)) { if (lexer.consume_specific(m_traits.quote)) {
switch (m_traits.quote_escape) { switch (m_traits.quote_escape) {
case WriterTraits::Repeat: case WriterTraits::Repeat:
TRY(m_output.write_entire_buffer(m_traits.quote.bytes())); TRY(m_output.write_until_depleted(m_traits.quote.bytes()));
TRY(m_output.write_entire_buffer(m_traits.quote.bytes())); TRY(m_output.write_until_depleted(m_traits.quote.bytes()));
break; break;
case WriterTraits::Backslash: case WriterTraits::Backslash:
TRY(m_output.write_entire_buffer({ "\\", 1 })); TRY(m_output.write_until_depleted({ "\\", 1 }));
TRY(m_output.write_entire_buffer(m_traits.quote.bytes())); TRY(m_output.write_until_depleted(m_traits.quote.bytes()));
break; break;
} }
continue; continue;
} }
auto ch = lexer.consume(); auto ch = lexer.consume();
TRY(m_output.write_entire_buffer({ &ch, 1 })); TRY(m_output.write_until_depleted({ &ch, 1 }));
} }
TRY(m_output.write_entire_buffer(m_traits.quote.bytes())); TRY(m_output.write_until_depleted(m_traits.quote.bytes()));
return {}; return {};
} }

View file

@ -1807,7 +1807,7 @@ ErrorOr<NonnullRefPtr<GUI::Action>> HackStudioWidget::create_open_project_config
return maybe_error.release_error(); return maybe_error.release_error();
auto file = TRY(Core::File::open(absolute_config_file_path, Core::File::OpenMode::Write)); auto file = TRY(Core::File::open(absolute_config_file_path, Core::File::OpenMode::Write));
TRY(file->write_entire_buffer( TRY(file->write_until_depleted(
"{\n" "{\n"
" \"build_command\": \"your build command here\",\n" " \"build_command\": \"your build command here\",\n"
" \"run_command\": \"your run command here\"\n" " \"run_command\": \"your run command here\"\n"

View file

@ -135,7 +135,7 @@ ErrorOr<void> ProjectBuilder::initialize_build_directory()
MUST(Core::DeprecatedFile::remove(cmake_file_path, Core::DeprecatedFile::RecursionMode::Disallowed)); MUST(Core::DeprecatedFile::remove(cmake_file_path, Core::DeprecatedFile::RecursionMode::Disallowed));
auto cmake_file = TRY(Core::File::open(cmake_file_path, Core::File::OpenMode::Write)); auto cmake_file = TRY(Core::File::open(cmake_file_path, Core::File::OpenMode::Write));
TRY(cmake_file->write_entire_buffer(generate_cmake_file_content().bytes())); TRY(cmake_file->write_until_depleted(generate_cmake_file_content().bytes()));
TRY(m_terminal->run_command(DeprecatedString::formatted("cmake -S {} -DHACKSTUDIO_BUILD=ON -DHACKSTUDIO_BUILD_CMAKE_FILE={}" TRY(m_terminal->run_command(DeprecatedString::formatted("cmake -S {} -DHACKSTUDIO_BUILD=ON -DHACKSTUDIO_BUILD_CMAKE_FILE={}"
" -DENABLE_UNICODE_DATABASE_DOWNLOAD=OFF", " -DENABLE_UNICODE_DATABASE_DOWNLOAD=OFF",

View file

@ -42,7 +42,7 @@ static ErrorOr<void> save_text_to_file(StringView filename, DeprecatedString tex
auto file = TRY(Core::File::open(filename, Core::File::OpenMode::Write)); auto file = TRY(Core::File::open(filename, Core::File::OpenMode::Write));
if (!text.is_empty()) if (!text.is_empty())
TRY(file->write_entire_buffer(text.bytes())); TRY(file->write_until_depleted(text.bytes()));
return {}; return {};
} }

View file

@ -509,7 +509,7 @@ void Emulator::emit_profile_sample(Stream& output)
builder.appendff(R"~(, {{"type": "sample", "pid": {}, "tid": {}, "timestamp": {}, "lost_samples": 0, "stack": [)~", getpid(), gettid(), tv.tv_sec * 1000 + tv.tv_usec / 1000); builder.appendff(R"~(, {{"type": "sample", "pid": {}, "tid": {}, "timestamp": {}, "lost_samples": 0, "stack": [)~", getpid(), gettid(), tv.tv_sec * 1000 + tv.tv_usec / 1000);
builder.join(',', raw_backtrace()); builder.join(',', raw_backtrace());
builder.append("]}\n"sv); builder.append("]}\n"sv);
output.write_entire_buffer(builder.string_view().bytes()).release_value_but_fixme_should_propagate_errors(); output.write_until_depleted(builder.string_view().bytes()).release_value_but_fixme_should_propagate_errors();
} }
void Emulator::emit_profile_event(Stream& output, StringView event_name, DeprecatedString const& contents) void Emulator::emit_profile_event(Stream& output, StringView event_name, DeprecatedString const& contents)
@ -519,7 +519,7 @@ void Emulator::emit_profile_event(Stream& output, StringView event_name, Depreca
gettimeofday(&tv, nullptr); gettimeofday(&tv, nullptr);
builder.appendff(R"~(, {{"type": "{}", "pid": {}, "tid": {}, "timestamp": {}, "lost_samples": 0, "stack": [], {}}})~", event_name, getpid(), gettid(), tv.tv_sec * 1000 + tv.tv_usec / 1000, contents); builder.appendff(R"~(, {{"type": "{}", "pid": {}, "tid": {}, "timestamp": {}, "lost_samples": 0, "stack": [], {}}})~", event_name, getpid(), gettid(), tv.tv_sec * 1000 + tv.tv_usec / 1000, contents);
builder.append('\n'); builder.append('\n');
output.write_entire_buffer(builder.string_view().bytes()).release_value_but_fixme_should_propagate_errors(); output.write_until_depleted(builder.string_view().bytes()).release_value_but_fixme_should_propagate_errors();
} }
DeprecatedString Emulator::create_instruction_line(FlatPtr address, X86::Instruction const& insn) DeprecatedString Emulator::create_instruction_line(FlatPtr address, X86::Instruction const& insn)

View file

@ -70,10 +70,10 @@ int main(int argc, char** argv, char** env)
profile_strings = make<Vector<NonnullOwnPtr<DeprecatedString>>>(); profile_strings = make<Vector<NonnullOwnPtr<DeprecatedString>>>();
profile_string_id_map = make<Vector<int>>(); profile_string_id_map = make<Vector<int>>();
profile_stream->write_entire_buffer(R"({"events":[)"sv.bytes()).release_value_but_fixme_should_propagate_errors(); profile_stream->write_until_depleted(R"({"events":[)"sv.bytes()).release_value_but_fixme_should_propagate_errors();
timeval tv {}; timeval tv {};
gettimeofday(&tv, nullptr); gettimeofday(&tv, nullptr);
profile_stream->write_entire_buffer( profile_stream->write_until_depleted(
DeprecatedString::formatted( DeprecatedString::formatted(
R"~({{"type": "process_create", "parent_pid": 1, "executable": "{}", "pid": {}, "tid": {}, "timestamp": {}, "lost_samples": 0, "stack": []}})~", R"~({{"type": "process_create", "parent_pid": 1, "executable": "{}", "pid": {}, "tid": {}, "timestamp": {}, "lost_samples": 0, "stack": []}})~",
executable_path, getpid(), gettid(), tv.tv_sec * 1000 + tv.tv_usec / 1000) executable_path, getpid(), gettid(), tv.tv_sec * 1000 + tv.tv_usec / 1000)
@ -109,13 +109,13 @@ int main(int argc, char** argv, char** env)
int rc = emulator.exec(); int rc = emulator.exec();
if (dump_profile) { if (dump_profile) {
emulator.profile_stream().write_entire_buffer("], \"strings\": ["sv.bytes()).release_value_but_fixme_should_propagate_errors(); emulator.profile_stream().write_until_depleted("], \"strings\": ["sv.bytes()).release_value_but_fixme_should_propagate_errors();
if (emulator.profiler_strings().size()) { if (emulator.profiler_strings().size()) {
for (size_t i = 0; i < emulator.profiler_strings().size() - 1; ++i) for (size_t i = 0; i < emulator.profiler_strings().size() - 1; ++i)
emulator.profile_stream().write_entire_buffer(DeprecatedString::formatted("\"{}\", ", emulator.profiler_strings().at(i)).bytes()).release_value_but_fixme_should_propagate_errors(); emulator.profile_stream().write_until_depleted(DeprecatedString::formatted("\"{}\", ", emulator.profiler_strings().at(i)).bytes()).release_value_but_fixme_should_propagate_errors();
emulator.profile_stream().write_entire_buffer(DeprecatedString::formatted("\"{}\"", emulator.profiler_strings().last()).bytes()).release_value_but_fixme_should_propagate_errors(); emulator.profile_stream().write_until_depleted(DeprecatedString::formatted("\"{}\"", emulator.profiler_strings().last()).bytes()).release_value_but_fixme_should_propagate_errors();
} }
emulator.profile_stream().write_entire_buffer("]}"sv.bytes()).release_value_but_fixme_should_propagate_errors(); emulator.profile_stream().write_until_depleted("]}"sv.bytes()).release_value_but_fixme_should_propagate_errors();
} }
return rc; return rc;
} }

View file

@ -154,9 +154,9 @@ ErrorOr<void> TarOutputStream::add_directory(StringView path, mode_t mode)
header.set_magic(gnu_magic); header.set_magic(gnu_magic);
header.set_version(gnu_version); header.set_version(gnu_version);
TRY(header.calculate_checksum()); TRY(header.calculate_checksum());
TRY(m_stream->write_entire_buffer(Bytes { &header, sizeof(header) })); TRY(m_stream->write_until_depleted(Bytes { &header, sizeof(header) }));
u8 padding[block_size] = { 0 }; u8 padding[block_size] = { 0 };
TRY(m_stream->write_entire_buffer(Bytes { &padding, block_size - sizeof(header) })); TRY(m_stream->write_until_depleted(Bytes { &padding, block_size - sizeof(header) }));
return {}; return {};
} }
@ -171,14 +171,14 @@ ErrorOr<void> TarOutputStream::add_file(StringView path, mode_t mode, ReadonlyBy
header.set_magic(gnu_magic); header.set_magic(gnu_magic);
header.set_version(gnu_version); header.set_version(gnu_version);
TRY(header.calculate_checksum()); TRY(header.calculate_checksum());
TRY(m_stream->write_entire_buffer(ReadonlyBytes { &header, sizeof(header) })); TRY(m_stream->write_until_depleted(ReadonlyBytes { &header, sizeof(header) }));
constexpr Array<u8, block_size> padding { 0 }; constexpr Array<u8, block_size> padding { 0 };
TRY(m_stream->write_entire_buffer(ReadonlyBytes { &padding, block_size - sizeof(header) })); TRY(m_stream->write_until_depleted(ReadonlyBytes { &padding, block_size - sizeof(header) }));
size_t n_written = 0; size_t n_written = 0;
while (n_written < bytes.size()) { while (n_written < bytes.size()) {
n_written += MUST(m_stream->write_some(bytes.slice(n_written, min(bytes.size() - n_written, block_size)))); n_written += MUST(m_stream->write_some(bytes.slice(n_written, min(bytes.size() - n_written, block_size))));
} }
TRY(m_stream->write_entire_buffer(ReadonlyBytes { &padding, block_size - (n_written % block_size) })); TRY(m_stream->write_until_depleted(ReadonlyBytes { &padding, block_size - (n_written % block_size) }));
return {}; return {};
} }
@ -194,9 +194,9 @@ ErrorOr<void> TarOutputStream::add_link(StringView path, mode_t mode, StringView
header.set_version(gnu_version); header.set_version(gnu_version);
header.set_link_name(link_name); header.set_link_name(link_name);
TRY(header.calculate_checksum()); TRY(header.calculate_checksum());
TRY(m_stream->write_entire_buffer(Bytes { &header, sizeof(header) })); TRY(m_stream->write_until_depleted(Bytes { &header, sizeof(header) }));
u8 padding[block_size] = { 0 }; u8 padding[block_size] = { 0 };
TRY(m_stream->write_entire_buffer(Bytes { &padding, block_size - sizeof(header) })); TRY(m_stream->write_until_depleted(Bytes { &padding, block_size - sizeof(header) }));
return {}; return {};
} }
@ -205,8 +205,8 @@ ErrorOr<void> TarOutputStream::finish()
VERIFY(!m_finished); VERIFY(!m_finished);
constexpr Array<u8, block_size> padding { 0 }; constexpr Array<u8, block_size> padding { 0 };
// 2 empty records that are used to signify the end of the archive. // 2 empty records that are used to signify the end of the archive.
TRY(m_stream->write_entire_buffer(ReadonlyBytes { &padding, block_size })); TRY(m_stream->write_until_depleted(ReadonlyBytes { &padding, block_size }));
TRY(m_stream->write_entire_buffer(ReadonlyBytes { &padding, block_size })); TRY(m_stream->write_until_depleted(ReadonlyBytes { &padding, block_size }));
m_finished = true; m_finished = true;
return {}; return {};
} }

View file

@ -60,10 +60,10 @@ struct [[gnu::packed]] EndOfCentralDirectory {
ErrorOr<void> write(Stream& stream) const ErrorOr<void> write(Stream& stream) const
{ {
auto write_value = [&stream](auto value) { auto write_value = [&stream](auto value) {
return stream.write_entire_buffer({ &value, sizeof(value) }); return stream.write_until_depleted({ &value, sizeof(value) });
}; };
TRY(stream.write_entire_buffer(signature)); TRY(stream.write_until_depleted(signature));
TRY(write_value(disk_number)); TRY(write_value(disk_number));
TRY(write_value(central_directory_start_disk)); TRY(write_value(central_directory_start_disk));
TRY(write_value(disk_records_count)); TRY(write_value(disk_records_count));
@ -72,7 +72,7 @@ struct [[gnu::packed]] EndOfCentralDirectory {
TRY(write_value(central_directory_offset)); TRY(write_value(central_directory_offset));
TRY(write_value(comment_length)); TRY(write_value(comment_length));
if (comment_length > 0) if (comment_length > 0)
TRY(stream.write_entire_buffer({ comment, comment_length })); TRY(stream.write_until_depleted({ comment, comment_length }));
return {}; return {};
} }
}; };
@ -146,10 +146,10 @@ struct [[gnu::packed]] CentralDirectoryRecord {
ErrorOr<void> write(Stream& stream) const ErrorOr<void> write(Stream& stream) const
{ {
auto write_value = [&stream](auto value) { auto write_value = [&stream](auto value) {
return stream.write_entire_buffer({ &value, sizeof(value) }); return stream.write_until_depleted({ &value, sizeof(value) });
}; };
TRY(stream.write_entire_buffer(signature)); TRY(stream.write_until_depleted(signature));
TRY(write_value(made_by_version)); TRY(write_value(made_by_version));
TRY(write_value(minimum_version)); TRY(write_value(minimum_version));
TRY(write_value(general_purpose_flags.flags)); TRY(write_value(general_purpose_flags.flags));
@ -167,11 +167,11 @@ struct [[gnu::packed]] CentralDirectoryRecord {
TRY(write_value(external_attributes)); TRY(write_value(external_attributes));
TRY(write_value(local_file_header_offset)); TRY(write_value(local_file_header_offset));
if (name_length > 0) if (name_length > 0)
TRY(stream.write_entire_buffer({ name, name_length })); TRY(stream.write_until_depleted({ name, name_length }));
if (extra_data_length > 0) if (extra_data_length > 0)
TRY(stream.write_entire_buffer({ extra_data, extra_data_length })); TRY(stream.write_until_depleted({ extra_data, extra_data_length }));
if (comment_length > 0) if (comment_length > 0)
TRY(stream.write_entire_buffer({ comment, comment_length })); TRY(stream.write_until_depleted({ comment, comment_length }));
return {}; return {};
} }
@ -215,10 +215,10 @@ struct [[gnu::packed]] LocalFileHeader {
ErrorOr<void> write(Stream& stream) const ErrorOr<void> write(Stream& stream) const
{ {
auto write_value = [&stream](auto value) { auto write_value = [&stream](auto value) {
return stream.write_entire_buffer({ &value, sizeof(value) }); return stream.write_until_depleted({ &value, sizeof(value) });
}; };
TRY(stream.write_entire_buffer(signature)); TRY(stream.write_until_depleted(signature));
TRY(write_value(minimum_version)); TRY(write_value(minimum_version));
TRY(write_value(general_purpose_flags.flags)); TRY(write_value(general_purpose_flags.flags));
TRY(write_value(compression_method)); TRY(write_value(compression_method));
@ -230,11 +230,11 @@ struct [[gnu::packed]] LocalFileHeader {
TRY(write_value(name_length)); TRY(write_value(name_length));
TRY(write_value(extra_data_length)); TRY(write_value(extra_data_length));
if (name_length > 0) if (name_length > 0)
TRY(stream.write_entire_buffer({ name, name_length })); TRY(stream.write_until_depleted({ name, name_length }));
if (extra_data_length > 0) if (extra_data_length > 0)
TRY(stream.write_entire_buffer({ extra_data, extra_data_length })); TRY(stream.write_until_depleted({ extra_data, extra_data_length }));
if (compressed_size > 0) if (compressed_size > 0)
TRY(stream.write_entire_buffer({ compressed_data, compressed_size })); TRY(stream.write_until_depleted({ compressed_data, compressed_size }));
return {}; return {};
} }
}; };

View file

@ -325,7 +325,7 @@ ErrorOr<ByteBuffer> DeflateDecompressor::decompress_all(ReadonlyBytes bytes)
auto buffer = TRY(ByteBuffer::create_uninitialized(4096)); auto buffer = TRY(ByteBuffer::create_uninitialized(4096));
while (!deflate_stream->is_eof()) { while (!deflate_stream->is_eof()) {
auto const slice = TRY(deflate_stream->read_some(buffer)); auto const slice = TRY(deflate_stream->read_some(buffer));
TRY(output_stream.write_entire_buffer(slice)); TRY(output_stream.write_until_depleted(slice));
} }
auto output_buffer = TRY(ByteBuffer::create_uninitialized(output_stream.used_buffer_size())); auto output_buffer = TRY(ByteBuffer::create_uninitialized(output_stream.used_buffer_size()));
@ -929,10 +929,10 @@ ErrorOr<void> DeflateCompressor::flush()
TRY(m_output_stream->write_bits(0b00u, 2)); // no compression TRY(m_output_stream->write_bits(0b00u, 2)); // no compression
TRY(m_output_stream->align_to_byte_boundary()); TRY(m_output_stream->align_to_byte_boundary());
LittleEndian<u16> len = m_pending_block_size; LittleEndian<u16> len = m_pending_block_size;
TRY(m_output_stream->write_entire_buffer(len.bytes())); TRY(m_output_stream->write_until_depleted(len.bytes()));
LittleEndian<u16> nlen = ~m_pending_block_size; LittleEndian<u16> nlen = ~m_pending_block_size;
TRY(m_output_stream->write_entire_buffer(nlen.bytes())); TRY(m_output_stream->write_until_depleted(nlen.bytes()));
TRY(m_output_stream->write_entire_buffer(pending_block().slice(0, m_pending_block_size))); TRY(m_output_stream->write_until_depleted(pending_block().slice(0, m_pending_block_size)));
return {}; return {};
}; };
@ -1023,7 +1023,7 @@ ErrorOr<ByteBuffer> DeflateCompressor::compress_all(ReadonlyBytes bytes, Compres
auto output_stream = TRY(try_make<AllocatingMemoryStream>()); auto output_stream = TRY(try_make<AllocatingMemoryStream>());
auto deflate_stream = TRY(DeflateCompressor::construct(MaybeOwned<Stream>(*output_stream), compression_level)); auto deflate_stream = TRY(DeflateCompressor::construct(MaybeOwned<Stream>(*output_stream), compression_level));
TRY(deflate_stream->write_entire_buffer(bytes)); TRY(deflate_stream->write_until_depleted(bytes));
TRY(deflate_stream->final_flush()); TRY(deflate_stream->final_flush());
auto buffer = TRY(ByteBuffer::create_uninitialized(output_stream->used_buffer_size())); auto buffer = TRY(ByteBuffer::create_uninitialized(output_stream->used_buffer_size()));

View file

@ -175,7 +175,7 @@ ErrorOr<ByteBuffer> GzipDecompressor::decompress_all(ReadonlyBytes bytes)
auto buffer = TRY(ByteBuffer::create_uninitialized(4096)); auto buffer = TRY(ByteBuffer::create_uninitialized(4096));
while (!gzip_stream->is_eof()) { while (!gzip_stream->is_eof()) {
auto const data = TRY(gzip_stream->read_some(buffer)); auto const data = TRY(gzip_stream->read_some(buffer));
TRY(output_stream.write_entire_buffer(data)); TRY(output_stream.write_until_depleted(data));
} }
auto output_buffer = TRY(ByteBuffer::create_uninitialized(output_stream.used_buffer_size())); auto output_buffer = TRY(ByteBuffer::create_uninitialized(output_stream.used_buffer_size()));
@ -210,16 +210,16 @@ ErrorOr<size_t> GzipCompressor::write_some(ReadonlyBytes bytes)
header.modification_time = 0; header.modification_time = 0;
header.extra_flags = 3; // DEFLATE sets 2 for maximum compression and 4 for minimum compression header.extra_flags = 3; // DEFLATE sets 2 for maximum compression and 4 for minimum compression
header.operating_system = 3; // unix header.operating_system = 3; // unix
TRY(m_output_stream->write_entire_buffer({ &header, sizeof(header) })); TRY(m_output_stream->write_until_depleted({ &header, sizeof(header) }));
auto compressed_stream = TRY(DeflateCompressor::construct(MaybeOwned(*m_output_stream))); auto compressed_stream = TRY(DeflateCompressor::construct(MaybeOwned(*m_output_stream)));
TRY(compressed_stream->write_entire_buffer(bytes)); TRY(compressed_stream->write_until_depleted(bytes));
TRY(compressed_stream->final_flush()); TRY(compressed_stream->final_flush());
Crypto::Checksum::CRC32 crc32; Crypto::Checksum::CRC32 crc32;
crc32.update(bytes); crc32.update(bytes);
LittleEndian<u32> digest = crc32.digest(); LittleEndian<u32> digest = crc32.digest();
LittleEndian<u32> size = bytes.size(); LittleEndian<u32> size = bytes.size();
TRY(m_output_stream->write_entire_buffer(digest.bytes())); TRY(m_output_stream->write_until_depleted(digest.bytes()));
TRY(m_output_stream->write_entire_buffer(size.bytes())); TRY(m_output_stream->write_until_depleted(size.bytes()));
return bytes.size(); return bytes.size();
} }
@ -242,7 +242,7 @@ ErrorOr<ByteBuffer> GzipCompressor::compress_all(ReadonlyBytes bytes)
auto output_stream = TRY(try_make<AllocatingMemoryStream>()); auto output_stream = TRY(try_make<AllocatingMemoryStream>());
GzipCompressor gzip_stream { MaybeOwned<Stream>(*output_stream) }; GzipCompressor gzip_stream { MaybeOwned<Stream>(*output_stream) };
TRY(gzip_stream.write_entire_buffer(bytes)); TRY(gzip_stream.write_until_depleted(bytes));
auto buffer = TRY(ByteBuffer::create_uninitialized(output_stream->used_buffer_size())); auto buffer = TRY(ByteBuffer::create_uninitialized(output_stream->used_buffer_size()));
TRY(output_stream->read_until_filled(buffer.bytes())); TRY(output_stream->read_until_filled(buffer.bytes()));

View file

@ -168,7 +168,7 @@ ErrorOr<ByteBuffer> ZlibCompressor::compress_all(ReadonlyBytes bytes, ZlibCompre
auto output_stream = TRY(try_make<AllocatingMemoryStream>()); auto output_stream = TRY(try_make<AllocatingMemoryStream>());
auto zlib_stream = TRY(ZlibCompressor::construct(MaybeOwned<Stream>(*output_stream), compression_level)); auto zlib_stream = TRY(ZlibCompressor::construct(MaybeOwned<Stream>(*output_stream), compression_level));
TRY(zlib_stream->write_entire_buffer(bytes)); TRY(zlib_stream->write_until_depleted(bytes));
TRY(zlib_stream->finish()); TRY(zlib_stream->finish());

View file

@ -238,7 +238,7 @@ ErrorOr<void> pretty_print(Decoder& decoder, Stream& stream, int indent)
TRY(decoder.enter()); TRY(decoder.enter());
builder.append('\n'); builder.append('\n');
TRY(stream.write_entire_buffer(builder.string_view().bytes())); TRY(stream.write_until_depleted(builder.string_view().bytes()));
TRY(pretty_print(decoder, stream, indent + 2)); TRY(pretty_print(decoder, stream, indent + 2));
@ -314,7 +314,7 @@ ErrorOr<void> pretty_print(Decoder& decoder, Stream& stream, int indent)
} }
builder.append('\n'); builder.append('\n');
TRY(stream.write_entire_buffer(builder.string_view().bytes())); TRY(stream.write_until_depleted(builder.string_view().bytes()));
} }
return {}; return {};

View file

@ -81,7 +81,7 @@ ErrorOr<void> Name::write_to_stream(Stream& stream) const
auto parts = as_string().split_view('.'); auto parts = as_string().split_view('.');
for (auto& part : parts) { for (auto& part : parts) {
TRY(stream.write_value<u8>(part.length())); TRY(stream.write_value<u8>(part.length()));
TRY(stream.write_entire_buffer(part.bytes())); TRY(stream.write_until_depleted(part.bytes()));
} }
TRY(stream.write_value('\0')); TRY(stream.write_value('\0'));
return {}; return {};

View file

@ -67,7 +67,7 @@ ErrorOr<ByteBuffer> Packet::to_byte_buffer() const
TRY(stream.write_value(name)); TRY(stream.write_value(name));
} else { } else {
TRY(stream.write_value(htons(answer.record_data().length()))); TRY(stream.write_value(htons(answer.record_data().length())));
TRY(stream.write_entire_buffer(answer.record_data().bytes())); TRY(stream.write_until_depleted(answer.record_data().bytes()));
} }
} }

View file

@ -76,7 +76,7 @@ bool Job::can_read() const
bool Job::write(ReadonlyBytes bytes) bool Job::write(ReadonlyBytes bytes)
{ {
return !m_socket->write_entire_buffer(bytes).is_error(); return !m_socket->write_until_depleted(bytes).is_error();
} }
void Job::flush_received_buffers() void Job::flush_received_buffers()

View file

@ -267,7 +267,7 @@ ErrorOr<ByteBuffer> Bitmap::serialize_to_byte_buffer() const
} }
auto size = size_in_bytes(); auto size = size_in_bytes();
TRY(stream.write_entire_buffer({ scanline(0), size })); TRY(stream.write_until_depleted({ scanline(0), size }));
VERIFY(TRY(stream.tell()) == TRY(stream.size())); VERIFY(TRY(stream.tell()) == TRY(stream.size()));

View file

@ -259,10 +259,10 @@ ErrorOr<void> BitmapFont::write_to_file(DeprecatedString const& path)
auto stream = TRY(Core::File::open(path, Core::File::OpenMode::Write)); auto stream = TRY(Core::File::open(path, Core::File::OpenMode::Write));
size_t bytes_per_glyph = sizeof(u32) * m_glyph_height; size_t bytes_per_glyph = sizeof(u32) * m_glyph_height;
TRY(stream->write_entire_buffer({ &header, sizeof(header) })); TRY(stream->write_until_depleted({ &header, sizeof(header) }));
TRY(stream->write_entire_buffer({ m_range_mask, m_range_mask_size })); TRY(stream->write_until_depleted({ m_range_mask, m_range_mask_size }));
TRY(stream->write_entire_buffer({ m_rows, m_glyph_count * bytes_per_glyph })); TRY(stream->write_until_depleted({ m_rows, m_glyph_count * bytes_per_glyph }));
TRY(stream->write_entire_buffer({ m_glyph_widths, m_glyph_count })); TRY(stream->write_until_depleted({ m_glyph_widths, m_glyph_count }));
return {}; return {};
} }

View file

@ -202,7 +202,7 @@ void Job::on_socket_connected()
dbgln("{}", DeprecatedString::copy(raw_request)); dbgln("{}", DeprecatedString::copy(raw_request));
} }
bool success = !m_socket->write_entire_buffer(raw_request).is_error(); bool success = !m_socket->write_until_depleted(raw_request).is_error();
if (!success) if (!success)
deferred_invoke([this] { did_fail(Core::NetworkJob::Error::TransmissionFailed); }); deferred_invoke([this] { did_fail(Core::NetworkJob::Error::TransmissionFailed); });

View file

@ -606,7 +606,7 @@ ErrorOr<void> Editor::interrupted()
TRY(reposition_cursor(*stderr_stream, true)); TRY(reposition_cursor(*stderr_stream, true));
if (TRY(m_suggestion_display->cleanup())) if (TRY(m_suggestion_display->cleanup()))
TRY(reposition_cursor(*stderr_stream, true)); TRY(reposition_cursor(*stderr_stream, true));
TRY(stderr_stream->write_entire_buffer("\n"sv.bytes())); TRY(stderr_stream->write_until_depleted("\n"sv.bytes()));
} }
m_buffer.clear(); m_buffer.clear();
m_chars_touched_in_the_middle = buffer().size(); m_chars_touched_in_the_middle = buffer().size();
@ -667,7 +667,7 @@ ErrorOr<void> Editor::really_quit_event_loop()
{ {
auto stderr_stream = TRY(Core::File::standard_error()); auto stderr_stream = TRY(Core::File::standard_error());
TRY(reposition_cursor(*stderr_stream, true)); TRY(reposition_cursor(*stderr_stream, true));
TRY(stderr_stream->write_entire_buffer("\n"sv.bytes())); TRY(stderr_stream->write_until_depleted("\n"sv.bytes()));
} }
auto string = line(); auto string = line();
m_buffer.clear(); m_buffer.clear();
@ -734,7 +734,7 @@ auto Editor::get_line(DeprecatedString const& prompt) -> Result<DeprecatedString
auto stderr_stream = Core::File::standard_error().release_value_but_fixme_should_propagate_errors(); auto stderr_stream = Core::File::standard_error().release_value_but_fixme_should_propagate_errors();
auto prompt_lines = max(current_prompt_metrics().line_metrics.size(), 1ul) - 1; auto prompt_lines = max(current_prompt_metrics().line_metrics.size(), 1ul) - 1;
for (size_t i = 0; i < prompt_lines; ++i) for (size_t i = 0; i < prompt_lines; ++i)
stderr_stream->write_entire_buffer("\n"sv.bytes()).release_value_but_fixme_should_propagate_errors(); stderr_stream->write_until_depleted("\n"sv.bytes()).release_value_but_fixme_should_propagate_errors();
VT::move_relative(-static_cast<int>(prompt_lines), 0, *stderr_stream).release_value_but_fixme_should_propagate_errors(); VT::move_relative(-static_cast<int>(prompt_lines), 0, *stderr_stream).release_value_but_fixme_should_propagate_errors();
} }
@ -1375,13 +1375,13 @@ ErrorOr<void> Editor::refresh_display()
if (m_origin_row + current_num_lines > m_num_lines) { if (m_origin_row + current_num_lines > m_num_lines) {
if (current_num_lines > m_num_lines) { if (current_num_lines > m_num_lines) {
for (size_t i = 0; i < m_num_lines; ++i) for (size_t i = 0; i < m_num_lines; ++i)
TRY(output_stream.write_entire_buffer("\n"sv.bytes())); TRY(output_stream.write_until_depleted("\n"sv.bytes()));
m_origin_row = 0; m_origin_row = 0;
} else { } else {
auto old_origin_row = m_origin_row; auto old_origin_row = m_origin_row;
m_origin_row = m_num_lines - current_num_lines + 1; m_origin_row = m_num_lines - current_num_lines + 1;
for (size_t i = 0; i < old_origin_row - m_origin_row; ++i) for (size_t i = 0; i < old_origin_row - m_origin_row; ++i)
TRY(output_stream.write_entire_buffer("\n"sv.bytes())); TRY(output_stream.write_until_depleted("\n"sv.bytes()));
} }
} }
// Do not call hook on pure cursor movement. // Do not call hook on pure cursor movement.
@ -1400,7 +1400,7 @@ ErrorOr<void> Editor::refresh_display()
if (!m_refresh_needed && m_cursor == m_buffer.size()) { if (!m_refresh_needed && m_cursor == m_buffer.size()) {
// Just write the characters out and continue, // Just write the characters out and continue,
// no need to refresh the entire line. // no need to refresh the entire line.
TRY(output_stream.write_entire_buffer(m_pending_chars)); TRY(output_stream.write_until_depleted(m_pending_chars));
m_pending_chars.clear(); m_pending_chars.clear();
m_drawn_cursor = m_cursor; m_drawn_cursor = m_cursor;
m_drawn_end_of_line_offset = m_buffer.size(); m_drawn_end_of_line_offset = m_buffer.size();
@ -1481,12 +1481,12 @@ ErrorOr<void> Editor::refresh_display()
builder.append(Utf32View { &c, 1 }); builder.append(Utf32View { &c, 1 });
if (should_print_masked) if (should_print_masked)
TRY(output_stream.write_entire_buffer("\033[7m"sv.bytes())); TRY(output_stream.write_until_depleted("\033[7m"sv.bytes()));
TRY(output_stream.write_entire_buffer(builder.string_view().bytes())); TRY(output_stream.write_until_depleted(builder.string_view().bytes()));
if (should_print_masked) if (should_print_masked)
TRY(output_stream.write_entire_buffer("\033[27m"sv.bytes())); TRY(output_stream.write_until_depleted("\033[27m"sv.bytes()));
return {}; return {};
}; };
@ -1544,7 +1544,7 @@ ErrorOr<void> Editor::refresh_display()
} }
TRY(VT::move_absolute(m_origin_row, m_origin_column, output_stream)); TRY(VT::move_absolute(m_origin_row, m_origin_column, output_stream));
TRY(output_stream.write_entire_buffer(m_new_prompt.bytes())); TRY(output_stream.write_until_depleted(m_new_prompt.bytes()));
TRY(VT::clear_to_end_of_line(output_stream)); TRY(VT::clear_to_end_of_line(output_stream));
StringBuilder builder; StringBuilder builder;
@ -1606,7 +1606,7 @@ ErrorOr<void> Editor::reposition_cursor(Stream& stream, bool to_end)
ErrorOr<void> VT::move_absolute(u32 row, u32 col, Stream& stream) ErrorOr<void> VT::move_absolute(u32 row, u32 col, Stream& stream)
{ {
return stream.write_entire_buffer(DeprecatedString::formatted("\033[{};{}H", row, col).bytes()); return stream.write_until_depleted(DeprecatedString::formatted("\033[{};{}H", row, col).bytes());
} }
ErrorOr<void> VT::move_relative(int row, int col, Stream& stream) ErrorOr<void> VT::move_relative(int row, int col, Stream& stream)
@ -1623,9 +1623,9 @@ ErrorOr<void> VT::move_relative(int row, int col, Stream& stream)
col = -col; col = -col;
if (row > 0) if (row > 0)
TRY(stream.write_entire_buffer(DeprecatedString::formatted("\033[{}{}", row, x_op).bytes())); TRY(stream.write_until_depleted(DeprecatedString::formatted("\033[{}{}", row, x_op).bytes()));
if (col > 0) if (col > 0)
TRY(stream.write_entire_buffer(DeprecatedString::formatted("\033[{}{}", col, y_op).bytes())); TRY(stream.write_until_depleted(DeprecatedString::formatted("\033[{}{}", col, y_op).bytes()));
return {}; return {};
} }
@ -1764,16 +1764,16 @@ DeprecatedString Style::to_deprecated_string() const
ErrorOr<void> VT::apply_style(Style const& style, Stream& stream, bool is_starting) ErrorOr<void> VT::apply_style(Style const& style, Stream& stream, bool is_starting)
{ {
if (is_starting) { if (is_starting) {
TRY(stream.write_entire_buffer(DeprecatedString::formatted("\033[{};{};{}m{}{}{}", TRY(stream.write_until_depleted(DeprecatedString::formatted("\033[{};{};{}m{}{}{}",
style.bold() ? 1 : 22, style.bold() ? 1 : 22,
style.underline() ? 4 : 24, style.underline() ? 4 : 24,
style.italic() ? 3 : 23, style.italic() ? 3 : 23,
style.background().to_vt_escape(), style.background().to_vt_escape(),
style.foreground().to_vt_escape(), style.foreground().to_vt_escape(),
style.hyperlink().to_vt_escape(true)) style.hyperlink().to_vt_escape(true))
.bytes())); .bytes()));
} else { } else {
TRY(stream.write_entire_buffer(style.hyperlink().to_vt_escape(false).bytes())); TRY(stream.write_until_depleted(style.hyperlink().to_vt_escape(false).bytes()));
} }
return {}; return {};
@ -1782,16 +1782,16 @@ ErrorOr<void> VT::apply_style(Style const& style, Stream& stream, bool is_starti
ErrorOr<void> VT::clear_lines(size_t count_above, size_t count_below, Stream& stream) ErrorOr<void> VT::clear_lines(size_t count_above, size_t count_below, Stream& stream)
{ {
if (count_below + count_above == 0) { if (count_below + count_above == 0) {
TRY(stream.write_entire_buffer("\033[2K"sv.bytes())); TRY(stream.write_until_depleted("\033[2K"sv.bytes()));
} else { } else {
// Go down count_below lines. // Go down count_below lines.
if (count_below > 0) if (count_below > 0)
TRY(stream.write_entire_buffer(DeprecatedString::formatted("\033[{}B", count_below).bytes())); TRY(stream.write_until_depleted(DeprecatedString::formatted("\033[{}B", count_below).bytes()));
// Then clear lines going upwards. // Then clear lines going upwards.
for (size_t i = count_below + count_above; i > 0; --i) { for (size_t i = count_below + count_above; i > 0; --i) {
TRY(stream.write_entire_buffer("\033[2K"sv.bytes())); TRY(stream.write_until_depleted("\033[2K"sv.bytes()));
if (i != 1) if (i != 1)
TRY(stream.write_entire_buffer("\033[A"sv.bytes())); TRY(stream.write_until_depleted("\033[A"sv.bytes()));
} }
} }
@ -1800,17 +1800,17 @@ ErrorOr<void> VT::clear_lines(size_t count_above, size_t count_below, Stream& st
ErrorOr<void> VT::save_cursor(Stream& stream) ErrorOr<void> VT::save_cursor(Stream& stream)
{ {
return stream.write_entire_buffer("\033[s"sv.bytes()); return stream.write_until_depleted("\033[s"sv.bytes());
} }
ErrorOr<void> VT::restore_cursor(Stream& stream) ErrorOr<void> VT::restore_cursor(Stream& stream)
{ {
return stream.write_entire_buffer("\033[u"sv.bytes()); return stream.write_until_depleted("\033[u"sv.bytes());
} }
ErrorOr<void> VT::clear_to_end_of_line(Stream& stream) ErrorOr<void> VT::clear_to_end_of_line(Stream& stream)
{ {
return stream.write_entire_buffer("\033[K"sv.bytes()); return stream.write_until_depleted("\033[K"sv.bytes());
} }
enum VTState { enum VTState {

View file

@ -54,7 +54,7 @@ void Request::stream_into(Stream& stream)
if (read_bytes.is_empty()) if (read_bytes.is_empty())
break; break;
// FIXME: What do we do if this fails? // FIXME: What do we do if this fails?
stream.write_entire_buffer(read_bytes).release_value_but_fixme_should_propagate_errors(); stream.write_until_depleted(read_bytes).release_value_but_fixme_should_propagate_errors();
break; break;
} while (true); } while (true);

View file

@ -141,11 +141,11 @@ bool TLSv12::compute_master_secret_from_pre_master_secret(size_t length)
if constexpr (TLS_SSL_KEYLOG_DEBUG) { if constexpr (TLS_SSL_KEYLOG_DEBUG) {
auto file = MUST(Core::File::open("/home/anon/ssl_keylog"sv, Core::File::OpenMode::Append | Core::File::OpenMode::Write)); auto file = MUST(Core::File::open("/home/anon/ssl_keylog"sv, Core::File::OpenMode::Append | Core::File::OpenMode::Write));
MUST(file->write_entire_buffer("CLIENT_RANDOM "sv.bytes())); MUST(file->write_until_depleted("CLIENT_RANDOM "sv.bytes()));
MUST(file->write_entire_buffer(encode_hex({ m_context.local_random, 32 }).bytes())); MUST(file->write_until_depleted(encode_hex({ m_context.local_random, 32 }).bytes()));
MUST(file->write_entire_buffer(" "sv.bytes())); MUST(file->write_until_depleted(" "sv.bytes()));
MUST(file->write_entire_buffer(encode_hex(m_context.master_key).bytes())); MUST(file->write_until_depleted(encode_hex(m_context.master_key).bytes()));
MUST(file->write_entire_buffer("\n"sv.bytes())); MUST(file->write_until_depleted("\n"sv.bytes()));
} }
expand_key(); expand_key();

View file

@ -146,9 +146,9 @@ void TLSv12::update_packet(ByteBuffer& packet)
u64 seq_no = AK::convert_between_host_and_network_endian(m_context.local_sequence_number); u64 seq_no = AK::convert_between_host_and_network_endian(m_context.local_sequence_number);
u16 len = AK::convert_between_host_and_network_endian((u16)(packet.size() - header_size)); u16 len = AK::convert_between_host_and_network_endian((u16)(packet.size() - header_size));
MUST(aad_stream.write_value(seq_no)); // sequence number MUST(aad_stream.write_value(seq_no)); // sequence number
MUST(aad_stream.write_entire_buffer(packet.bytes().slice(0, 3))); // content-type + version MUST(aad_stream.write_until_depleted(packet.bytes().slice(0, 3))); // content-type + version
MUST(aad_stream.write_value(len)); // length MUST(aad_stream.write_value(len)); // length
VERIFY(MUST(aad_stream.tell()) == MUST(aad_stream.size())); VERIFY(MUST(aad_stream.tell()) == MUST(aad_stream.size()));
// AEAD IV (12) // AEAD IV (12)
@ -387,9 +387,9 @@ ssize_t TLSv12::handle_message(ReadonlyBytes buffer)
u64 seq_no = AK::convert_between_host_and_network_endian(m_context.remote_sequence_number); u64 seq_no = AK::convert_between_host_and_network_endian(m_context.remote_sequence_number);
u16 len = AK::convert_between_host_and_network_endian((u16)packet_length); u16 len = AK::convert_between_host_and_network_endian((u16)packet_length);
MUST(aad_stream.write_value(seq_no)); // sequence number MUST(aad_stream.write_value(seq_no)); // sequence number
MUST(aad_stream.write_entire_buffer(buffer.slice(0, header_size - 2))); // content-type + version MUST(aad_stream.write_until_depleted(buffer.slice(0, header_size - 2))); // content-type + version
MUST(aad_stream.write_value(len)); // length MUST(aad_stream.write_value(len)); // length
VERIFY(MUST(aad_stream.tell()) == MUST(aad_stream.size())); VERIFY(MUST(aad_stream.tell()) == MUST(aad_stream.size()));
auto nonce = payload.slice(0, iv_length()); auto nonce = payload.slice(0, iv_length());

View file

@ -34,7 +34,7 @@ Optional<OpCode> instruction_from_name(StringView name)
void Printer::print_indent() void Printer::print_indent()
{ {
for (size_t i = 0; i < m_indent; ++i) for (size_t i = 0; i < m_indent; ++i)
m_stream.write_entire_buffer(" "sv.bytes()).release_value_but_fixme_should_propagate_errors(); m_stream.write_until_depleted(" "sv.bytes()).release_value_but_fixme_should_propagate_errors();
} }
void Printer::print(Wasm::BlockType const& type) void Printer::print(Wasm::BlockType const& type)

View file

@ -68,7 +68,7 @@ private:
{ {
StringBuilder builder; StringBuilder builder;
builder.appendff(fmt.view(), forward<Args>(args)...); builder.appendff(fmt.view(), forward<Args>(args)...);
m_stream.write_entire_buffer(builder.string_view().bytes()).release_value_but_fixme_should_propagate_errors(); m_stream.write_until_depleted(builder.string_view().bytes()).release_value_but_fixme_should_propagate_errors();
} }
Stream& m_stream; Stream& m_stream;

View file

@ -22,7 +22,7 @@ bool WebSocketImplSerenity::can_read_line()
bool WebSocketImplSerenity::send(ReadonlyBytes bytes) bool WebSocketImplSerenity::send(ReadonlyBytes bytes)
{ {
return !m_socket->write_entire_buffer(bytes).is_error(); return !m_socket->write_until_depleted(bytes).is_error();
} }
bool WebSocketImplSerenity::eof() bool WebSocketImplSerenity::eof()

View file

@ -1823,7 +1823,7 @@ ErrorOr<void> Execute::for_each_entry(RefPtr<Shell> shell, Function<ErrorOr<Iter
break; break;
should_enable_notifier = true; should_enable_notifier = true;
stream.write_entire_buffer({ buffer, (size_t)read_size }).release_value_but_fixme_should_propagate_errors(); stream.write_until_depleted({ buffer, (size_t)read_size }).release_value_but_fixme_should_propagate_errors();
} }
loop.quit(NothingLeft); loop.quit(NothingLeft);

View file

@ -18,7 +18,7 @@ static ErrorOr<void> decompress_file(NonnullOwnPtr<Core::File> input_stream, Str
auto buffer = TRY(ByteBuffer::create_uninitialized(4096)); auto buffer = TRY(ByteBuffer::create_uninitialized(4096));
while (!gzip_stream.is_eof()) { while (!gzip_stream.is_eof()) {
auto span = TRY(gzip_stream.read_some(buffer)); auto span = TRY(gzip_stream.read_some(buffer));
TRY(output_stream.write_entire_buffer(span)); TRY(output_stream.write_until_depleted(span));
} }
return {}; return {};

View file

@ -57,7 +57,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
output_bytes = TRY(Compress::GzipCompressor::compress_all(input_bytes)); output_bytes = TRY(Compress::GzipCompressor::compress_all(input_bytes));
auto output_stream = write_to_stdout ? TRY(Core::File::standard_output()) : TRY(Core::File::open(output_filename, Core::File::OpenMode::Write)); auto output_stream = write_to_stdout ? TRY(Core::File::standard_output()) : TRY(Core::File::open(output_filename, Core::File::OpenMode::Write));
TRY(output_stream->write_entire_buffer(output_bytes)); TRY(output_stream->write_until_depleted(output_bytes));
if (!keep_input_files) { if (!keep_input_files) {
TRY(Core::System::unlink(input_filename)); TRY(Core::System::unlink(input_filename));

View file

@ -145,7 +145,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
if (!dump_out_path.is_empty()) { if (!dump_out_path.is_empty()) {
auto output_stream = TRY(Core::File::open(dump_out_path, Core::File::OpenMode::Write)); auto output_stream = TRY(Core::File::open(dump_out_path, Core::File::OpenMode::Write));
TRY(output_stream->write_entire_buffer(icc_bytes)); TRY(output_stream->write_until_depleted(icc_bytes));
} }
return Gfx::ICC::Profile::try_load_from_externally_owned_memory(icc_bytes); return Gfx::ICC::Profile::try_load_from_externally_owned_memory(icc_bytes);
}()); }());
@ -153,7 +153,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
if (!reencode_out_path.is_empty()) { if (!reencode_out_path.is_empty()) {
auto reencoded_bytes = TRY(Gfx::ICC::encode(profile)); auto reencoded_bytes = TRY(Gfx::ICC::encode(profile));
auto output_stream = TRY(Core::File::open(reencode_out_path, Core::File::OpenMode::Write)); auto output_stream = TRY(Core::File::open(reencode_out_path, Core::File::OpenMode::Write));
TRY(output_stream->write_entire_buffer(reencoded_bytes)); TRY(output_stream->write_until_depleted(reencoded_bytes));
} }
bool do_print = (dump_out_path.is_empty() && reencode_out_path.is_empty()) || force_print; bool do_print = (dump_out_path.is_empty() && reencode_out_path.is_empty()) || force_print;

View file

@ -56,7 +56,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
} }
auto output_stream = TRY(Core::File::open(out_path, Core::File::OpenMode::Write)); auto output_stream = TRY(Core::File::open(out_path, Core::File::OpenMode::Write));
TRY(output_stream->write_entire_buffer(bytes)); TRY(output_stream->write_until_depleted(bytes));
return 0; return 0;
} }