Update Archive::Extract to 0.34
Jos I. Boumans [Sat, 27 Jun 2009 12:33:52 +0000 (14:33 +0200)]
Greetings,

below are the patch notes:

Changes for 0.32    Sat Jun 27 14:23:54 2009
============================================
* Attempt to address #46948: unable to install install on win32.
   Binaries on Win32 are notoriously unreliable and Strawberry perl
   ships with all the needed perl modules, so skip failed binary
   tests on Win32.
* Address #47053: Use Archive::Tar iter to keep from read the
   tar into memory. Thanks to Robert Krimen and Doug Wilson for
   their patches.

--

Jos Boumans

"Whenever you find you are on the side of the majority,
it is time to pause and reflect." - Mark Twain

Signed-off-by: H.Merijn Brand <h.m.brand@xs4all.nl>

21 files changed:
lib/Archive/Extract.pm
lib/Archive/Extract/t/01_Archive-Extract.t
lib/Archive/Extract/t/src/double_dir.zip.packed
lib/Archive/Extract/t/src/x.Z.packed
lib/Archive/Extract/t/src/x.bz2.packed
lib/Archive/Extract/t/src/x.gz.packed
lib/Archive/Extract/t/src/x.jar.packed
lib/Archive/Extract/t/src/x.lzma.packed
lib/Archive/Extract/t/src/x.par.packed
lib/Archive/Extract/t/src/x.tar.gz.packed
lib/Archive/Extract/t/src/x.tar.packed
lib/Archive/Extract/t/src/x.tgz.packed
lib/Archive/Extract/t/src/x.zip.packed
lib/Archive/Extract/t/src/y.jar.packed
lib/Archive/Extract/t/src/y.par.packed
lib/Archive/Extract/t/src/y.tar.bz2.packed
lib/Archive/Extract/t/src/y.tar.gz.packed
lib/Archive/Extract/t/src/y.tar.packed
lib/Archive/Extract/t/src/y.tbz.packed
lib/Archive/Extract/t/src/y.tgz.packed
lib/Archive/Extract/t/src/y.zip.packed

index ad3be80..9bb4a06 100644 (file)
@@ -38,15 +38,16 @@ use constant Z              => 'Z';
 use constant LZMA           => 'lzma';
 
 use vars qw[$VERSION $PREFER_BIN $PROGRAMS $WARN $DEBUG 
-            $_ALLOW_BIN $_ALLOW_PURE_PERL
+            $_ALLOW_BIN $_ALLOW_PURE_PERL $_ALLOW_TAR_ITER
          ];
 
-$VERSION            = '0.32';
+$VERSION            = '0.34';
 $PREFER_BIN         = 0;
 $WARN               = 1;
 $DEBUG              = 0;
 $_ALLOW_PURE_PERL   = 1;    # allow pure perl extractors
 $_ALLOW_BIN         = 1;    # allow binary extractors
+$_ALLOW_TAR_ITER        = 1;    # try to use Archive::Tar->iter if available
 
 # same as all constants
 my @Types           = ( TGZ, TAR, GZ, ZIP, BZ2, TBZ, Z, LZMA ); 
@@ -782,43 +783,72 @@ sub _untar_at {
         $fh_to_read = $bz;
     }
 
