Skip to content

Commit

Permalink
added xslt support
Browse files Browse the repository at this point in the history
  • Loading branch information
cgutteridge committed Feb 14, 2012
1 parent 18704a2 commit c36ea53
Show file tree
Hide file tree
Showing 16 changed files with 7,767 additions and 0 deletions.
2,131 changes: 2,131 additions & 0 deletions perl_lib/Archive/Zip.pm

Large diffs are not rendered by default.

1,027 changes: 1,027 additions & 0 deletions perl_lib/Archive/Zip/Archive.pm

Large diffs are not rendered by default.

131 changes: 131 additions & 0 deletions perl_lib/Archive/Zip/BufferedFileHandle.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
package Archive::Zip::BufferedFileHandle;

# File handle that uses a string internally and can seek
# This is given as a demo for getting a zip file written
# to a string.
# I probably should just use IO::Scalar instead.
# Ned Konz, March 2000

use strict;
use IO::File;
use Carp;

use vars qw{$VERSION};

BEGIN {
$VERSION = '1.31_04';
$VERSION = eval $VERSION;
}

sub new {
my $class = shift || __PACKAGE__;
$class = ref($class) || $class;
my $self = bless(
{
content => '',
position => 0,
size => 0
},
$class
);
return $self;
}

# Utility method to read entire file
sub readFromFile {
my $self = shift;
my $fileName = shift;
my $fh = IO::File->new( $fileName, "r" );
CORE::binmode($fh);
if ( !$fh ) {
Carp::carp("Can't open $fileName: $!\n");
return undef;
}
local $/ = undef;
$self->{content} = <$fh>;
$self->{size} = length( $self->{content} );
return $self;
}

sub contents {
my $self = shift;
if (@_) {
$self->{content} = shift;
$self->{size} = length( $self->{content} );
}
return $self->{content};
}

sub binmode { 1 }

sub close { 1 }

sub opened { 1 }

sub eof {
my $self = shift;
return $self->{position} >= $self->{size};
}

sub seek {
my $self = shift;
my $pos = shift;
my $whence = shift;

# SEEK_SET
if ( $whence == 0 ) { $self->{position} = $pos; }

# SEEK_CUR
elsif ( $whence == 1 ) { $self->{position} += $pos; }

# SEEK_END
elsif ( $whence == 2 ) { $self->{position} = $self->{size} + $pos; }
else { return 0; }

return 1;
}

sub tell { return shift->{position}; }

# Copy my data to given buffer
sub read {
my $self = shift;
my $buf = \( $_[0] );
shift;
my $len = shift;
my $offset = shift || 0;

$$buf = '' if not defined($$buf);
my $bytesRead =
( $self->{position} + $len > $self->{size} )
? ( $self->{size} - $self->{position} )
: $len;
substr( $$buf, $offset, $bytesRead ) =
substr( $self->{content}, $self->{position}, $bytesRead );
$self->{position} += $bytesRead;
return $bytesRead;
}

# Copy given buffer to me
sub write {
my $self = shift;
my $buf = \( $_[0] );
shift;
my $len = shift;
my $offset = shift || 0;

$$buf = '' if not defined($$buf);
my $bufLen = length($$buf);
my $bytesWritten =
( $offset + $len > $bufLen )
? $bufLen - $offset
: $len;
substr( $self->{content}, $self->{position}, $bytesWritten ) =
substr( $$buf, $offset, $bytesWritten );
$self->{size} = length( $self->{content} );
return $bytesWritten;
}

sub clearerr() { 1 }

1;
80 changes: 80 additions & 0 deletions perl_lib/Archive/Zip/DirectoryMember.pm
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
package Archive::Zip::DirectoryMember;

use strict;
use File::Path;

use vars qw( $VERSION @ISA );

BEGIN {
$VERSION = '1.31_04';
@ISA = qw( Archive::Zip::Member );
}

use Archive::Zip qw(
:ERROR_CODES
:UTILITY_METHODS
);

sub _newNamed {
my $class = shift;
my $fileName = shift; # FS name
my $newName = shift; # Zip name
$newName = _asZipDirName($fileName) unless $newName;
my $self = $class->new(@_);
$self->{'externalFileName'} = $fileName;
$self->fileName($newName);

if ( -e $fileName ) {

# -e does NOT do a full stat, so we need to do one now
if ( -d _ ) {
my @stat = stat(_);
$self->unixFileAttributes( $stat[2] );
my $mod_t = $stat[9];
if ( $^O eq 'MSWin32' and !$mod_t ) {
$mod_t = time();
}
$self->setLastModFileDateTimeFromUnix($mod_t);

} else { # hmm.. trying to add a non-directory?
_error( $fileName, ' exists but is not a directory' );
return undef;
}
} else {
$self->unixFileAttributes( $self->DEFAULT_DIRECTORY_PERMISSIONS );
$self->setLastModFileDateTimeFromUnix( time() );
}
return $self;
}

sub externalFileName {
shift->{'externalFileName'};
}

sub isDirectory {
return 1;
}

sub extractToFileNamed {
my $self = shift;
my $name = shift; # local FS name
my $attribs = $self->unixFileAttributes() & 07777;
mkpath( $name, 0, $attribs ); # croaks on error
utime( $self->lastModTime(), $self->lastModTime(), $name );
return AZ_OK;
}

sub fileName {
my $self = shift;
my $newName = shift;
$newName =~ s{/?$}{/} if defined($newName);
return $self->SUPER::fileName($newName);
}

# So people don't get too confused. This way it looks like the problem
# is in their code...
sub contents {
return wantarray ? ( undef, AZ_OK ) : undef;
}

1;
Loading

0 comments on commit c36ea53

Please sign in to comment.