Manpages+markdown-checker: Permit only specific missing files

I can't write these manpages ad-hoc, and in most cases I don't want to
remove the link because it is justified. The hope is that with this
FIXME in place, there is more motivation to write these manpages for
someone who knows enough about them. Or at least we will introduce fewer
dead links in the future, making Help more useful.
This commit is contained in:
Ben Wiederhake 2021-10-06 22:55:12 +02:00 committed by Brian Gianforcaro
parent 3a9f289dc6
commit 8ff942b5a4
3 changed files with 52 additions and 3 deletions

View file

@ -0,0 +1,26 @@
## Name
ps - list currently running processes
## Synopsis
```**sh
$ ps [--version] [-e] [-f] [-q pid-list]
```
## Description
Print a list of currently running processes in the current TTY.
For each process, print its PID (process ID), to which TTY it belongs, and invoking commandline (CMD).
## Options
* `-e`: Consider all processes, not just those in the current TTY.
* `-f`: Also print for each process: UID (as resolved username), PPID (parent PID), and STATE (Runnable, Sleeping, Selecting, Reading, etc.)
* `-q pid-list`: Only consider the given PIDs, if they exist.
## Examples
```sh
$ ps -ef
```

View file

@ -39,6 +39,4 @@ $ tar -x -f archive.tar
## See also
* [`gunzip`(1)](gunzip.md)
* [`unzip`(1)](unzip.md)

View file

@ -22,6 +22,31 @@
#include <LibMarkdown/Document.h>
#include <LibMarkdown/Visitor.h>
static bool is_missing_file_acceptable(String const& filename)
{
const StringView acceptable_missing_files[] = {
// FIXME: Please write these manpages!
"/usr/share/man/man2/accept.md",
"/usr/share/man/man2/exec.md",
"/usr/share/man/man2/fcntl.md",
"/usr/share/man/man2/fork.md",
"/usr/share/man/man2/ioctl.md",
"/usr/share/man/man2/listen.md",
"/usr/share/man/man2/mmap.md",
"/usr/share/man/man2/mprotect.md",
"/usr/share/man/man2/open.md",
"/usr/share/man/man2/ptrace.md",
"/usr/share/man/man5/perfcore.md",
// This one is okay:
"/home/anon/js-tests/test-common.js",
};
for (auto const& suffix : acceptable_missing_files) {
if (filename.ends_with(suffix))
return true;
}
return false;
}
struct FileLink {
String file_path; // May be empty, but not null
String anchor; // May be null ("foo.md", "bar.png"), may be empty ("baz.md#")
@ -195,7 +220,7 @@ int main(int argc, char** argv)
} else {
pointee_file = LexicalPath::absolute_path(file_dir, file_link.file_path);
}
if (!Core::File::exists(pointee_file)) {
if (!Core::File::exists(pointee_file) && !is_missing_file_acceptable(pointee_file)) {
outln("File '{}' points to '{}' (label '{}'), but '{}' does not exist!",
file_item.key, file_link.file_path, file_link.label, pointee_file);
any_problems = true;