-    ### $Archive::Tar::WARN is 1 by default in Archive::Tar, but we've
-    ### localized $Archive::Tar::WARN already.
-    $Archive::Tar::WARN = $Archive::Extract::WARN;
+    my @files;
+    {
+        ### $Archive::Tar::WARN is 1 by default in Archive::Tar, but we've
+        ### localized $Archive::Tar::WARN already.
+        $Archive::Tar::WARN = $Archive::Extract::WARN;
 
-    my $tar = Archive::Tar->new();
+        ### only tell it it's compressed if it's a .tgz, as we give it a file
+        ### handle if it's a .tbz
+        my @read = ( $fh_to_read, ( $self->is_tgz ? 1 : 0 ) );
 
-    ### only tell it it's compressed if it's a .tgz, as we give it a file
-    ### handle if it's a .tbz
-    unless( $tar->read( $fh_to_read, ( $self->is_tgz ? 1 : 0 ) ) ) {
-        return $self->_error(loc("Unable to read '%1': %2", $self->archive,
-                                    $Archive::Tar::error));
-    }
+        ### for version of Archive::Tar > 1.04
+        local $Archive::Tar::CHOWN = 0;
 
-    ### workaround to prevent Archive::Tar from setting uid, which
-    ### is a potential security hole. -autrijus
-    ### have to do it here, since A::T needs to be /loaded/ first ###
-    {   no strict 'refs'; local $^W;
+        ### use the iterator if we can. it's a feature of A::T 1.40 and up
+        if ( $_ALLOW_TAR_ITER && Archive::Tar->can( 'iter' ) ) {
 
-        ### older versions of archive::tar <= 0.23
-        *Archive::Tar::chown = sub {};
-    }
+            my $next;
+            unless ( $next = Archive::Tar->iter( @read ) ) {
+                return $self->_error(loc(
+                            "Unable to read '%1': %2", $self->archive,
+                            $Archive::Tar::error));
+            }
 
-    ### for version of Archive::Tar > 1.04
-    local $Archive::Tar::CHOWN = 0;
+            while ( my $file = $next->() ) {
+                push @files, $file->full_path;
 
-    {   local $^W;  # quell 'splice() offset past end of array' warnings
-                    # on older versions of A::T
+                $file->extract or return $self->_error(loc(
+                        "Unable to read '%1': %2",
+                        $self->archive,
+                        $Archive::Tar::error));
+            }
+
+        ### older version, read the archive into memory
+        } else {
 
-        ### older archive::tar always returns $self, return value slightly
-        ### fux0r3d because of it.
-        $tar->extract()
-            or return $self->_error(loc("Unable to extract '%1': %2",
-                                    $self->archive, $Archive::Tar::error ));
+            my $tar = Archive::Tar->new();
+
+            unless( $tar->read( @read ) ) {
+                return $self->_error(loc("Unable to read '%1': %2",
+                            $self->archive, $Archive::Tar::error));
+            }
+
+            ### workaround to prevent Archive::Tar from setting uid, which
+            ### is a potential security hole. -autrijus
+            ### have to do it here, since A::T needs to be /loaded/ first ###
+            {   no strict 'refs'; local $^W;
+
+                ### older versions of archive::tar <= 0.23
+                *Archive::Tar::chown = sub {};
+            }
+
+            {   local $^W;  # quell 'splice() offset past end of array' warnings
+                            # on older versions of A::T
+
+                ### older archive::tar always returns $self, return value
+                ### slightly fux0r3d because of it.
+                $tar->extract or return $self->_error(loc(
+                        "Unable to extract '%1': %2",
+                        $self->archive, $Archive::Tar::error ));
+            }
+
+            @files = $tar->list_files;
+        }
     }
 
-    my @files   = $tar->list_files;
-    my $dir     = $self->__get_extract_dir( \@files );
+    my $dir = $self->__get_extract_dir( \@files );
 
     ### store the files that are in the archive ###
     $self->files(\@files);
index 63a956b..9b4de26 100644 (file)
@@ -305,178 +305,202 @@ for my $switch ( [0,1], [1,0] ) {
 
     for my $archive (keys %$tmpl) {
 
-        diag("Extracting $archive in config $cfg") if $Debug;
-
         ### check first if we can do the proper
 
         my $ae = Archive::Extract->new(
                         archive => File::Spec->catfile($SrcDir,$archive) );
 
-        isa_ok( $ae, $Class );
-
-        my $method = $tmpl->{$archive}->{method};
-        ok( $ae->$method(),         "Archive type recognized properly" );
-
-    ### 10 tests from here on down ###
-    SKIP: {
-        my $file        = $tmpl->{$archive}->{outfile};
-        my $dir         = $tmpl->{$archive}->{outdir};  # can be undef
-        my $rel_path    = File::Spec->catfile( grep { defined } $dir, $file );
-        my $abs_path    = File::Spec->catfile( $OutDir, $rel_path );
-        my $abs_dir     = File::Spec->catdir( 
-                            grep { defined } $OutDir, $dir );
-        my $nix_path    = File::Spec::Unix->catfile(
-                            grep { defined } $dir, $file );
-
-        ### check if we can run this test ###
-        my $pgm_fail; my $mod_fail;
-        for my $pgm ( @{$tmpl->{$archive}->{programs}} ) {
-            ### no binary extract method
-            $pgm_fail++, next unless $pgm;
-
-            ### we dont have the program
-            $pgm_fail++ unless $Archive::Extract::PROGRAMS->{$pgm} &&
-                               $Archive::Extract::PROGRAMS->{$pgm};
-
-        }
-
-        for my $mod ( @{$tmpl->{$archive}->{modules}} ) {
-            ### no module extract method
-            $mod_fail++, next unless $mod;
-
-            ### we dont have the module
-            $mod_fail++ unless check_install( module => $mod );
-        }
-
-        ### where to extract to -- try both dir and file for gz files
-        ### XXX test me!
-        #my @outs = $ae->is_gz ? ($abs_path, $OutDir) : ($OutDir);
-        my @outs = $ae->is_gz || $ae->is_bz2 || $ae->is_Z || $ae->is_lzma
-                        ? ($abs_path) 
-                        : ($OutDir);
-
-        skip "No binaries or modules to extract ".$archive, 
-            (10 * scalar @outs) if
-               ($mod_fail && ($pgm_fail || !$Archive::Extract::_ALLOW_BIN)) ||
-               ($pgm_fail && ($mod_fail || !$Archive::Extract::_ALLOW_PURE_PERL));
-
-        ### we dont warnings spewed about missing modules, that might
-        ### be a problem...
-        local $IPC::Cmd::WARN = 0;
-        local $IPC::Cmd::WARN = 0;
-        
-        for my $use_buffer ( IPC::Cmd->can_capture_buffer , 0 ) {
+        ### Do an extra run with _ALLOW_TAR_ITER = 0 if it's a tar file of some
+        ### sort
+        my @with_tar_iter = ( 1 );
+        push @with_tar_iter, 0 if grep { $ae->$_ } qw[is_tbz is_tgz is_tar];
 
-            ### test buffers ###
-            my $turn_off = !$use_buffer && !$pgm_fail &&
-                            $Archive::Extract::_ALLOW_BIN;
+        for my $tar_iter (@with_tar_iter) { SKIP: {
 
-            ### whitebox test ###
-            ### stupid warnings ###
-            local $IPC::Cmd::USE_IPC_RUN    = 0 if $turn_off;
-            local $IPC::Cmd::USE_IPC_RUN    = 0 if $turn_off;
-            local $IPC::Cmd::USE_IPC_OPEN3  = 0 if $turn_off;
-            local $IPC::Cmd::USE_IPC_OPEN3  = 0 if $turn_off;
+            ### Doesn't matter unless .tar, .tbz, .tgz
+            local $Archive::Extract::_ALLOW_TAR_ITER = $tar_iter;
 
+            diag("Archive::Tar->iter: $tar_iter") if $Debug;
 
-            ### try extracting ###
-            for my $to ( @outs ) {
+            isa_ok( $ae, $Class );
 
-                diag("Extracting to: $to")                  if $Debug;
-                diag("Buffers enabled: ".!$turn_off)        if $Debug;
-  
-                my $rv = $ae->extract( to => $to );
-    
-                SKIP: {
-                    my $re  = qr/^No buffer captured/;
-                    my $err = $ae->error || '';
-              
-                    ### skip buffer tests if we dont have buffers or
-                    ### explicitly turned them off
-                    skip "No buffers available", 8
-                        if ( $turn_off || !IPC::Cmd->can_capture_buffer)
-                            && $err =~ $re;
-
-                    ### skip tests if we dont have an extractor
-                    skip "No extractor available", 8 
-                        if $err =~ /Extract failed; no extractors available/;
-    
-                    ok( $rv, "extract() for '$archive' reports success ($cfg)");
-    
-                    diag("Extractor was: " . $ae->_extractor)   if $Debug;
-    
-                    ### if we /should/ have buffers, there should be
-                    ### no errors complaining we dont have them...
-                    unlike( $err, $re,
-                                    "No errors capturing buffers" );
-    
-                    ### might be 1 or 2, depending wether we extracted 
-                    ### a dir too
-                    my $files    = $ae->files || [];
-                    my $file_cnt = grep { defined } $file, $dir;
-                    is( scalar @$files, $file_cnt,
-                                    "Found correct number of output files (@$files)" );
-                    
-                    ### due to prototypes on is(), if there's no -1 index on
-                    ### the array ref, it'll give a fatal exception:
-                    ### "Modification of non-creatable array value attempted,
-                    ### subscript -1 at -e line 1." So wrap it in do { }
-                    is( do { $files->[-1] }, $nix_path,
-                                    "Found correct output file '$nix_path'" );
-    
-                    ok( -e $abs_path,
-                                    "Output file '$abs_path' exists" );
-                    ok( $ae->extract_path,
-                                    "Extract dir found" );
-                    ok( -d $ae->extract_path,
-                                    "Extract dir exists" );
-                    is( $ae->extract_path, $abs_dir,
-                                    "Extract dir is expected '$abs_dir'" );
-                }
+            my $method = $tmpl->{$archive}->{method};
+            ok( $ae->$method(),         "Archive type recognized properly" );
 
-                SKIP: {
-                    skip "Unlink tests are unreliable on Win32", 3 if IS_WIN32;
 
-                    1 while unlink $abs_path;
-                    ok( !(-e $abs_path), "Output file successfully removed" );
+            my $file        = $tmpl->{$archive}->{outfile};
+            my $dir         = $tmpl->{$archive}->{outdir};  # can be undef
+            my $rel_path    = File::Spec->catfile( grep { defined } $dir, $file );
+            my $abs_path    = File::Spec->catfile( $OutDir, $rel_path );
+            my $abs_dir     = File::Spec->catdir(
+                                grep { defined } $OutDir, $dir );
+            my $nix_path    = File::Spec::Unix->catfile(
+                                grep { defined } $dir, $file );
+
+            ### check if we can run this test ###
+            my $pgm_fail; my $mod_fail;
+            for my $pgm ( @{$tmpl->{$archive}->{programs}} ) {
+                ### no binary extract method
+                $pgm_fail++, next unless $pgm;
+
+                ### we dont have the program
+                $pgm_fail++ unless $Archive::Extract::PROGRAMS->{$pgm} &&
+                                   $Archive::Extract::PROGRAMS->{$pgm};
+
+            }
+
+            for my $mod ( @{$tmpl->{$archive}->{modules}} ) {
+                ### no module extract method
+                $mod_fail++, next unless $mod;
+
+                ### we dont have the module
+                $mod_fail++ unless check_install( module => $mod );
+            }
+
+            ### where to extract to -- try both dir and file for gz files
+            ### XXX test me!
+            #my @outs = $ae->is_gz ? ($abs_path, $OutDir) : ($OutDir);
+            my @outs = $ae->is_gz || $ae->is_bz2 || $ae->is_Z || $ae->is_lzma
+                            ? ($abs_path)
+                            : ($OutDir);
+
+            ### 10 tests from here on down ###
+            if( ($mod_fail && ($pgm_fail || !$Archive::Extract::_ALLOW_BIN))
+                ||
+                ($pgm_fail && ($mod_fail || !$Archive::Extract::_ALLOW_PURE_PERL))
+            ) {
+                skip "No binaries or modules to extract ".$archive,
+                    (10 * scalar @outs);
+            }
+
+            ### we dont warnings spewed about missing modules, that might
+            ### be a problem...
+            local $IPC::Cmd::WARN = 0;
+            local $IPC::Cmd::WARN = 0;
+
+            for my $use_buffer ( IPC::Cmd->can_capture_buffer , 0 ) {
+
+                ### test buffers ###
+                my $turn_off = !$use_buffer && !$pgm_fail &&
+                                $Archive::Extract::_ALLOW_BIN;
+
+                ### whitebox test ###
+                ### stupid warnings ###
+                local $IPC::Cmd::USE_IPC_RUN    = 0 if $turn_off;
+                local $IPC::Cmd::USE_IPC_RUN    = 0 if $turn_off;
+                local $IPC::Cmd::USE_IPC_OPEN3  = 0 if $turn_off;
+                local $IPC::Cmd::USE_IPC_OPEN3  = 0 if $turn_off;
+
+
+                ### try extracting ###
+                for my $to ( @outs ) {
+
+                    diag("Extracting to: $to")                  if $Debug;
+                    diag("Buffers enabled: ".!$turn_off)        if $Debug;
+
+                    my $rv = $ae->extract( to => $to );
         
                     SKIP: {
-                        skip "No extract path captured, can't remove paths", 2
-                            unless $ae->extract_path;
+                        my $re  = qr/^No buffer captured/;
+                        my $err = $ae->error || '';
+
+                        ### skip buffer tests if we dont have buffers or
+                        ### explicitly turned them off
+                        skip "No buffers available", 8
+                            if ( $turn_off || !IPC::Cmd->can_capture_buffer)
+                                && $err =~ $re;
+
+                        ### skip tests if we dont have an extractor
+                        skip "No extractor available", 8
+                            if $err =~ /Extract failed; no extractors available/;
+
+                        ### win32 + bin utils is notorious, and none of them are
+                        ### officially supported by strawberry. So if we
+                        ### encounter an error while extracting whlie running
+                        ### with $PREFER_BIN on win32, just skip the tests.
+                        ### See rt#46948: unable to install install on win32
+                        ### for details on the pain
+                        skip "Binary tools on Win32 are very unreliable", 8
+                            if $err and $Archive::Extract::_ALLOW_BIN
+                                    and IS_WIN32;
         
-                        ### if something went wrong with determining the out
-                        ### path, don't go deleting stuff.. might be Really Bad
-                        my $out_re = quotemeta( $OutDir );
-                        
-                        ### VMS directory layout is different. Craig Berry
-                        ### explains:
-                        ### the test is trying to determine if C</disk1/foo/bar>
-                        ### is part of C</disk1/foo/bar/baz>.  Except in VMS
-                        ### syntax, that would mean trying to determine whether
-                        ### C<disk1:[foo.bar]> is part of C<disk1:[foo.bar.baz]>
-                        ### Because we have both a directory delimiter
-                        ### (dot) and a directory spec terminator (right 
-                        ### bracket), we have to trim the right bracket from 
-                        ### the first one to make it successfully match the
-                        ### second one.  Since we're asserting the same truth --
-                        ### that one path spec is the leading part of the other
-                        ### -- it seems to me ok to have this in the test only.
-                        ### 
-                        ### so we strip the ']' of the back of the regex
-                        $out_re =~ s/\\\]// if IS_VMS; 
+                        ok( $rv, "extract() for '$archive' reports success ($cfg)");
+
+                        diag("Extractor was: " . $ae->_extractor)   if $Debug;
+
+                        ### if we /should/ have buffers, there should be
+                        ### no errors complaining we dont have them...
+                        unlike( $err, $re,
+                                        "No errors capturing buffers" );
+
+                        ### might be 1 or 2, depending wether we extracted
+                        ### a dir too
+                        my $files    = $ae->files || [];
+                        my $file_cnt = grep { defined } $file, $dir;
+                        is( scalar @$files, $file_cnt,
+                                        "Found correct number of output files (@$files)" );
                         
-                        if( $ae->extract_path !~ /^$out_re/ ) {   
-                            ok( 0, "Extractpath WRONG (".$ae->extract_path.")"); 
-                            skip(  "Unsafe operation -- skip cleanup!!!" ), 1;
-                        }                    
-        
-                        eval { rmtree( $ae->extract_path ) }; 
-                        ok( !$@,        "   rmtree gave no error" );
-                        ok( !(-d $ae->extract_path ),
-                                        "   Extract dir succesfully removed" );
+                        ### due to prototypes on is(), if there's no -1 index on
+                        ### the array ref, it'll give a fatal exception:
+                        ### "Modification of non-creatable array value attempted,
+                        ### subscript -1 at -e line 1." So wrap it in do { }
+                        is( do { $files->[-1] }, $nix_path,
+                                        "Found correct output file '$nix_path'" );
+
+                        ok( -e $abs_path,
+                                        "Output file '$abs_path' exists" );
+                        ok( $ae->extract_path,
+                                        "Extract dir found" );
+                        ok( -d $ae->extract_path,
+                                        "Extract dir exists" );
+                        is( $ae->extract_path, $abs_dir,
+                                        "Extract dir is expected '$abs_dir'" );
+                    }
+
+                    SKIP: {
+                        skip "Unlink tests are unreliable on Win32", 3 if IS_WIN32;
+
+                        1 while unlink $abs_path;
+                        ok( !(-e $abs_path), "Output file successfully removed" );
+
+                        SKIP: {
+                            skip "No extract path captured, can't remove paths", 2
+                                unless $ae->extract_path;
+
+                            ### if something went wrong with determining the out
+                            ### path, don't go deleting stuff.. might be Really Bad
+                            my $out_re = quotemeta( $OutDir );
+
+                            ### VMS directory layout is different. Craig Berry
+                            ### explains:
+                            ### the test is trying to determine if C</disk1/foo/bar>
+                            ### is part of C</disk1/foo/bar/baz>.  Except in VMS
+                            ### syntax, that would mean trying to determine whether
+                            ### C<disk1:[foo.bar]> is part of C<disk1:[foo.bar.baz]>
+                            ### Because we have both a directory delimiter
+                            ### (dot) and a directory spec terminator (right
+                            ### bracket), we have to trim the right bracket from
+                            ### the first one to make it successfully match the
+                            ### second one.  Since we're asserting the same truth --
+                            ### that one path spec is the leading part of the other
+                            ### -- it seems to me ok to have this in the test only.
+                            ###
+                            ### so we strip the ']' of the back of the regex
+                            $out_re =~ s/\\\]// if IS_VMS;
+
+                            if( $ae->extract_path !~ /^$out_re/ ) {
+                                ok( 0, "Extractpath WRONG (".$ae->extract_path.")");
+                                skip(  "Unsafe operation -- skip cleanup!!!" ), 1;
+                            }
+
+                            eval { rmtree( $ae->extract_path ) };
+                            ok( !$@,        "   rmtree gave no error" );
+                            ok( !(-d $ae->extract_path ),
+                                            "   Extract dir succesfully removed" );
+                        }
                     }
                 }
             }
-        }
-    } }
+        } }
+    }
 }
