1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-17 19:05:07 +00:00

Shell: Prefer File::read_until_eof over DeprecatedFile::read_all

This commit is contained in:
Ben Wiederhake 2023-05-18 15:32:38 +02:00 committed by Jelle Raaijmakers
parent 33026bcefe
commit f0ee630ee9
2 changed files with 16 additions and 9 deletions

View file

@ -1077,18 +1077,26 @@ bool Shell::run_file(DeprecatedString const& filename, bool explicitly_invoked)
TemporaryChange interactive_change { m_is_interactive, false }; TemporaryChange interactive_change { m_is_interactive, false };
TemporaryChange<Optional<SourcePosition>> source_change { m_source_position, SourcePosition { .source_file = filename, .literal_source_text = {}, .position = {} } }; TemporaryChange<Optional<SourcePosition>> source_change { m_source_position, SourcePosition { .source_file = filename, .literal_source_text = {}, .position = {} } };
auto file_result = Core::DeprecatedFile::open(filename, Core::OpenMode::ReadOnly); auto file_or_error = Core::File::open(filename, Core::File::OpenMode::Read);
if (file_result.is_error()) { if (file_or_error.is_error()) {
auto error = DeprecatedString::formatted("'{}': {}", escape_token_for_single_quotes(filename), file_result.error()); auto error = DeprecatedString::formatted("'{}': {}", escape_token_for_single_quotes(filename), file_or_error.error());
if (explicitly_invoked) if (explicitly_invoked)
raise_error(ShellError::OpenFailure, error); raise_error(ShellError::OpenFailure, error);
else else
dbgln("open() failed for {}", error); dbgln("open() failed for {}", error);
return false; return false;
} }
auto file = file_result.value(); auto file = file_or_error.release_value();
auto data = file->read_all(); auto data_or_error = file->read_until_eof();
return run_command(data) == 0; if (data_or_error.is_error()) {
auto error = DeprecatedString::formatted("'{}': {}", escape_token_for_single_quotes(filename), data_or_error.error());
if (explicitly_invoked)
raise_error(ShellError::OpenFailure, error);
else
dbgln("reading after open() failed for {}", error);
return false;
}
return run_command(data_or_error.value()) == 0;
} }
bool Shell::is_allowed_to_modify_termios(const AST::Command& command) const bool Shell::is_allowed_to_modify_termios(const AST::Command& command) const

View file

@ -7,7 +7,6 @@
#include "Shell.h" #include "Shell.h"
#include <AK/LexicalPath.h> #include <AK/LexicalPath.h>
#include <LibCore/ArgsParser.h> #include <LibCore/ArgsParser.h>
#include <LibCore/DeprecatedFile.h>
#include <LibCore/Event.h> #include <LibCore/Event.h>
#include <LibCore/EventLoop.h> #include <LibCore/EventLoop.h>
#include <LibCore/System.h> #include <LibCore/System.h>
@ -190,12 +189,12 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
skip_rc_files = true; skip_rc_files = true;
if (!format.is_empty()) { if (!format.is_empty()) {
auto file = TRY(Core::DeprecatedFile::open(format, Core::OpenMode::ReadOnly)); auto file = TRY(Core::File::open(format, Core::File::OpenMode::Read));
initialize(posix_mode); initialize(posix_mode);
ssize_t cursor = -1; ssize_t cursor = -1;
puts(shell->format(file->read_all(), cursor).characters()); puts(shell->format(TRY(file->read_until_eof()), cursor).characters());
return 0; return 0;
} }