mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-30 08:41:15 +00:00
Userland: Less: emulate cat when stdout is not a tty
This is the most logical behavior when less is used in a pipe.
This commit is contained in:
parent
1ec061d666
commit
a11658737a
Notes:
sideshowbarker
2024-07-18 10:13:05 +09:00
Author: https://github.com/petelliott Commit: https://github.com/SerenityOS/serenity/commit/a11658737a2 Pull-request: https://github.com/SerenityOS/serenity/pull/8486 Reviewed-by: https://github.com/MaxWipfli Reviewed-by: https://github.com/alimpfard ✅
|
@ -286,10 +286,26 @@ static String get_key_sequence()
|
|||
return String(buff, n);
|
||||
}
|
||||
|
||||
static void cat_file(FILE* file)
|
||||
{
|
||||
ByteBuffer buffer = ByteBuffer::create_uninitialized(4096);
|
||||
while (!feof(file)) {
|
||||
size_t n = fread(buffer.data(), 1, buffer.size(), file);
|
||||
if (n == 0 && ferror(file)) {
|
||||
perror("fread");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
n = fwrite(buffer.data(), 1, n, stdout);
|
||||
if (n == 0 && ferror(stdout)) {
|
||||
perror("fwrite");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char** argv)
|
||||
{
|
||||
VERIFY(isatty(STDOUT_FILENO));
|
||||
|
||||
char const* filename = "-";
|
||||
char const* prompt = "?f%f :.(line %l)?e (END):.";
|
||||
bool dont_switch_buffer = false;
|
||||
|
@ -321,6 +337,11 @@ int main(int argc, char** argv)
|
|||
prompt = "--More--";
|
||||
}
|
||||
|
||||
if (!isatty(STDOUT_FILENO)) {
|
||||
cat_file(file);
|
||||
return 0;
|
||||
}
|
||||
|
||||
setup_tty(!dont_switch_buffer);
|
||||
|
||||
Pager pager(file, stdout, g_wsize.ws_col, g_wsize.ws_row);
|
||||
|
|
Loading…
Reference in a new issue