summaryrefslogtreecommitdiff
path: root/Build/source/texk/psutils/psutils-src/psjoin
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/psutils/psutils-src/psjoin')
-rwxr-xr-xBuild/source/texk/psutils/psutils-src/psjoin220
1 files changed, 0 insertions, 220 deletions
diff --git a/Build/source/texk/psutils/psutils-src/psjoin b/Build/source/texk/psutils/psutils-src/psjoin
deleted file mode 100755
index 21dfaffeef3..00000000000
--- a/Build/source/texk/psutils/psutils-src/psjoin
+++ /dev/null
@@ -1,220 +0,0 @@
-#!/usr/bin/env perl
-#
-# psjoin - concatenate PostScript files
-#
-# version 0.2, 2002-07-18
-# version 0.3, 2003-11-30
-# version 0.31, 2013-10-20
-#
-# versions up to 0.3 by Tom Sato <VEF00200@nifty.ne.jp>, http://homepage3.nifty.com/tsato/
-# versions from 0.31 by Reuben Thomas <rrt@sc3d.org>
-
-use strict;
-use warnings;
-
-use Getopt::Long;
-
-my $version = 0.31;
-
-sub usage {
- my ($exit_code) = @_;
- print STDERR <<END;
-Usage: psjoin [OPTION...] FILENAME...
-Concatenate PostScript files
-
- --even, -a force each file to take an even number of pages
- --save, -s try to close unclosed save operators
- --strip, -p do not strip prolog or trailer from input files
- --help, -h print this help, then exit
- --version,-V print version information and exit
-END
- exit $exit_code;
-}
-
-my $force_even = 0;
-my $force_save = 0;
-my $dont_strip = 0;
-my $save = "save %psjoin\n";
-my $restore = "restore %psjoin\n";
-my ($help_flag, $version_flag);
-
-GetOptions(
- "even|a" => \$force_even,
- "save|s" => \$force_save,
- "strip|p" => \$dont_strip,
- "help|h" => \$help_flag,
- "version|V" => \$version_flag,
- ) or usage(1);
-
-if ($help_flag) {
- usage(0);
-} elsif ($version_flag) {
- print "psjoin (version $version)\n";
- print "(c) Tom Sato <VEF00200\@nifty.ne.jp> and Reuben Thomas <rrt\@sc3d.org>\n";
- exit 0;
-}
-
-if ($force_save) {
- $save = "/#psjoin-save# save def %psjoin\n";
- $restore = "#psjoin-save# restore %psjoin\n";
-}
-my (@prolog, $prolog_inx, @trailer, @comments, @pages);
-if ($dont_strip) {
- $prolog_inx = 9999;
- $prolog[$prolog_inx] = "% [ psjoin: don't strip ]\n";
- $trailer[$prolog_inx] = "% [ psjoin: don't strip ]\n";
-} else {
- for (my $i = 0; $i <= $#ARGV; $i++) {
- open(IN, $ARGV[$i]) || die "$0: can't open \"$ARGV[$i]\" ($!)";
-
- my $in_comment = 1;
- my $in_prolog = 1;
- my $in_trailer = 0;
- $comments[$i] = "";
- $prolog[$i] = "";
- $trailer[$i] = "";
- $pages[$i] = 0;
- while (<IN>) {
- next if /^%%BeginDocument/ .. /^%%EndDocument/;
-
- if ($in_comment) {
- next if /^%!PS-Adobe-/;
- next if /^%%Title/;
- next if /^%%Pages/;
- next if /^%%Creator/;
- $in_comment = 0 if /^%%EndComments/;
- $comments[$i] .= $_;
- next;
- } elsif ($in_prolog) {
- if (/^%%Page:/) {
- $in_prolog = 0;
- } else {
- $prolog[$i] .= $_;
- next;
- }
- }
-
- $in_trailer = 1 if /^%%Trailer/;
- if ($in_trailer) {
- $trailer[$i] .= $_;
- next;
- }
-
- $pages[$i]++ if /^%%Page:/;
- }
- close(IN);
-
- if ($prolog[$i]) {
- for (my $j = 0; $j < $i; $j++) {
- if ($prolog[$j] eq $prolog[$i]) {
- $pages[$j] += $pages[$i];
- last;
- }
- }
- }
- }
-
- my $largest = 0;
- $prolog_inx = 0;
- for (my $i = 0; $i <= $#ARGV; $i++) {
- my $size = length($prolog[$i]) * $pages[$i];
- if ($largest < $size) {
- $largest = $size;
- $prolog_inx = $i;
- }
- }
-}
-
-print <<END;
-%!PS-Adobe-3.0
-%%Title: @ARGV
-%%Creator: psjoin $version
-%%Pages: (atend)
-END
-print $comments[$prolog_inx];
-
-print "\n$prolog[$prolog_inx]";
-for (my $i = 0; $i <= $#ARGV; $i++) {
- $prolog[$i] =~ s/^%%/% %%/;
- $prolog[$i] =~ s/\n%%/\n% %%/g;
- $trailer[$i] =~ s/^%%/% %%/;
- $trailer[$i] =~ s/\n%%/\n% %%/g;
-}
-
-my $total_pages = 0;
-for (my $i = 0; $i <= $#ARGV; $i++) {
- print "\n% [ psjoin: file = $ARGV[$i] ]\n";
- if ($prolog[$i] ne $prolog[$prolog_inx]) {
- print "% [ psjoin: Prolog/Trailer will be inserted in each page ]\n";
- } else {
- print "% [ psjoin: common Prolog/Trailer will be used ]\n";
- }
-
- my $in_comment = 1 if !$dont_strip;
- my $in_prolog = 1 if !$dont_strip;
- my $in_trailer = 0;
- my $saved = 0;
- my $pages = 0;
-
- open(IN, $ARGV[$i]) || die "$0: can't open \"$ARGV[$i]\" ($!)";
- while (<IN>) {
- if (/^%%BeginDocument/ .. /^%%EndDocument/) {
- # s/^(%[%!])/% \1/;
- print $_;
- } else {
- if ($in_comment) {
- $in_comment = 0 if /^%%EndComments/;
- } elsif ($in_prolog) {
- if (/^%%Page:/) {
- $in_prolog = 0;
- } else {
- next;
- }
- }
- $in_trailer = 1 if !$dont_strip && /^%%Trailer/;
- next if $in_trailer;
-
- if (/^%%Page:/) {
- if ($saved) {
- print $trailer[$i];
- print $restore;
- $saved = 0;
- }
-
- $pages++;
- $total_pages++;
- print "\n";
- print "%%Page: ($i-$pages) $total_pages\n";
- if ($prolog[$i] ne $prolog[$prolog_inx]) {
- print $save;
- print $prolog[$i];
- $saved = 1;
- } elsif ($force_save) {
- print $save;
- }
- } else {
- s/^(%[%!])/% $1/;
- print $_;
- }
- }
- }
- close(IN);
-
- if ($force_even && $pages % 2 != 0) {
- $pages++;
- $total_pages++;
- print <<END;
-
-%%Page: ($i-E) $total_pages
-% [ psjoin: empty page inserted to force even pages ]
-showpage
-END
- }
-
- print $trailer[$i] if $saved;
- print $restore if $saved || $force_save;
-}
-
-print "\n%%Trailer\n";
-print $trailer[$prolog_inx];
-print "\n%%Pages: $total_pages\n%%EOF";