17c2fbfb3SApril Chin#!/usr/bin/ksh93 27c2fbfb3SApril Chin 37c2fbfb3SApril Chin# 47c2fbfb3SApril Chin# CDDL HEADER START 57c2fbfb3SApril Chin# 67c2fbfb3SApril Chin# The contents of this file are subject to the terms of the 77c2fbfb3SApril Chin# Common Development and Distribution License (the "License"). 87c2fbfb3SApril Chin# You may not use this file except in compliance with the License. 97c2fbfb3SApril Chin# 107c2fbfb3SApril Chin# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 117c2fbfb3SApril Chin# or http://www.opensolaris.org/os/licensing. 127c2fbfb3SApril Chin# See the License for the specific language governing permissions 137c2fbfb3SApril Chin# and limitations under the License. 147c2fbfb3SApril Chin# 157c2fbfb3SApril Chin# When distributing Covered Code, include this CDDL HEADER in each 167c2fbfb3SApril Chin# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 177c2fbfb3SApril Chin# If applicable, add the following below this CDDL HEADER, with the 187c2fbfb3SApril Chin# fields enclosed by brackets "[]" replaced with your own identifying 197c2fbfb3SApril Chin# information: Portions Copyright [yyyy] [name of copyright owner] 207c2fbfb3SApril Chin# 217c2fbfb3SApril Chin# CDDL HEADER END 227c2fbfb3SApril Chin# 237c2fbfb3SApril Chin 247c2fbfb3SApril Chin# 25*3e14f97fSRoger A. Faulkner# Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. 267c2fbfb3SApril Chin# 277c2fbfb3SApril Chin 287c2fbfb3SApril Chin# Solaris needs /usr/xpg6/bin:/usr/xpg4/bin because the tools in /usr/bin are not POSIX-conformant 297c2fbfb3SApril Chinexport PATH=/usr/xpg6/bin:/usr/xpg4/bin:/bin:/usr/bin 307c2fbfb3SApril Chin 317c2fbfb3SApril Chin# Make sure all math stuff runs in the "C" locale to avoid problems 327c2fbfb3SApril Chin# with alternative # radix point representations (e.g. ',' instead of 337c2fbfb3SApril Chin# '.' in de_DE.*-locales). This needs to be set _before_ any 347c2fbfb3SApril Chin# floating-point constants are defined in this script). 357c2fbfb3SApril Chinif [[ "${LC_ALL}" != "" ]] ; then 367c2fbfb3SApril Chin export \ 377c2fbfb3SApril Chin LC_MONETARY="${LC_ALL}" \ 387c2fbfb3SApril Chin LC_MESSAGES="${LC_ALL}" \ 397c2fbfb3SApril Chin LC_COLLATE="${LC_ALL}" \ 407c2fbfb3SApril Chin LC_CTYPE="${LC_ALL}" 417c2fbfb3SApril Chin unset LC_ALL 427c2fbfb3SApril Chinfi 437c2fbfb3SApril Chinexport LC_NUMERIC=C 447c2fbfb3SApril Chin 457c2fbfb3SApril Chinfunction fatal_error 467c2fbfb3SApril Chin{ 477c2fbfb3SApril Chin print -u2 "${progname}: $*" 487c2fbfb3SApril Chin exit 1 497c2fbfb3SApril Chin} 507c2fbfb3SApril Chin 517c2fbfb3SApril Chinfunction debug_print 527c2fbfb3SApril Chin{ 537c2fbfb3SApril Chin # don't use "--" here to allow "-f" for formatting 547c2fbfb3SApril Chin# print -u2 "$@" 557c2fbfb3SApril Chin return 0 567c2fbfb3SApril Chin} 577c2fbfb3SApril Chin 587c2fbfb3SApril Chin# Build a list of compound variables calculated from MANPATH and 597c2fbfb3SApril Chin# locale which contain... 607c2fbfb3SApril Chin# "manpath_element" - the MANPATH element this entry belongs to 617c2fbfb3SApril Chin# "dir" - physical directory of "manpath_element" 627c2fbfb3SApril Chin# "sect" - section (if "manpath_element" is something like /usr/share/man,1b) 637c2fbfb3SApril Chin# ... and put the result in the array named by argv[1] 647c2fbfb3SApril Chinfunction enumerate_mandirs 657c2fbfb3SApril Chin{ 667c2fbfb3SApril Chin nameref md=$1 677c2fbfb3SApril Chin typeset manpath_element dir sect manlang 687c2fbfb3SApril Chin integer i=0 697c2fbfb3SApril Chin 707c2fbfb3SApril Chin if [[ "${LC_MESSAGES}" != "" ]] ; then 717c2fbfb3SApril Chin manlang="${LC_MESSAGES}" 727c2fbfb3SApril Chin else 737c2fbfb3SApril Chin manlang="${LANG}" 747c2fbfb3SApril Chin fi 757c2fbfb3SApril Chin 767c2fbfb3SApril Chin print -r -- "${MANPATH//:/$'\n'}" | while read manpath_element ; do 777c2fbfb3SApril Chin # strip section from manpath elements like "/usr/share/man,1b" 787c2fbfb3SApril Chin dir="${manpath_element/~(E)(.*),(.*)/\1}" 797c2fbfb3SApril Chin sect="${manpath_element/~(E)(.*),(.*)/\2}" 807c2fbfb3SApril Chin [[ "${sect}" == "${dir}" ]] && sect="" 817c2fbfb3SApril Chin 827c2fbfb3SApril Chin if [[ "${manlang}" != "" && -d "${dir}/${manlang}" ]] ; then 837c2fbfb3SApril Chin md+=( 847c2fbfb3SApril Chin manpath_element="${manpath_element}" 857c2fbfb3SApril Chin dir="${dir}/${manlang}" 867c2fbfb3SApril Chin sect="${sect}" 877c2fbfb3SApril Chin ) 887c2fbfb3SApril Chin fi 897c2fbfb3SApril Chin if [[ -d "${dir}" ]] ; then 907c2fbfb3SApril Chin md+=( 917c2fbfb3SApril Chin manpath_element="${manpath_element}" 927c2fbfb3SApril Chin dir="${dir}" 937c2fbfb3SApril Chin sect="${sect}" 947c2fbfb3SApril Chin ) 957c2fbfb3SApril Chin fi 967c2fbfb3SApril Chin done 977c2fbfb3SApril Chin 987c2fbfb3SApril Chin return 0 997c2fbfb3SApril Chin} 1007c2fbfb3SApril Chin 1017c2fbfb3SApril Chinfunction enumerate_mansects 1027c2fbfb3SApril Chin{ 1037c2fbfb3SApril Chin nameref ms=$1 1047c2fbfb3SApril Chin nameref mandir_node=$2 1057c2fbfb3SApril Chin typeset mancf="${mandir_node.dir}/man.cf" 1067c2fbfb3SApril Chin typeset x s l 1077c2fbfb3SApril Chin 1087c2fbfb3SApril Chin if [[ "${mandir_node.sect}" != "" ]] ; then 1097c2fbfb3SApril Chin x="${mandir_node.sect}" 1107c2fbfb3SApril Chin elif [[ "${MANSECTS}" != "" ]] ; then 1117c2fbfb3SApril Chin x="${MANSECTS//,/$'\n'}" 1127c2fbfb3SApril Chin elif [[ -f "${mancf}" && -r "${mancf}" ]] ; then 1137c2fbfb3SApril Chin x="$(egrep -v '^#|^[[:space:]]*$' <"${mancf}" | egrep '^MANSECTS=')" 1147c2fbfb3SApril Chin x="${x/MANSECTS=}/" 1157c2fbfb3SApril Chin x="${x//,/$'\n'}" 1167c2fbfb3SApril Chin else 1177c2fbfb3SApril Chin x="$(cd "${mandir_node.dir}" ; \ 1187c2fbfb3SApril Chin ls -1d ~(El)(sman|man).*/ | \ 1197c2fbfb3SApril Chin while read s ; do \ 1207c2fbfb3SApril Chin s="${s/~(El)(sman|man)/}" ; \ 1217c2fbfb3SApril Chin s="${s/~(Er)\//}" ; \ 1227c2fbfb3SApril Chin print -r -- "$s" ; \ 1237c2fbfb3SApril Chin done)" 1247c2fbfb3SApril Chin fi 1257c2fbfb3SApril Chin 1267c2fbfb3SApril Chin while read l ; do 1277c2fbfb3SApril Chin [[ "${l}" != ~(Elr)[[:blank:]]* ]] && ms+=( "${l}" ) 1287c2fbfb3SApril Chin# print -- "sect=$l" 1297c2fbfb3SApril Chin done <<<"${x}" 1307c2fbfb3SApril Chin 1317c2fbfb3SApril Chin# printf "enumerate_mansects: found %d entries.\n" ${#ms[@]} 1327c2fbfb3SApril Chin 1337c2fbfb3SApril Chin return 0 1347c2fbfb3SApril Chin} 1357c2fbfb3SApril Chin 1367c2fbfb3SApril Chin# wrapper around more/less 1377c2fbfb3SApril Chinfunction browse_manpage 1387c2fbfb3SApril Chin{ 1397c2fbfb3SApril Chin typeset tmpdirname 1407c2fbfb3SApril Chin typeset doc_filename="$1" 1417c2fbfb3SApril Chin typeset doc_title="$2" 1427c2fbfb3SApril Chin 1437c2fbfb3SApril Chin # squish characters in filename which are not allowed in a filesystem 1447c2fbfb3SApril Chin # (currently '/') 1457c2fbfb3SApril Chin doc_title="${doc_title//\//}" 1467c2fbfb3SApril Chin 1477c2fbfb3SApril Chin # check if we have "less" installed, if not fall back to /usr/xpg4/bin/more 1487c2fbfb3SApril Chin if which less >/dev/null 2>&1 ; then 1497c2fbfb3SApril Chin # use "cat" here to avoid that "less" may try funny things 1507c2fbfb3SApril Chin cat <"${doc_filename}" | less -I -M $"--prompt=MManual\ page\ ${doc_title}\ ?ltline\ %lt?L/%L.:" 1517c2fbfb3SApril Chin else 152*3e14f97fSRoger A. Faulkner tmpdirname="$(mktemp -t -d "shman_${PPID}_$$_XXXXXX")" 1537c2fbfb3SApril Chin 1547c2fbfb3SApril Chin mkdir -p "${tmpdirname}" || { print -u2 -f $"Couldn't create tmp. dir %s\n" "${tmpdirname}" ; return 1 ; } 1557c2fbfb3SApril Chin 1567c2fbfb3SApril Chin ( 1577c2fbfb3SApril Chin cd "${tmpdirname}" 1587c2fbfb3SApril Chin 1597c2fbfb3SApril Chin # note: we need to support /dev/stdin 1607c2fbfb3SApril Chin cat <"${doc_filename}" >"./${doc_title}" 1617c2fbfb3SApril Chin 1627c2fbfb3SApril Chin /usr/xpg4/bin/more "${doc_title}" 1637c2fbfb3SApril Chin 1647c2fbfb3SApril Chin rm -f "${doc_title}" 1657c2fbfb3SApril Chin ) 1667c2fbfb3SApril Chin 1677c2fbfb3SApril Chin rmdir "${tmpdirname}" 1687c2fbfb3SApril Chin fi 1697c2fbfb3SApril Chin 1707c2fbfb3SApril Chin return 0 1717c2fbfb3SApril Chin} 1727c2fbfb3SApril Chin 1737c2fbfb3SApril Chin# /usr/bin/man <keyword> 1747c2fbfb3SApril Chinfunction show_manpage 1757c2fbfb3SApril Chin{ 17634f9b3eeSRoland Mainz compound -a mandirs 1777c2fbfb3SApril Chin integer i 1787c2fbfb3SApril Chin integer j 1797c2fbfb3SApril Chin 1807c2fbfb3SApril Chin enumerate_mandirs mandirs 1817c2fbfb3SApril Chin# debug_print -- "${mandirs[@]}" 1827c2fbfb3SApril Chin 1837c2fbfb3SApril Chin integer num_mandirs=${#mandirs[@]} 1847c2fbfb3SApril Chin 1857c2fbfb3SApril Chin for ((i=0 ; i < num_mandirs ; i++ )) ; do 1867c2fbfb3SApril Chin typeset mandir="${mandirs[i].dir}" 1877c2fbfb3SApril Chin 1887c2fbfb3SApril Chin typeset -a mansects 1897c2fbfb3SApril Chin enumerate_mansects mansects "mandirs[$i]" 1907c2fbfb3SApril Chin 1917c2fbfb3SApril Chin integer num_mansects="${#mansects[@]}" 1927c2fbfb3SApril Chin# debug_print -- "mansects=${mansects[@]}" 1937c2fbfb3SApril Chin 1947c2fbfb3SApril Chin for ((j=0 ; j < num_mansects ; j++ )) ; do 1957c2fbfb3SApril Chin typeset mansect="${mansects[j]}" 1967c2fbfb3SApril Chin 1977c2fbfb3SApril Chin # try 1: SGML manpage 1987c2fbfb3SApril Chin typeset match="${mandir}/sman${mansect}/${manname}.${mansect}" 1997c2fbfb3SApril Chin if [[ -r "${match}" ]] ; then 2007c2fbfb3SApril Chin typeset note nlink 2017c2fbfb3SApril Chin 2027c2fbfb3SApril Chin # follow SGML links if needed (needs rework, including protection against link loops) 2037c2fbfb3SApril Chin while true ; do 2047c2fbfb3SApril Chin debug_print -f "match: %s\n" "${match}" 2057c2fbfb3SApril Chin 2067c2fbfb3SApril Chin tmp="$(cd "${mandir}" ; LC_MESSAGES=C /usr/lib/sgml/sgml2roff "${match}")" 2077c2fbfb3SApril Chin read note nlink <<<"${tmp}" 2087c2fbfb3SApril Chin 2097c2fbfb3SApril Chin if [[ "${note}" == ".so" ]] ; then 2107c2fbfb3SApril Chin match="${nlink}" 2117c2fbfb3SApril Chin else 2127c2fbfb3SApril Chin break 2137c2fbfb3SApril Chin fi 2147c2fbfb3SApril Chin done 2157c2fbfb3SApril Chin 2167c2fbfb3SApril Chin tbl <<<"${tmp}" | eqn | nroff -u0 -Tlp -man - | col -x | browse_manpage /dev/stdin "${manname}(${mansect})" 2177c2fbfb3SApril Chin return 0 2187c2fbfb3SApril Chin fi 2197c2fbfb3SApril Chin 2207c2fbfb3SApril Chin # try 2: troff manpage 2217c2fbfb3SApril Chin match="${mandir}/man${mansect}/${manname}.${mansect}" 2227c2fbfb3SApril Chin if [[ -r "${match}" ]] ; then 2237c2fbfb3SApril Chin debug_print -f "match: %s\n" "${match}" 2247c2fbfb3SApril Chin tbl <"${match}" | eqn | nroff -u0 -Tlp -man - | col -x | browse_manpage /dev/stdin "${manname}(${mansect})" 2257c2fbfb3SApril Chin return 0 2267c2fbfb3SApril Chin fi 2277c2fbfb3SApril Chin done 2287c2fbfb3SApril Chin unset mansects num_mansects 2297c2fbfb3SApril Chin done 2307c2fbfb3SApril Chin 2317c2fbfb3SApril Chin printf $"No manual entry for %s.\n" "${manname}" 2327c2fbfb3SApril Chin return 0 2337c2fbfb3SApril Chin} 2347c2fbfb3SApril Chin 2357c2fbfb3SApril Chin# /usr/bin/man -l <keyword> 2367c2fbfb3SApril Chinfunction list_manpages 2377c2fbfb3SApril Chin{ 23834f9b3eeSRoland Mainz compound -a mandirs 2397c2fbfb3SApril Chin 2407c2fbfb3SApril Chin enumerate_mandirs mandirs 2417c2fbfb3SApril Chin #debug_print -- "${mandirs[@]}" 2427c2fbfb3SApril Chin 2437c2fbfb3SApril Chin integer num_mandirs=${#mandirs[@]} 2447c2fbfb3SApril Chin 2457c2fbfb3SApril Chin for ((i=0 ; i < num_mandirs ; i++ )) ; do 2467c2fbfb3SApril Chin typeset mandir="${mandirs[i].dir}" 2477c2fbfb3SApril Chin 2487c2fbfb3SApril Chin typeset -a mansects 2497c2fbfb3SApril Chin enumerate_mansects mansects "mandirs[$i]" 2507c2fbfb3SApril Chin 2517c2fbfb3SApril Chin integer num_mansects="${#mansects[@]}" 2527c2fbfb3SApril Chin# debug_print -- "mansects=${mansects[@]}" 2537c2fbfb3SApril Chin 2547c2fbfb3SApril Chin for ((j=0 ; j < num_mansects ; j++ )) ; do 2557c2fbfb3SApril Chin mansect="${mansects[j]}" 2567c2fbfb3SApril Chin 2577c2fbfb3SApril Chin # try 1: SGML manpage 2587c2fbfb3SApril Chin match="${mandir}/sman${mansect}/${manname}.${mansect}" 2597c2fbfb3SApril Chin if [[ -r "${match}" ]] ; then 2607c2fbfb3SApril Chin printf "%s (%s)\t-M %s\n" "${manname}" "${mansect}" "${mandir}" 2617c2fbfb3SApril Chin continue 2627c2fbfb3SApril Chin fi 2637c2fbfb3SApril Chin 2647c2fbfb3SApril Chin # try 2: troff manpage 2657c2fbfb3SApril Chin match="${mandir}/man${mansect}/${manname}.${mansect}" 2667c2fbfb3SApril Chin if [[ -r "${match}" ]] ; then 2677c2fbfb3SApril Chin printf "%s (%s)\t-M %s\n" "${manname}" "${mansect}" "${mandir}" 2687c2fbfb3SApril Chin continue 2697c2fbfb3SApril Chin fi 2707c2fbfb3SApril Chin done 2717c2fbfb3SApril Chin unset mansects num_mansects 2727c2fbfb3SApril Chin done 2737c2fbfb3SApril Chin 2747c2fbfb3SApril Chin return 0 2757c2fbfb3SApril Chin} 2767c2fbfb3SApril Chin 2777c2fbfb3SApril Chin# /usr/bin/appropos 2787c2fbfb3SApril Chinfunction list_keywords 2797c2fbfb3SApril Chin{ 2807c2fbfb3SApril Chin typeset -a mandirs 2817c2fbfb3SApril Chin typeset name namesec title 2827c2fbfb3SApril Chin 2837c2fbfb3SApril Chin enumerate_mandirs mandirs 2847c2fbfb3SApril Chin #debug_print -- "${mandirs[@]}" 2857c2fbfb3SApril Chin 2867c2fbfb3SApril Chin integer num_mandirs=${#mandirs[@]} 2877c2fbfb3SApril Chin 2887c2fbfb3SApril Chin for ((i=0 ; i < num_mandirs ; i++ )) ; do 2897c2fbfb3SApril Chin typeset mandir="${mandirs[i].dir}" 2907c2fbfb3SApril Chin typeset windexfile="${mandir}/windex" 2917c2fbfb3SApril Chin 2927c2fbfb3SApril Chin if [[ ! -r "${windexfile}" ]] ; then 2937c2fbfb3SApril Chin print -u2 -f $"%s: Can't open %s.\n" "${progname}" "${windexfile}" 2947c2fbfb3SApril Chin continue 2957c2fbfb3SApril Chin fi 2967c2fbfb3SApril Chin 2977c2fbfb3SApril Chin while IFS=$'\t' read name namesec title ; do 2987c2fbfb3SApril Chin if [[ "${name}${namesec}${title}" == ~(Fi)${manname} ]] ; then 2997c2fbfb3SApril Chin printf "%s\t%s\t%s\n" "${name}" "${namesec}" "${title}" 3007c2fbfb3SApril Chin fi 3017c2fbfb3SApril Chin done <"${windexfile}" 3027c2fbfb3SApril Chin done 3037c2fbfb3SApril Chin 3047c2fbfb3SApril Chin return 0 3057c2fbfb3SApril Chin} 3067c2fbfb3SApril Chin 3077c2fbfb3SApril Chinfunction usage 3087c2fbfb3SApril Chin{ 3097c2fbfb3SApril Chin OPTIND=0 3107c2fbfb3SApril Chin getopts -a "${progname}" "${man_usage}" OPT '-?' 3117c2fbfb3SApril Chin exit 2 3127c2fbfb3SApril Chin} 3137c2fbfb3SApril Chin 3147c2fbfb3SApril Chin# program start 3157c2fbfb3SApril Chinbuiltin basename 3167c2fbfb3SApril Chinbuiltin cat 3177c2fbfb3SApril Chinbuiltin date 3187c2fbfb3SApril Chin 3197c2fbfb3SApril Chintypeset progname="$(basename "${0}")" 3207c2fbfb3SApril Chin 3217c2fbfb3SApril Chintypeset -r man_usage=$'+ 322*3e14f97fSRoger A. Faulkner[-?\n@(#)\$Id: shman (Roland Mainz) 2009-12-02 \$\n] 3237c2fbfb3SApril Chin[-author?Roland Mainz <roland.mainz@nrubsig.org>] 3247c2fbfb3SApril Chin[-author?Roland Mainz <roland.mainz@sun.com>] 3257c2fbfb3SApril Chin[+NAME?man - find and display reference manual pages] 3267c2fbfb3SApril Chin[+DESCRIPTION?The man command displays information from the reference 3277c2fbfb3SApril Chin manuals. It displays complete manual pages that you select 3287c2fbfb3SApril Chin by name, or one-line summaries selected either by keyword 3297c2fbfb3SApril Chin (-k), or by the name of an associated file (-f). If no 3307c2fbfb3SApril Chin manual page is located, man prints an error message.] 3317c2fbfb3SApril Chin[+?write me.] 3327c2fbfb3SApril Chin[k:keyword?Prints out one-line summaries from the windex database (table of contents) that 3337c2fbfb3SApril Chin contain any of the given keywords. The windex database is created using 3347c2fbfb3SApril Chin catman(1M).] 3357c2fbfb3SApril Chin[l:list?Lists all manual pages found matching name within the search path.] 3367c2fbfb3SApril Chin[M:mpath?Specifies an alternate search path for manual pages. path is a colon-separated 3377c2fbfb3SApril Chin list of directories that contain manual page directory subtrees. For example, if 3387c2fbfb3SApril Chin path is /usr/share/man:/usr/local/man, man searches for name in the standard 3397c2fbfb3SApril Chin location, and then /usr/local/man. When used with the -k or -f options, the -M 3407c2fbfb3SApril Chin option must appear first. Each directory in the path is assumed to contain subdirectories of the form man* or sman* , 3417c2fbfb3SApril Chin one for each section. This option overrides the MANPATH environment variable.]:[path] 3427c2fbfb3SApril Chin[s:section?Specifies sections of the manual for man to search. The directories searched for 3437c2fbfb3SApril Chin name are limited to those specified by section. section can be a numerical 3447c2fbfb3SApril Chin digit, perhaps followed by one or more letters to match the desired section of 3457c2fbfb3SApril Chin the manual, for example, "3libucb". Also, section can be a word, for example, 3467c2fbfb3SApril Chin local, new, old, public. section can also be a letter. 3477c2fbfb3SApril Chin To specify multiple sections, separate each section with 3487c2fbfb3SApril Chin a comma. This option overrides the MANPATH environment variable and the man.cf 3497c2fbfb3SApril Chin file. 3507c2fbfb3SApril Chin See Search Path below for an explanation of how man conducts its search.]:[section] 3517c2fbfb3SApril Chin 3527c2fbfb3SApril Chinname 3537c2fbfb3SApril Chin 3547c2fbfb3SApril Chin[+SEE ALSO?\bksh93\b(1), \bman\b(1)] 3557c2fbfb3SApril Chin' 3567c2fbfb3SApril Chin 3577c2fbfb3SApril Chintypeset do_list=false 3587c2fbfb3SApril Chintypeset do_keyword=false 3597c2fbfb3SApril Chin 3607c2fbfb3SApril Chinwhile getopts -a "${progname}" "${man_usage}" OPT ; do 3617c2fbfb3SApril Chin# printmsg "## OPT=|${OPT}|, OPTARG=|${OPTARG}|" 3627c2fbfb3SApril Chin case ${OPT} in 3637c2fbfb3SApril Chin M) MANPATH="${OPTARG}" ;; 3647c2fbfb3SApril Chin l) do_list=true ;; 3657c2fbfb3SApril Chin k) do_keyword=true ;; 3667c2fbfb3SApril Chin s) MANSECTS="${OPTARG}" ;; 3677c2fbfb3SApril Chin *) usage ;; 3687c2fbfb3SApril Chin esac 3697c2fbfb3SApril Chindone 3707c2fbfb3SApril Chinshift $((OPTIND-1)) 3717c2fbfb3SApril Chin 3727c2fbfb3SApril Chin# cd /usr/man; LC_MESSAGES=C /usr/lib/sgml/sgml2roff /usr/man/sman1as/asadmin-list-timers.1as | tbl | eqn | nroff -u0 -Tlp -man - | col -x > /tmp/mpLQaqac 3737c2fbfb3SApril Chin 37434f9b3eeSRoland Mainz# prechecks 37534f9b3eeSRoland Mainz(( $# > 0 )) || usage 37634f9b3eeSRoland Mainz 37734f9b3eeSRoland Mainz# process arguments 37834f9b3eeSRoland Mainzwhile (( $# > 0 )) ; do 3797c2fbfb3SApril Chin typeset manname="$1" 38034f9b3eeSRoland Mainz shift 38134f9b3eeSRoland Mainz 3827c2fbfb3SApril Chin debug_print -f "# searching for %s ...\n" "${manname}" 3837c2fbfb3SApril Chin 3847c2fbfb3SApril Chin if ${do_keyword} ; then 3857c2fbfb3SApril Chin list_keywords 3867c2fbfb3SApril Chin elif ${do_list} ; then 3877c2fbfb3SApril Chin list_manpages 3887c2fbfb3SApril Chin else 3897c2fbfb3SApril Chin show_manpage 3907c2fbfb3SApril Chin fi 39134f9b3eeSRoland Mainzdone 3927c2fbfb3SApril Chin 3937c2fbfb3SApril Chin# todo: better exit codes 3947c2fbfb3SApril Chinexit 0 3957c2fbfb3SApril Chin# EOF. 396