summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/scripts/psutils/includeres.pl
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-04-07 18:42:53 +0000
committerKarl Berry <karl@freefriends.org>2013-04-07 18:42:53 +0000
commitedb2136c619d2c59bcb6dfd431c4c7636ff8913d (patch)
tree8aa04dd27bee1b2f2f9b3fd45dab41cf7771f82e /Master/texmf-dist/scripts/psutils/includeres.pl
parentb3efa3bb4509e7bd53d737fb729d0d92a76f1f98 (diff)
texmf -> texmf-dist: scripts
git-svn-id: svn://tug.org/texlive/trunk@29719 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/scripts/psutils/includeres.pl')
-rwxr-xr-xMaster/texmf-dist/scripts/psutils/includeres.pl45
1 files changed, 45 insertions, 0 deletions
diff --git a/Master/texmf-dist/scripts/psutils/includeres.pl b/Master/texmf-dist/scripts/psutils/includeres.pl
new file mode 100755
index 00000000000..c9d0eee61cb
--- /dev/null
+++ b/Master/texmf-dist/scripts/psutils/includeres.pl
@@ -0,0 +1,45 @@
+#!/usr/bin/env perl
+# includeres: include resources in PostScript file
+#
+# Copyright (C) Angus J. C. Duggan 1991-1995
+# See file LICENSE for details.
+
+$0 =~ s=.*/==;
+$prog = $0;
+
+%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);
+ if (open(RES, $name) || open(RES, "$name$extn{$type}")) {
+ while (<RES>) {
+ print $_;
+ }
+ close(RES);
+ } else {
+ print "%%IncludeResource: ", join(" ", $type, @res), "\n";
+ print STDERR "Resource $name not found\n";
+ }
+ } else {
+ print $_;
+ }
+}
+