[36407] trunk/dports/perl/p5-cam-pdf
ricci at macports.org
ricci at macports.org
Wed Apr 30 14:37:51 PDT 2008
Revision: 36407
http://trac.macosforge.org/projects/macports/changeset/36407
Author: ricci at macports.org
Date: 2008-04-30 14:37:50 -0700 (Wed, 30 Apr 2008)
Log Message:
-----------
bump revision
add patch that improves node traversal (submitted to upstream)
change my email addr to my MP addr
Modified Paths:
--------------
trunk/dports/perl/p5-cam-pdf/Portfile
Added Paths:
-----------
trunk/dports/perl/p5-cam-pdf/files/
trunk/dports/perl/p5-cam-pdf/files/patch-lib-CAM-PDF.pm
Modified: trunk/dports/perl/p5-cam-pdf/Portfile
===================================================================
--- trunk/dports/perl/p5-cam-pdf/Portfile 2008-04-30 21:06:28 UTC (rev 36406)
+++ trunk/dports/perl/p5-cam-pdf/Portfile 2008-04-30 21:37:50 UTC (rev 36407)
@@ -2,20 +2,25 @@
PortSystem 1.0
PortGroup perl5 1.0
-version 1.12
+version 1.13
+revision 0
perl5.setup CAM-PDF ${version}
-revision 0
-maintainers opendarwin.org at darkart.com
+maintainers ricci
description Reads and writes any document that conforms to PDF v1.4
long_description This package reads and writes any document that \
conforms to the PDF specification generously provided by Adobe at \
http://partners.adobe.com/asn/developer/acrosdk/docs/filefmtspecs/PDFReference.pdf \
(3rd edition, for PDF v1.4 as of May 2002)
-checksums md5 f0c7d5fbe03ae08d82fcfbb7a7d88656 \
- sha1 de74b10b040db27e2013cad2e291bb03d6702854 \
- rmd160 6b49c3afa9fef6c75ac5e0503485becc08fcd421
+platforms darwin
+patchfiles patch-lib-CAM-PDF.pm
+
+checksums md5 497e1b2b5d84defd0b39c262be832915 \
+ sha1 ccda2d9482e53911ff31045a54b701e16e62c1f5 \
+ rmd160 abab079bdf72e7179e415e88be97790c86eeee15
+
+
depends_lib-append port:p5-crypt-rc4 \
port:p5-text-pdf
Added: trunk/dports/perl/p5-cam-pdf/files/patch-lib-CAM-PDF.pm
===================================================================
--- trunk/dports/perl/p5-cam-pdf/files/patch-lib-CAM-PDF.pm (rev 0)
+++ trunk/dports/perl/p5-cam-pdf/files/patch-lib-CAM-PDF.pm 2008-04-30 21:37:50 UTC (rev 36407)
@@ -0,0 +1,148 @@
+--- lib/CAM/PDF.pm.orig 2007-11-28 21:42:46.000000000 -0800
++++ lib/CAM/PDF.pm 2008-03-27 20:06:54.000000000 -0700
+@@ -566,6 +566,9 @@
+ $CAM::PDF::errstr = "Could not decipher xref row:\n" . $self->trimstr($row);
+ return;
+ }
++ if ((0 == $1) && (0 == $2)) {
++ next;
++ }
+ if ($type eq 'n')
+ {
+ $index->{$objnum} = $indexnum;
+@@ -3785,6 +3788,7 @@
+ my $otherdoc = shift;
+ my $otherkey = shift;
+ my $follow = shift;
++ my %traversedNodes = ();
+
+ # careful! 'undef' means something different from '0' here!
+ if (!defined $follow)
+@@ -3838,10 +3842,10 @@
+ my $newkey = $self->appendObject($otherdoc, $oldrefkey, 0);
+ $newrefkeys{$oldrefkey} = $newkey;
+ }
+- $self->changeRefKeys($objnode, \%newrefkeys);
++ $self->changeRefKeys($objnode, \%newrefkeys, \%traversedNodes);
+ for my $newkey (values %newrefkeys)
+ {
+- $self->changeRefKeys($self->dereference($newkey), \%newrefkeys);
++ $self->changeRefKeys($self->dereference($newkey), \%newrefkeys, \%traversedNodes);
+ }
+ }
+ return (%newrefkeys);
+@@ -5040,7 +5044,7 @@
+ if ($stream)
+ {
+ $stream = $self->{crypt}->encrypt($self, $stream, $objnode->{objnum}, $objnode->{gennum});
+- $str .= "\nstream\n" . $stream . 'endstream';
++ $str .= "\nstream\n" . $stream . '\nendstream';
+ }
+ return "obj\n$str\nendobj\n";
+ }
+@@ -5072,6 +5076,7 @@
+ my $objnode = shift;
+ my $func = shift;
+ my $funcdata = shift;
++ my $funcResult = undef;
+
+ my $traversed = {};
+ my @stack = ($objnode);
+@@ -5080,7 +5085,8 @@
+ while ($i < @stack)
+ {
+ my $objnode = $stack[$i++];
+- $self->$func($objnode, $funcdata);
++ $funcResult = undef;
++ $funcResult = $self->$func($objnode, $funcdata);
+
+ my $type = $objnode->{type};
+ my $val = $objnode->{value};
+@@ -5108,6 +5114,62 @@
+ return;
+ }
+
++sub recurseTraverse {
++ my ($self, $deref, $objnode, $traversedRef, $func, $funcdata, $objnum) = @_;
++
++ my $type;
++ my $val;
++ my @nodes = ();
++ my $node = undef;
++ my $newObjNum = undef;
++
++ if ((!defined($objnode)) || (! ref $objnode )) {
++ return;
++ }
++
++ if (defined($objnum)) {
++ $newObjNum = $objnum;
++ }
++
++ $type = $objnode->{type};
++ $val = $objnode->{value};
++
++ if (exists $objnode->{objnum}) {
++ $newObjNum = $objnode->{objnum};
++ }
++
++ if ((defined($newObjNum)) &&
++ (exists ($traversedRef->{$newObjNum}))) {
++ return;
++ } else {
++ $self->$func($objnode, $funcdata);
++ }
++
++ if ($type eq 'dictionary') {
++ push (@nodes, values %{$val});
++ } elsif ($type eq 'array') {
++ push (@nodes, @{$val});
++ } elsif ($type eq 'object') {
++ push (@nodes, $val);
++ } elsif ($type eq 'reference') {
++ if ($deref) {
++ push (@nodes, $self->dereference($val));
++ } else {
++ return;
++ }
++ }
++
++ for $node (@nodes) {
++ recurseTraverse($self, $deref, $node, $traversedRef, $func, $funcdata, $newObjNum);
++ }
++
++ if (($type eq 'object')) {
++ $traversedRef->{$newObjNum} = 1;
++ }
++
++ return;
++}
++
+ # decodeObject and decodeAll differ from each other like this:
+ #
+ # decodeObject JUST decodes a single stream directly below the object
+@@ -5538,10 +5600,11 @@
+ my $self = shift;
+ my $objnode = shift;
+ my $newrefkeys = shift;
++ my $traversedRef = shift;
+
+ my $follow = shift || 0; # almost always false
+
+- $self->traverse($follow, $objnode, \&_changeRefKeysCB, $newrefkeys);
++ $self->recurseTraverse($follow, $objnode, $traversedRef, \&_changeRefKeysCB, $newrefkeys, 0);
+ return;
+ }
+
+@@ -5558,9 +5621,10 @@
+ if (exists $newrefkeys->{$objnode->{value}})
+ {
+ $objnode->{value} = $newrefkeys->{$objnode->{value}};
++ return 1;
+ }
+ }
+- return;
++ return 0;
+ }
+
+ =item $doc->abbrevInlineImage($object)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macports-changes/attachments/20080430/35073edf/attachment.html
More information about the macports-changes
mailing list