index ad32858..719fe7a 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/double_dir.zip lib/Archive/Extract/t/src/double_dir.zip.packed
 
-Created at Fri Jun 12 13:25:59 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 M4$L#!`H``````&QH,S0````````````````%`!4`>"]Y+WI55`D``PR`ST,,
index ec86948..ddaa214 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.Z lib/Archive/Extract/t/src/x.Z.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 ''YV0>`(J````
index 84a65f8..edf372f 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.bz2 lib/Archive/Extract/t/src/x.bz2.packed
 
-Created at Fri Jun 12 13:25:59 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 .0EIH.1=R13A0D```````
index db23ee5..df0dbec 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.gz lib/Archive/Extract/t/src/x.gz.packed
 
-Created at Fri Jun 12 13:25:59 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 6'XL("+F;6D8``W@``P``````````````
index 8b471b8..4b93172 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.jar lib/Archive/Extract/t/src/x.jar.packed
 
-Created at Fri Jun 12 13:25:59 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 M4$L#!`H```````MAQ3`````````````````!`!``8558#`!)`B%!EIO!0/4!
index 7f3ea01..a01ee4e 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.lzma lib/Archive/Extract/t/src/x.lzma.packed
 
-Created at Fri Jun 12 13:25:59 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 270``@```````````````````
index a91ee73..a2145ab 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.par lib/Archive/Extract/t/src/x.par.packed
 
-Created at Fri Jun 12 13:25:59 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 M4$L#!`H```````MAQ3`````````````````!`!``8558#`!)`B%!EIO!0/4!
index a0d1aa4..6112abf 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.tar.gz lib/Archive/Extract/t/src/x.tar.gz.packed
 
-Created at Fri Jun 12 13:25:59 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 M'XL(`````````^W.NPW"0!!%T2EE2YC%:[N>#7""1,"G?QM##!&.SDE&(]W@
index faf077d..113e5ab 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.tar lib/Archive/Extract/t/src/x.tar.packed
 
