13e12c5d1SDavid du Colombier#!/bin/rc 23e12c5d1SDavid du Colombier# Tries to determine what type of file you are printing and do the correct 33e12c5d1SDavid du Colombier# thing with it. 47dd7cddfSDavid du Colombier# It currently knows about images, troff intermediate, and ascii files. 501a344a2SDavid du Colombierrfork e 601a344a2SDavid du Colombiertemp=/tmp/lp$pid 701a344a2SDavid du Colombierfn sigexit { rm -f $temp } 801a344a2SDavid du Colombierproc=$LPLIB/process 901a344a2SDavid du Colombier 1001a344a2SDavid du Colombierif (! ~ $DEBUG '') 1101a344a2SDavid du Colombier flag x + 1201a344a2SDavid du Colombiercat >$temp 1301a344a2SDavid du Colombier 1401a344a2SDavid du Colombiertype=`{file $temp} 1501a344a2SDavid du Colombierswitch ($type(2)) { 1601a344a2SDavid du Colombiercase troff 173e12c5d1SDavid du Colombier switch ($LPCLASS) { 1801a344a2SDavid du Colombier case *Latin1* *post* *opost* 1901a344a2SDavid du Colombier switch ($type(5)) { 2001a344a2SDavid du Colombier # Latin1 is for compatibility with old research UNIX systems, 2101a344a2SDavid du Colombier # doesn't work on Plan 9 2201a344a2SDavid du Colombier case Latin1 post 2301a344a2SDavid du Colombier tcs -s -f utf -t latin1 <$temp | $proc/dpost 2401a344a2SDavid du Colombier case UTF 2501a344a2SDavid du Colombier $proc/tr2post <$temp 263e12c5d1SDavid du Colombier } 2701a344a2SDavid du Colombier case *gs!* *gsijs!* 2801a344a2SDavid du Colombier switch ($type(5)) { 2901a344a2SDavid du Colombier # Latin1 is for compatibility with old research UNIX systems, 3001a344a2SDavid du Colombier # doesn't work on Plan 9 3101a344a2SDavid du Colombier case Latin1 post 3201a344a2SDavid du Colombier tcs -s -f utf -t latin1 <$temp | $proc/dpost | 3301a344a2SDavid du Colombier $proc/gspipe 3401a344a2SDavid du Colombier case UTF 3501a344a2SDavid du Colombier $proc/tr2post <$temp | $proc/gspipe 3659cc4ca5SDavid du Colombier } 3701a344a2SDavid du Colombier case * 3801a344a2SDavid du Colombier echo $type(2) -T$type(5) output is improper for $LPDEST >[1=2] 393e12c5d1SDavid du Colombier } 4001a344a2SDavid du Colombiercase special 4101a344a2SDavid du Colombier switch ($type(4)) { 4201a344a2SDavid du Colombier case '#b' 433e12c5d1SDavid du Colombier switch ($LPCLASS) { 4401a344a2SDavid du Colombier case *post* 4501a344a2SDavid du Colombier $proc/p9bitpost <$temp 4601a344a2SDavid du Colombier case *gs!* 4701a344a2SDavid du Colombier $proc/p9bitpost <$temp | $proc/gspipe 4801a344a2SDavid du Colombier case *gsijs!* 4901a344a2SDavid du Colombier $proc/p9bitpost <$temp | $proc/gspipeijs 503e12c5d1SDavid du Colombier } 5101a344a2SDavid du Colombier case * 5201a344a2SDavid du Colombier echo $type file is improper for $LPDEST >[1=2] 5301a344a2SDavid du Colombier } 54c4c15b37SDavid du Colombiercase Compressed plan old subfont 5501a344a2SDavid du Colombier # type is really 'Compressed image' or 'plan 9 image' or 5601a344a2SDavid du Colombier # 'old plan 9 image' 57c4c15b37SDavid du Colombier # 'subfont' is to cope with a bug in png (writing wrong length), 58c4c15b37SDavid du Colombier # 6 may 2008 597dd7cddfSDavid du Colombier switch ($LPCLASS) { 6001a344a2SDavid du Colombier case *post* 6101a344a2SDavid du Colombier $proc/p9bitpost <$temp 6201a344a2SDavid du Colombier case *gs!* 6301a344a2SDavid du Colombier $proc/p9bitpost <$temp | $proc/gspipe 6401a344a2SDavid du Colombier case *gsijs!* 6501a344a2SDavid du Colombier $proc/p9bitpost <$temp | $proc/gspipeijs 667dd7cddfSDavid du Colombier } 6701a344a2SDavid du Colombiercase jpeg 687dd7cddfSDavid du Colombier switch ($LPCLASS) { 6901a344a2SDavid du Colombier case *post* 7001a344a2SDavid du Colombier $proc/jpgpost <$temp 7101a344a2SDavid du Colombier case *gs!* 7201a344a2SDavid du Colombier $proc/jpgpost <$temp | $proc/gspipe 7301a344a2SDavid du Colombier case *gsijs!* 7401a344a2SDavid du Colombier $proc/jpgpost <$temp | $proc/gspipeijs 757dd7cddfSDavid du Colombier } 7601a344a2SDavid du Colombiercase GIF 7701a344a2SDavid du Colombier switch ($LPCLASS) { 7801a344a2SDavid du Colombier case *post* 7901a344a2SDavid du Colombier $proc/gifpost <$temp 8001a344a2SDavid du Colombier case *gs!* 8101a344a2SDavid du Colombier $proc/gifpost <$temp | $proc/gspipe 8201a344a2SDavid du Colombier case *gsijs!* 8301a344a2SDavid du Colombier $proc/gifpost <$temp | $proc/gspipeijs 8401a344a2SDavid du Colombier } 850dc12738SDavid du Colombiercase PNG 860dc12738SDavid du Colombier switch ($LPCLASS) { 870dc12738SDavid du Colombier case *post* 880dc12738SDavid du Colombier $proc/pngpost <$temp 890dc12738SDavid du Colombier case *gs!* 900dc12738SDavid du Colombier $proc/pngpost <$temp | $proc/gspipe 910dc12738SDavid du Colombier case *gsijs!* 920dc12738SDavid du Colombier $proc/pngpost <$temp | $proc/gspipeijs 930dc12738SDavid du Colombier } 940dc12738SDavid du Colombiercase ccitt-g31 95219b2ee8SDavid du Colombier switch ($LPCLASS) { 9601a344a2SDavid du Colombier case *post* 9701a344a2SDavid du Colombier $proc/g3post <$temp 9801a344a2SDavid du Colombier case *gs!* 9901a344a2SDavid du Colombier $proc/g3post <$temp | $proc/gspipe 10001a344a2SDavid du Colombier case *gsijs!* 10101a344a2SDavid du Colombier $proc/g3post <$temp | $proc/gspipeijs 102219b2ee8SDavid du Colombier } 10301a344a2SDavid du Colombiercase bitmap 104219b2ee8SDavid du Colombier # bitmap for research UNIX compatibility, does not work on Plan 9. 1053e12c5d1SDavid du Colombier switch ($LPCLASS) { 10601a344a2SDavid du Colombier case *post* 10701a344a2SDavid du Colombier $proc/bpost <$temp 10801a344a2SDavid du Colombier case *mhcc* 10901a344a2SDavid du Colombier $proc/bpost <$temp | $proc/mhcc 11001a344a2SDavid du Colombier case * 11101a344a2SDavid du Colombier echo $type(2) file is improper for $LPDEST >[1=2] 1123e12c5d1SDavid du Colombier } 11301a344a2SDavid du Colombiercase tex 11401a344a2SDavid du Colombier mv $temp $temp.dvi 11501a344a2SDavid du Colombier temp=$temp.dvi 1163e12c5d1SDavid du Colombier switch ($LPCLASS) { 11701a344a2SDavid du Colombier case *post* 11801a344a2SDavid du Colombier $proc/dvipost $temp 11901a344a2SDavid du Colombier case *gs!* 12001a344a2SDavid du Colombier $proc/dvipost $temp | $proc/gspipe 12101a344a2SDavid du Colombier case *gsijs!* 12201a344a2SDavid du Colombier $proc/dvipost $temp | $proc/gspipeijs 12301a344a2SDavid du Colombier case * 12401a344a2SDavid du Colombier echo $type(2) file is improper for $LPDEST >[1=2] 1253e12c5d1SDavid du Colombier } 12601a344a2SDavid du Colombiercase postscript 1273e12c5d1SDavid du Colombier switch ($LPCLASS) { 12801a344a2SDavid du Colombier case *post* 12901a344a2SDavid du Colombier $proc/post <$temp 13001a344a2SDavid du Colombier case *gs!* 13101a344a2SDavid du Colombier $proc/post <$temp | $proc/gspipe 13201a344a2SDavid du Colombier case *gsijs!* 13301a344a2SDavid du Colombier $proc/post <$temp | $proc/gspipeijs 13401a344a2SDavid du Colombier case * 13501a344a2SDavid du Colombier echo $type(2) file is improper for $LPDEST >[1=2] 1363e12c5d1SDavid du Colombier } 1373b86f2f8SDavid du Colombiercase HPJCL HP 1387dd7cddfSDavid du Colombier switch ($LPCLASS) { 13901a344a2SDavid du Colombier case *HPJCL* 14001a344a2SDavid du Colombier $proc/noproc <$temp 14101a344a2SDavid du Colombier case * 14201a344a2SDavid du Colombier echo $type(2) file is improper for $LPDEST >[1=2] 1437dd7cddfSDavid du Colombier } 14401a344a2SDavid du Colombiercase daisy 1453e12c5d1SDavid du Colombier switch ($LPDEST) { 14601a344a2SDavid du Colombier case * 14701a344a2SDavid du Colombier echo $type(2) file is improper for $LPDEST >[1=2] 1483e12c5d1SDavid du Colombier } 14901a344a2SDavid du Colombiercase tiff 1503e12c5d1SDavid du Colombier switch ($LPCLASS) { 15101a344a2SDavid du Colombier case *post* 15201a344a2SDavid du Colombier $proc/tiffpost $temp 15301a344a2SDavid du Colombier case *gs!* 15401a344a2SDavid du Colombier $proc/tiffpost $temp | $proc/gspipe 15501a344a2SDavid du Colombier case *gsijs!* 15601a344a2SDavid du Colombier $proc/tiffpost $temp | $proc/gspipeijs 15701a344a2SDavid du Colombier case * 15801a344a2SDavid du Colombier echo Unrecognized class of line printer for $LPDEST >[1=2] 15901a344a2SDavid du Colombier } 16001a344a2SDavid du Colombiercase PDF 16101a344a2SDavid du Colombier switch ($LPCLASS) { 162ea005eafSDavid du Colombier case *pdf* 163ea005eafSDavid du Colombier# if (~ $LPCLASS *duplex* && ~ $LPCLASS *HPJCL*) 164ea005eafSDavid du Colombier# echo -n '&l1S' # HP JCL: duplex on 165ea005eafSDavid du Colombier if (~ $LPCLASS *duplex* && ~ $LPCLASS *HPJCL*) { 166ea005eafSDavid du Colombier echo '%-12345X@PJL DEFAULT DUPLEX=ON' # HP PJL 167ea005eafSDavid du Colombier echo '%-12345X' 168ea005eafSDavid du Colombier echo '%-12345X@PJL DEFAULT PS:MBT=ON' # `memory boost' 169ea005eafSDavid du Colombier echo '%-12345X' 170ea005eafSDavid du Colombier } 171ea005eafSDavid du Colombier cat $temp # pass pdf unaltered to pdf printer 17201a344a2SDavid du Colombier case *post* 17301a344a2SDavid du Colombier $proc/pdfpost $temp 17401a344a2SDavid du Colombier case *gs!* 17501a344a2SDavid du Colombier $proc/pdfgs $temp 17601a344a2SDavid du Colombier case *gsijs!* 17701a344a2SDavid du Colombier $proc/pdfgsijs $temp 17801a344a2SDavid du Colombier case * 17901a344a2SDavid du Colombier echo Unrecognized class of line printer for $LPDEST >[1=2] 18001a344a2SDavid du Colombier } 18114dd39c1SDavid du Colombiercase microsoft # office document 18214dd39c1SDavid du Colombier switch ($LPCLASS) { 18314dd39c1SDavid du Colombier case *post* 18414dd39c1SDavid du Colombier doc2ps $temp | $proc/post 18514dd39c1SDavid du Colombier case *gs!* 18614dd39c1SDavid du Colombier doc2ps $temp | $proc/post | $proc/gspipe 18714dd39c1SDavid du Colombier case *gsijs!* 18814dd39c1SDavid du Colombier doc2ps $temp | $proc/post | $proc/gspipeijs 18914dd39c1SDavid du Colombier case * 19014dd39c1SDavid du Colombier echo $type(2) file is improper for $LPDEST >[1=2] 19114dd39c1SDavid du Colombier } 19201a344a2SDavid du Colombiercase empty 19301a344a2SDavid du Colombier echo file is empty >[1=2] 19401a344a2SDavid du Colombiercase cannot 19501a344a2SDavid du Colombier echo cannot open file >[1=2] 196*d40255d8SDavid du Colombiercase English Cyrillic short extended alef limbo [Aa]scii assembler c latin rc sh \ 197c4c15b37SDavid du Colombier as mail email message/rfc822 manual HTML 19801a344a2SDavid du Colombier switch ($LPCLASS) { 19901a344a2SDavid du Colombier case *post* 20001a344a2SDavid du Colombier $proc/ppost <$temp 20101a344a2SDavid du Colombier case *gs!* 20201a344a2SDavid du Colombier $proc/ppost <$temp | $proc/gspipe 20301a344a2SDavid du Colombier case *gsijs!* 20401a344a2SDavid du Colombier $proc/ppost <$temp | $proc/gspipeijs 20501a344a2SDavid du Colombier case *canon* 20601a344a2SDavid du Colombier $proc/can $* <$temp 20701a344a2SDavid du Colombier case * 20801a344a2SDavid du Colombier echo Unrecognized class of line printer for $LPDEST >[1=2] 20901a344a2SDavid du Colombier } 21001a344a2SDavid du Colombiercase * 21101a344a2SDavid du Colombier echo $type(2) file is improper for $LPDEST >[1=2] 2129a747e4fSDavid du Colombier} 2139a747e4fSDavid du Colombier 2147dd7cddfSDavid du Colombierwait 2153e12c5d1SDavid du Colombierrv=$status 21601a344a2SDavid du Colombierrm -f $temp 21701a344a2SDavid du Colombier# exit $rv 2189a747e4fSDavid du Colombierexit 219