plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

psextract (793B)


      1 #!/usr/local/plan9/bin/rc
      2 
      3 # extract pages $OLIST from postscript on stdin
      4 
      5 if(~ $OLIST '')
      6 	exec cat
      7 
      8 awk '
      9 BEGIN {
     10 	x=ENVIRON["OLIST"];
     11 	gsub(/^-o/, "", x);
     12 	na = split(x, a, ",");
     13 	header = 1;
     14 	goodpage = 0;
     15 }
     16 
     17 header || 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 '