1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 05:38:11 +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

@ -205,6 +205,7 @@ target_link_libraries(test_env LibMain)
target_link_libraries(timezone LibMain) target_link_libraries(timezone LibMain)
target_link_libraries(top LibMain) target_link_libraries(top LibMain)
target_link_libraries(touch LibMain) target_link_libraries(touch LibMain)
target_link_libraries(tr LibMain)
target_link_libraries(traceroute LibMain) target_link_libraries(traceroute LibMain)
target_link_libraries(tree LibMain) target_link_libraries(tree LibMain)
target_link_libraries(true LibMain) target_link_libraries(true LibMain)

View file

@ -8,6 +8,7 @@
#include <AK/Optional.h> #include <AK/Optional.h>
#include <AK/String.h> #include <AK/String.h>
#include <LibCore/ArgsParser.h> #include <LibCore/ArgsParser.h>
#include <LibMain/Main.h>
#include <ctype.h> #include <ctype.h>
#include <stdio.h> #include <stdio.h>
@ -88,7 +89,7 @@ static String build_set(StringView specification)
return out.to_string(); return out.to_string();
} }
int main(int argc, char** argv) ErrorOr<int> serenity_main(Main::Arguments arguments)
{ {
bool complement_flag = false; bool complement_flag = false;
bool delete_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_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(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.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; bool transform_flag = to_chars && !delete_flag;
if (!transform_flag && !delete_flag && !squeeze_flag) { if (!transform_flag && !delete_flag && !squeeze_flag) {
warnln("tr: Missing operand"); warnln("tr: Missing operand");
args_parser.print_usage(stderr, argv[0]); args_parser.print_usage(stderr, arguments.argv[0]);
return 1; return 1;
} }
if (delete_flag && squeeze_flag && !to_chars) { if (delete_flag && squeeze_flag && !to_chars) {
warnln("tr: Combined delete and squeeze operations need two sets of characters"); 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; return 1;
} }
if (delete_flag && !squeeze_flag && to_chars) { if (delete_flag && !squeeze_flag && to_chars) {
warnln("tr: Only one set of characters may be given when deleting without squeezing"); 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; return 1;
} }