From daa9812ceac8e6e7200cb93e9d322812883ee2e3 Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Sat, 20 May 2023 06:54:39 +0100 Subject: tail: Don't skip the last line if it doesn't end in a newline --- Userland/Utilities/tail.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'Userland/Utilities') diff --git a/Userland/Utilities/tail.cpp b/Userland/Utilities/tail.cpp index 1963771515..c9ad2abf0b 100644 --- a/Userland/Utilities/tail.cpp +++ b/Userland/Utilities/tail.cpp @@ -70,6 +70,9 @@ ErrorOr serenity_main(Main::Arguments arguments) auto buffer = TRY(f->read_until_eof(PAGE_SIZE)); auto line_count = StringView(buffer).count("\n"sv); auto bytes = buffer.bytes(); + if (bytes.size() > 0 && bytes.last() != '\n') + line_count++; + size_t line_index = 0; StringBuilder line; @@ -81,7 +84,7 @@ ErrorOr serenity_main(Main::Arguments arguments) for (size_t i = 0; i < bytes.size(); i++) { auto ch = bytes.at(i); line.append(ch); - if (ch == '\n') { + if (ch == '\n' || i == bytes.size() - 1) { if (wanted_line_count > line_count || line_index >= line_count - wanted_line_count) out("{}", line.to_deprecated_string()); line_index++; -- cgit v1.2.3