| #!/usr/local/plan9/bin/rc |
| # Tries to determine what type of file you are printing and do the correct |
| # thing with it. |
| # It currently knows about images, 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 |
| } |
| |
| case *; echo $FILETYPE(2) -T$FILETYPE(5) output is improper for $LPDEST >[1=2] |
| } |
| case special; |
| switch ($FILETYPE(4)) { |
| case '#b'; switch ($LPCLASS) { |
| case *post*; $LPLIB/process/p9bitpost < $TMPFILE |
| } |
| |
| case *; echo $FILETYPE file is improper for $LPDEST >[1=2] |
| } |
| case Compressed plan old; # type is really 'Compressed image' or 'plan 9 image' |
| # or 'old plan 9 image' |
| switch ($LPCLASS) { |
| case *post*; $LPLIB/process/p9bitpost < $TMPFILE |
| } |
| case jpeg; |
| switch ($LPCLASS) { |
| case *post*; $LPLIB/process/jpgpost < $TMPFILE |
| } |
| |
| case GIF; |
| switch ($LPCLASS) { |
| case *post*; $LPLIB/process/gifpost < $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 *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 *post*; $LPLIB/process/dvipost $TMPFILE |
| case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] |
| } |
| case postscript; |
| switch ($LPCLASS) { |
| case *post*; $LPLIB/process/post < $TMPFILE |
| case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2] |
| } |
| case HPJCL; |
| switch ($LPCLASS) { |
| case *HPJCL*; $LPLIB/process/noproc < $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 limbo [Aa]scii ASCII assembler c latin rc sh as mail email message/rfc822; |
| switch ($LPCLASS) { |
| case *post*; $LPLIB/process/ppost < $TMPFILE |
| case *canon*; $LPLIB/process/can $* < $TMPFILE |
| case *; echo Unrecognized class of line printer for $LPDEST >[1=2] |
| } |
| |
| case tiff; |
| switch ($LPCLASS) { |
| case *post*; $LPLIB/process/tiffpost $TMPFILE |
| case *; echo Unrecognized class of line printer for $LPDEST >[1=2] |
| } |
| case PDF; |
| switch ($LPCLASS) { |
| case *post*; $LPLIB/process/pdfpost $TMPFILE |
| 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] |
| } |
| wait |
| rv=$status |
| rm -f $TMPFILE |
| #exit $status |
| exit |