#!/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 # type is really 'Compressed image' or 'plan 9 image' or # 'old plan 9 image' 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 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 empty echo file is empty >[1=2] case cannot echo cannot open file >[1=2] case English short extended alef limbo [Aa]scii assembler c latin rc sh \ as mail email message/rfc822 manual 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