From 80a1ab348768f28d4973649f8cbef059a2e999d6 Mon Sep 17 00:00:00 2001 From: Lucas CHOLLET Date: Thu, 13 Jan 2022 21:24:28 +0100 Subject: [PATCH] gunzip: Port to LibMain --- Userland/Utilities/CMakeLists.txt | 2 +- Userland/Utilities/gunzip.cpp | 33 +++++++++++-------------------- 2 files changed, 12 insertions(+), 23 deletions(-) diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 37369db591..cd35adeb08 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -103,7 +103,7 @@ target_link_libraries(gml-format LibGUI LibMain) target_link_libraries(grep LibRegex LibMain) target_link_libraries(gron LibMain) target_link_libraries(groups LibMain) -target_link_libraries(gunzip LibCompress) +target_link_libraries(gunzip LibCompress LibMain) target_link_libraries(gzip LibCompress LibMain) target_link_libraries(id LibMain) target_link_libraries(ini LibMain) diff --git a/Userland/Utilities/gunzip.cpp b/Userland/Utilities/gunzip.cpp index b2743406b4..975b17bc26 100644 --- a/Userland/Utilities/gunzip.cpp +++ b/Userland/Utilities/gunzip.cpp @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include static bool decompress_file(Buffered& input_stream, Buffered& output_stream) @@ -23,7 +25,7 @@ static bool decompress_file(Buffered& input_stream, Buffe return !gzip_stream.handle_any_error(); } -int main(int argc, char** argv) +ErrorOr serenity_main(Main::Arguments args) { Vector filenames; bool keep_input_files { false }; @@ -33,7 +35,7 @@ int main(int argc, char** argv) 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(argc, argv); + args_parser.parse(args); if (write_to_stdout) keep_input_files = true; @@ -45,37 +47,24 @@ int main(int argc, char** argv) const auto input_filename = filename; const auto output_filename = filename.substring_view(0, filename.length() - 3); - auto input_stream_result = Core::InputFileStream::open_buffered(input_filename); - - if (input_stream_result.is_error()) { - warnln("Failed opening input file for reading: {}", input_stream_result.error()); - return 1; - } + auto input_stream_result = TRY(Core::InputFileStream::open_buffered(input_filename)); auto success = false; if (write_to_stdout) { auto stdout = Core::OutputFileStream::stdout_buffered(); - success = decompress_file(input_stream_result.value(), stdout); + success = decompress_file(input_stream_result, stdout); } else { - auto output_stream_result = Core::OutputFileStream::open_buffered(output_filename); - if (output_stream_result.is_error()) { - warnln("Failed opening output file for writing: {}", output_stream_result.error()); - return 1; - } - success = decompress_file(input_stream_result.value(), output_stream_result.value()); + auto output_stream_result = TRY(Core::OutputFileStream::open_buffered(output_filename)); + + success = decompress_file(input_stream_result, output_stream_result); } if (!success) { warnln("Failed gzip decompressing input file"); return 1; } - if (!keep_input_files) { - const auto retval = unlink(String { input_filename }.characters()); - if (retval != 0) { - warnln("Failed removing input file"); - return 1; - } - } + if (!keep_input_files) + TRY(Core::System::unlink(input_filename)); } return 0; }