2011-03-30 13:53:33 +00:00
|
|
|
|
#!/bin/rc
|
|
|
|
|
# Tries to determine what type of file you are printing and do the correct
|
|
|
|
|
# thing with it.
|
2012-09-10 05:40:28 +00:00
|
|
|
|
# It currently knows about images, troff intermediate, HTML and ascii files.
|
2011-03-30 13:53:33 +00:00
|
|
|
|
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 short extended alef limbo [Aa]scii assembler c latin rc sh \
|
2012-09-10 05:40:28 +00:00
|
|
|
|
as mail email message/rfc822 manual
|
2011-03-30 13:53:33 +00:00
|
|
|
|
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]
|
|
|
|
|
}
|
2012-09-10 05:40:28 +00:00
|
|
|
|
case HTML
|
2012-09-10 06:10:30 +00:00
|
|
|
|
uhtml <$temp | html2ms | tbl | troff -ms | $proc/generic
|
2011-03-30 13:53:33 +00:00
|
|
|
|
case *
|
|
|
|
|
echo $type(2) file is improper for $LPDEST >[1=2]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
wait
|
|
|
|
|
rv=$status
|
|
|
|
|
rm -f $temp
|
|
|
|
|
# exit $rv
|
|
|
|
|
exit
|