#!/usr/local/plan9/bin/rc
if (~ $DEBUG 1) flag x +
# convert troff output to PostScript
PATCH='%%Patch from lp'
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 -P*;
	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];
		PATCH=$PATCH'
%%BeginFeature: *Select InputTray
[{ systemdict /languagelevel known {languagelevel 1 gt product (HP LaserJet 4Si) ne and} if {
	<< '$i' << /MediaType (tray'$i') >> >>
    << /MediaType (tray'$i') >> setpagedevice
   } {statusdict begin '$i' setpapertray end} ifelse
 } stopped cleartomark
%%EndFeature'
	case 11x17 [Ll]edger;
		PATCH=$PATCH'
%%BeginFeature: *Select Ledger
[{ systemdict /languagelevel known {languagelevel 1 gt product (HP LaserJet 4Si) ne and} if {
    << /PageSize [792 1224] >> setpagedevice
   } {statusdict begin '$i'tray end} ifelse
 } stopped cleartomark
%%EndFeature'
	case transparency vg viewgraph;
		PATCH=$PATCH'
%%BeginFeature: *Select Transparency
[{ << /MediaType (Transparency) >> setpagedevice
 } stopped cleartomark
%%EndFeature'
	case *;
		echo illegal option ''''-i $i'''' >[1=2]
	}
}
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'
}
PATCH=$PATCH'
%%EndPatch from lp
'
if (! ~ $PATCH '' -P*)
	PATCH=-P''''$PATCH'''';
switch ($LAND) {
case -p*;
case ''; LAND=-pp
case 1;	LAND=-pl
}
if (! ~ $COPIES '' -c*) COPIES=-c^$COPIES
if (! ~ $MAG '' -m*) MAG=-m^$MAG
if (! ~ $NPAG '' -n*) NPAG=-n^$NPAG
if (! ~ $XOFF '' -x*) XOFF=-x^$XOFF
if (! ~ $YOFF '' -y*) YOFF=-y^$YOFF
eval tr2post $XOFF $YOFF $COPIES $MAG $NPAG $LAND $OLIST $PATCH | $LPLIB/process/hpost
exit
