123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- #!/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.
- rfork e
- temp=/tmp/lp$pid
- fn sigexit { rm -f $temp }
- proc=$LPLIB/process
- if (! ~ $DEBUG '')
- flag x +
- cat >$temp
- type=`{file $temp}
- switch ($type(2)) {
- case troff
- switch ($LPCLASS) {
- case *Latin1* *post* *opost*
- switch ($type(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 <$temp | $proc/dpost
- case UTF
- $proc/tr2post <$temp
- }
- case *gs!* *gsijs!*
- switch ($type(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 <$temp | $proc/dpost |
- $proc/gspipe
- case UTF
- $proc/tr2post <$temp | $proc/gspipe
- }
- case *
- echo $type(2) -T$type(5) output is improper for $LPDEST >[1=2]
- }
- case special
- switch ($type(4)) {
- case '#b'
- switch ($LPCLASS) {
- case *post*
- $proc/p9bitpost <$temp
- case *gs!*
- $proc/p9bitpost <$temp | $proc/gspipe
- case *gsijs!*
- $proc/p9bitpost <$temp | $proc/gspipeijs
- }
- case *
- echo $type file is improper for $LPDEST >[1=2]
- }
- case Compressed plan old subfont
- # type is really 'Compressed image' or 'plan 9 image' or
- # 'old plan 9 image'
- # 'subfont' is to cope with a bug in png (writing wrong length),
- # 6 may 2008
- switch ($LPCLASS) {
- case *post*
- $proc/p9bitpost <$temp
- case *gs!*
- $proc/p9bitpost <$temp | $proc/gspipe
- case *gsijs!*
- $proc/p9bitpost <$temp | $proc/gspipeijs
- }
- case jpeg
- switch ($LPCLASS) {
- case *post*
- $proc/jpgpost <$temp
- case *gs!*
- $proc/jpgpost <$temp | $proc/gspipe
- case *gsijs!*
- $proc/jpgpost <$temp | $proc/gspipeijs
- }
- case GIF
- switch ($LPCLASS) {
- case *post*
- $proc/gifpost <$temp
- case *gs!*
- $proc/gifpost <$temp | $proc/gspipe
- case *gsijs!*
- $proc/gifpost <$temp | $proc/gspipeijs
- }
- case PNG
- switch ($LPCLASS) {
- case *post*
- $proc/pngpost <$temp
- case *gs!*
- $proc/pngpost <$temp | $proc/gspipe
- case *gsijs!*
- $proc/pngpost <$temp | $proc/gspipeijs
- }
- case ccitt-g31
- switch ($LPCLASS) {
- case *post*
- $proc/g3post <$temp
- case *gs!*
- $proc/g3post <$temp | $proc/gspipe
- case *gsijs!*
- $proc/g3post <$temp | $proc/gspipeijs
- }
- case bitmap
- # bitmap for research UNIX compatibility, does not work on Plan 9.
- switch ($LPCLASS) {
- case *post*
- $proc/bpost <$temp
- case *mhcc*
- $proc/bpost <$temp | $proc/mhcc
- case *
- echo $type(2) file is improper for $LPDEST >[1=2]
- }
- case tex
- mv $temp $temp.dvi
- temp=$temp.dvi
- switch ($LPCLASS) {
- case *post*
- $proc/dvipost $temp
- case *gs!*
- $proc/dvipost $temp | $proc/gspipe
- case *gsijs!*
- $proc/dvipost $temp | $proc/gspipeijs
- case *
- echo $type(2) file is improper for $LPDEST >[1=2]
- }
- case postscript
- switch ($LPCLASS) {
- case *post*
- $proc/post <$temp
- case *gs!*
- $proc/post <$temp | $proc/gspipe
- case *gsijs!*
- $proc/post <$temp | $proc/gspipeijs
- case *
- echo $type(2) file is improper for $LPDEST >[1=2]
- }
- case HPJCL HP
- switch ($LPCLASS) {
- case *HPJCL*
- $proc/noproc <$temp
- case *
- echo $type(2) file is improper for $LPDEST >[1=2]
- }
- case daisy
- switch ($LPDEST) {
- case *
- echo $type(2) file is improper for $LPDEST >[1=2]
- }
- case tiff
- switch ($LPCLASS) {
- case *post*
- $proc/tiffpost $temp
- case *gs!*
- $proc/tiffpost $temp | $proc/gspipe
- case *gsijs!*
- $proc/tiffpost $temp | $proc/gspipeijs
- case *
- echo Unrecognized class of line printer for $LPDEST >[1=2]
- }
- case PDF
- switch ($LPCLASS) {
- case *pdf*
- # if (~ $LPCLASS *duplex* && ~ $LPCLASS *HPJCL*)
- # echo -n '&l1S' # HP JCL: duplex on
- if (~ $LPCLASS *duplex* && ~ $LPCLASS *HPJCL*) {
- echo '%-12345X@PJL DEFAULT DUPLEX=ON' # HP PJL
- echo '%-12345X'
- echo '%-12345X@PJL DEFAULT PS:MBT=ON' # `memory boost'
- echo '%-12345X'
- }
- cat $temp # pass pdf unaltered to pdf printer
- case *post*
- $proc/pdfpost $temp
- case *gs!*
- $proc/pdfgs $temp
- case *gsijs!*
- $proc/pdfgsijs $temp
- case *
- echo Unrecognized class of line printer for $LPDEST >[1=2]
- }
- case microsoft # office document
- switch ($LPCLASS) {
- case *post*
- doc2ps $temp | $proc/post
- case *gs!*
- doc2ps $temp | $proc/post | $proc/gspipe
- case *gsijs!*
- doc2ps $temp | $proc/post | $proc/gspipeijs
- case *
- echo $type(2) file is improper for $LPDEST >[1=2]
- }
- case empty
- echo file is empty >[1=2]
- case cannot
- echo cannot open file >[1=2]
- case English Cyrillic short extended alef limbo [Aa]scii assembler c latin rc sh \
- as mail email message/rfc822 manual HTML
- switch ($LPCLASS) {
- case *post*
- $proc/ppost <$temp
- case *gs!*
- $proc/ppost <$temp | $proc/gspipe
- case *gsijs!*
- $proc/ppost <$temp | $proc/gspipeijs
- case *canon*
- $proc/can $* <$temp
- case *
- echo Unrecognized class of line printer for $LPDEST >[1=2]
- }
- case *
- echo $type(2) file is improper for $LPDEST >[1=2]
- }
- wait
- rv=$status
- rm -f $temp
- # exit $rv
- exit
|