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(@_);
24 $self->{'externalFileName'} = $fileName;
25 $self->fileName($newName);
29 # -e does NOT do a full stat, so we need to do one now
32 $self->unixFileAttributes( $stat[2] );
34 if ( $^O eq 'MSWin32' and !$mod_t ) {
37 $self->setLastModFileDateTimeFromUnix($mod_t);
40 else { # hmm.. trying to add a non-directory?
41 _error( $fileName, ' exists but is not a directory' );
46 $self->unixFileAttributes( $self->DEFAULT_DIRECTORY_PERMISSIONS );
47 $self->setLastModFileDateTimeFromUnix( time() );
52 sub externalFileName {
53 shift->{'externalFileName'};
60 sub extractToFileNamed {
62 my $name = shift; # local FS name
63 my $attribs = $self->unixFileAttributes() & 07777;
64 mkpath( $name, 0, $attribs ); # croaks on error
65 utime( $self->lastModTime(), $self->lastModTime(), $name );
72 $newName =~ s{/?$}{/} if defined($newName);
73 return $self->SUPER::fileName($newName);
76 # So people don't get too confused. This way it looks like the problem
79 return wantarray ? ( undef, AZ_OK ) : undef;