home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / gemini / scripts / man.mup < prev    next >
Encoding:
Text File  |  1994-09-22  |  2.4 KB  |  182 lines

  1. #!mupfel.ttp
  2. #
  3. # MAN - Manualpages anzeigen
  4. # Julian F. Reschke, 14. August 1994
  5. #
  6. # Dieses Shell-Script ist noch provisorisch und wird eventuell noch
  7. # durch ein man.ttp ersetzt. Im Moment ist es jedoch ein gutes Beispiel
  8. # und Testvehikel. Der Support fuer man -k ist noch nicht ganz fertig.
  9.  
  10. SUCCESS=nicht
  11.  
  12. # Wenn $PAGER nicht gesetzt ist: auf more setzen
  13. [ $PAGER ] || PAGER=more
  14.  
  15. # Wenn $PAGER more ist, -c als Option anfuegen
  16. [ $PAGER = more ] && PAGER="more -c"
  17.  
  18. # Funktionen zum Anzeigen von Dateien; Dateien mit 'z' als letztem
  19. # Buchstaben werden per gzip ausgepackt
  20. display_plaintext ()
  21. {
  22.     case $1 in
  23.         *z        ) gzip -cd $1 | $PAGER ;;
  24.         *        ) $PAGER $1 ;;
  25.     esac
  26. }
  27.  
  28. display_nrofftext ()
  29. {
  30.     case $1 in
  31.         *z        ) gzip -cd $1 | nroff -man | $PAGER ;;
  32.         *        ) nroff -man $1 | $PAGER ;;
  33.     esac
  34. }
  35.  
  36. output ()
  37. {
  38.     case $1 in
  39.         man*    ) display_nrofftext $2 ;;
  40.         *        ) display_plaintext $2 ;;
  41.     esac
  42.  
  43.     case $? in
  44.         0)    SUCCESS=true
  45.             ;;
  46.         *)    exit
  47.             ;;
  48.     esac
  49. }
  50.  
  51.  
  52. # Diagnose ausgeben
  53.  
  54. diag ()
  55. {
  56.     if [ $SUCCESS = nicht ]
  57.     then
  58.         echo $0: keine Manual-Page zu $1 vorhanden >&2
  59.         exit 2
  60.     else
  61.         exit 0
  62.     fi
  63. }
  64.  
  65. # In allen Manual-Sections nach $1 sehen
  66.  
  67. doman ()
  68. {
  69.     for i in cat* man* sup* .
  70.     do
  71.         pushd .
  72.         if [ -d $i ]
  73.         then
  74.             cd $i
  75.             for j in $1.*
  76.             do
  77.                 if [ -f $j ]
  78.                 then
  79.                     output $i $j
  80.                 fi
  81.             done
  82.         fi
  83.         popd
  84.     done
  85. }
  86.  
  87.  
  88. doman_section ()
  89. {
  90.     for i in *"${1}"
  91.     do
  92.         if [ -d $i ]
  93.         then
  94.             pushd $i
  95.             for j in $2.*
  96.             do
  97.                 if [ -f $j ]
  98.                 then
  99.                     output $i $j
  100.                 fi
  101.             done
  102.             popd
  103.         fi
  104.     done
  105. }
  106.  
  107. # Nach Keyword suchen
  108.  
  109. do_key ()
  110. {
  111.     for i in man*\whatis cat*\whatis whatis
  112.     do
  113.         if [ -f $i ]
  114.         then
  115.             if grep -i $1 $i
  116.             then
  117.                 SUCCESS=true
  118.             fi
  119.         fi
  120.     done
  121.  
  122.     if [ $SUCCESS = nicht ]
  123.     then
  124.         echo $0: nichts gefunden
  125.         exit 1
  126.     fi
  127.     
  128.     exit 0
  129. }
  130.  
  131.  
  132. # main
  133.  
  134. ARGUMENTS=$#
  135.  
  136. case $ARGUMENTS in
  137.     1)    ARG1=$1
  138.         ;;
  139.     2)    ARG1=$1
  140.         ARG2=$2
  141.         ;;
  142.     *)    echo Gebrauch: $0 [Kapitel] Begriff
  143.         echo "         " $0 -k Begriff
  144.         exit
  145. esac
  146.  
  147. # Man-Path tokenisieren
  148.  
  149. MERK_IFS=$IFS
  150. IFS=',;' set -- $MANPATH
  151. IFS=$MERK_IFS
  152.  
  153. case $ARGUMENTS in
  154.     1)    for path
  155.         do
  156.             pushd $path
  157.             doman $ARG1
  158.             popd
  159.         done
  160.         diag $ARG1
  161.         ;;
  162.     2)    if [ $ARG1 = -k ]
  163.         then
  164.             for path
  165.             do
  166.                 pushd $path
  167.                 do_key $ARG2
  168.                 popd
  169.             done
  170.         else
  171.             for path
  172.             do
  173.                 pushd $path
  174.                 doman_section $ARG1 $ARG2
  175.                 popd
  176.             done
  177.             diag $ARG2
  178.         fi
  179.         ;;
  180. esac
  181.  
  182.