home *** CD-ROM | disk | FTP | other *** search
- #!mupfel.ttp
- #
- # MAN - Manualpages anzeigen
- # Julian F. Reschke, 14. August 1994
- #
- # Dieses Shell-Script ist noch provisorisch und wird eventuell noch
- # durch ein man.ttp ersetzt. Im Moment ist es jedoch ein gutes Beispiel
- # und Testvehikel. Der Support fuer man -k ist noch nicht ganz fertig.
-
- SUCCESS=nicht
-
- # Wenn $PAGER nicht gesetzt ist: auf more setzen
- [ $PAGER ] || PAGER=more
-
- # Wenn $PAGER more ist, -c als Option anfuegen
- [ $PAGER = more ] && PAGER="more -c"
-
- # Funktionen zum Anzeigen von Dateien; Dateien mit 'z' als letztem
- # Buchstaben werden per gzip ausgepackt
- display_plaintext ()
- {
- case $1 in
- *z ) gzip -cd $1 | $PAGER ;;
- * ) $PAGER $1 ;;
- esac
- }
-
- display_nrofftext ()
- {
- case $1 in
- *z ) gzip -cd $1 | nroff -man | $PAGER ;;
- * ) nroff -man $1 | $PAGER ;;
- esac
- }
-
- output ()
- {
- case $1 in
- man* ) display_nrofftext $2 ;;
- * ) display_plaintext $2 ;;
- esac
-
- case $? in
- 0) SUCCESS=true
- ;;
- *) exit
- ;;
- esac
- }
-
-
- # Diagnose ausgeben
-
- diag ()
- {
- if [ $SUCCESS = nicht ]
- then
- echo $0: keine Manual-Page zu $1 vorhanden >&2
- exit 2
- else
- exit 0
- fi
- }
-
- # In allen Manual-Sections nach $1 sehen
-
- doman ()
- {
- for i in cat* man* sup* .
- do
- pushd .
- if [ -d $i ]
- then
- cd $i
- for j in $1.*
- do
- if [ -f $j ]
- then
- output $i $j
- fi
- done
- fi
- popd
- done
- }
-
-
- doman_section ()
- {
- for i in *"${1}"
- do
- if [ -d $i ]
- then
- pushd $i
- for j in $2.*
- do
- if [ -f $j ]
- then
- output $i $j
- fi
- done
- popd
- fi
- done
- }
-
- # Nach Keyword suchen
-
- do_key ()
- {
- for i in man*\whatis cat*\whatis whatis
- do
- if [ -f $i ]
- then
- if grep -i $1 $i
- then
- SUCCESS=true
- fi
- fi
- done
-
- if [ $SUCCESS = nicht ]
- then
- echo $0: nichts gefunden
- exit 1
- fi
-
- exit 0
- }
-
-
- # main
-
- ARGUMENTS=$#
-
- case $ARGUMENTS in
- 1) ARG1=$1
- ;;
- 2) ARG1=$1
- ARG2=$2
- ;;
- *) echo Gebrauch: $0 [Kapitel] Begriff
- echo " " $0 -k Begriff
- exit
- esac
-
- # Man-Path tokenisieren
-
- MERK_IFS=$IFS
- IFS=',;' set -- $MANPATH
- IFS=$MERK_IFS
-
- case $ARGUMENTS in
- 1) for path
- do
- pushd $path
- doman $ARG1
- popd
- done
- diag $ARG1
- ;;
- 2) if [ $ARG1 = -k ]
- then
- for path
- do
- pushd $path
- do_key $ARG2
- popd
- done
- else
- for path
- do
- pushd $path
- doman_section $ARG1 $ARG2
- popd
- done
- diag $ARG2
- fi
- ;;
- esac
-
-