xref: /plan9/sys/lib/lp/process/psextract (revision 0cbf10f5d18a93e2940d4a689d731d8150e9847e)
1*0cbf10f5SDavid du Colombier#!/bin/rc
2*0cbf10f5SDavid du Colombier
3*0cbf10f5SDavid du Colombier# extract pages $OLIST from postscript on stdin
4*0cbf10f5SDavid du Colombier
5*0cbf10f5SDavid du Colombierif(~ $OLIST '')
6*0cbf10f5SDavid du Colombier	exec cat
7*0cbf10f5SDavid du Colombier
8*0cbf10f5SDavid du Colombierawk '
9*0cbf10f5SDavid du ColombierBEGIN {
10*0cbf10f5SDavid du Colombier	x=ENVIRON["OLIST"];
11*0cbf10f5SDavid du Colombier	gsub(/^-o/, "", x);
12*0cbf10f5SDavid du Colombier	na = split(x, a, ",");
13*0cbf10f5SDavid du Colombier	header = 1;
14*0cbf10f5SDavid du Colombier	goodpage = 0;
15*0cbf10f5SDavid du Colombier}
16*0cbf10f5SDavid du Colombier
17*0cbf10f5SDavid du Colombierheader || goodpage {
18*0cbf10f5SDavid du Colombier 	print
19*0cbf10f5SDavid du Colombier}
20*0cbf10f5SDavid du Colombier
21*0cbf10f5SDavid du Colombier/^%%EndSetup[ 	]*$/ { header = 0; next }
22*0cbf10f5SDavid du Colombier
23*0cbf10f5SDavid du Colombier/^%%Page:/ {
24*0cbf10f5SDavid du Colombier	header = 0;
25*0cbf10f5SDavid du Colombier	p=$2+0;
26*0cbf10f5SDavid du Colombier	goodpage = 0;
27*0cbf10f5SDavid du Colombier	for(i=1; i<=na; i++){
28*0cbf10f5SDavid du Colombier		if(aa=match(a[i], "-")){
29*0cbf10f5SDavid du Colombier			low=substr(a[i], 1, RSTART);
30*0cbf10f5SDavid du Colombier			high=substr(a[i], RSTART+RLENGTH);
31*0cbf10f5SDavid du Colombier			if(low == "")
32*0cbf10f5SDavid du Colombier				low = 0;
33*0cbf10f5SDavid du Colombier			else
34*0cbf10f5SDavid du Colombier				low = low+0;
35*0cbf10f5SDavid du Colombier			if(high == "")
36*0cbf10f5SDavid du Colombier				high = 100000;
37*0cbf10f5SDavid du Colombier			else
38*0cbf10f5SDavid du Colombier				high = high+0;
39*0cbf10f5SDavid du Colombier			if(low <= p && p <= high){
40*0cbf10f5SDavid du Colombier				goodpage = 1;
41*0cbf10f5SDavid du Colombier				break;
42*0cbf10f5SDavid du Colombier			}
43*0cbf10f5SDavid du Colombier		}else{
44*0cbf10f5SDavid du Colombier			if(a[i] == p){
45*0cbf10f5SDavid du Colombier				goodpage = 1;
46*0cbf10f5SDavid du Colombier				break;
47*0cbf10f5SDavid du Colombier			}
48*0cbf10f5SDavid du Colombier		}
49*0cbf10f5SDavid du Colombier	}
50*0cbf10f5SDavid du Colombier}
51*0cbf10f5SDavid du Colombier
52*0cbf10f5SDavid du Colombier/^%%EndPage[ 	]*$/ {
53*0cbf10f5SDavid du Colombier	goodpage = 0;
54*0cbf10f5SDavid du Colombier}
55*0cbf10f5SDavid du Colombier
56*0cbf10f5SDavid du Colombier/^%%Trailer[ 	]*$/ {
57*0cbf10f5SDavid du Colombier	goodpage = 1;
58*0cbf10f5SDavid du Colombier}
59*0cbf10f5SDavid du Colombier
60*0cbf10f5SDavid du Colombier'
61