From owner-svn-src-stable-11@freebsd.org Sun Mar 26 18:01:54 2017 Return-Path: Delivered-To: svn-src-stable-11@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id C70FED1E4FF; Sun, 26 Mar 2017 18:01:54 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 9EE9F1562; Sun, 26 Mar 2017 18:01:54 +0000 (UTC) (envelope-from bapt@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v2QI1r5C004932; Sun, 26 Mar 2017 18:01:53 GMT (envelope-from bapt@FreeBSD.org) Received: (from bapt@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v2QI1rY6004930; Sun, 26 Mar 2017 18:01:53 GMT (envelope-from bapt@FreeBSD.org) Message-Id: <201703261801.v2QI1rY6004930@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: bapt set sender to bapt@FreeBSD.org using -f From: Baptiste Daroussin Date: Sun, 26 Mar 2017 18:01:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r315993 - stable/11/usr.bin/man X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable-11@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for only the 11-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Mar 2017 18:01:54 -0000 Author: bapt Date: Sun Mar 26 18:01:53 2017 New Revision: 315993 URL: https://svnweb.freebsd.org/changeset/base/315993 Log: MFC r315053-r315054, r315056 r315053: Add share/man if it exists to the MANPATH localbase is not consistent with base for manpages: /usr/local/man vs /usr/share/man adding share/man allows to fix that inconsistency and would permit to remove tons of patches/modifications in the ports tree r315054: 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 r315056: Remove the warning when MANPATH is set in the environment The MANPATH environment variable behaviour is documented properly in the manpage and it now has extended to new feature that allows to make MANPATH env variable extending the default search path rather than overwriting it making the warning painful Reported by: kargl MFC after: 1 week Modified: stable/11/usr.bin/man/man.1 stable/11/usr.bin/man/man.sh Directory Properties: stable/11/ (props changed) Modified: stable/11/usr.bin/man/man.1 ============================================================================== --- stable/11/usr.bin/man/man.1 Sun Mar 26 17:59:51 2017 (r315992) +++ stable/11/usr.bin/man/man.1 Sun Mar 26 18:01:53 2017 (r315993) @@ -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 Modified: stable/11/usr.bin/man/man.sh ============================================================================== --- stable/11/usr.bin/man/man.sh Sun Mar 26 17:59:51 2017 (r315992) +++ stable/11/usr.bin/man/man.sh Sun Mar 26 18:01:53 2017 (r315993) @@ -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