From 6710622bf79037b44c1d41040663f75dae2107f3 Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Fri, 21 Jul 2023 21:47:27 +0100 Subject: [PATCH] file: Add `-b` option to omit file name from output --- Base/usr/share/man/man1/file.md | 1 + Userland/Utilities/file.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Base/usr/share/man/man1/file.md b/Base/usr/share/man/man1/file.md index 53f1e3d354..db41f5cc0c 100644 --- a/Base/usr/share/man/man1/file.md +++ b/Base/usr/share/man/man1/file.md @@ -17,6 +17,7 @@ First, an attempt is made to identify a given file based on predetermined binary ## Options * `--help`: Display this message +* `-b`, `--brief`: Do not prepend file names to output lines * `-I`, `--mime-type`: Only show mime type. ## Arguments diff --git a/Userland/Utilities/file.cpp b/Userland/Utilities/file.cpp index 9af3ad9daa..dfc1c3b90d 100644 --- a/Userland/Utilities/file.cpp +++ b/Userland/Utilities/file.cpp @@ -197,10 +197,12 @@ ErrorOr serenity_main(Main::Arguments arguments) Vector paths; bool flag_mime_only = false; + bool flag_brief_mode = false; Core::ArgsParser args_parser; args_parser.set_general_help("Determine type of files"); args_parser.add_option(flag_mime_only, "Only print mime type", "mime-type", 'I'); + args_parser.add_option(flag_brief_mode, "Do not prepend file names to output lines", "brief", 'b'); args_parser.add_positional_argument(paths, "Files to identify", "files", Core::ArgsParser::Required::Yes); args_parser.parse(arguments); @@ -217,18 +219,21 @@ ErrorOr serenity_main(Main::Arguments arguments) struct stat file_stat = TRY(Core::System::lstat(path)); + if (!flag_brief_mode) + out("{}: ", path); + auto file_size_in_bytes = file_stat.st_size; if (S_ISDIR(file_stat.st_mode)) { - outln("{}: directory", path); + outln("directory"); } else if (!file_size_in_bytes) { - outln("{}: empty", path); + outln("empty"); } else { auto file_name_guess = Core::guess_mime_type_based_on_filename(path); auto mime_type = Core::guess_mime_type_based_on_sniffed_bytes(*file).value_or(file_name_guess); auto human_readable_description = TRY(get_description_from_mime_type(mime_type, path)); if (!human_readable_description.has_value()) human_readable_description = TRY(String::from_utf8(mime_type)); - outln("{}: {}", path, flag_mime_only ? mime_type : *human_readable_description); + outln("{}", flag_mime_only ? mime_type : *human_readable_description); } }