LibCore: Error on a fail to write in Command::write_lines

This commit is contained in:
Shannon Booth 2023-07-17 16:39:41 +12:00 committed by Sam Atkins
parent 125145c682
commit 06a44ac2ff

View file

@ -74,17 +74,17 @@ ErrorOr<void> Command::write_lines(Span<DeprecatedString> lines)
struct sigaction old_action_handler;
TRY(Core::System::sigaction(SIGPIPE, &action_handler, &old_action_handler));
for (DeprecatedString const& line : lines) {
if (m_stdin->write_until_depleted(DeprecatedString::formatted("{}\n", line).bytes()).is_error())
break;
}
auto close_stdin = ScopeGuard([this, &old_action_handler] {
// Ensure that the input stream ends here, whether we were able to write all lines or not
m_stdin->close();
// Ensure that the input stream ends here, whether we were able to write all lines or not
m_stdin->close();
// It's not really a problem if this signal failed
if (sigaction(SIGPIPE, &old_action_handler, nullptr) < 0)
perror("sigaction");
});
// It's not really a problem if this signal failed
if (sigaction(SIGPIPE, &old_action_handler, nullptr) < 0)
perror("sigaction");
for (DeprecatedString const& line : lines)
TRY(m_stdin->write_until_depleted(DeprecatedString::formatted("{}\n", line).bytes()));
return {};
}