diff options
author | June McEnroe <june@causal.agency> | 2021-01-27 22:35:39 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2021-01-27 22:39:03 -0500 |
commit | 809d6629c97bd9c4bdf6c799e74a261bb510b1fd (patch) | |
tree | 38e7a60244090ad01cb0b9cef7fc88f1220c159c /exman.in | |
parent | Update to man-pages-posix 2017-a (diff) | |
download | exman-809d6629c97bd9c4bdf6c799e74a261bb510b1fd.tar.gz exman-809d6629c97bd9c4bdf6c799e74a261bb510b1fd.zip |
Completely rewrite how manuals are fetched and installed
Also add section 6 manuals from NetBSD and OpenBSD!
Diffstat (limited to 'exman.in')
-rw-r--r-- | exman.in | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/exman.in b/exman.in new file mode 100644 index 0000000..7d4a9c8 --- /dev/null +++ b/exman.in @@ -0,0 +1,52 @@ +#!/bin/sh +set -eu + +die() { + echo "$@" >&2 + exit 1 +} + +system=${1:-} +[ -n "${system}" ] || die 'What system do you want?' +shift + +export MANPATH="%%EXMANDIR%%/${system}" +[ -d "${MANPATH}" ] || die "No manuals for ${system}" + +export MANSECT +for sect in "${MANPATH}"/man*/; do + sect=${sect%/} + sect=${sect##*/man} + MANSECT="${MANSECT:-}${MANSECT:+:}${sect}" +done + +# macOS man(1) refuses to search in directories such as "man3p", so do it +# manually here unless there are other flags passed. +hack() { + case "${1:-}" in + (-*) exec man "$@";; + ([0-9]*) MANSECT=$1; shift;; + esac + [ $# -gt 0 ] || die 'What manual page do you want?' + for page in "$@"; do + found=0 + IFS=: + for sect in $MANSECT; do + path="${MANPATH}/man${sect}/${page}" + for ext in ".${sect}" ".${sect}.gz"; do + [ -f "${path}${ext}" ] || continue + man "${path}${ext}" + found=1 + break + done + [ $found -eq 0 ] || break + done + [ $found -ne 0 ] || die "No manual entry for ${page}" + done +} + +if [ "$(uname)" = 'Darwin' ]; then + hack "$@" +else + exec man "$@" +fi |