diff --git a/Base/home/anon/.config/LaunchServer.ini b/Base/home/anon/.config/LaunchServer.ini index fb93161292..64fb64f7e9 100644 --- a/Base/home/anon/.config/LaunchServer.ini +++ b/Base/home/anon/.config/LaunchServer.ini @@ -30,3 +30,4 @@ directory=/bin/FileManager gemini=/bin/Browser http=/bin/Browser https=/bin/Browser +help=/bin/Help diff --git a/Userland/Applications/Help/MainWidget.cpp b/Userland/Applications/Help/MainWidget.cpp index 1b93b5d982..85581216dc 100644 --- a/Userland/Applications/Help/MainWidget.cpp +++ b/Userland/Applications/Help/MainWidget.cpp @@ -171,7 +171,7 @@ MainWidget::MainWidget() }; } -void MainWidget::set_start_page(String const& start_page, int section) +void MainWidget::set_start_page(StringView start_page, u32 section) { bool set_start_page = false; if (!start_page.is_null()) { diff --git a/Userland/Applications/Help/MainWidget.h b/Userland/Applications/Help/MainWidget.h index 73573313ce..eaf9122495 100644 --- a/Userland/Applications/Help/MainWidget.h +++ b/Userland/Applications/Help/MainWidget.h @@ -20,7 +20,7 @@ public: virtual ~MainWidget() override = default; ErrorOr initialize_fallibles(GUI::Window&); - void set_start_page(String const& page, int section); + void set_start_page(StringView page, u32 section); private: MainWidget(); diff --git a/Userland/Applications/Help/main.cpp b/Userland/Applications/Help/main.cpp index 542c67338d..4a2e781b0e 100644 --- a/Userland/Applications/Help/main.cpp +++ b/Userland/Applications/Help/main.cpp @@ -7,6 +7,7 @@ */ #include "MainWidget.h" +#include #include #include #include @@ -16,6 +17,15 @@ using namespace Help; +static String parse_input(char const* input) +{ + AK::URL url(input); + if (url.is_valid()) + return url.basename(); + + return input; +} + ErrorOr serenity_main(Main::Arguments arguments) { TRY(Core::System::pledge("stdio recvfd sendfd rpath unix")); @@ -27,8 +37,8 @@ ErrorOr serenity_main(Main::Arguments arguments) TRY(Core::System::unveil("/tmp/portal/webcontent", "rw")); TRY(Core::System::unveil(nullptr, nullptr)); - char const* start_page = nullptr; - unsigned section = 0; + String start_page; + u32 section = 0; Core::ArgsParser args_parser; // FIXME: These custom Args are a hack. What we want to do is have an optional int arg, then an optional string. @@ -47,7 +57,7 @@ ErrorOr serenity_main(Main::Arguments arguments) } // Otherwise, use it as the start_page - start_page = input; + start_page = parse_input(input); return true; } }); args_parser.add_positional_argument(Core::ArgsParser::Arg { @@ -57,9 +67,9 @@ ErrorOr serenity_main(Main::Arguments arguments) .max_values = 1, .accept_value = [&](char const* input) { // If start_page was already set by our section arg, then it can't be set again - if (start_page) + if (start_page.is_empty()) return false; - start_page = input; + start_page = parse_input(input); return true; } }); args_parser.parse(arguments);