home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / usr.bin / groff / etc / grog.sh < prev    next >
Encoding:
Linux/UNIX/POSIX Shell Script  |  1991-04-30  |  1.2 KB  |  66 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. soelim=gsoelim
  6.  
  7. opts=
  8.  
  9. for arg
  10. do
  11.     case "$arg" in
  12.     --)
  13.         shift; break;;
  14.     -)
  15.         break;;
  16.     -*)
  17.         opts="$opts $arg"; shift;;
  18.     *)
  19.         break;;
  20.     esac
  21. done
  22.  
  23. egrep -h '^\.(P|[LI]P|[pnil]p|TS|EQ|TH|SH|so)' $* \
  24. | sed -e '/^\.so/s/^.*$/.SO_START\
  25. &\
  26. .SO_END/' \
  27. | $soelim \
  28. | egrep '^\.(P|[LI]P|[pnil]p|TS|EQ|TH|SH|SO_START|SO_END)' \
  29. | awk '
  30. /^\.SO_START$/ { so = 1 }
  31. /^\.SO_END$/ { so = 0 }
  32. /^\.TS/ { tbl++; if (so > 0) soelim++ }
  33. /^\.PS/ { pic++; if (so > 0) soelim++ }
  34. /^\.EQ/ { eqn++; if (so > 0) soelim++ }
  35. /^\.TH/ { TH++ }
  36. /^\.[PLI]P/ { PP++ }
  37. /^\.P$/ { P++ }
  38. /^\.SH/ { SH++ }
  39. /^\.[pnil]p/ { me++ }
  40.  
  41. END {
  42.     if (files ~ /^-/)
  43.         files = "-- " files
  44.     printf "groff"
  45.     if (pic > 0 || tbl > 0 || eqn > 0) {
  46.         printf " -"
  47.         if (soelim > 0) printf "s"
  48.         if (pic > 0) printf "p"
  49.         if (tbl > 0) printf "t"
  50.         if (eqn > 0) printf "e"
  51.     }
  52.     if (me > 0)
  53.         printf " -me"
  54.     else if (SH > 0 && TH > 0)
  55.         printf " -man"
  56.     else if (PP > 0)
  57.         printf " -ms"
  58.     else if (P > 0)
  59.         printf " -mm"
  60.     if (opts != "")
  61.         printf "%s", opts
  62.     if (files != "")
  63.         printf " %s", files
  64.     print
  65. }' "opts=$opts" "files=$*" -
  66.