diff options
Diffstat (limited to 'lp/process/dvipost')
-rwxr-xr-x | lp/process/dvipost | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/lp/process/dvipost b/lp/process/dvipost new file mode 100755 index 00000000..520aa395 --- /dev/null +++ b/lp/process/dvipost @@ -0,0 +1,120 @@ +#!/usr/local/plan9/bin/rc +if (~ $DEBUG 1) flag x + +# convert Tex dvi to PostScript +PATCH='%!PS-Adobe-2.0' +switch ($LPCLASS) { +case *hp4simx*; + PATCH=$PATCH' +%% set the default papertray to be the lower tray for HP4siMX printers + statusdict begin defaultpapertray end 1 ne { + statusdict begin + 1 setdefaultpapertray + end + } if' +} +for (i in `{echo $IBIN|awk -F, '{ n=split($0, a, ","); for (i=1;i<=n;i++) print a[i]; }'}) { + switch ($i) { + case man manual manualfeed; + PATCH=$PATCH' +%%BeginFeature: *Select ManualFeed +[{ systemdict /languagelevel known {languagelevel 1 gt product (HP LaserJet 4Si) ne and} if { + << /ManualFeed true >> setpagedevice + } {statusdict begin /manualfeed true def end} ifelse + } stopped cleartomark +%%EndFeature' + case simplex; + DUPLEX=0 + case [0-9]; + switch ($LPCLASS) { + case *post2*; + switch ($i) { + case 0; PATCH=$PATCH' +systemdict/languagelevel known {languagelevel 2 eq {true (0) startjob dup not +{/exitserver errordict/invalidaccess get exec}if}{false}ifelse}{false}ifelse +{ + currentpagedevice/InputAttributes get {0 get} stopped + {pop pop} {2 dict dup /InputAttributes 1 dict dup + /Priority[0] put put dup /TraySwitch false put setpagedevice} ifelse + false (0) startjob pop +} if' + case 1; PATCH=$PATCH' +systemdict/languagelevel known {languagelevel 2 eq {true (0) startjob dup not +{/exitserver errordict/invalidaccess get exec}if}{false}ifelse}{false}ifelse +{ + currentpagedevice/InputAttributes get {1 get} stopped + {pop pop} {2 dict dup /InputAttributes 1 dict dup + /Priority[1] put put dup /TraySwitch false put setpagedevice} ifelse + false (0) startjob pop +} if' + } + case *; PATCH=$PATCH' +statusdict begin $i setpapertray end' + } + case 11x17 ledger; PATCH=$PATCH' +statusdict begin '$i'tray end' + } +} +if (! ~ $#DUPLEX 0) { + switch ($DUPLEX) { + case 0; + DUPLEX=false + case 1; + DUPLEX=true + } + PATCH=$PATCH' +%%BeginFeature: *Set DuplexMode +[{ systemdict /languagelevel known {languagelevel 1 gt product (HP LaserJet 4Si) ne and} if { + << /Duplex '$DUPLEX' >> setpagedevice + } {statusdict /setduplexmode known {statusdict begin '$DUPLEX' setduplexmode end} if} ifelse + } stopped cleartomark +%%EndFeature' +} +if (! ~ $#LAND 0 && ~ $LAND 1) + LAND='-tlandscape' +if (~ $LPCLASS *reverse*) { + switch ($REVERSE) { + case ''; + REVFLAG=1 + case 1; + REVFLAG='' + } +} +switch ($LPCLASS) { +case *post100*; + DPI='-Z -D100' +case *600dpi*; + DPI='-Z -D600' +case *1200dpi*; + DPI='-Z -D1200' +case *; + DPI='' +} +if (! ~ $COPIES '' -c*) COPIES=-c^$COPIES +if (! ~ $OLIST '' '='*) OLIST=`{echo $OLIST | sed 's/-o/=/' | sed 's/-/:/g' } +switch ($REVFLAG) { +case 1; + echo $PATCH + switch ($OLIST) { + case ''; + eval dvips -q -f $DPI -r $LAND $COPIES $1 + case *; + DVIFILE=/tmp/dv$pid.dvi + dviselect -s $OLIST $1 > $DVIFILE + eval dvips -q -f $DPI -r $LAND $COPIES $DVIFILE + rm -f $DVIFILE + } + $LPLIB/process/hpost </dev/null +case ''; + $LPLIB/process/hpost </dev/null + echo $PATCH + switch ($OLIST) { + case ''; + eval dvips -q -f $DPI $LAND $COPIES $1 + case *; + DVIFILE=/tmp/dv$pid.dvi + dviselect -s $OLIST $1 > $DVIFILE + eval dvips -q -f $DPI $LAND $COPIES $DVIFILE + rm -f $DVIFILE + } +} +exit |