#!/bin/sh set -p PATH=/bin:/usr/bin SOURCE=/usr/man CACHE=/usr/spool/man cmd=-q sec='?*' secn= c=x s=x opt= slow= quick= T= (cd $CACHE 2>/dev/null) && c=c (cd $SOURCE 2>/dev/null) && s=s while case $1 in [1-9]|10) sec=$1 secn=$1 ;; -f) c=f s=f ;; -[qw]) cmd=$1 ;; -[nt]) cmd=$1 ;; -T*) T=$1 ;; -*) opt="$opt $1" ;; *) break esac do shift done csc=$c$s$cmd case $csc in ff-q) cmd=-t ;; xx-?|?x-[nt]) echo man data not available 1>&2; exit ;; c?-[qw]) cd $CACHE ;; ?s-?) cd $SOURCE esac for i do case $csc in ff-?) slow="$slow $i" ;; *) fil=`echo man$sec/$i.*` for j in $fil do case $csc$j in cs-[qw]*\*) man -n $secn $i ;; *\*) echo man: $i not found 1>&2 ;; cx-[qw]*) quick="$quick $j" ;; cs-[qw]*) if newer $SOURCE/$j $j then slow="$slow $SOURCE/$j" else quick="$quick $j" fi ;; *) slow="$slow $j" esac done esac done case "$slow$quick" in "") exit esac #slightly faster than the honest way: doctype typeset() { tbl $slow | ${1}eqn $T | ${1}roff -man $T $opt } teqn() { eqn $* } case $cmd in -q) if test -t then undln="| ul" else undln= fi eval '( case "$quick" in ?*) cat $quick esac case "$slow" in ?*) typeset n esac)' $undln ;; -t) typeset t ;; -n) typeset n ;; -w) echo $quick $slow esac