1#!/bin/rc 2# Tries to determine what type of file you are printing and do the correct 3# thing with it. 4# It currently knows about bitmaps, troff intermediate, and ascii files. 5TMPFILE=/tmp/lp$pid 6fn sigexit { rm -f $TMPFILE; } 7if (! ~ $DEBUG '') flag x + 8if (~ $LPCLASS *nohead*) NOHEAD=1 9if (~ $LPCLASS *duplex*) DUPLEX=1 10cat >$TMPFILE 11FILETYPE=`{file $TMPFILE} 12switch ($FILETYPE(2)) { 13case troff; 14 switch ($LPCLASS) { 15 case *Latin1* *post* *opost*; switch ($FILETYPE(5)) { 16 # Latin1 is for compatibility with old research UNIX systems, doesn't work on Plan 9 17 case Latin1 post; tcs -s -f utf -t latin1 < $TMPFILE |$LPLIB/process/dpost 18 19 case UTF; $LPLIB/process/tr2post < $TMPFILE 20 } 21 22 # for Linotronics compatibility, does not work outside Bell Labs 23 case *lino*; switch ($FILETYPE(5)) { 24 case *Latin1* *post*; $LPLIB/process/dpost < $TMPFILE|$LPLIB/process/daps 25 case *; echo $FILETYPE(2) -T$FILETYPE(5) output is improper for $LPDEST >[1=2] 26 } 27 28 # for sending jobs to our Comp Center printers, does not work outside Bell Labs. 29 case *mhcc*; $LPLIB/process/dpost < $TMPFILE | $LPLIB/process/mhcc 30 31 case *; echo $FILETYPE(2) -T$FILETYPE(5) output is improper for $LPDEST >[1=2] 32 } 33case special; 34 switch ($FILETYPE(4)) { 35 case '#b'; $LPLIB/process/p9bitpost < $TMPFILE 36 case *; echo $FILETYPE file is improper for $LPDEST >[1=2] 37 } 38case plan; # type is really 'plan 9 bitmap' 39 switch ($LPCLASS) { 40 case *post*; $LPLIB/process/p9bitpost < $TMPFILE 41 } 42case ccitt-g31; 43 switch ($LPCLASS) { 44 case *post*; $LPLIB/process/g3post < $TMPFILE 45 } 46 47# bitmap for research UNIX compatibility, does not work on Plan 9. 48case bitmap; 49 switch ($LPCLASS) { 50 case *lino*; $LPLIB/process/bpost < $TMPFILE | $LPLIB/process/daps 51 case *post*; $LPLIB/process/bpost < $TMPFILE 52 case *mhcc*; $LPLIB/process/bpost < $TMPFILE | $LPLIB/process/mhcc 53 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 54 } 55case tex; 56 mv $TMPFILE $TMPFILE.dvi 57 TMPFILE=$TMPFILE.dvi 58 switch ($LPCLASS) { 59 case *lino*; $LPLIB/process/dvipost -Tlino $TMPFILE | $LPLIB/process/daps 60 case *post*; $LPLIB/process/dvipost $TMPFILE 61 case *202*; dvit -T202 $TMPFILE | $LPLIB/process/d202 62 case *mhcc*; $LPLIB/process/dvipost $TMPFILE | $LPLIB/process/mhcc 63 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 64 } 65case postscript; 66 switch ($LPCLASS) { 67 case *post*; $LPLIB/process/post < $TMPFILE 68 case *aps* *lino*; $LPLIB/process/daps < $TMPFILE 69 case *mhcc*; $LPLIB/process/mhcc < $TMPFILE 70 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 71 } 72case daisy; 73 switch ($LPDEST) { 74 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 75 } 76case English short extended alef [Aa]scii assembler c latin rc sh as; 77 switch ($LPCLASS) { 78 case *post*; $LPLIB/process/ppost < $TMPFILE 79 case *canon*; $LPLIB/process/can $* < $TMPFILE 80 case *lino* *mhcc*; echo you want to send text to $LPDEST^'?' >[1=2] 81 case *; echo Unrecognized class of line printer for $LPDEST >[1=2] 82 } 83case empty; 84 echo file is empty >[1=2] 85case cannot; 86 echo cannot open file >[1=2] 87case *; 88 echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 89} 90rv=$status 91rm -f $TMPFILE 92exit $status 93