1 package Archive
::Zip
::DirectoryMember
;
6 use vars
qw( $VERSION @ISA );
10 @ISA = qw( Archive::Zip::Member );
20 my $fileName = shift; # FS name
21 my $newName = shift; # Zip name
22 $newName = _asZipDirName
($fileName) unless $newName;
23 my $self = $class->new(@_);
25 $fileName = Encode
::encode
( 'cp437', $fileName );
26 $newName = Encode
::encode
( 'cp437', $newName );
27 $self->{'externalFileName'} = $fileName;
28 $self->fileName($newName);
32 # -e does NOT do a full stat, so we need to do one now
35 $self->unixFileAttributes( $stat[2] );
37 if ( $^O
eq 'MSWin32' and !$mod_t ) {
40 $self->setLastModFileDateTimeFromUnix($mod_t);
42 } else { # hmm.. trying to add a non-directory?
43 _error
( $fileName, ' exists but is not a directory' );
47 $self->unixFileAttributes( $self->DEFAULT_DIRECTORY_PERMISSIONS );
48 $self->setLastModFileDateTimeFromUnix( time() );
53 sub externalFileName
{
54 shift->{'externalFileName'};
61 sub extractToFileNamed
{
63 my $name = shift; # local FS name
65 $name = Encode
::decode
( 'cp437', $name );
66 $name = Encode
::encode
( 'iso-8859-1', $name );
67 my $attribs = $self->unixFileAttributes() & 07777;
68 mkpath
( $name, 0, $attribs ); # croaks on error
69 utime( $self->lastModTime(), $self->lastModTime(), $name );
76 $newName =~ s{/?$}{/} if defined($newName);
77 return $self->SUPER::fileName
($newName);
80 # So people don't get too confused. This way it looks like the problem
83 return wantarray ?
( undef, AZ_OK
) : undef;