1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 02:27:43 +00:00

Utilities: Add zcat

This utility is actually a symlink to the gunzip utility.
The gunzip utility is modified to enable writing to stdout when running
through the zcat symlink, to emulate the same behavior on other OSes.

In addition to that, the gunzip utility is now required on a default
installation as it could be a vital utility under some conditions (for
example, downloading source code in a tar.gz file).
This commit is contained in:
Liav A 2023-08-12 20:37:27 +03:00 committed by Sam Atkins
parent 1e737e763e
commit 029160fd27
2 changed files with 12 additions and 4 deletions

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2020, the SerenityOS developers.
* Copyright (c) 2023, Liav A. <liavalb@hotmail.co.il>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -18,8 +19,14 @@ ErrorOr<int> serenity_main(Main::Arguments args)
bool write_to_stdout { false };
Core::ArgsParser args_parser;
args_parser.add_option(keep_input_files, "Keep (don't delete) input files", "keep", 'k');
args_parser.add_option(write_to_stdout, "Write to stdout, keep original files unchanged", "stdout", 'c');
// NOTE: If the user run this program via the /bin/zcat symlink,
// then emulate gzip decompression to stdout.
if (args.argc > 0 && args.strings[0] == "zcat"sv) {
write_to_stdout = true;
} else {
args_parser.add_option(keep_input_files, "Keep (don't delete) input files", "keep", 'k');
args_parser.add_option(write_to_stdout, "Write to stdout, keep original files unchanged", "stdout", 'c');
}
args_parser.add_positional_argument(filenames, "File to decompress", "FILE");
args_parser.parse(args);