Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 Mar 2017 06:24:49 +0000 (UTC)
From:      Baptiste Daroussin <bapt@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r315054 - head/usr.bin/man
Message-ID:  <201703110624.v2B6OnAL081763@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: bapt
Date: Sat Mar 11 06:24:49 2017
New Revision: 315054
URL: https://svnweb.freebsd.org/changeset/base/315054

Log:
  Extend functionality MANPATH in man(1) to followup with apropos(1) from
  mandoc.
  
  If 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.
  
  Import the MANPATH description from mandoc into the man(1) man page
  
  Reported by:	kargl
  MFC after:	1 week

Modified:
  head/usr.bin/man/man.1
  head/usr.bin/man/man.sh

Modified: head/usr.bin/man/man.1
==============================================================================
--- head/usr.bin/man/man.1	Sat Mar 11 05:56:50 2017	(r315053)
+++ head/usr.bin/man/man.1	Sat Mar 11 06:24:49 2017	(r315054)
@@ -25,7 +25,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd January 28, 2017
+.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

Modified: head/usr.bin/man/man.sh
==============================================================================
--- head/usr.bin/man/man.sh	Sat Mar 11 05:56:50 2017	(r315053)
+++ head/usr.bin/man/man.sh	Sat Mar 11 06:24:49 2017	(r315054)
@@ -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#:}
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201703110624.v2B6OnAL081763>