#!/usr/lib/plan9/bin/rc

# extract pages $OLIST from postscript on stdin

if(~ $OLIST '')
	exec cat

awk '
BEGIN {
	x=ENVIRON["OLIST"];
	gsub(/^-o/, "", x);
	na = split(x, a, ",");
	header = 1;
	goodpage = 0;
}

header || goodpage {
 	print
}

/^%%EndSetup[ 	]*$/ { header = 0; next }

/^%%Page:/ {
	header = 0;
	p=$2+0;
	goodpage = 0;
	for(i=1; i<=na; i++){
		if(aa=match(a[i], "-")){
			low=substr(a[i], 1, RSTART);
			high=substr(a[i], RSTART+RLENGTH);
			if(low == "")
				low = 0;
			else
				low = low+0;
			if(high == "")
				high = 100000;
			else
				high = high+0;
			if(low <= p && p <= high){
				goodpage = 1;
				break;
			}
		}else{
			if(a[i] == p){
				goodpage = 1;
				break;
			}
		}
	}
}

/^%%EndPage[ 	]*$/ {
	goodpage = 0;
}

/^%%Trailer[ 	]*$/ { 
	goodpage = 1;
}

'
