Subversion Repositories planix.SVN

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/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