diff --git a/Userland/Utilities/basename.cpp b/Userland/Utilities/basename.cpp index aacf2548ab..9932190c62 100644 --- a/Userland/Utilities/basename.cpp +++ b/Userland/Utilities/basename.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2018-2021, Andreas Kling * * SPDX-License-Identifier: BSD-2-Clause */ @@ -16,12 +16,18 @@ int main(int argc, char** argv) return 1; } - const char* path = nullptr; + StringView path; + StringView suffix; Core::ArgsParser args_parser; args_parser.add_positional_argument(path, "Path to get basename from", "path"); + args_parser.add_positional_argument(suffix, "Suffix to strip from name", "suffix", Core::ArgsParser::Required::No); args_parser.parse(argc, argv); - printf("%s\n", LexicalPath(path).basename().characters()); + auto basename = LexicalPath(path).basename(); + if (!suffix.is_null() && basename.length() != suffix.length() && basename.ends_with(suffix)) + outln("{}", basename.substring_view(0, basename.length() - suffix.length())); + else + outln("{}", basename); return 0; }