xref: /plan9/sys/lib/lp/process/dvipost (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1#!/bin/rc
2if (~ $DEBUG 1) flag x +
3# convert Tex dvi to PostScript
4PATCH='%!PS-Adobe-2.0'
5switch ($LPCLASS) {
6case *hp4simx*;
7	PATCH=$PATCH'
8%% set the default papertray to be the lower tray for HP4siMX printers
9	statusdict begin defaultpapertray end 1 ne {
10		statusdict begin
11			1 setdefaultpapertray
12		end
13	} if'
14}
15for (i in `{echo $IBIN|awk -F, '{ n=split($0, a, ","); for (i=1;i<=n;i++) print a[i]; }'}) {
16	switch ($i) {
17	case man manual manualfeed;
18		PATCH=$PATCH'
19%%BeginFeature: *Select ManualFeed
20[{ systemdict /languagelevel known {languagelevel 1 gt product (HP LaserJet 4Si) ne and} if {
21    << /ManualFeed true >> setpagedevice
22   } {statusdict begin /manualfeed true def end} ifelse
23 } stopped cleartomark
24%%EndFeature'
25	case simplex;
26		DUPLEX=0
27	case [0-9];
28		switch ($LPCLASS) {
29		case *post2*;
30			switch ($i) {
31			case 0; PATCH=$PATCH'
32systemdict/languagelevel known {languagelevel 2 eq {true (0) startjob dup not
33{/exitserver errordict/invalidaccess get exec}if}{false}ifelse}{false}ifelse
34{
35  currentpagedevice/InputAttributes get {0 get} stopped
36  {pop pop} {2 dict dup /InputAttributes 1 dict dup
37  /Priority[0] put put dup /TraySwitch false put setpagedevice} ifelse
38  false (0) startjob pop
39} if'
40			case 1; PATCH=$PATCH'
41systemdict/languagelevel known {languagelevel 2 eq {true (0) startjob dup not
42{/exitserver errordict/invalidaccess get exec}if}{false}ifelse}{false}ifelse
43{
44  currentpagedevice/InputAttributes get {1 get} stopped
45  {pop pop} {2 dict dup /InputAttributes 1 dict dup
46  /Priority[1] put put dup /TraySwitch false put setpagedevice} ifelse
47  false (0) startjob pop
48} if'
49			}
50		case *;	PATCH=$PATCH'
51statusdict begin $i setpapertray end'
52		}
53	case 11x17 ledger;	PATCH=$PATCH'
54statusdict begin '$i'tray end'
55	}
56}
57if (! ~ $#DUPLEX 0) {
58	switch ($DUPLEX) {
59	case 0;
60		DUPLEX=false
61	case 1;
62		DUPLEX=true
63	}
64	PATCH=$PATCH'
65%%BeginFeature: *Set DuplexMode
66[{ systemdict /languagelevel known {languagelevel 1 gt product (HP LaserJet 4Si) ne and} if {
67    << /Duplex '$DUPLEX'  >> setpagedevice
68  } {statusdict /setduplexmode known {statusdict begin '$DUPLEX' setduplexmode end} if} ifelse
69 } stopped cleartomark
70%%EndFeature'
71}
72if (! ~ $#LAND 0 && ~ $LAND 1)
73	LAND='-tlandscape'
74if (~ $LPCLASS *reverse*) {
75	switch ($REVERSE) {
76	case '';
77		REVFLAG=1
78	case 1;
79		REVFLAG=''
80	}
81}
82switch ($LPCLASS) {
83case *post100*;
84	DPI='-Z -D100'
85case *600dpi*;
86	DPI='-Z -D600'
87case *1200dpi*;
88	DPI='-Z -D1200'
89case *;
90	DPI=''
91}
92if (! ~ $COPIES '' -c*) COPIES=-c^$COPIES
93if (! ~ $OLIST '' '='*) OLIST=`{echo $OLIST | sed 's/-o/=/' | sed 's/-/:/g' }
94switch ($REVFLAG) {
95case 1;
96	echo $PATCH
97	switch ($OLIST) {
98	case '';
99		eval dvips -q -f $DPI -r $LAND $COPIES $1
100	case *;
101		DVIFILE=/tmp/dv$pid.dvi
102		dviselect -s $OLIST $1 > $DVIFILE
103		eval dvips -q -f $DPI -r $LAND $COPIES $DVIFILE
104		rm -f $DVIFILE
105	}
106	$LPLIB/process/hpost </dev/null
107case '';
108	$LPLIB/process/hpost </dev/null
109	echo $PATCH
110	switch ($OLIST) {
111	case '';
112		eval dvips -q -f $DPI $LAND $COPIES $1
113	case *;
114		DVIFILE=/tmp/dv$pid.dvi
115		dviselect -s $OLIST $1 > $DVIFILE
116		eval dvips -q -f $DPI $LAND $COPIES $DVIFILE
117		rm -f $DVIFILE
118	}
119}
120exit
121