summaryrefslogtreecommitdiff
path: root/Master/texmf/scripts/psutils/psmerge.pl
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2011-01-10 11:11:17 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2011-01-10 11:11:17 +0000
commit30be42ace99ca88d8a40301534b9f249d1b09d8c (patch)
tree0fffe7facd4c43fd76a78c11a44f1a52310f202a /Master/texmf/scripts/psutils/psmerge.pl
parenteacdb9d26d0740b92e709b25cd63d883c41162c4 (diff)
chktex, ps2eps, psutils: install linked perl scripts
update ps2eps to 1.68 git-svn-id: svn://tug.org/texlive/trunk@21003 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf/scripts/psutils/psmerge.pl')
-rwxr-xr-xMaster/texmf/scripts/psutils/psmerge.pl86
1 files changed, 86 insertions, 0 deletions
diff --git a/Master/texmf/scripts/psutils/psmerge.pl b/Master/texmf/scripts/psutils/psmerge.pl
new file mode 100755
index 00000000000..ff1b8039b4d
--- /dev/null
+++ b/Master/texmf/scripts/psutils/psmerge.pl
@@ -0,0 +1,86 @@
+#!/usr/bin/env perl
+# psmerge: merge PostScript files produced by same application and setup
+# usage: psmerge [-oout.ps] [-thorough] file1.ps file2.ps ...
+#
+# Copyright (C) Angus J. C. Duggan 1991-1995
+# See file LICENSE for details.
+
+$0 =~ s=.*/==;
+$prog = $0;
+
+while ($ARGV[0] =~ /^-/) {
+ $_ = shift;
+ if (/^-o(.+)/) {
+ if (!close(STDOUT) || !open(STDOUT, ">$1")) {
+ print STDERR "$prog: can't open $1 for output\n";
+ exit 1;
+ }
+ } elsif (/^-t(horough)?$/) {
+ $thorough = 1;
+ } else {
+ print STDERR "Usage: $prog [-oout] [-thorough] file...\n";
+ exit 1;
+ }
+}
+
+$page = 0;
+$first = 1;
+$nesting = 0;
+
+@header = ();
+$header = 1;
+
+@trailer = ();
+$trailer = 0;
+
+@pages = ();
+@body = ();
+
+@resources = ();
+$inresource = 0;
+
+while (<>) {
+ if (/^%%BeginFont:/ || /^%%BeginResource:/ || /^%%BeginProcSet:/) {
+ $inresource = 1;
+ push(@resources, $_);
+ } elsif ($inresource) {
+ push(@resources, $_);
+ $inresource = 0 if /^%%EndFont/ || /^%%EndResource/ || /^%%EndProcSet/;
+ } elsif (/^%%Page:/ && $nesting == 0) {
+ $header = $trailer = 0;
+ push(@pages, join("", @body)) if @body;
+ $page++;
+ @body = ("%%Page: ($page) $page\n");
+ } elsif (/^%%Trailer/ && $nesting == 0) {
+ push(@trailer, $_);
+ push(@pages, join("", @body)) if @body;
+ @body = ();
+ $trailer = 1;
+ $header = 0;
+ } elsif ($header) {
+ push(@trailer, $_);
+ push(@pages, join("", @body)) if @body;
+ @body = ();
+ $trailer = 1;
+ $header = 0;
+ } elsif ($trailer) {
+ if (/^%!/ || /%%EOF/) {
+ $trailer = $first = 0;
+ } elsif ($first) {
+ push(@trailer, $_);
+ }
+ } elsif (/^%%BeginDocument/ || /^%%BeginBinary/ || /^%%BeginFile/) {
+ push(@body, $_);
+ $nesting++;
+ } elsif (/^%%EndDocument/ || /^%%EndBinary/ || /^%%EndFile/) {
+ push(@body, $_);
+ $nesting--;
+ } else {
+ print $_ if $print;
+ }
+}
+
+print @trailer;
+
+exit 0;
+