home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / mint / utilit~1 / groffbin.zoo / groffbin / grog.sh < prev    next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  1993-03-06  |  1.6 KB  |  77 lines

  1. #!/bin/sh
  2. # grog -- guess options for groff command
  3. # Like doctype in Kernighan & Pike, Unix Programming Environment, pp 306-8.
  4.  
  5. opts=
  6.  
  7. for arg
  8. do
  9.     case "$arg" in
  10.     --)
  11.         shift; break;;
  12.     -)
  13.         break;;
  14.     -*)
  15.         opts="$opts $arg"; shift;;
  16.     *)
  17.         break;;
  18.     esac
  19. done
  20.  
  21. egrep -h '^\.(P|[LI]P|[pnil]p|sh|Dd|Tp|Dp|De|Cx|Cl|Oo|Oc|TS|EQ|TH|SH|so|\[|R1|PH|SA)' $* \
  22. | sed -e '/^\.so/s/^.*$/.SO_START\
  23. &\
  24. .SO_END/' \
  25. | $soelim \
  26. | egrep '^\.(P|[LI]P|[pnil]p|sh|Dd|Tp|Dp|De|Cx|Cl|Oo|Oc|TS|EQ|TH|SH|\[|R1|PH|SA|SO_START|SO_END)' \
  27. | awk '
  28. /^\.SO_START$/ { so = 1 }
  29. /^\.SO_END$/ { so = 0 }
  30. /^\.TS/ { tbl++; if (so > 0) soelim++ }
  31. /^\.PS([ 0-9.<].*)?$/ { pic++; if (so > 0) soelim++ }
  32. /^\.EQ/ { eqn++; if (so > 0) soelim++ }
  33. /^\.(R1|\[)/ { refer++; if (so > 0) soelim++ }
  34. /^\.TH/ { TH++ }
  35. /^\.[PLI]P/ { PP++ }
  36. /^\.P$/ { P++ }
  37. /^\.SH/ { SH++ }
  38. /^\.(PH|SA)/ { mm++ }
  39. /^\.([pnil]p|sh)/ { me++ }
  40. /^\.Dd/ { mdoc++ }
  41. /^\.(Tp|Dp|De|Cx|Cl)/ { mdoc_old++ }
  42. /^\.Oo/ { Oo++ }
  43. /^\.Oc/ { Oo-- }
  44.  
  45. END {
  46.     if (files ~ /^-/)
  47.         files = "-- " files
  48.     printf "groff"
  49.     if (pic > 0 || tbl > 0 || eqn > 0 || refer > 0) {
  50.         printf " -"
  51.         if (soelim > 0) printf "s"
  52.         if (refer > 0) printf "R"
  53.         if (pic > 0) printf "p"
  54.         if (tbl > 0) printf "t"
  55.         if (eqn > 0) printf "e"
  56.     }
  57.     if (me > 0)
  58.         printf " -me"
  59.     else if (SH > 0 && TH > 0)
  60.         printf " -man"
  61.     else if (PP > 0)
  62.         printf " -ms"
  63.     else if (P > 0 || mm > 0)
  64.         printf " -mm"
  65.     else if (mdoc > 0) {
  66.         if (mdoc_old > 0 || Oo > 0)
  67.             printf " -mdoc.old"
  68.         else
  69.             printf " -mdoc"
  70.     }
  71.     if (opts != "")
  72.         printf "%s", opts
  73.     if (files != "")
  74.         printf " %s", files
  75.     print
  76. }' "opts=$opts" "files=$*" -
  77.