mirror of
https://github.com/RGBCube/serenity
synced 2025-07-28 13:07:46 +00:00
AK: Add the Input
word to input-only buffered streams
This concerns both `BufferedSeekable` and `BufferedFile`.
This commit is contained in:
parent
48b000a36c
commit
8c34959b53
50 changed files with 101 additions and 102 deletions
|
@ -10,10 +10,10 @@
|
|||
#include <LibCore/System.h>
|
||||
#include <LibMain/Main.h>
|
||||
|
||||
static ErrorOr<NonnullOwnPtr<Core::BufferedFile>> open_file_or_stdin(StringView filename)
|
||||
static ErrorOr<NonnullOwnPtr<Core::InputBufferedFile>> open_file_or_stdin(StringView filename)
|
||||
{
|
||||
auto file = TRY(Core::File::open_file_or_standard_stream(filename, Core::File::OpenMode::Read));
|
||||
return TRY(Core::BufferedFile::create(move(file)));
|
||||
return TRY(Core::InputBufferedFile::create(move(file)));
|
||||
}
|
||||
|
||||
ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||
|
|
|
@ -73,7 +73,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
return false;
|
||||
}
|
||||
|
||||
auto buffered_file_or_error = Core::BufferedFile::create(file_or_error.release_value());
|
||||
auto buffered_file_or_error = Core::InputBufferedFile::create(file_or_error.release_value());
|
||||
if (buffered_file_or_error.is_error()) {
|
||||
warnln("Failed to create buffer for file{} '{}': {}", file_number, path, buffered_file_or_error.error());
|
||||
return false;
|
||||
|
@ -83,8 +83,8 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
return true;
|
||||
};
|
||||
|
||||
OwnPtr<Core::BufferedFile> file1;
|
||||
OwnPtr<Core::BufferedFile> file2;
|
||||
OwnPtr<Core::InputBufferedFile> file1;
|
||||
OwnPtr<Core::InputBufferedFile> file2;
|
||||
if (!(open_file(file1_path, file1, 1) && open_file(file2_path, file2, 2)))
|
||||
return 1;
|
||||
|
||||
|
|
|
@ -163,7 +163,7 @@ ErrorOr<int> serenity_main(Main::Arguments args)
|
|||
|
||||
if (!pattern_file.is_empty()) {
|
||||
auto file = TRY(Core::File::open(pattern_file, Core::File::OpenMode::Read));
|
||||
auto buffered_file = TRY(Core::BufferedFile::create(move(file)));
|
||||
auto buffered_file = TRY(Core::InputBufferedFile::create(move(file)));
|
||||
Array<u8, PAGE_SIZE> buffer;
|
||||
while (!buffered_file->is_eof()) {
|
||||
auto next_pattern = TRY(buffered_file->read_line(buffer));
|
||||
|
@ -242,7 +242,7 @@ ErrorOr<int> serenity_main(Main::Arguments args)
|
|||
auto handle_file = [&matches, binary_mode, count_lines, quiet_mode,
|
||||
user_specified_multiple_files, &matched_line_count, &did_match_something](StringView filename, bool print_filename) -> ErrorOr<void> {
|
||||
auto file = TRY(Core::File::open(filename, Core::File::OpenMode::Read));
|
||||
auto buffered_file = TRY(Core::BufferedFile::create(move(file)));
|
||||
auto buffered_file = TRY(Core::InputBufferedFile::create(move(file)));
|
||||
|
||||
for (size_t line_number = 1; TRY(buffered_file->can_read_line()); ++line_number) {
|
||||
Array<u8, PAGE_SIZE> buffer;
|
||||
|
|
|
@ -22,7 +22,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
args_parser.parse(arguments);
|
||||
|
||||
auto file = TRY(Core::File::open_file_or_standard_stream(filename, Core::File::OpenMode::Read));
|
||||
auto buffered_file = TRY(Core::BufferedFile::create(move(file)));
|
||||
auto buffered_file = TRY(Core::InputBufferedFile::create(move(file)));
|
||||
auto stream = TRY(Compress::LzmaDecompressor::create_from_container(move(buffered_file)));
|
||||
|
||||
// Arbitrarily chosen buffer size.
|
||||
|
|
|
@ -113,7 +113,7 @@ static ErrorOr<void> mount_all()
|
|||
bool all_ok = true;
|
||||
auto process_fstab_entries = [&](StringView path) -> ErrorOr<void> {
|
||||
auto file_unbuffered = TRY(Core::File::open(path, Core::File::OpenMode::Read));
|
||||
auto file = TRY(Core::BufferedFile::create(move(file_unbuffered)));
|
||||
auto file = TRY(Core::InputBufferedFile::create(move(file_unbuffered)));
|
||||
|
||||
while (TRY(file->can_read_line())) {
|
||||
auto line = TRY(file->read_line(buffer));
|
||||
|
|
|
@ -613,7 +613,7 @@ enum class CycleDecision {
|
|||
class File {
|
||||
AK_MAKE_NONCOPYABLE(File);
|
||||
|
||||
File(LexicalPath input_file_path, NonnullOwnPtr<Core::BufferedFile>&& file, OwnPtr<Core::File>&& output, OwnPtr<FileSystem::TempFile>&& temp_file)
|
||||
File(LexicalPath input_file_path, NonnullOwnPtr<Core::InputBufferedFile>&& file, OwnPtr<Core::File>&& output, OwnPtr<FileSystem::TempFile>&& temp_file)
|
||||
: m_input_file_path(move(input_file_path))
|
||||
, m_file(move(file))
|
||||
, m_output(move(output))
|
||||
|
@ -625,7 +625,7 @@ public:
|
|||
// Used for -i mode.
|
||||
static ErrorOr<File> create_with_output_file(LexicalPath input_path, NonnullOwnPtr<Core::File>&& file)
|
||||
{
|
||||
auto buffered_file = TRY(Core::BufferedFile::create(move(file)));
|
||||
auto buffered_file = TRY(Core::InputBufferedFile::create(move(file)));
|
||||
auto temp_file = TRY(FileSystem::TempFile::create_temp_file());
|
||||
// Open the file as read-write, since we need to later copy its contents to the original file.
|
||||
auto output_file = TRY(Core::File::open(temp_file->path(), Core::File::OpenMode::ReadWrite | Core::File::OpenMode::Truncate));
|
||||
|
@ -635,7 +635,7 @@ public:
|
|||
// Used for non -i mode.
|
||||
static ErrorOr<File> create(LexicalPath input_path, NonnullOwnPtr<Core::File>&& file)
|
||||
{
|
||||
auto buffered_file = TRY(Core::BufferedFile::create(move(file)));
|
||||
auto buffered_file = TRY(Core::InputBufferedFile::create(move(file)));
|
||||
return File { move(input_path), move(buffered_file), nullptr, nullptr };
|
||||
}
|
||||
|
||||
|
@ -650,7 +650,7 @@ public:
|
|||
// We hack standard output into `File` to avoid having two versions of `write_pattern_space`.
|
||||
return File {
|
||||
LexicalPath { "/proc/self/fd/1" },
|
||||
TRY(Core::BufferedFile::create(TRY(Core::File::standard_input()))),
|
||||
TRY(Core::InputBufferedFile::create(TRY(Core::File::standard_input()))),
|
||||
TRY(Core::File::standard_output()),
|
||||
nullptr,
|
||||
};
|
||||
|
@ -697,12 +697,11 @@ public:
|
|||
|
||||
private:
|
||||
LexicalPath m_input_file_path;
|
||||
NonnullOwnPtr<Core::BufferedFile> m_file;
|
||||
NonnullOwnPtr<Core::InputBufferedFile> m_file;
|
||||
|
||||
// Only in use if we're editing in place.
|
||||
OwnPtr<Core::File> m_output;
|
||||
OwnPtr<FileSystem::TempFile> m_output_temp_file;
|
||||
|
||||
size_t m_line_number { 0 };
|
||||
DeprecatedString m_current_line;
|
||||
constexpr static size_t MAX_SUPPORTED_LINE_SIZE = 4096;
|
||||
|
|
|
@ -62,7 +62,7 @@ struct Options {
|
|||
|
||||
static ErrorOr<void> load_file(Options options, StringView filename, Vector<Line>& lines, HashTable<Line>& seen)
|
||||
{
|
||||
auto file = TRY(Core::BufferedFile::create(
|
||||
auto file = TRY(Core::InputBufferedFile::create(
|
||||
TRY(Core::File::open_file_or_standard_stream(filename, Core::File::OpenMode::Read))));
|
||||
|
||||
// FIXME: Unlimited line length
|
||||
|
|
|
@ -151,7 +151,7 @@ private:
|
|||
NonnullRefPtr<SQL::SQLClient> m_sql_client;
|
||||
SQL::ConnectionID m_connection_id { 0 };
|
||||
Core::EventLoop& m_loop;
|
||||
OwnPtr<Core::BufferedFile> m_input_file { nullptr };
|
||||
OwnPtr<Core::InputBufferedFile> m_input_file { nullptr };
|
||||
bool m_quit_when_files_read { false };
|
||||
Vector<DeprecatedString> m_input_file_chain {};
|
||||
Array<u8, 4096> m_buffer {};
|
||||
|
@ -166,7 +166,7 @@ private:
|
|||
return {};
|
||||
}
|
||||
|
||||
auto buffered_file_or_error = Core::BufferedFile::create(file_or_error.release_value());
|
||||
auto buffered_file_or_error = Core::InputBufferedFile::create(file_or_error.release_value());
|
||||
if (buffered_file_or_error.is_error()) {
|
||||
warnln("Input file {} could not be buffered: {}", file_name, buffered_file_or_error.error());
|
||||
return {};
|
||||
|
|
|
@ -74,7 +74,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
if (!directory.is_empty())
|
||||
TRY(Core::System::chdir(directory));
|
||||
|
||||
NonnullOwnPtr<Stream> input_stream = TRY(Core::BufferedFile::create(TRY(Core::File::open_file_or_standard_stream(archive_file, Core::File::OpenMode::Read))));
|
||||
NonnullOwnPtr<Stream> input_stream = TRY(Core::InputBufferedFile::create(TRY(Core::File::open_file_or_standard_stream(archive_file, Core::File::OpenMode::Read))));
|
||||
|
||||
if (gzip)
|
||||
input_stream = make<Compress::GzipDecompressor>(move(input_stream));
|
||||
|
|
|
@ -79,7 +79,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
return 0;
|
||||
}
|
||||
|
||||
auto infile = TRY(Core::BufferedFile::create(TRY(Core::File::open_file_or_standard_stream(inpath, Core::File::OpenMode::Read))));
|
||||
auto infile = TRY(Core::InputBufferedFile::create(TRY(Core::File::open_file_or_standard_stream(inpath, Core::File::OpenMode::Read))));
|
||||
auto outfile = TRY(Core::File::open_file_or_standard_stream(outpath, Core::File::OpenMode::Write));
|
||||
|
||||
size_t count = 0;
|
||||
|
|
|
@ -22,7 +22,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
|||
args_parser.parse(arguments);
|
||||
|
||||
auto file = TRY(Core::File::open_file_or_standard_stream(filename, Core::File::OpenMode::Read));
|
||||
auto buffered_file = TRY(Core::BufferedFile::create(move(file)));
|
||||
auto buffered_file = TRY(Core::InputBufferedFile::create(move(file)));
|
||||
auto stream = TRY(Compress::XzDecompressor::create(move(buffered_file)));
|
||||
|
||||
// Arbitrarily chosen buffer size.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue