Blob


1 #!/usr/local/plan9/bin/rc
2 # Tries to determine what type of file you are printing and do the correct
3 # thing with it.
4 # It currently knows about images, troff intermediate, and ascii files.
5 TMPFILE=/tmp/lp$pid
6 fn sigexit { rm -f $TMPFILE; }
7 if (! ~ $DEBUG '') flag x +
8 if (~ $LPCLASS *nohead*) NOHEAD=1
9 if (~ $LPCLASS *duplex*) DUPLEX=1
10 cat >$TMPFILE
11 FILETYPE=`{file $TMPFILE}
12 switch ($FILETYPE(2)) {
13 case troff;
14 switch ($LPCLASS) {
15 case *Latin1* *post* *opost*; switch ($FILETYPE(5)) {
16 # Latin1 is for compatibility with old research UNIX systems, doesn't work on Plan 9
17 case Latin1 post; tcs -s -f utf -t latin1 < $TMPFILE |$LPLIB/process/dpost
19 case UTF; $LPLIB/process/tr2post < $TMPFILE
20 }
22 case *; echo $FILETYPE(2) -T$FILETYPE(5) output is improper for $LPDEST >[1=2]
23 }
24 case special;
25 switch ($FILETYPE(4)) {
26 case '#b'; switch ($LPCLASS) {
27 case *post*; $LPLIB/process/p9bitpost < $TMPFILE
28 }
30 case *; echo $FILETYPE file is improper for $LPDEST >[1=2]
31 }
32 case Compressed plan old; # type is really 'Compressed image' or 'plan 9 image'
33 # or 'old plan 9 image'
34 switch ($LPCLASS) {
35 case *post*; $LPLIB/process/p9bitpost < $TMPFILE
36 }
37 case jpeg;
38 switch ($LPCLASS) {
39 case *post*; $LPLIB/process/jpgpost < $TMPFILE
40 }
42 case GIF;
43 switch ($LPCLASS) {
44 case *post*; $LPLIB/process/gifpost < $TMPFILE
45 }
47 case ccitt-g31;
48 switch ($LPCLASS) {
49 case *post*; $LPLIB/process/g3post < $TMPFILE
50 }
52 # bitmap for research UNIX compatibility, does not work on Plan 9.
53 case bitmap;
54 switch ($LPCLASS) {
55 case *post*; $LPLIB/process/bpost < $TMPFILE
56 case *mhcc*; $LPLIB/process/bpost < $TMPFILE | $LPLIB/process/mhcc
57 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
58 }
59 case tex;
60 mv $TMPFILE $TMPFILE.dvi
61 TMPFILE=$TMPFILE.dvi
62 switch ($LPCLASS) {
63 case *post*; $LPLIB/process/dvipost $TMPFILE
64 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
65 }
66 case postscript;
67 switch ($LPCLASS) {
68 case *post*; $LPLIB/process/post < $TMPFILE
69 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
70 }
71 case HPJCL;
72 switch ($LPCLASS) {
73 case *HPJCL*; $LPLIB/process/noproc < $TMPFILE
74 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
75 }
76 case daisy;
77 switch ($LPDEST) {
78 case *; echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
79 }
80 case English short extended alef limbo [Aa]scii ASCII assembler c latin rc sh as mail email message/rfc822;
81 switch ($LPCLASS) {
82 case *post*; $LPLIB/process/ppost < $TMPFILE
83 case *canon*; $LPLIB/process/can $* < $TMPFILE
84 case *; echo Unrecognized class of line printer for $LPDEST >[1=2]
85 }
87 case tiff;
88 switch ($LPCLASS) {
89 case *post*; $LPLIB/process/tiffpost $TMPFILE
90 case *; echo Unrecognized class of line printer for $LPDEST >[1=2]
91 }
92 case PDF;
93 switch ($LPCLASS) {
94 case *post*; $LPLIB/process/pdfpost $TMPFILE
95 case *; echo Unrecognized class of line printer for $LPDEST >[1=2]
96 }
97 case empty;
98 echo file is empty >[1=2]
99 case cannot;
100 echo cannot open file >[1=2]
101 case *;
102 echo $FILETYPE(2) file is improper for $LPDEST >[1=2]
104 wait
105 rv=$status
106 rm -f $TMPFILE
107 #exit $status
108 exit