-Created at Fri Jun 12 13:25:59 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 M80``````````````````````````````````````````````````````````
index e6ab62d..273e66c 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.tgz lib/Archive/Extract/t/src/x.tgz.packed
 
-Created at Fri Jun 12 13:25:59 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 M'XL(`````````^W.NPW"0!!%T2EE2YC%:[N>#7""1,"G?QM##!&.SDE&(]W@
index 1f249ef..1c781b1 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/x.zip lib/Archive/Extract/t/src/x.zip.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 M4$L#!`H```````MAQ3`````````````````!`!``8558#`!)`B%!EIO!0/4!
index e50bbc0..95af825 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/y.jar lib/Archive/Extract/t/src/y.jar.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 M4$L#!`H``````,NBB#$````````````````"`!``>2]56`P`M%6W06Y4MT'U
index ff774eb..c1b2b07 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/y.par lib/Archive/Extract/t/src/y.par.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:25 2009
 #########################################################################
 __UU__
 M4$L#!`H``````,NBB#$````````````````"`!``>2]56`P`M%6W06Y4MT'U
index 34e0847..d0715ea 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/y.tar.bz2 lib/Archive/Extract/t/src/y.tar.bz2.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:26 2009
 #########################################################################
 __UU__
 M0EIH.3%!6293636W".T``+)[E,B``$!``/>```-B"1XP!```0``((`"2A*4]
