]> mj.ucw.cz Git - misc.git/commitdiff
Added pstopsfix.
authorMartin Mares <mj@ucw.cz>
Tue, 8 Jan 2008 16:15:46 +0000 (17:15 +0100)
committerMartin Mares <mj@ucw.cz>
Tue, 8 Jan 2008 16:15:46 +0000 (17:15 +0100)
pstopsfix [new file with mode: 0755]

diff --git a/pstopsfix b/pstopsfix
new file mode 100755 (executable)
index 0000000..bdea303
--- /dev/null
+++ b/pstopsfix
@@ -0,0 +1,35 @@
+#!/usr/bin/perl
+# A filter for fixing PS generated by pstops
+# (c) 2008 Martin Mares <mj@ucw.cz>
+
+my $seen_procset = 0;
+my @procset = ();
+my $seen_setup = 0;
+while (<>) {
+       if (/^%%BeginProcSet: PStoPS/) {
+               $seen_procset = 1;
+       } elsif ($seen_procset == 1) {
+               if (/^%%EndProcSet/) {
+                       $seen_procset = 2;
+               } else {
+                       push @procset, $_;
+               }
+       } elsif (/^%%BeginSetup/) {
+               print;
+               if ($seen_procset == 2) {
+                       print "%%BeginFeature: PStoPS\n";
+                       print join("", @procset);
+                       print "%%EndFeature\n";
+                       $seen_procset = 3;
+               }
+               $seen_setup = 1;
+       } else {
+               print;
+       }
+}
+
+$seen_setup or die "No setup section seen\n";
+$seen_procset or die "No PStoPS procset seen\n";
+$seen_procset >= 2 or die "PStoPS procset not terminated\n";
+$seen_procset >= 3 or die "Setup section precedes PStoPS procset\n";
+exit 0;