plan9fox/sys/lib/lp/process/psextract

61 lines
777 B
Bash
Executable file

#!/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;
}
'