diff --git a/Base/usr/share/man/man1/man.md b/Base/usr/share/man/man1/man.md index fba1436526..438cd6e2df 100644 --- a/Base/usr/share/man/man1/man.md +++ b/Base/usr/share/man/man1/man.md @@ -12,12 +12,12 @@ $ man section page ## Description `man` finds, loads and displays the so-called manual pages, -or man pages for short, from the Serenity manual. You're reading +or man pages for short, from the SerenityOS manual. You're reading the manual page for `man` program itself right now. ## Sections -The Serenity manual is split into the following *sections*, or *chapters*: +The SerenityOS manual is split into the following *sections*, or *chapters*: 1. Command-line programs 2. System calls diff --git a/Userland/man.cpp b/Userland/man.cpp index 1c31ddce5b..055961bd2e 100644 --- a/Userland/man.cpp +++ b/Userland/man.cpp @@ -26,6 +26,7 @@ #include #include +#include #include #include #include @@ -45,26 +46,20 @@ int main(int argc, char* argv[]) unveil(nullptr, nullptr); - String name; - String section; + const char* section = nullptr; + const char* name = nullptr; - if (argc < 2 || argc > 3) { - fprintf(stderr, "Usage:\t%s \n\t%s
\n", argv[0], argv[0]); - exit(1); - } + Core::ArgsParser args_parser; + args_parser.add_positional_argument(section, "Section of the man page", "section", Core::ArgsParser::Required::No); + args_parser.add_positional_argument(name, "Name of the man page", "name"); - if (argc == 2) { - name = argv[1]; - } else { - section = argv[1]; - name = argv[2]; - } + args_parser.parse(argc, argv); - auto make_path = [&](String s) { - return String::format("/usr/share/man/man%s/%s.md", s.characters(), name.characters()); + auto make_path = [name](const char* section) { + return String::format("/usr/share/man/man%s/%s.md", section, name); }; - if (section.is_null()) { - String sections[] = { + if (!section) { + const char* sections[] = { "1", "2", "3", @@ -74,15 +69,15 @@ int main(int argc, char* argv[]) "7", "8" }; - for (auto& s : sections) { + for (auto s : sections) { String path = make_path(s); if (access(path.characters(), R_OK) == 0) { section = s; break; } } - if (section.is_null()) { - fprintf(stderr, "No man page for %s\n", name.characters()); + if (!section) { + fprintf(stderr, "No man page for %s\n", name); exit(1); } } @@ -104,7 +99,7 @@ int main(int argc, char* argv[]) auto buffer = file->read_all(); String source { (const char*)buffer.data(), (size_t)buffer.size() }; - printf("%s(%s)\t\tSerenity manual\n", name.characters(), section.characters()); + printf("%s(%s)\t\tSerenityOS manual\n", name, section); MDDocument document; bool success = document.parse(source);