index 084e89e..18a4820 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/y.tar.gz lib/Archive/Extract/t/src/y.tar.gz.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:26 2009
 #########################################################################
 __UU__
 M'XL(`````````^W1,0Z#,`R%81\E-R"F><EY&,I2J4.!`4Y?JH@5J4,JH?[?
index 0ac9f0f..ffc3706 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/y.tar lib/Archive/Extract/t/src/y.tar.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:26 2009
 #########################################################################
 __UU__
 M>2\`````````````````````````````````````````````````````````
index 37be772..1418335 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/y.tbz lib/Archive/Extract/t/src/y.tbz.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:26 2009
 #########################################################################
 __UU__
 M0EIH.3%!6293636W".T``+)[E,B``$!``/>```-B"1XP!```0``((`"2A*4]
index 1489095..389625e 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/y.tgz lib/Archive/Extract/t/src/y.tgz.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:26 2009
 #########################################################################
 __UU__
 M'XL(`````````^W1,0Z#,`R%81\E-R"F><EY&,I2J4.!`4Y?JH@5J4,JH?[?
index 82b5545..b5677ef 100644 (file)
@@ -10,7 +10,7 @@ To recreate it use the following command:
 
      uupacktool.pl -p lib/Archive/Extract/t/src/y.zip lib/Archive/Extract/t/src/y.zip.packed
 
-Created at Fri Jun 12 13:26:00 2009
+Created at Sat Jun 27 14:27:26 2009
 #########################################################################
 __UU__
 M4$L#!`H``````,NBB#$````````````````"`!``>2]56`P`M%6W06Y4MT'U