[ale] messed up man

Jacob Langseth jlangseth at esisys.com
Wed Oct 21 01:43:04 EDT 1998


> groff: couldn't exec troff: Not a directory
> 
> I have suse 5.3 which installs groff and troff in /usr/bin.  I've checked
> out
> my man path which is:

Does `file /usr/bin/[gt]roff` indicate anything strange?

> /usr/local/man:/usr/man:/usr/X11R6/man:/usr/openwin/man
> 
> and all the man directories are still there.  Any suggestions?  Thanks.

This will probably be of only limited use.  I had a system which
had a broken man, so I wound up implementing a small shell
equivalent which can be loaded as an alias to replace man.

Perhaps this can provide a workaround while you locate a
more permanent fix.

-- 
Jacob Langseth <jlangseth at esisys.com>
Enhanced Systems, Inc.

###
# system man replacement
# tested with bash
#
# USAGE:  source ./set_man.sh
#
# Alternate usage for non-bash shells:
#    echo '#!/bin/bash' > ~/man
#    sed '/^man ()$/d' ~musashi/man.sh | sed '/^[{}]$/d' >> ~/man
#    chmod 0755 ~/man
#    PATH=~/:$PATH	# setenv or whatever
#
# <jlangseth at esisys.com> 1997-10-25
####
# 98.01.15 JwL	added code to handle .so references

man () 
{ 
    if [ $# -lt 1 ] || [ $# -gt 2 ]; then
	echo USAGE:  man [section] topic 1>&2
	return 1
    fi

    unset section files
    let found=1
    if [ $# -eq 2 ]; then
	section=$1
	shift
    fi

    ifs_save=$IFS
    IFS=:

    for dir in $MANPATH; do
	IFS=$ifs_save
	if [ ! -d "$dir" ]; then
	    IFS=:
	    continue
	fi
	list=`find ${dir}/man${section:-?} -name $1.\* -print 2>/dev/null`

	# check for a .so reference
	if [ ! -z "$list" ]; then
	    for ManFile in $list; do
		ManRef=`if [ "${ManFile}" != "${ManFile%%.gz}" ]; then
			    gzip -dc $ManFile | head -1
			else
			    head -1 $ManFile
			fi`
		if [ "${ManRef%% *}" = ".so" ]; then
		    ManFile=${dir}/${ManRef##* }
		    if [ ! -s "$ManFile" ]; then
			ManFile=${ManFile}.gz
			if [ ! -s "$ManFile" ]; then
			    # complain about bogus .so ref?
			    ManFile=""
			fi
		    fi
		fi

		if [ ! -z "$ManFile" ]; then
		    if [ -z "$files" ]; then
			files=$ManFile
		    else
			files="$files $ManFile"
		    fi
		fi
	    done
	fi

	IFS=:
    done
    unset list dir ManFile ManRef

    IFS=$ifs_save
    unset ifs_save

    if [ -z "$files" ]; then
	if [ -z "$section" ]; then
	    echo $1 not found in \$MANPATH
	else
	    echo $1 not found in section $section of \$MANPATH
	    unset section
	fi
	return 1
    fi
    unset section

    (
    found=`echo $files | wc -w`
    if [ $found -gt 1 ]; then
	echo Found $found entries:
	echo
	echo $files | tr -s '[:space:]' | tr ' ' '\n'
#	echo ----------------------------
    fi
    unset found

    for file in $files; do
	echo
	echo -----------
	echo ${file}
	echo -----------
	if [ "${file}" != "${file%%.gz}" ]; then
	    gzip -dc $file
	else
	    cat $file
	fi
    done | nroff -mandoc -Tascii
    ) | ${PAGER:-less}

    unset file files

    return 0
}

#EOF#






More information about the Ale mailing list