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 images, 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 case *gs!* *gsijs!*; switch ($FILETYPE(5)) { 23 # Latin1 is for compatibility with old research UNIX systems, doesn't work on Plan 9 24 case Latin1 post; tcs -s -f utf -t latin1 < $TMPFILE |$LPLIB/process/dpost |$LPLIB/process/gspipe 25 26 case UTF; $LPLIB/process/tr2post < $TMPFILE |$LPLIB/process/gspipe 27 } 28 29 case *; echo $FILETYPE(2) -T$FILETYPE(5) output is improper for $LPDEST >[1=2] 30 } 31case special; 32 switch ($FILETYPE(4)) { 33 case '#b'; switch ($LPCLASS) { 34 case *post*; $LPLIB/process/p9bitpost < $TMPFILE 35 case *gs!*; $LPLIB/process/p9bitpost < $TMPFILE |$LPLIB/process/gspipe 36 case *gsijs!*; $LPLIB/process/p9bitpost < $TMPFILE |$LPLIB/process/gspipeijs 37 } 38 39 case *; echo $FILETYPE file is improper for $LPDEST >[1=2] 40 } 41case Compressed plan old; # type is really 'Compressed image' or 'plan 9 image' 42 # or 'old plan 9 image' 43 switch ($LPCLASS) { 44 case *post*; $LPLIB/process/p9bitpost < $TMPFILE 45 case *gs!*; $LPLIB/process/p9bitpost < $TMPFILE |$LPLIB/process/gspipe 46 case *gsijs!*; $LPLIB/process/p9bitpost < $TMPFILE |$LPLIB/process/gspipeijs 47 } 48case jpeg; 49 switch ($LPCLASS) { 50 case *post*; $LPLIB/process/jpgpost < $TMPFILE 51 case *gs!*; $LPLIB/process/jpgpost < $TMPFILE |$LPLIB/process/gspipe 52 case *gsijs!*; $LPLIB/process/jpgpost < $TMPFILE |$LPLIB/process/gspipeijs 53 } 54 55case GIF; 56 switch ($LPCLASS) { 57 case *post*; $LPLIB/process/gifpost < $TMPFILE 58 case *gs!*; $LPLIB/process/gifpost < $TMPFILE |$LPLIB/process/gspipe 59 case *gsijs!*; $LPLIB/process/gifpost < $TMPFILE |$LPLIB/process/gspipeijs 60 } 61 62case ccitt-g31; 63 switch ($LPCLASS) { 64 case *post*; $LPLIB/process/g3post < $TMPFILE 65 case *gs!*; $LPLIB/process/g3post < $TMPFILE |$LPLIB/process/gspipe 66 case *gsijs!*; $LPLIB/process/g3post < $TMPFILE |$LPLIB/process/gspipeijs 67 } 68 69# bitmap for research UNIX compatibility, does not work on Plan 9. 70case bitmap; 71 switch ($LPCLASS) { 72 case *post*; $LPLIB/process/bpost < $TMPFILE 73 case *mhcc*; $LPLIB/process/bpost < $TMPFILE | $LPLIB/process/mhcc 74 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 75 } 76case tex; 77 mv $TMPFILE $TMPFILE.dvi 78 TMPFILE=$TMPFILE.dvi 79 switch ($LPCLASS) { 80 case *post*; $LPLIB/process/dvipost $TMPFILE 81 case *gs!*; $LPLIB/process/dvipost $TMPFILE |$LPLIB/process/gspipe 82 case *gsijs!*; $LPLIB/process/dvipost $TMPFILE |$LPLIB/process/gspipeijs 83 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 84 } 85case postscript; 86 switch ($LPCLASS) { 87 case *post*; $LPLIB/process/post < $TMPFILE 88 case *gs!*; $LPLIB/process/post < $TMPFILE |$LPLIB/process/gspipe 89 case *gsijs!*; $LPLIB/process/post < $TMPFILE |$LPLIB/process/gspipeijs 90 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 91 } 92case HPJCL; 93 switch ($LPCLASS) { 94 case *HPJCL*; $LPLIB/process/noproc < $TMPFILE 95 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 96 } 97case daisy; 98 switch ($LPDEST) { 99 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 100 } 101case English short extended alef limbo [Aa]scii assembler c latin rc sh as mail email message/rfc822; 102 switch ($LPCLASS) { 103 case *post*; $LPLIB/process/ppost < $TMPFILE 104 case *gs!*; $LPLIB/process/ppost < $TMPFILE |$LPLIB/process/gspipe 105 case *gsijs!*; $LPLIB/process/ppost < $TMPFILE |$LPLIB/process/gspipeijs 106 case *canon*; $LPLIB/process/can $* < $TMPFILE 107 case *; echo Unrecognized class of line printer for $LPDEST >[1=2] 108 } 109 110case tiff; 111 switch ($LPCLASS) { 112 case *post*; $LPLIB/process/tiffpost $TMPFILE 113 case *gs!*; $LPLIB/process/tiffpost $TMPFILE |$LPLIB/process/gspipe 114 case *gsijs!*; $LPLIB/process/tiffpost $TMPFILE |$LPLIB/process/gspipeijs 115 case *; echo Unrecognized class of line printer for $LPDEST >[1=2] 116 } 117case PDF; 118 switch ($LPCLASS) { 119 case *post*; $LPLIB/process/pdfpost $TMPFILE 120 case *gs!*; $LPLIB/process/pdfgs $TMPFILE 121 case *gsijs!*; $LPLIB/process/pdfgsijs $TMPFILE 122 case *; echo Unrecognized class of line printer for $LPDEST >[1=2] 123 } 124case empty; 125 echo file is empty >[1=2] 126case cannot; 127 echo cannot open file >[1=2] 128case *; 129 echo $FILETYPE(2) file is improper for $LPDEST >[1=2] 130} 131wait 132rv=$status 133rm -f $TMPFILE 134#exit $status 135exit 136