Archive-Zip-Parser
view release on metacpan or search on metacpan
lib/Archive/Zip/Parser/Entry/Header.pm view on Meta::CPAN
my $extra_field
= Struct(
'_extra_field',
RepeatUntil(
sub {
$_->obj->{'_position'} == $self->{'_extra_field_length'};
},
Struct(
'_header',
ULInt16('_id'),
ULInt16('_size'),
Field(
'_data',
sub {
$_->ctx->{'_size'}
}
),
Anchor('_position'),
),
),
);
my $parsed_extra_field = $extra_field->parse( $self->{'_extra_field'} );
if ( $argref->{'describe'} ) {
my %extra_field_description_mapping = (
'0001' => 'Zip64 extended information extra field',
'0007' => 'AV Info',
'0008' => 'Reserved for extended language encoding data (PFS)',
'0009' => 'OS/2',
'000a' => 'NTFS ',
'000c' => 'OpenVMS',
'000d' => 'UNIX',
'000e' => 'Reserved for file stream and fork descriptors',
'000f' => 'Patch Descriptor',
'0014' => 'PKCS#7 Store for X.509 Certificates',
'0015' => 'X.509 Certificate ID and Signature for individual file',
'0016' => 'X.509 Certificate ID for Central Directory',
'0017' => 'Strong Encryption Header',
'0018' => 'Record Management Controls',
'0019' => 'PKCS#7 Encryption Recipient Certificate List',
'0065' =>
'IBM S/390 (Z390), AS/400 (I400) attributes - uncompressed',
'0066' =>
'Reserved for IBM S/390 (Z390), AS/400 (I400) attributes - compressed',
'4690' => 'POSZIP 4690 (reserved) ',
'07c8' => 'Macintosh',
'2605' => 'ZipIt Macintosh',
'2705' => 'ZipIt Macintosh 1.3.5+',
'2805' => 'ZipIt Macintosh 1.3.5+',
'334d' => 'Info-ZIP Macintosh',
'4341' => 'Acorn/SparkFS ',
'4453' => 'Windows NT security descriptor (binary ACL)',
'4704' => 'VM/CMS',
'470f' => 'MVS',
'4b46' => 'FWKCS MD5',
'4c41' => 'OS/2 access control list (text ACL)',
'4d49' => 'Info-ZIP OpenVMS',
'4f4c' => 'Xceed original location extra field',
'5356' => 'AOS/VS (ACL)',
'5455' => 'extended timestamp',
'554e' => 'Xceed unicode extra field',
'5855' => 'Info-ZIP UNIX (original, also OS/2, NT, etc)',
'6375' => 'Info-ZIP Unicode Comment Extra Field',
'6542' => 'BeOS/BeBox',
'7075' => 'Info-ZIP Unicode Path Extra Field',
'756e' => 'ASi UNIX',
'7855' => 'Info-ZIP UNIX (new)',
'a220' => 'Microsoft Open Packaging Growth Hint',
'fd4a' => 'SMS/QDOS',
);
my %extra_field_descriptions;
my @descriptions_to_be_serialised;
for ( @{ $parsed_extra_field->{'_header'} } ) {
my $id = unpack( 'H*', pack( 'n', $_->{'_id'} ) );
my $data = unpack( 'H*', $_->{'_data'} );
my @serialised_extra_field_description;
if ( exists $extra_field_description_mapping{$id} ) {
my $description = $extra_field_description_mapping{$id};
$extra_field_descriptions{$description} = $data;
push @descriptions_to_be_serialised, $description;
}
else {
$extra_field_descriptions{$id} = $data;
}
}
return %extra_field_descriptions;
}
my %extra_field;
for ( @{ $parsed_extra_field->{'_header'} } ) {
my $id = unpack( 'H*', pack( 'n', $_->{'_id'} ) );
my $data = unpack( 'H*', $_->{'_data'} );
$extra_field{$id} = $data;
}
return %extra_field;
}
1;
( run in 0.475 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )