diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-01-10 13:10:28 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2011-01-10 13:10:28 +0000 |
commit | 9bdd9f27ea5243115a8b2f0aa891bfdf6dfdddf1 (patch) | |
tree | d854e398fa7c3bb51d3d429ef36a0b75a7dffeb7 /Master/bin/powerpc-linux | |
parent | dbd8f0679bc5e9ceaab187cc83700f4b383f81fe (diff) |
change into linked scripts
git-svn-id: svn://tug.org/texlive/trunk@21010 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/bin/powerpc-linux')
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/deweb | 123 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/extractres | 97 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/fixdlsrps | 55 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/fixfmps | 22 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/fixpsditps | 26 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/fixpspps | 59 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/fixscribeps | 20 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/fixtpps | 29 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/fixwfwps | 34 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/fixwpps | 32 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/fixwwps | 21 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/includeres | 47 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/ps2eps | 936 | ||||
l---------[-rwxr-xr-x] | Master/bin/powerpc-linux/psmerge | 86 |
14 files changed, 14 insertions, 1573 deletions
diff --git a/Master/bin/powerpc-linux/deweb b/Master/bin/powerpc-linux/deweb index 245119b134a..339abe1c2d2 100755..120000 --- a/Master/bin/powerpc-linux/deweb +++ b/Master/bin/powerpc-linux/deweb @@ -1,122 +1 @@ -#! /usr/bin/env perl -# deweb v1.2, kills the C sections of a CWEB file, for passing to ChkTeX. -# Copyright (C) 1996 Jens T. Berger Thielemann -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -# -# Contact the author at: -# Jens Berger -# Spektrumvn. 4 -# N-0666 Oslo -# Norway -# E-mail: <jensthi@ifi.uio.no> -# -# -# - -print STDERR "DeWEB v1.2 - Copyright 1996 Jens T. Berger Thielemann\n"; - -undef $/; -$texmode = 1; -$_ = <>; - -while(/\@/) -{ - &out($`); - $_ = $'; - - if(/^@/) { - $_ = $'; - &out('@'); - next; - } - - if(/^([\s\n])/) { - $_ = $'; - print "\n" if $1 eq "\n"; - $texmode = 1; - next; - } - - if(/^[cpd]/i) { - $_ = $'; - $texmode = 0; - next; - } - - if(/^\,/i) { - $_ = $'; - print '\,'; - next; - } - - if(m!^/!) { - $_ = $'; - print '\\\\'; - next; - } - - if(/^[h\&\|\;\#\+]/i || /^i.*/i) { - $_ = $'; - next; - } - - if(/^\*[0-9\*]?((.|\n)*?\.)/) { - $_ = $'; - print $1; - $texmode = 1; - next; - } - - if(/^[<(^.t!]((.|\n)*?)\@\>/i) { - $_ = $'; - print '{'.$1.'}'; - $texmode = 0; - next; - } - - if(/^[=]((.|\n)*?)\@\>/) { - $_ = $'; - print &printnl($1); - next; - } - - if(/^[fsl](\s+\S+\s+\S+)|^\'(.|\n)*?\'|^\[((.|\n)*?)\@\]/i) { - $_ = $'; - print &printnl($+); - next; - } - - @line = split(/\n/, $_, 2); - print STDERR "Unknown opcode, ignored. Buffer:\n$line[0]\n"; - -} - -print $_; - -sub printnl { - my($foo); - if(defined $_[0]) { - $foo = $_[0]; - $foo =~ s/.//g; - } else { - $foo = ""; - } - $foo; -} - -sub out { - print $texmode? $_[0] : &printnl($_[0]); -} +../../texmf/scripts/chktex/deweb.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/extractres b/Master/bin/powerpc-linux/extractres index c54056461a2..eca5094fca6 100755..120000 --- a/Master/bin/powerpc-linux/extractres +++ b/Master/bin/powerpc-linux/extractres @@ -1,96 +1 @@ -#!/usr/bin/env perl -# extractres: extract resources from PostScript file -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$prog = ($0 =~ s=.*/==); - -%resources = (); # list of resources included -%merge = (); # list of resources extracted this time -%extn = ("font", ".pfa", "file", ".ps", "procset", ".ps", # resource extns - "pattern", ".pat", "form", ".frm", "encoding", ".enc"); -%type = ("%%BeginFile:", "file", "%%BeginProcSet:", "procset", - "%%BeginFont:", "font"); # resource types - -while (@ARGV) { - $_ = shift; - if (/^-m(erge)?$/) { $merge = 1; } - elsif (/^-/) { - print STDERR "Usage: $prog [-merge] [file]\n"; - exit 1; - } else { - unshift(@ARGV, $_); - last; - } -} - -if (defined($ENV{TMPDIR})) { # set body file name - $body = "$ENV{TMPDIR}/body$$.ps"; -} else { - $body = "body$$.ps"; -} - -open(BODY, $body) && die "Temporary file $body already exists"; -open(BODY, ">$body") || die "Can't write file $body"; - -sub filename { # make filename for resource in @_ - local($name); - foreach (@_) { # sanitise name - s/[!()\$\#*&\\\|\`\'\"\~\{\}\[\]\<\>\?]//g; - $name .= $_; - } - $name =~ s@.*/@@; # drop directories - die "Filename not found for resource ", join(" ", @_), "\n" - if $name =~ /^$/; - $name; -} - -$output = STDOUT; # start writing header out -while (<>) { - if (/^%%BeginResource:/ || /^%%BeginFont:/ || /^%%BeginProcSet:/) { - local($comment, @res) = split(/\s+/); # look at resource type - local($type) = defined($type{$comment}) ? $type{$comment} : shift(@res); - local($name) = &filename(@res, $extn{$type}); # make file name - $saveout = $output; - if (!$resources{$name}) { - print "%%IncludeResource: $type ", join(" ", @res), "\n"; - if (!open(RES, $name)) { - open(RES, ">$name") || die "Can't write file $name"; - $resources{$name} = $name; - $merge{$name} = $merge; - $output = RES; - } else { # resource already exists - close(RES); - undef $output; - } - } elsif ($merge{$name}) { - open(RES, ">>$name") || die "Can't append to file $name"; - $output = RES; - } else { # resource already included - undef $output; - } - } elsif (/^%%EndResource/ || /^%%EndFont/ || /^%%EndProcSet/) { - if (defined $output) { - print $output $_; - close($output); - } - $output = $saveout; - next; - } elsif ((/^%%EndProlog/ || /^%%BeginSetup/ || /^%%Page:/)) { - $output = BODY; - } - print $output $_ - if defined $output; -} - -close(BODY); # close body output file - -open(BODY, $body); # reopen body for input -while (<BODY>) { # print it all - print $_; -} -close(BODY); - -unlink($body); # dispose of body file - +../../texmf/scripts/psutils/extractres.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/fixdlsrps b/Master/bin/powerpc-linux/fixdlsrps index 2a1d85a654c..de3ca1ea8e6 100755..120000 --- a/Master/bin/powerpc-linux/fixdlsrps +++ b/Master/bin/powerpc-linux/fixdlsrps @@ -1,54 +1 @@ -#!/usr/bin/env perl -# fixdlsrps: fix DviLaser/PS document to work with PSUtils -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$nesting = 0; -$page = 1; -$infont = 0; - -@fonts = (); -@body = (); -$header = 1; - -while (<>) { - if (/^XP/) { - $infont++; - push(@fonts, $_); - $infont-- if /PXL.*RP/ || /DN?F.*RP/; - } elsif ($infont) { - push(@fonts, $_); - $infont-- if /PXL.*RP/ || /DN?F.*RP/; - } elsif ((/^%%EndSetup/ || /^%%Page:/) && $header) { - print @body; - @body = ("%%EndSetup\n"); - $header = 0; - } elsif (/^%%EndProlog/ && !$nesting) { - push(@body, - "\$DviLaser begin/GlobalMode{}bdef/LocalMode{}bdef/XP{}def/RP{}def", - "/DoInitialScaling{72.0 Resolution div dup scale}bdef end\n", $_); - } elsif (/^%%BeginPageSetup/ && !$nesting) { - push(@body, "%%Page: $page $page\n", $_, - "Resolution 72 div dup scale Magnification 1000 div dup scale\n", - "/DocumentInitState where {\n", - "/DocumentInitState [ matrix currentmatrix currentlinewidth", - " currentlinecap currentlinejoin currentdash currentgray", - " currentmiterlimit] cvx put}if\n"); - $page++; - } elsif (/^%%BeginDocument:/ || /^%%BeginBinary:/ || /^%%BeginFile:/) { - push(@body, $_); - $nesting++; - } elsif (/^%%EndDocument/ || /^%%EndBinary/ || /^%%EndFile/) { - push(@body, $_); - $nesting--; - } elsif (!/^%%PageBoundingBox:/ && !/^%%Page:/) { - push(@body, $_); - } -} - -print @fonts; -print @body; - -exit 0; - +../../texmf/scripts/psutils/fixdlsrps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/fixfmps b/Master/bin/powerpc-linux/fixfmps index 039ac8e5a3e..1d34a8a3980 100755..120000 --- a/Master/bin/powerpc-linux/fixfmps +++ b/Master/bin/powerpc-linux/fixfmps @@ -1,21 +1 @@ -#!/usr/bin/env perl -# fixfmps: get conforming PostScript out of FrameMaker version 2 file -# move all FMDEFINEFONTs to start of pages -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -%fonts=(); - -while (<>) { - if (/^([0-9]+) [0-9]+ .* FMDEFINEFONT$/) { - $fonts{$1} = $_; - } elsif (/^[0-9.]+ [0-9.]+ [0-9]+ FMBEGINPAGE$/) { - print $_, join('',values(%fonts)); - } elsif (m%(.*/PageSize \[paperwidth paperheight\]put )setpagedevice(.*)%) { - print "$1pop$2\n"; - } else { - print $_; - } -} - +../../texmf/scripts/psutils/fixfmps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/fixpsditps b/Master/bin/powerpc-linux/fixpsditps index 2a1728a8204..3ae114e64b0 100755..120000 --- a/Master/bin/powerpc-linux/fixpsditps +++ b/Master/bin/powerpc-linux/fixpsditps @@ -1,25 +1 @@ -#!/usr/bin/env perl -# fixpsditps: fix psdit output for use in psutils -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$nesting = 0; - -while (<>) { - if (/^\/p{pop showpage pagesave restore \/pagesave save def}def$/) { - print "/p{pop showpage pagesave restore}def\n"; - } elsif (/^%%BeginDocument/ || /^%%BeginBinary/ || /^%%BeginFile/ ) { - print $_; - $nesting++; - } elsif (/^%%EndDocument/ || /^%%EndBinary/ || /^%%EndFile/) { - print $_; - $nesting--; - } elsif (/^%%Page:/ && $nesting == 0) { - print $_; - print "xi\n"; - } elsif (! /^xi$/) { - print $_; - } -} - +../../texmf/scripts/psutils/fixpsditps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/fixpspps b/Master/bin/powerpc-linux/fixpspps index 77bba66d6b7..8de2c878a88 100755..120000 --- a/Master/bin/powerpc-linux/fixpspps +++ b/Master/bin/powerpc-linux/fixpspps @@ -1,58 +1 @@ -#!/usr/bin/env perl -# mangle PostScript produced by PSPrint to make it almost conforming -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$header = 1; $ignore = 0; -$verbose = 0; -@body = (); -%fonts = (); $font = ""; -$inchar = 0; @char = (); - -while (<>) { - if (/^\@end$/) { - $ignore = 1; - } elsif (/^[0-9]+ \@bop0$/) { - $ignore = 0; - $header = 1; - } elsif ($header) { - if (/^\/([a-z.0-9]+) \@newfont$/) { - if (! defined($fonts{$1})) { - $fonts{$1} = 1; - print; - } elsif ($verbose) { - print STDERR "$font already defined\n"; - } - } elsif (/^([a-z.0-9]+) sf$/) { - $font = $1; - print; - } elsif (/^\[</) { - $inchar = 1; - push (@char, $_); - } elsif ($inchar) { - push (@char, $_); - if (/.*\] ([0-9]+) dc$/) { - if (! defined($fonts{$font,$1})) { - $fonts{$font,$1} = 1; - print (@char); - } elsif ($verbose) { - print STDERR "$font character $1 already defined\n"; - } - $inchar = 0; - @char = (); - } - } elsif (/^([0-9]+) \@bop1$/) { - $header = 0; - push (@body, "%%Page: ? $1\n"); - push (@body, $_); - } else { - print; - } - } elsif (! $ignore) { - push (@body, $_); - } -} -print (@body); -print ("\@end\n"); - +../../texmf/scripts/psutils/fixpspps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/fixscribeps b/Master/bin/powerpc-linux/fixscribeps index bd4e9a0e3e0..1414c3cf31f 100755..120000 --- a/Master/bin/powerpc-linux/fixscribeps +++ b/Master/bin/powerpc-linux/fixscribeps @@ -1,19 +1 @@ -#!/usr/bin/env perl -# fixscribeps: get conforming PostScript out of Scribe -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$inepsf = 0; -$epsfn = 0; -while (<>) { - if (/^([0-9]+ [0-9]+ [0-9]+ PB) (%!.*)/) { - print "$1\n%%BeginDocument: Scribe-EPSF $epsfn 0\n$2\n"; - $inepsf++; - } elsif (/^ PE/ && $inepsf) { - print "%%EndDocument\n", $_; - } else { - print $_; - } -} - +../../texmf/scripts/psutils/fixscribeps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/fixtpps b/Master/bin/powerpc-linux/fixtpps index 4239bb9dfc5..10cd40fcc78 100755..120000 --- a/Master/bin/powerpc-linux/fixtpps +++ b/Master/bin/powerpc-linux/fixtpps @@ -1,28 +1 @@ -#!/usr/bin/env perl -# fixtpps: fix tpscript document to work with PSUtils -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$nesting = 0; -$header = 1; - -while (<>) { - if (/^%%Page:/ && $nesting == 0) { - print $_; - print "save home\n"; - $header = 0; - } elsif (/^%%BeginDocument/ || /^%%BeginBinary/ || /^%%BeginFile/) { - print $_; - $nesting++; - } elsif (/^%%EndDocument/ || /^%%EndBinary/ || /^%%EndFile/) { - print $_; - $nesting--; - } elsif (/save home/) { - s/save home//; - print $_; - } elsif (!$header || (! /^save$/ && ! /^home$/)) { - print $_; - } -} - +../../texmf/scripts/psutils/fixtpps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/fixwfwps b/Master/bin/powerpc-linux/fixwfwps index 92d88443fe1..63a5b6ea2d0 100755..120000 --- a/Master/bin/powerpc-linux/fixwfwps +++ b/Master/bin/powerpc-linux/fixwfwps @@ -1,33 +1 @@ -#!/usr/bin/env perl -# fixwfwps: fix Word for windows PostScript for printing. -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$nesting = 0; -while (<>) { - tr/\000-\010\012-\014\016-\037//d; - foreach (grep($_ ne "", split("\015"))) { - s!/SVDoc\s+save\s+def!!g; - s!SVDoc\s+restore!!g; - if (/^(%!PS-Adobe-\d*\.\d*) EPSF-/ && !$nesting) { - print "$1\n"; - $wfwepsf = 1; - } elsif (/^SS\s*$/ && $wfwepsf) { - print "%%Page: $wfwepsf $wfwepsf\n"; - $wfwepsf++; - print "$_\n"; - } elsif (/^%MSEPS Preamble/) { - print "%%BeginDocument: (Included EPSF)\n"; - print "$_\n"; - $nesting++; - } elsif (/^%MSEPS Trailer/) { - $nesting--; - print "$_\n"; - print "%%EndDocument\n"; - } elsif (! /^%%BoundingBox/) { - print "$_\n"; - } - } -} - +../../texmf/scripts/psutils/fixwfwps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/fixwpps b/Master/bin/powerpc-linux/fixwpps index 83a5fdfaf0b..693a2161b13 100755..120000 --- a/Master/bin/powerpc-linux/fixwpps +++ b/Master/bin/powerpc-linux/fixwpps @@ -1,31 +1 @@ -#!/usr/bin/env perl -# fixwpps: get semi-conforming PostScript out of WordPerfect 5.0 file -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$page = 1; -$nesting = 0; - -while (<>) { - s/([^\/]_t)([0-9]+)/\1 \2/g; # fix wp 5.0 bug - if (m!/_[be][dp]! || m!_bp \d+ \d+ roll!) { - print $_; - } elsif (/^(.*)(_bp.*)$/) { - print "$1\n" if $1 ne ""; - print "%%Page: $page $page\n"; - print "$2\n"; - $page++; - $nesting++; - } elsif (/_ep$/) { - print $_; - $nesting--; - } elsif (/^(.*)(_ed.*)/) { - print "$1\n" if $1 ne ""; - print "%%Trailer:\n"; - print "$2\n"; - } else { - print $_; - } -} - +../../texmf/scripts/psutils/fixwpps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/fixwwps b/Master/bin/powerpc-linux/fixwwps index bfd58c086da..4c650dfbb0a 100755..120000 --- a/Master/bin/powerpc-linux/fixwwps +++ b/Master/bin/powerpc-linux/fixwwps @@ -1,20 +1 @@ -#!/usr/bin/env perl -# fixwwps: get semi-conforming PostScript out of Windows Write file -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$page = 1; - -while (<>) { - if (/^(%!.*) EPSF-\d.\d/) { - print $1, "\n"; - } elsif (/^SS/) { - print "%%Page: $page $page\n"; - print $_; - $page++; - } else { - print $_; - } -} - +../../texmf/scripts/psutils/fixwwps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/includeres b/Master/bin/powerpc-linux/includeres index 4547357cd93..362c59c64e0 100755..120000 --- a/Master/bin/powerpc-linux/includeres +++ b/Master/bin/powerpc-linux/includeres @@ -1,46 +1 @@ -#!/usr/bin/env perl -# includeres: include resources in PostScript file -# -# Copyright (C) Angus J. C. Duggan 1991-1995 -# See file LICENSE for details. - -$prog = ($0 =~ s=.*/==); - -%extn = ("font", ".pfa", "file", ".ps", "procset", ".ps", # resource extns - "pattern", ".pat", "form", ".frm", "encoding", ".enc"); -%type = ("%%BeginFile:", "file", "%%BeginProcSet:", "procset", - "%%BeginFont:", "font"); # resource types - -sub filename { # make filename for resource in @_ - local($name); - foreach (@_) { # sanitise name - s/[!()\$\#*&\\\|\`\'\"\~\{\}\[\]\<\>\?]//g; - $name .= $_; - } - $name =~ s@.*/@@; # drop directories - die "Filename not found for resource ", join(" ", @_), "\n" - if $name =~ /^$/; - $name; -} - -while (<>) { - if (/^%%IncludeResource:/ || /^%%IncludeFont:/ || /^%%IncludeProcSet:/) { - local($comment, @res) = split(/\s+/); - local($type) = defined($type{$comment}) ? $type{$comment} : shift(@res); - local($name) = &filename(@res); - local($inc) = ""; # system include directory - if (open(RES, $name) || open(RES, "$name$extn{$type}") || - open(RES, "$inc/$name") || open(RES, "$inc/$name$extn{$type}")) { - while (<RES>) { - print $_; - } - close(RES); - } else { - print "%%IncludeResource: ", join(" ", $type, @res), "\n"; - print STDERR "Resource $name not found\n"; - } - } else { - print $_; - } -} - +../../texmf/scripts/psutils/includeres.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/ps2eps b/Master/bin/powerpc-linux/ps2eps index 7092cbb0007..81d5f53cfde 100755..120000 --- a/Master/bin/powerpc-linux/ps2eps +++ b/Master/bin/powerpc-linux/ps2eps @@ -1,935 +1 @@ -#!/usr/bin/env perl -# The expression in the previous line replaces the unix specific line -# {#!/usr/bin/perl}. -# ps2eps - convert PostScript to EPS (Encapsulated PostScript) files -# ------------------------------------------------------------------- -# $Id: ps2eps,v 1.64 2007/01/24 12:32:59 bless Exp $ -# ------------------------------------------------------- -# (C)opyright 1999-2007 Roland Bless -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -# -# Author: Roland Bless -# Send bug reports to roland <at> bless.de -# ------------------------------------------------------------------- -# Additional filtering is performed when Windows generated PostScript files -# are processed. Some instructions will otherwise lead to bad output -# if EPS-file gets embedded into other PostScript files. -# -# Requirements: -# + perl -# + gs (ghostscript supporting pbm output) -# + bbox (a little C program [ANSI-C - should work on every platform] -# for calculation of the actual BoundingBox) - -use POSIX; - -#use warnings; - -#use Getopt package -use Getopt::Long; -Getopt::Long::Configure("no_ignore_case"); - -$prgname= "ps2eps"; - -if (! -d "/usr/bin") -{ # we assume that we are running under native windows - $ghostscriptname = "gswin32c"; - $NULLDEV = "nul"; -} -else -{ # Unix or cygwin - $ghostscriptname = "gs"; - $NULLDEV = "/dev/null 2>&1"; -} - -$bboxver=`bbox >$NULLDEV -V`; -$bboxname= ($?== -1) ? "" : "bbox"; -$version= '$Id: ps2eps,v 1.64 2007/01/24 12:32:59 bless Exp $'; #' -$insertPScode= 1; # Insert surrounding Postscript code -$infhandle = STDIN; # Standard input is the default input file -$outfhandle = STDOUT; # Standard output is default output if STDIN is input -$infname= '-'; -$outfname= '-'; -$forceoverwrite=0; # do not overwrite existing files -$ignoreBB= 0; # ignore existing Bounding Box comment -$removeDSC= 1; # remove Adobe document structure comments -$removeADO= 1; # remove Adobe printer Driver console Output [Page: ...] -$ignoreEOFDSC= 0; # ignore %%EOF DSC hint -$removePreview= 0; # remove preview -$quiet= 0; # write progress to stdout -$resolution= 144; # resolution for bounding box calculation is 2x72 dpi -$trytofixps= 1; # try to fix postscript code -$forcefixps= 0; # fix postscript code unconditionally if eq 1 -$filterorientation= 1;# filter Orientation line -$looseBB=''; # default: tight bounding box -$clip=0; # do not clip -$warnings=0; # do not print warnings concerning postscript sanity -$debuggs=0; # no debugging of ghostscript call, turn this on if you want to see the gs call -$inch=2.54; # one inch is 2.54cm -$fullcolors= 1; # use ppm format (24-bit full color) -$trailerseen= 0; # Trailer comment seen? -$PSversion="2.0"; # default Postscript Version -$PSDSCversion="2.0"; # default Postscript DSC Version -$translate_x= 0; # translate by x postscript points -$translate_y= 0; # translate by y postscript points - -$defaultext = '(ps|prn)'; # default extension -$defaultoutext = '.eps'; # default output extension -$envname_size = 'PS2EPS_SIZE'; -$envname_gsbbox = 'PS2EPS_GSBBOX'; - -$gpar=""; -$known_papersizes="11x17|ledger|legal|letter(small)?|arch[A-E]|a([0-9]|10)|isob[0-6]|b[0-5]|c[0-6]|jisb[0-6]|fls(a|e)|halfletter"; -$papersize_help="11x17,ledger,legal,letter,lettersmall,archA,archB,archC,archD,archE\ -a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,isob0,isob1,isob2,isob3,isob4,isob5,isob6,\ -b0,b1,b2,b3,b4,b5,c0,c1,c2,c3,c4,c5,c6,\ -jisb0,jisb1,jisb2,jisb3,jisb4,jisb5,jisb6,flsa,flse,halfletter\n"; -$trigger= 0; -$notsane= 0; -$dummy=""; - -@ver= split(/ /,$version); - -# filename for temporary files -if ($^O =~ /MSWin32/i or $^O =~ /cygwin/i) -{ - # it is less trouble to use the current directory if working on - # cygwin and nevertheless using gswin32c. - $tmpfname= "$prgname.$$"; - $win=1; -} -elsif (defined($ENV{'TMP'})) -{ - $tmpdir= $ENV{'TMP'}; - $filesep= ($tmpdir =~ /^?\:\\/) ? '\\' : '/'; - if ($tmpdir =~ /$filesep$/) - { $tmpfname= $tmpdir . "$prgname.$$"; } - else - { $tmpfname= $tmpdir . "$filesep$prgname.$$"; } - $win=1; -} -else #assume we're on a UNIXBOX -{ - $tmpfname= "/tmp/" . "$prgname.$$"; - $win=0; -} - - -$licensetxt= "\ - This program is free software; you can redistribute it and/or modify\ - it under the terms of the GNU General Public License as published by\ - the Free Software Foundation; either version 2 of the License, or\ - (at your option) any later version.\ -\ - This program is distributed in the hope that it will be useful,\ - but WITHOUT ANY WARRANTY; without even the implied warranty of\ - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\ - GNU General Public License for more details.\ -\ - You should have received a copy of the GNU General Public License\ - along with this program; if not, write to the Free Software\ - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\n"; - -@prgidtxt= ( "$prgname - convert PostScript to EPS (Encapsulated PostScript) files\n", - "(C)opyright 1998-2007 Roland Bless\n\n" ); - -@helptxt= ("Version: $ver[2]\n", - "Operation:\n", - " Without any argument, $prgname reads from standard input\n", - " and writes to standard output.\n", - " If filenames are given as arguments they are processed\n", - " one by one and output files are written to filenames\n", - " with extension '$defaultoutext'. If input filenames have the extension\n", - " '.ps' or '.prn', this extension is replaced with '$defaultoutext'.\n", - " In all other cases '$defaultoutext' is appended to the input filename.\n", - " Please note that PostScript files for input should contain\n", - " only one single page.\n\n", - " If BoundingBox in output seems to be wrong, please try options --size or --ignoreBB.\n\n" ); - -@usagetxt= ("Syntax:\n", - " $prgname [-f] [-q] [-N] [-O] [-n] [-P] [-c] [-C] [-m] [-B] [-E] [-s <pagedim>] [-R +|-|^] [-t <x,y>] [-l] [-g] [-d] [-H] [-h|--help] [-g] [-W] [-L] [-V|--version] [--] [psfile1] [psfile2] [...]\n", - "Options:\n", - " -f, --force force overwriting existing files\n", - " -q, --quiet quiet operation (no output while processing files)\n", - " -N, --noinsert do not insert any postscript code\n", - " -O, --preserveorientation do not filter Orientation: header comment\n", - " -n, --nofix do not try to fix postscript code\n", - " -P, --removepreview remove preview image (smaller file, but no preview)\n", - " -F, --fixps fix postscript code unconditionally\n", - " -c, --comments preserve document structure comments\n", - " -C, --clip insert postscript code for clipping\n", - " -m, --mono use black/white bitmap as base for calculation\n", - " -s, --size=<pagedim> page size (a0-a10,letter,...) or in format XxY[cm|in] (default:cm), where X and Y are numbers\n", - " use --size=list to list pre-defined page sizes\n", - " -R, --rotate=<direction> rotate resulting EPS. <direction>: +=+90 (clockw.),-=-90 (counter-clockw.) ^=180 degrees\n", - " -t, --translate specify x,y offset (may be negative) in postscript points (1/72 dpi)\n", - " -r, --resolution specify dpi resolution to render with ghostscript (default 144)", - " -l, --loose expand the original bounding box by one point in each direction\n", - " -B, --ignoreBB do not use existing bounding box as page size for rendering\n", - " -E, --ignoreEOF do not use %%EOF as hint for end of file\n", - " -g, --gsbbox use internal bbox device of ghostscript\n", - " -H, --no-hires do not use a HiResBoundingBox\n", - " -h, --help help information\n", - " -L, --license show licensing information\n", - " -V, --version show version information\n", - " -d, --debuggs show ghostscript call\n", - " -W, --warnings show warnings about sanity of generated eps file\n", - " -- all following arguments are treated as files\n", - " (allows filenames starting with -)\n", - "\n", - "Arguments:\n", - " One or more names of PostScript files for input\n"); - -## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -## -- argument checking -- -## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -#environment variable for papersize -if (defined($ENV{"$envname_size"})) -{ - $opt_s= $ENV{"$envname_size"}; -} -else -{ - $opt_s = ''; # for s-option -} - -if (defined($ENV{"$envname_gsbbox"})) -{ - $bboxname=""; -} - -$opt_t = ''; # for t-option -$opt_R = ''; # for R-option -$opt_r = ''; # for r-option -$stopnow = 0; -die "Wrong option(s), please check usage with $prgname --help\n" unless -GetOptions('f|force' => \$forceoverwrite, - 'q|quiet' => \$quiet, - 'm|mono' => sub { $fullcolors = 0 }, - 'n|nofix' => sub { $trytofixps = 0 }, - 'F|fixps' => \$forcefixps, - 'N|noinsert' => sub { $insertPScode = 0 }, - 'O|preserveorientation' => sub { $filterorientation= 0 }, - 'P|removepreview' => \$removePreview, - 'c|comments' => sub { $removeDSC = 0 }, - 'C|clip' => \$clip, - 'l|loose' => sub { $looseBB = '-l' }, - 'B|ignoreBB' => \$ignoreBB, - 'E|ignoreEOF'=> \$ignoreEOFDSC, - 's|size=s' => \$opt_s, - 't|translate=s' => \$opt_t, - 'r|resolution=s' => \$opt_r, - 'R|rotate=s' => \$opt_R, - 'g|gsbbox' => sub { $bboxname=""; }, - 'H|nohires' => \$nohires, - 'h|help' => sub { $stopnow = 1; print @prgidtxt,@helptxt,@usagetxt,"\nAuthor: Roland Bless (roland\@bless.de)\n\n"; }, - 'L|license' => sub { $stopnow = 1; print @prgidtxt,$licensetxt,"\nAuthor: Roland Bless (roland\@bless.de)\n\n"; }, - 'd|debuggs' => \$debuggs, - 'W|warnings' => \$warnings, - 'V|version' => sub { $stopnow = 1; print @prgidtxt,"Version: $ver[2]\n"; });exit if ($stopnow); - -## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -## -- wildcard processing -- -## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -## internal wildcard processing for current directory, -## only used for non UNIX-based OSs (which may lack shell wildcard expansion) -@filenames = (); -foreach $object (@ARGV) { - if ($win && $object =~ m/\*/o) # asterisk is present in filename - { - $wildcard = $object; - $wildcard =~ s/\./\\\./g; # replace . in pattern with \. - $wildcard =~ s/\*/\(\.\*\)/g; # replace * in pattern with (.*) - opendir(DIR,'.') || die 'Unable to open current directory, stopped'; # open current directory - print STDERR $wildcard; - @fid = grep { /$wildcard(\.$defaultext)?/i } readdir(DIR); - foreach (@fid) { push @filenames, $_; } - closedir DIR; - } - else { push @filenames, $object; } -} # end foreach -$filenames[0]= '-' if (scalar(@filenames) == 0); # no file arguments, use STDIN as input - -print STDERR "Input files: @filenames\n" if (!$quiet); - -if ($opt_r ne '') -{ - $resolution=$opt_r; -} - -# papersize stuff -if ($opt_s ne '') -{ - # if explicit size is given, ignore existing BoundingBox always - $ignoreBB = 1; - $pagedimension = $opt_s; - if ($opt_s eq "list") - { - print STDERR "Available paper sizes: $papersize_help"; - exit 0; - } - - #explicit format XxY[cm|in] - if ($pagedimension =~ /(\d*\.?\d+)x(\d*\.?\d+)/) - { - ($x_dim, $dummy, $y_dim, $unit)= split(/(x|cm|in)/,$pagedimension); - if ( $x_dim !~ /^\d*\.?\d+$/ ) - { die "$x_dim in $arg is not a valid number, stopped"; } - if ( $y_dim !~ /^\d*\.?\d+$/ ) - { die "$y_dim in $arg is not a valid number, stopped"; } - - #print STDERR "xdim: $x_dim ydim: $y_dim unit:$unit\n" ; - if (!defined($unit) ) - { - $unit='cm'; - $opt_s=$opt_s . $unit; - } - if ( $unit ne 'in' ) # assume centimeters - { # calculate dimension in pixels (remember: resolution is in dpi) - $xpixels= int(($x_dim * $resolution) / $inch)+1; - $ypixels= int(($y_dim * $resolution) / $inch)+1; - $gpar= "-g${xpixels}x${ypixels}"; - } - else - { - $xpixels= int($x_dim * $resolution)+1; - $ypixels= int($y_dim * $resolution)+1; - $gpar= "-g${xpixels}x${ypixels}"; - } - } #endif XxY in opt_s - else - { - if ($opt_s =~ /$known_papersizes/) - { - $gpar="-sPAPERSIZE=$opt_s"; - } - else - { - print STDERR "Error: Unknown paper size: $opt_s\n Acceptable papersizes are:$papersize_help\n"; - exit 1; - } - } -} - -#translate option -if ($opt_t ne '') -{ - ($translate_x,$translate_y)= split(/\,/,$opt_t); -} - -#rotate -$rotright='-90 rotate'; -$rotleft='90 rotate'; -$rotupsidedown='180 rotate'; -$rotate=''; -if ($opt_R ne '') -{ - if ($opt_R eq '+') { $rotate=$rotright; } - elsif ($opt_R eq '-') { $rotate=$rotleft; } - elsif ($opt_R eq '^') { $rotate=$rotupsidedown; } - else { die "Wrong parameter for option -R: Valid are only +,-,^\n"; }; -} - -$device= $fullcolors ? "ppmraw" : "pbmraw"; - -## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -## -- iterate over different input files -- -## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -PROCESSFILE: -while ($infname= (shift @filenames)) -{ - # reset filter definitions for each file - undef $linefilter; - undef $rangefilter_begin; - undef $rangefilter_end; - $fixthisps= $trytofixps; - $fixmsgprinted= 0; - - if (!$quiet) { print STDERR "Processing: $infname\n"; } - unless (open($infhandle,"<$infname")) - { # skip over this file - print STDERR "$prgname: Can't open $infname: $!\n"; - next PROCESSFILE; - } - - # buffer input from stdin into temporary file, because it has to be read twice - # one time for ghostscript processing, the second time for generating output - if ($infname eq '-') # input is stdin - { - $tmpfhandle=''; - open($tmpfhandle,">$tmpfname") or - die "Cannot open temporary file $tmpfname for writing: $!\n"; - } - else # input is not stdin - { - undef $tmpfhandle; - #if filename ends with $defaultext usually .ps or .prn, replace the extension with $defaultoutext - if ($infname =~ /\.$defaultext$/i) - { - $outfname= $infname; $outfname =~ s/\.$defaultext$/$defaultoutext/i; - } - else # otherwise simply append the extension $defaultoutext - { - $outfname= $infname . "$defaultoutext"; - } - if (!$forceoverwrite and -s "$outfname") - { - die "$prgname: Sorry, file named $outfname already exists,", - " will not overwrite it.\n", - " You will have to use the -f option, delete it or rename it", - " before running $prgname again.\n"; - } - else - { - open($outfhandle,">$outfname") or die "Can't open file $outfname for writing: $!\n"; - } - } #end else input is not stdin - - ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - ## -- process input file -- - ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - $linefilter= '^$'; #'# filter empty lines by default - while (<$infhandle>) - { - # get postscript and DSC version - if (/%!PS-Adobe-(\S+).*EPSF-(\S+)/) - { - $PSversion=$1; - $PSDSCversion=$2; - if (! ($PSversion =~ /\d+\.\d+/)) - { - $PSDSCversion="2.0"; - } - if (! ($PSDSCversion =~ /\d+\.\d+/)) - { - $PSDSCversion="2.0"; - } - } - - # check for existing BoundingBox parameters - if ( /^%%\s*BoundingBox:\s*(.*)/ && !defined($eBBllx) ) - { - $BBarg= $1; - # accept even negative and fractional BBs - if ( $BBarg =~ /(\-?\d+\.?\d*\s+){3,}\d+/ ) # ignore %% BoundingBox: (atend) comments - { - ($eBBllx,$eBBlly,$eBBurx,$eBBury,$dummy)= split /\s/,$BBarg; - #print STDERR "Existing BB: $eBBllx,$eBBlly,$eBBurx,$eBBury\n"; - if (int($eBBllx) < 0) { $translate_x= - int($eBBllx-0.5); } - if (int($eBBlly) < 0) { $translate_y= - int($eBBlly-0.5); } - - $xpixels= int((($eBBurx-$eBBllx) * $resolution)/72)+1; - $ypixels= int((($eBBury-$eBBlly) * $resolution)/72)+1; - if (!$ignoreBB) - { - $gpar= "-g${xpixels}x${ypixels}"; - # check for meaningful values - if (($xpixels <= 1) || ($ypixels <= 1)) - { - $gpar=""; undef $eBBllx; undef $eBBlly; - } - else - { - if (!$quiet) - { - print STDERR "Rendering with existing $_"; - if (int($eBBllx) < 0 || int($eBBlly) < 0) - { - print STDERR "WARNING: existing Bounding Box shows negative values - shifting\n"; - } - } - } - } #endif !$ignoreBB - } #endif $BBarg =~ - } - - - if ($fixthisps) # try to fix bad postscript code - { - # check for Windows 3.x output - if ( /^Win.*Dict/ ) - { - if (!$quiet && !$fixmsgprinted) - { print STDERR "Windows 3.5 generated Postscript file detected, fixing\n"; } - $linefilter= '^(EJ|RS)'; - $rangefilter_begin= '^statusdict'; - $rangefilter_end= 'cvx\ settransfer$'; #' - $fixmsgprinted= 1; # stop printing message - } - else - { - if ( /^%%Creator:\s*Wind.U\s*Xprinter/ ) - { - if (!$quiet && !$fixmsgprinted) - { print STDERR "Star/OpenOffice generated Postscript file detected, fixing\n"; } - $linefilter= '^rs'; - $fixmsgprinted= 1; # stop printing message - } - else - { - if ( $forcefixps || - /^\/NTPS/ || - /Creator:\s*(AdobePS|Pscript|.*Windows)/i ) #check for NT generated output - { - if (!$quiet && !$fixmsgprinted) - { - if ($forcefixps) - { - print STDERR "Postscript filtering requested, fixing\n"; - } - else - { - print STDERR "Windows generated Postscript file detected, fixing\n"; - } - } - $rangefilter_begin= '^((\[\{)|(featurebegin\{))$'; #' - $rangefilter_end= '^(\} stopped cleartomark|\}featurecleanup)'; - $exclude_rangefilter_begin= '^(?i)%%BeginNonPPDFeature'; #' - $exclude_rangefilter_end= '^(?i)%%EndNonPPDFeature'; - #$triggered_rangefilter_begin= ''; #' - #$triggered_rangefilter_end= ''; #' - $fixsearchpat='(^|\s)(initmatrix|initclip|initgraphics)(\s|$)'; - $fixreplacepat=' '; - $fixmsgprinted= 1; # stop printing message - } # end if NTPS - } #end else - } - } #end if trytofixps - - if (defined($tmpfhandle)) - { - print $tmpfhandle $_ or die "$prgname: Failure during writing to temporary file $tmpfname"; - } - - if (/^%%EOF\s*$/) - { - $totalEOFDSC++ - } - } #end while <$infhandle> - - if (defined($tmpfhandle)) - { - close($tmpfhandle); - } - else - { - $tmpfhandle= $infhandle; - $tmpfname= $infname; - } - - ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - ## -- calculate the bounding box -- - ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - if ($translate_x!=0 || $translate_y!=0) - { - $translation="$translate_x $translate_y translate"; - $translatecmd="-c $translation"; - } - else - { - $translation=""; - $translatecmd=""; - } - - if (!$quiet) - { - print STDERR "Calculating Bounding Box..."; - if ($opt_s) - { - print STDERR "using page size $opt_s..."; - } - } - - $rotatecmd=''; - if ($rotate ne '') - { - $rotatecmd="-c \"$rotate\"" - } - if ($bboxname ne '') - { - $cmdline="$ghostscriptname -dSAFER -dNOPAUSE -q $gpar -r$resolution -sDEVICE=$device -sOutputFile=- $translatecmd -f $tmpfname -c showpage -c quit | $bboxname -r $resolution"; - } - else - { - if (!$quiet) { - print STDERR "...using bbox device of $ghostscriptname..."; - } - $cmdline = "$ghostscriptname -dSAFER -dBATCH -dNOPAUSE -q $gpar -r$resolution -sDEVICE=bbox -sOutputFile=- -c \"/setpagedevice {pop} def\" $translatecmd -f $tmpfname -c quit 2>&1"; - } - - if ($debuggs) { print STDERR "\nCalling: $cmdline\n"; } - - # actual ghostscript call - $boundingbox=`$cmdline`; - if ($debuggs) { print STDERR "Call result: $boundingbox"; } - - # check result of gs call - if ($boundingbox !~ /^%%BoundingBox/m) - { - print STDERR "Error: Could not determine bounding box!\n", - "I suppose $ghostscriptname had some trouble interpreting the postscript-file\n"; - } - - $boundingbox =~ /^%%HiResBoundingBox:\s*(.*)/m; - if (defined($1)) # HiResBoundingBox given - { - ($hcBBllx,$hcBBlly,$hcBBurx,$hcBBury,$dummy)= split(/\s/,$1); - $hiresboundingbox="%%HiResBoundingBox: $hcBBllx $hcBBlly $hcBBurx $hcBBury\n"; - $cBBllx = floor($hcBBllx); - $cBBlly = floor($hcBBlly); - $cBBurx = ceil($hcBBurx); - $cBBury = ceil($hcBBury); - } - else - { #use normal BoundingBox - $boundingbox =~ /^%%.*BoundingBox:\s*(.*)/; - ($cBBllx,$cBBlly,$cBBurx,$cBBury,$dummy)= split(/\s/,$1); - } - # if loose BB should be performed by ps2eps - # apply changes to resulting bounding box if needed - if ($looseBB ne '') - { - if ($cBBllx > 0) { $cBBllx--; } - if ($cBBlly > 0) { $cBBlly--; } - $cBBurx++; $cBBury++; - } - # extend clipping box by 1 point - if ($clip) - { - if ($cBBllx > 0) { $cBBllx--; } - if ($cBBlly > 0) { $cBBlly--; } - $cBBurx++; $cBBury++; - } - if ($cBBllx < 0 || $cBBlly < 0) - { - if (!$quiet) - { - print STDERR "WARNING! Your drawing had a negative Bounding Box which is deprecated and may cause problems!. I'll shift it.\n"; - } - $translate_x= -int($cBBllx); - $translate_y= -int($cBBlly); - $cBBllx=0; - $cBBurx= $cBBurx + $translate_x; - $cBBlly=0; - $cBBury= $cBBury + $translate_y; - - $hcBBurx= $hcBBurx + $hcBBllx; - $hcBBury= $hcBBury + $hcBBlly; - $hcBBllx= 0; - $hcBBlly= 0; - - $hiresboundingbox="%%HiResBoundingBox: $hcBBllx $hcBBlly $hcBBurx $hcBBury\n"; - - $translation="$translate_x $translate_y translate"; - $translatecmd="-c \'$translation\'"; - } - $boundingbox = "%%BoundingBox: $cBBllx $cBBlly $cBBurx $cBBury\n"; - - if (!$quiet) { print STDERR "ready. $boundingbox" }; - - $before_startps= 1; - $inserted_prolog= 0; - $prolog_passed= 0; - - ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - ## -- Create output file -- - ## %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - if (!$quiet) { print STDERR "Creating output file $outfname..."; } - - open($tmpfhandle,"<$tmpfname") or die "Cannot open file $tmpfname for reading"; - CREATEOUTPUT: - while (<$tmpfhandle>) - { - # check whether we are in a binary section - - $binarysection=(/^(%%BeginBinary)|(beginimage)\r?\n?$/ ... /^(%%EndBinary)|^(endimage)/) || - (/^(doNimage)|(doclutimage)\r?\n?$/ ... /(^|~> )Z\r?\n?$/) || # Pscript_Win_Dib_L2 5.0 0 - (/^beginjpeg / ... /~> endjpeg\r?\n?$/) || # Pscript_Win_Dib_L2 5.0 0 - (/^pdfIm/ ... /^%-EOD-/); - - if ( !$binarysection ) - { - s/\r?\n?$//; # remove CR and/or LF at end of line if not in binary section - } - - # check where magic Postscript header starts - skip leading binary stuff, e.g., HP PCL/PJL code - if ($before_startps) - { - if ( /%!/ ) # This is usually the smallest magic sequence - { # Note: Adobe Photoshop generated a binary heading, so ^ is not applicable - # %! may be part of a binary sequence, but then control characters follow - # so skip %! if non alphanumeric characters follow - if ( ! /%!.*[^\w]{2,}/ ) - { - # some heading without two control characters found - $before_startps= 0; - if (! /%!PS-Adobe.*/i) # some strange programs use other magics - { - print STDERR "** Warning **: Weird heading line -- ",$_," -- "; - } - } - } - next CREATEOUTPUT; - } - else # we are hopefully in regular postscript code now - { - # count %%EOFs as we want to know when we got the last EOF - if ( /^%%EOF\s*$/ ) - { - $seenEOF++; - } - - # We should insert our own prologue including the newly calculated BoundingBox - if (! $inserted_prolog) - { - print $outfhandle "%!PS-Adobe-$PSversion EPSF-$PSDSCversion\n"; - # check if we need to rotate - $transrotcmd=''; - if ($rotatecmd) - { - if ($rotate eq $rotright) - { - $transrotcmd="-$cBBlly $cBBurx translate"; - $boundingbox='%%BoundingBox: 0 0 ' . ($cBBury-$cBBlly) . ' ' . ($cBBurx-$cBBllx) . "\n"; - if ($hiresboundingbox ne "") - { - $hiresboundingbox='%%HiResBoundingBox: 0 0 ' . ($hcBBury-$hcBBlly) . ' ' . ($hcBBurx-$hcBBllx) . "\n"; - } - - } - elsif ($rotate eq $rotleft) - { - $transrotcmd="$cBBury -$cBBllx translate"; - $boundingbox='%%BoundingBox: 0 0 ' . ($cBBury-$cBBlly) . ' ' . ($cBBurx-$cBBllx) . "\n"; - if ($hiresboundingbox ne "") - { - $hiresboundingbox= '%%HiResBoundingBox: 0 0 ' . ($hcBBury-$hcBBlly) . ' ' . ($hcBBurx-$hcBBllx) . "\n"; - } - } - elsif ($rotate eq $rotupsidedown) - { - $transrotcmd="$cBBurx $cBBury translate"; - $boundingbox='%%BoundingBox: 0 0 ' . ($cBBurx-$cBBllx) . ' ' . ($cBBury-$cBBlly) . "\n"; - if ($hiresboundingbox ne "") - { - $hiresboundingbox='%%HiResBoundingBox: 0 0 ' . ($hcBBurx-$hcBBllx) . ' ' . ($hcBBury-$hcBBlly) . "\n"; - } - } - } - print $outfhandle $boundingbox; - if (!defined($hiresboundingbox)) - { - $nohires=1; - } - if (defined($hiresboundingbox) && !defined($nohires)) { print $outfhandle $hiresboundingbox; } - $inserted_prolog= 1; - redo CREATEOUTPUT; - } - else # already inserted_prolog - { - if (! $prolog_passed) - { - #ignore the following lines in the prologue - if ( /^%%(HiRes)?BoundingBox/ || - /^%%Pages/ || - /^%%BeginProlog/ || - /^%%EndProlog/ || - ($filterorientation && /^%%Orientation/) || - ($removeDSC && /^%%.*: \(atend\)/) || - ($removePreview && (/^%%BeginPreview/ ... /^%%EndPreview/)) ) - { - next CREATEOUTPUT; - } - else - { - if ( /^[^%].*/ || - /^%%EndComments/ ) # line is not a comment - { - #output postscript code for proper EPS file - if ($insertPScode) - { - print $outfhandle "%%EndComments\n", - "% EPSF created by ps2eps $ver[2]\n", - "%%BeginProlog\n"; - } - # Insert own postscript code for clipping - if ($clip) - { - if (!defined($nohires)) - { - printf $outfhandle "newpath %f %f moveto %f %f lineto %f %f lineto %f %f lineto closepath clip\n",$hcBBllx-0.1,$hcBBlly-0.1,$hcBBurx+0.1,$hcBBlly-0.1,$hcBBurx+0.1,$hcBBury+0.1,$hcBBllx-0.1,$hcBBury+0.1; - } - else - { - printf $outfhandle "newpath %d %d moveto %d %d lineto %d %d lineto %d %d lineto closepath clip\n",$cBBllx,$cBBlly,$cBBurx,$cBBlly,$cBBurx,$cBBury,$cBBllx,$cBBury; - } - } #endif clip - - if ($rotate ne '') - { - print $outfhandle "$transrotcmd\n"; - print $outfhandle "$rotate\n"; - } - if ($translation ne '') - { - print $outfhandle "$translation\n"; - } - - #insert surrounding postscript code - if ($insertPScode) - { - print $outfhandle "save\n", - "countdictstack\n", - "mark\n", - "newpath\n", - "/showpage {} def\n", - "/setpagedevice {pop} def\n", - "%%EndProlog\n", - "%%Page 1 1\n"; - } - $prolog_passed= 1; - if (/^%%EndComments/) { next CREATEOUTPUT; } - } #endif line is not a comment - } #end else - } #endif (we are in the prologue section) - else #we are in the main part of postscript file - { - #end of postscript file reached? - #Usually the DSC %%EOF signifies the end - if ( eof($tmpfhandle) || - ($ignoreEOFDSC == 0 && /^%%EOF\s*$/ && $seenEOF == $totalEOFDSC) - || ( $trailerseen && /^II\*\000.*/ ) - ) - { - #do not forget to print last line if not terminated by LF - if ( eof($tmpfhandle) && !/^$/ && !/^%%EOF\s*$/ ) # do not insert %%EOF twice - { - print $outfhandle $_,"\n"; - } - #add appropriate trailer - if ($insertPScode) - { - print $outfhandle "%%Trailer\n", - "cleartomark\n", - "countdictstack\n", - "exch sub { end } repeat\n", - "restore\n", - "%%EOF\n"; - } - last CREATEOUTPUT; - } # stop output - - # Trailer comment seen? - if ( /^%%Trailer\s*$/ ) - { - $trailerseen=1; - } - else - { - if (!/^\s*$/) #non empty lines follow - { - $trailerseen=0; - } - } - - # check for trigger - if (defined($triggerstring) && /^$triggerstring$/) - { - $trigger= 1; - }; - - # remove complete lines if one of the expression matches - if ( !$binarysection # only when not in binary section - && - ( - ($removePreview && (/^%%BeginPreview/ ... /^%%EndPreview/)) - || # no preview - (defined($rangefilter_begin) && - (/$rangefilter_begin/ ... /$rangefilter_end/) && - (!(/$exclude_rangefilter_begin/ ... /$exclude_rangefilter_end/)) - ) - || - (defined($triggered_rangefilter_begin) && defined($triggered_rangefilter_end) && - $trigger && - (/$triggered_rangefilter_begin/ ... /$triggered_rangefilter_end/) - ) - || - /$linefilter/ # lines by linefilter - || - ($removeDSC && (/^%( |!)(\w )+/ || /^%%([A-Za-z]+\s)/)) # any type of structured comment - || - ($removeADO && - (/^statusdict begin.*ProductName.*print product print.*flush end\r?\n?$/ || - /^\(%%\[\s*(Page:.*|LastPage)\s*\]%%\)\s*=\s*\w*\s*\r?\n?/ )) - || - /^$/ # empty lines - ) - ) - { - next CREATEOUTPUT; - } - - # replacement - if ( defined($fixsearchpat) ) - { - #if (/$fixsearchpat/) { print STDERR "**filter** before:",$_,"\n"; } - #if (s/$fixsearchpat/$fixreplacepat/) { print STDERR "**filter** after:",$_,"\n";} - s/$fixsearchpat/$fixreplacepat/; - } - - # sanity check for potential dangerous commands - if ( /(^|\s)(clear|erasepage|initmatrix|initclip|initgraphics|startjob|cleardictstack|setmatrix|setpagedevice|copypage|grestoreall|exitserver|quit)(\s|$)/ ) - { - $notsane= 1; - #print STDERR "Warning: dangerous command in line: ",$_,"\n"; - } - } # end else (this is main part) - - # Output the postscript line to result file - print $outfhandle $_; - - if (!$binarysection) - { - print $outfhandle "\n"; # terminate line with LF - } - } # end else prolog_passed - } # end else inserted_prolog - } # end while CREATEOUTPUT - - close($tmpfhandle); - - if ($tmpfname ne $infname) { unlink "$tmpfname"; } #remove temporary file - - close ($outfhandle); - - # print warning if magic sequence not found - if ( $before_startps ) - { - print STDERR "\n ** Error!! **: could not identify begin of postscript code in file $infname, please check header line!\n First line should start with %!. No output generated.\n"; - } - - if (!$quiet) { print STDERR "ready.\n"; } - if ($warnings and $notsane and !$quiet) - { - print STDERR "** Warning **: EPS-output for $infname is not sane, at least one\n", - "of the following commands was still present:\n", - "clear erasepage initmatrix initclip initgraphics startjob\n", - "cleardictstack setmatrix setpagedevice copypage grestoreall\n", - "exitserver quit\n"; - } -} #end while PROCESSFILE - -# ---- end of perl-script ------- +../../texmf/scripts/ps2eps/ps2eps.pl
\ No newline at end of file diff --git a/Master/bin/powerpc-linux/psmerge b/Master/bin/powerpc-linux/psmerge index 9500bcdf7e6..c424f18d568 100755..120000 --- a/Master/bin/powerpc-linux/psmerge +++ b/Master/bin/powerpc-linux/psmerge @@ -1,85 +1 @@ -#!/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. - -$prog = ($0 =~ s=.*/==); - -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; - +../../texmf/scripts/psutils/psmerge.pl
\ No newline at end of file |