#!/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 etemp=/tmp/lp$pidfn sigexit { rm -f $temp }proc=$LPLIB/processif (! ~ $DEBUG '') flag x +cat >$temptype=`{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]}waitrv=$statusrm -f $temp# exit $rvexit
#!/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