diff options
author | June McEnroe <june@causal.agency> | 2020-05-04 13:02:56 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-05-04 13:02:56 -0400 |
commit | 6391d22de74c7a0454e838c9df46f95e562745ee (patch) | |
tree | a0d9e19b75def1f6038a8df18ffbc591b54f4209 | |
parent | Don't clear MANSECT (diff) | |
download | exman-6391d22de74c7a0454e838c9df46f95e562745ee.tar.gz exman-6391d22de74c7a0454e838c9df46f95e562745ee.zip |
Add hack for macOS to search extra man sections
-rw-r--r-- | exman.sh | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/exman.sh b/exman.sh index 5077c34..9b6777d 100644 --- a/exman.sh +++ b/exman.sh @@ -26,4 +26,33 @@ for sect in "${MANPATH}"/man*/; do MANSECT="${MANSECT:-}${MANSECT:+:}${sect}" done -exec man "$@" +# 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 |