git: e85a6f8dff96 - main - man: fix redirect for locales and file arguments
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 03 Feb 2024 01:36:18 UTC
The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=e85a6f8dff96d33e7139a67f5b02dafaace0974c commit e85a6f8dff96d33e7139a67f5b02dafaace0974c Author: Mohamed Akram <mohd.akram@outlook.com> AuthorDate: 2024-02-02 23:26:20 +0000 Commit: Warner Losh <imp@FreeBSD.org> CommitDate: 2024-02-03 01:34:59 +0000 man: fix redirect for locales and file arguments Use the locale-specific path for localized pages and the appropriate parent directory for file arguments when handling redirects. Signed-off-by: Mohamed Akram <mohd.akram@outlook.com> Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1019 --- usr.bin/man/man.sh | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/usr.bin/man/man.sh b/usr.bin/man/man.sh index 4be38083462c..fd51648757a9 100755 --- a/usr.bin/man/man.sh +++ b/usr.bin/man/man.sh @@ -297,7 +297,7 @@ manpath_warnings() { fi } -# Usage: man_check_for_so page path +# Usage: man_check_for_so path # Returns: True if able to resolve the file, false if it ended in tears. # Detects the presence of the .so directive and causes the file to be # redirected to another source file. @@ -317,7 +317,7 @@ man_check_for_so() { .so*) trim "${line#.so}" decho "$manpage includes $tstr" # Glob and check for the file. - if ! check_man "$path/$tstr" ""; then + if ! check_man "$1/$tstr" ""; then decho " Unable to find $tstr" return 1 fi @@ -501,7 +501,12 @@ man_find_and_display() { unset use_cat manpage="$1" setup_cattool "$manpage" - if man_check_for_so "$manpage" "$(dirname \"$manpage"")"; then + p=$(cd "$(dirname "$manpage")" && pwd) + case "$(basename "$p")" in + man*|cat*) p=$p/.. ;; + *) p=$p/../.. ;; + esac + if man_check_for_so "$p"; then found_page=yes man_display_page fi @@ -520,7 +525,7 @@ man_find_and_display() { # Check if there is a MACHINE specific manpath. if find_file $p $sect $MACHINE "$1"; then - if man_check_for_so "$manpage" $p; then + if man_check_for_so $p; then found_page=yes man_display_page if [ -n "$aflag" ]; then @@ -534,7 +539,7 @@ man_find_and_display() { # Check if there is a MACHINE_ARCH # specific manpath. if find_file $p $sect $MACHINE_ARCH "$1"; then - if man_check_for_so "$manpage" $p; then + if man_check_for_so $p; then found_page=yes man_display_page if [ -n "$aflag" ]; then @@ -547,7 +552,7 @@ man_find_and_display() { # Check plain old manpath. if find_file $p $sect '' "$1"; then - if man_check_for_so "$manpage" $p; then + if man_check_for_so $p; then found_page=yes man_display_page if [ -n "$aflag" ]; then