diff --git a/Userland/Utilities/CMakeLists.txt b/Userland/Utilities/CMakeLists.txt index 348c0f7721..650f22e047 100644 --- a/Userland/Utilities/CMakeLists.txt +++ b/Userland/Utilities/CMakeLists.txt @@ -170,6 +170,7 @@ target_link_libraries(ps LibMain) target_link_libraries(purge LibMain) target_link_libraries(pwd LibMain) target_link_libraries(readelf LibMain) +target_link_libraries(readlink LibMain) target_link_libraries(realpath LibMain) target_link_libraries(reboot LibMain) target_link_libraries(rev LibMain) diff --git a/Userland/Utilities/readlink.cpp b/Userland/Utilities/readlink.cpp index 53c7a25d2d..f0c5168a9f 100644 --- a/Userland/Utilities/readlink.cpp +++ b/Userland/Utilities/readlink.cpp @@ -6,15 +6,12 @@ #include #include -#include -#include +#include +#include -int main(int argc, char** argv) +ErrorOr serenity_main(Main::Arguments arguments) { - if (pledge("stdio rpath", nullptr) < 0) { - perror("pledge"); - return 1; - } + TRY(Core::System::pledge("stdio rpath")); bool no_newline = false; Vector paths; @@ -22,16 +19,10 @@ int main(int argc, char** argv) Core::ArgsParser args_parser; args_parser.add_option(no_newline, "Do not append a newline", "no-newline", 'n'); args_parser.add_positional_argument(paths, "Symlink path", "path"); - args_parser.parse(argc, argv); + args_parser.parse(arguments); for (const char* path : paths) { - auto destination_or_error = Core::File::read_link(path); - if (destination_or_error.is_error()) { - perror(path); - return 1; - } - - auto destination = destination_or_error.release_value(); + auto destination = TRY(Core::File::read_link(path)); out("{}", destination); if (!no_newline) outln();