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