#!/bin/rc
# Tries to determine what type of file you are printing and do the correct
# thing with it.
# It currently knows about bitmaps, troff intermediate, and ascii files.
TMPFILE=/tmp/lp$pid
fn sigexit { rm -f $TMPFILE; }
if (! ~ $DEBUG '') flag x +
if (~ $LPCLASS *nohead*) NOHEAD=1
if (~ $LPCLASS *duplex*) DUPLEX=1
cat >$TMPFILE
FILETYPE=`{file $TMPFILE}
switch ($FILETYPE(2)) {
case troff;
switch ($LPCLASS) {
case *Latin1* *post* *opost*; switch ($FILETYPE(5)) {
# Latin1 is for compatibility with old research UNIX systems, doesn't work on Plan 9
case Latin1 post; tcs -s -f utf -t latin1 < $TMPFILE |$LPLIB/process/dpost
case UTF; $LPLIB/process/tr2post < $TMPFILE
}
# for Linotronics compatibility, does not work outside Bell Labs
case *lino*; switch ($FILETYPE(5)) {
case *Latin1* *post*; $LPLIB/process/dpost < $TMPFILE|$LPLIB/process/daps
case *; echo $FILETYPE(2) -T$FILETYPE(5) output is improper for $LPDEST >[1=2]
}
# for sending jobs to our Comp Center printers, does not work outside Bell Labs.
case *mhcc*; $LPLIB/process/dpost < $TMPFILE | $LPLIB/process/mhcc
case *; echo $FILETYPE(2) -T$FILETYPE(5) output is improper for $LPDEST >[1=2]
}
case special;
switch ($FILETYPE(4)) {
case '#b'; $LPLIB/process/p9bitpost < $TMPFILE
case *; echo $FILETYPE file is improper for $LPDEST >[1=2]
}
case plan; # type is really 'plan 9 bitmap'
switch ($LPCLASS) {
case *post*; $LPLIB/process/p9bitpost < $TMPFILE
}
case ccitt-g31;
switch ($LPCLASS) {
case *post*; $LPLIB/process/g3post < $TMPFILE
}
# bitmap for research UNIX compatibility, does not work on Plan 9.
case bitmap;
switch ($LPCLASS) {
case *lino*; $LPLIB/process/bpost < $TMPFILE | $LPLIB/process/daps
case *post*; $LPLIB/process/bpost < $TMPFILE
case *mhcc*; $LPLIB/process/bpost < $TMPFILE | $LPLIB/process/mhcc
case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
}
case tex;
mv $TMPFILE $TMPFILE.dvi
TMPFILE=$TMPFILE.dvi
switch ($LPCLASS) {
case *lino*; $LPLIB/process/dvipost -Tlino $TMPFILE | $LPLIB/process/daps
case *post*; $LPLIB/process/dvipost $TMPFILE
case *202*; dvit -T202 $TMPFILE | $LPLIB/process/d202
case *mhcc*; $LPLIB/process/dvipost $TMPFILE | $LPLIB/process/mhcc
case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
}
case postscript;
switch ($LPCLASS) {
case *post*; $LPLIB/process/post < $TMPFILE
case *aps* *lino*; $LPLIB/process/daps < $TMPFILE
case *mhcc*; $LPLIB/process/mhcc < $TMPFILE
case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
}
case daisy;
switch ($LPDEST) {
case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
}
case English short extended alef [Aa]scii assembler c latin rc sh as;
switch ($LPCLASS) {
case *post*; $LPLIB/process/ppost < $TMPFILE
case *canon*; $LPLIB/process/can $* < $TMPFILE
case *lino* *mhcc*; echo you want to send text to $LPDEST^'?' >[1=2]
case *; echo Unrecognized class of line printer for $LPDEST >[1=2]
}
case empty;
echo file is empty >[1=2]
case cannot;
echo cannot open file >[1=2]
case *;
echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
}
rv=$status
rm -f $TMPFILE
exit $status