#!/bin/sh
# grof: fb20-rof-Äquivalent für das GNU Troff-Paket

rofftype=off			# wirklich setzen
landscape=""			# DIN A4 hochkant
F=""				# Dateien
TO=""				# Troff-Optionen
macros=-mfb20			# Makrosatz
printer=-P${PRINTER-ps}
nospool=0			# Ergebnis zum Drucker
spoolopt=-Jditroff		# job name "ditroff"
reduce=-1			# 1:1
filspec=-fpth			# spezifizierte Filter: pic,tbl,hyphen

for i in $*			# Interpretation der Argumente
do  case "$i" in

	-Tpsc)	;;		# hier gab's wohl mal ein -Tln
	-T*)	echo only -Tpsc is valid 1>&2 ; exit 2 ;;
				
	-P*)	printer=$i ;;	# Laserdrucker angegeben

	-C*|-J*|-#*|-h|-m)	# classification job copies burstpage mail
		spoolopt="$spoolopt $i" ;;

	-m*)	macros=$i;;	# Troff Macros

	-p*)	pro=$i;;	# PostScript prologue
	-t)	nospool=1 ;;	# PostScript -> /dev/tty
	-troff)	rofftype=cat;;	# bloß Troff-Input

	-L) 	TO="$TO -rL1"; 	# quer drucken
		landscape=-l;;

	-f*)	filspec=$i;;	# Filterangabe

	-[1248]) reduce=$i;;	# Verkleinerung zum Papiersparen: 
				# wieviele Seiten auf einen Bogen?

	-?*) TO="$TO $i";;	# alle anderen Optionen an Troff
	*) F="$F $i";;		# Textdateien
    esac
done

#	case "$pro" in		# bestimmter Prolog? sonst default
#	"")	case "$landscape" in
#		"")	pro=/usr/local/lib/ps/psdit.pro.roman8;;
#		-l)	pro=/usr/local/lib/ps/psdit.land.roman8
#		esac;;
#	*)	pro=/usr/local/lib/ps/`echo $pro | sed s/-p\///`
#	esac	

case $filspec in
*c*)	filter="cat ";;				# keine Umwandlung
*)	filter="/bin/sed -f /usr/local/lib/ps/ps.sed "
esac		# alte Umlaut- und Gänsefüßchenumschreibung

case $filspec in
*p*)	filter="$filter | gpic "
esac

case $filspec in
*b*)	filter="$filter | sed '/^$/d' "		# lösche Leerzeilen
esac

case $filspec in
*t*)	filter="$filter | gtbl "
esac

case $filspec in
*h*)	macros="$macros -mde "			
esac		# deutsche Worttrennung war mal ein Filter

case $filspec in
*e*)	filter="$filter | geqn "
esac

case $filspec in		
*a*)	filter="/usr/local/bin/folfil | $filter "
esac		# keine Ahnung, ob der Vorlesungsfolienprozessor
		# auch mit gtroff klarkommt, aber das es kein Manual hat ...

case $reduce in
	-1)	spool="lpr $printer $spoolopt";;
	-2)	spool="2up $printer";;
	-4)	spool="4up $printer";;
	-8)	spool="8up $printer";;
esac

dit="eval gtroff $macros $TO - | grops $landscape "

gsoelim $F	|	# bediene .so file requests
eval $filter	|
case $rofftype$nospool in
	cat*)	cat;;
	off1)	$dit ;;
	off0)	$dit | $spool;;
esac
