1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 09:04:59 +00:00

tr: Port to LibMain

This commit is contained in:
Kenneth Myhra 2022-03-29 21:25:21 +02:00 committed by Brian Gianforcaro
parent 8bd7c5b3d5
commit e548b2cff2
2 changed files with 7 additions and 5 deletions

View file

@ -8,6 +8,7 @@
#include <AK/Optional.h>
#include <AK/String.h>
#include <LibCore/ArgsParser.h>
#include <LibMain/Main.h>
#include <ctype.h>
#include <stdio.h>
@ -88,7 +89,7 @@ static String build_set(StringView specification)
return out.to_string();
}
int main(int argc, char** argv)
ErrorOr<int> serenity_main(Main::Arguments arguments)
{
bool complement_flag = false;
bool delete_flag = false;
@ -102,25 +103,25 @@ int main(int argc, char** argv)
args_parser.add_option(squeeze_flag, "Omit repeated characters listed in the last given set from the output", "squeeze-repeats", 's');
args_parser.add_positional_argument(from_chars, "Set of characters to translate from", "from");
args_parser.add_positional_argument(to_chars, "Set of characters to translate to", "to", Core::ArgsParser::Required::No);
args_parser.parse(argc, argv);
args_parser.parse(arguments);
bool transform_flag = to_chars && !delete_flag;
if (!transform_flag && !delete_flag && !squeeze_flag) {
warnln("tr: Missing operand");
args_parser.print_usage(stderr, argv[0]);
args_parser.print_usage(stderr, arguments.argv[0]);
return 1;
}
if (delete_flag && squeeze_flag && !to_chars) {
warnln("tr: Combined delete and squeeze operations need two sets of characters");
args_parser.print_usage(stderr, argv[0]);
args_parser.print_usage(stderr, arguments.argv[0]);
return 1;
}
if (delete_flag && !squeeze_flag && to_chars) {
warnln("tr: Only one set of characters may be given when deleting without squeezing");
args_parser.print_usage(stderr, argv[0]);
args_parser.print_usage(stderr, arguments.argv[0]);
return 1;
}