diff options
Diffstat (limited to 'usr.bin/man')
-rw-r--r-- | usr.bin/man/man.1 | 25 | ||||
-rwxr-xr-x | usr.bin/man/man.sh | 31 |
2 files changed, 43 insertions, 13 deletions
diff --git a/usr.bin/man/man.1 b/usr.bin/man/man.1 index 5647b6c..6705677 100644 --- a/usr.bin/man/man.1 +++ b/usr.bin/man/man.1 @@ -25,7 +25,7 @@ .\" .\" $FreeBSD$ .\" -.Dd September 26, 2014 +.Dd March 11, 2017 .Dt MAN 1 .Os .Sh NAME @@ -295,13 +295,22 @@ Corresponds to the .Fl m option. .It Ev MANPATH -Used to find the location of the manual files. -See -.Xr manpath 1 -for additional information. -Corresponds to the -.Fl M -option. +The standard search path used by +.Xr man 1 +may be changed by specifying a path in the +.Ev MANPATH +environment variable. +Invalid paths, or paths without manual databases, are ignored. +Overridden by +.Fl M . +If +.Ev MANPATH +begins with a colon, it is appended to the default list; +if it ends with a colon, it is prepended to the default list; +or if it contains two adjacent colons, +the standard search path is inserted between the colons. +If none of these conditions are met, it overrides the +standard search path. .It Ev MANROFFSEQ Used to determine the preprocessors for the manual source before running .Xr nroff 1 diff --git a/usr.bin/man/man.sh b/usr.bin/man/man.sh index 094ea11..ae928a1 100755 --- a/usr.bin/man/man.sh +++ b/usr.bin/man/man.sh @@ -68,7 +68,23 @@ build_manpath() { # If the user has set a manpath, who are we to argue. if [ -n "$MANPATH" ]; then - return + case "$MANPATH" in + *:) PREPEND_MANPATH=${MANPATH} ;; + :*) APPEND_MANPATH=${MANPATH} ;; + *::*) + PREPEND_MANPATH=${MANPATH%%::*} + APPEND_MANPATH=${MANPATH#*::} + ;; + *) return ;; + esac + fi + + if [ -n "$PREPEND_MANPATH" ]; then + IFS=: + for path in $PREPEND_MANPATH; do + add_to_manpath "$path" + done + unset IFS fi search_path @@ -82,6 +98,13 @@ build_manpath() { parse_configs + if [ -n "$APPEND_MANPATH" ]; then + IFS=: + for path in $APPEND_MANPATH; do + add_to_manpath "$path" + done + unset IFS + fi # Trim leading colon MANPATH=${manpath#:} @@ -238,10 +261,6 @@ manpath_usage() { # Usage: manpath_warnings # Display some warnings to stderr. manpath_warnings() { - if [ -z "$Lflag" -a -n "$MANPATH" ]; then - echo "(Warning: MANPATH environment variable set)" >&2 - fi - if [ -n "$Lflag" -a -n "$MANLOCALES" ]; then echo "(Warning: MANLOCALES environment variable set)" >&2 fi @@ -771,6 +790,8 @@ search_path() { case "$path" in */bin) p="${path%/bin}/man" add_to_manpath "$p" + p="${path%/bin}/share/man" + add_to_manpath "$p" ;; *) ;; esac |