2 # grog -- guess options for groff command
3 # Like doctype in Kernighan & Pike, Unix Programming Environment, pp 306-8.
18 sp
=; opts
="$opts -C"; shift; break;;
20 echo "GNU grog (groff) version @VERSION@"
23 echo "usage: grog [ option ...] [files...]"
26 opts
="$opts $arg"; shift;;
32 egrep -h "^\.(\[|\])|((P|PS|[PLI]P|[pnil]p|sh|Dd|Tp|Dp|De|Cx|Cl|Oo|.* Oo|Oc|.* Oc|TS|EQ|TH|SH|so|\[|R1|GS|G1|PH|SA)$sp)" $
* \
33 |
sed -e '/^\.so/s/^.*$/.SO_START\
37 |
egrep '^\.(P|PS|[PLI]P|[pnil]p|sh|Dd|Tp|Dp|De|Cx|Cl|Oo|.* Oo|Oc|.* Oc|TS|EQ|TH|SH|\[|\]|R1|GS|G1|PH|SA|SO_START|SO_END)' \
39 /^\.SO_START$/ { so = 1 }
40 /^\.SO_END$/ { so = 0 }
41 /^\.TS/ { tbl++; if (so > 0) soelim++ }
42 /^\.PS([ 0-9.<].*)?$/ { pic++; if (so > 0) soelim++ }
43 /^\.EQ/ { eqn++; if (so > 0) soelim++ }
44 /^\.R1/ { refer++; if (so > 0) soelim++ }
45 /^\.\[/ {refer_start++; if (so > 0) soelim++ }
46 /^\.\]/ {refer_end++; if (so > 0) soelim++ }
47 /^\.GS/ { grn++; if (so > 0) soelim++ }
48 /^\.G1/ { grap++; pic++; if (so > 0) soelim++ }
54 /^\.([pnil]p|sh)/ { me++ }
56 /^\.(Tp|Dp|De|Cx|Cl)/ { mdoc_old++ }
57 /^\.(O[oc]|.* O[oc]( |$))/ {
59 gsub(/\"[^\"]*\"/, "")
74 /^\.(PRINTSTYLE|START)/ { mom++ }
80 refer = refer || (refer_start && refer_end)
81 if (pic > 0 || tbl > 0 || grn > 0 || grap > 0 || eqn > 0 || refer > 0) {
83 if (soelim > 0) printf "s"
84 if (refer > 0) printf "R"
85 if (grn > 0) printf "g"
86 if (grap > 0) printf "G"
87 if (pic > 0) printf "p"
88 if (tbl > 0) printf "t"
89 if (eqn > 0) printf "e"
93 else if (SH > 0 && TH > 0)
99 else if (P > 0 || mm > 0)
102 if (mdoc_old > 0 || Oo > 0)
112 }' "opts=$opts" "files=$*" -