RPM-Header-Alt-1.0.0/000075500000000000000000000000001120357155300140525ustar00rootroot00000000000000RPM-Header-Alt-1.0.0/Changes000064400000000000000000000003311120357155300153420ustar00rootroot00000000000000Revision history for Perl extension RPM::Header::Alt. 1.0.0 Sat May 16 18:38:34 2009 - original version; created by h2xs 1.23 with options -A -P -X -n RPM::Header::Alt -v 1.0.0 --skip-exporter --skip-autoloader RPM-Header-Alt-1.0.0/MANIFEST000064400000000000000000000001151120357155300152000ustar00rootroot00000000000000Changes Makefile.PL MANIFEST README t/RPM-Header-Alt.t lib/RPM/Header/Alt.pm RPM-Header-Alt-1.0.0/Makefile.PL000064400000000000000000000010621120357155300160230ustar00rootroot00000000000000use 5.008000; use ExtUtils::MakeMaker; # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. WriteMakefile( NAME => 'RPM::Header::Alt', VERSION_FROM => 'lib/RPM/Header/Alt.pm', # finds $VERSION PREREQ_PM => {}, # e.g., Module::Name => 1.1 ($] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT_FROM => 'lib/RPM/Header/Alt.pm', # retrieve abstract from module AUTHOR => 'Vladimir Lettiev ') : ()), ); RPM-Header-Alt-1.0.0/README000064400000000000000000000022371120357155300147360ustar00rootroot00000000000000RPM-Header-Alt version 1.0.0 ============================ The README is used to introduce the module and provide instructions on how to install the module, any machine dependencies it may have (for example C compilers and installed libraries) and any other information that should be provided before the module is installed. A README file is required for CPAN modules since CPAN extracts the README file from a module distribution so that people browsing the archive can use it get an idea of the modules uses. It is usually a good idea to provide version information here so that people can decide whether fixes for the module are worth downloading. INSTALLATION To install this module type the following: perl Makefile.PL make make test make install DEPENDENCIES This module requires these other modules and libraries: blah blah blah COPYRIGHT AND LICENCE Put the correct copyright and licence information here. Copyright (C) 2009 by A. U. Thor This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10.0 or, at your option, any later version of Perl 5 you may have available. RPM-Header-Alt-1.0.0/lib/000075500000000000000000000000001120357155300146205ustar00rootroot00000000000000RPM-Header-Alt-1.0.0/lib/RPM/000075500000000000000000000000001120357155300152565ustar00rootroot00000000000000RPM-Header-Alt-1.0.0/lib/RPM/Header/000075500000000000000000000000001120357155300164465ustar00rootroot00000000000000RPM-Header-Alt-1.0.0/lib/RPM/Header/Alt.pm000064400000000000000000000415001120357155300175240ustar00rootroot00000000000000# Copyright (C) 2001,2002,2006 Troels Liebe Bentsen # Copyright (C) 2009 Vladimir Lettiev # This library is free software; you can redistribute it and/or modify # it under the same terms as Perl itself. =head1 NAME RPM::Header::Alt - Alternative pure perl RPM header reader for ALTLinux fork of RPM =head1 VERSION Version 1.0.0 =head1 SYNOPSIS use RPM::Header::Alt; $rpm = new RPM::Header::Alt; # Open rpm file open(RPM,"<", "rpm-4.0.4-alt98.9.src.rpm"); while (1) { $read = read(RPM,$data,4096); # read 4096 bytes from file last unless ($read); # process chunk of readed data $read = $rpm->process_chunk($data); # read == 0 -> error while process a chunk # read == 1 -> full rpm header was analysed, so we can close file now # read == 2 -> need another portion of data die $rpm->error_str unless ($read); last if ($read == 1); } close(RPM); # get hash with RPM TAGs $ref_to_hash = $rpm->get_hash; # print all rpm tags readed from rpm file. print $rpm->dump_tags; =head1 DESCRIPTION RPM::Header::Alt is alternative implementation of RPM::Header written in only Perl. Its based on RPM::Header::PurePerl, but adopted to ALTLinux fork of RPM =head1 PUBLIC METHODS new - create RPM::Header::Alt object; process_chunk($data) - process another chunk of RPM file stored in $data return 0 if there is error ocurred (use error_str() method to get error message) return 1 if full header was analysed return 2 if another chunk needed get_hash - return ref to hash where keys are RPM TAGS dump_tags - dump all analyzed tags (via Data::Dumper) error_str - return error message get_raw_header - return raw rpm header. This can be stored in file and analyzed again. =head1 AUTHOR Troels Liebe Bentsen Vladimir Lettiev =head1 COPYRIGHT AND LICENCE Copyright (C) 2001,2002,2006 Troels Liebe Bentsen Copyright (C) 2009 Vladimir Lettiev This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut package RPM::Header::Alt; use strict; use Data::Dumper; use vars '$VERSION'; $VERSION = q{1.0.0}; my %hdr_tags; use constant FAIL => 0; use constant OK => 1; use constant WAIT_DATA => 2; use constant RPM_FILE_MAGIC => pack("C4",0xed,0xab,0xee,0xdb); use constant RPM_HEADER_MAGIC => pack("C3",0x8e,0xad,0xe8); sub new { my ($class, %opts) = @_; my $self = { "hash" => {}, "data" => "", "offset" => 0 }; bless $self, $class; $self->init_hdr; return $self; } sub dump_tags { my $self=shift; return &Dumper($self->{hash}); } sub process_chunk { my ($self) = shift; $self->{data} .= shift; if ($self->{offset} == 0) { if (length($self->{data})<96) { return WAIT_DATA; } ($self->{'hash'}->{'LEAD_MAGIC'}, # unsigned char[4], í«îÛ == rpm $self->{'hash'}->{'LEAD_MAJOR'}, # unsigned char, 3 == rpm version 3.x $self->{'hash'}->{'LEAD_MINOR'}, # unsigned char, 0 == rpm version x.0 $self->{'hash'}->{'LEAD_TYPE'}, # short(int16), 0 == binary, 1 == source $self->{'hash'}->{'LEAD_ARCHNUM'}, # short(int16), 1 == i386 $self->{'hash'}->{'LEAD_NAME'}, # char[66], rpm name $self->{'hash'}->{'LEAD_OSNUM'}, # short(int16), 1 == Linux $self->{'hash'}->{'LEAD_SIGNATURETYPE'}, # short(int16), 1280 == rpm 4.0 $self->{'hash'}->{'LEAD_RESERVED'} # char[16] future expansion ) = unpack("a4CCssA66ssA16", $self->{data}); if ($self->{'hash'}->{'LEAD_MAGIC'} ne RPM_FILE_MAGIC) { $self->set_error("Invalid file magick"); return FAIL; } $self->{offset} = 96; } while (1) { return WAIT_DATA if (length($self->{data})<$self->{offset}+16); my ($header_magic, $header_version, $header_reserved, $header_entries, $header_size) = unpack("a3CNNN", substr($self->{data},$self->{offset},16)); my $offset = $self->{offset}+16+$header_entries*16+$header_size; if ($self->{offset} == 96) { $offset += 8 - ($header_size % 8) if (($header_size % 8)!=0); } return WAIT_DATA if (length($self->{data})<$offset); $self->{offset} += 16; if ($header_magic ne RPM_HEADER_MAGIC) { $self->set_error("Invalid header magick"); return FAIL; } $self->process_tags($header_entries); if ($self->{offset} == 112) { $self->{offset} = $offset; } else { $self->{offset} = $offset; $self->{data} = substr($self->{data},0,$offset); $self->post_process; return OK; } } } sub set_error { my $self = shift; $self->{err_str} = shift; } sub error_str { my $self = shift; return $self->{err_str}; } sub process_tags { my $self = shift; my $header_entries = shift; my $buff_offset = $self->{offset}+$header_entries*16; for (my $record_num=0; $record_num < $header_entries; $record_num++) { my ($tag, $type, $offset, $count) = unpack("NNNN", substr($self->{data}, $self->{offset}+$record_num*16, 16)); # 10x if signature header. if ($self->{offset} == 112) { $tag = $tag*10; } #print "Process TAG: $hdr_tags{$tag}->{'TAGNAME'} ($tag), TYPE: $type, OFFSET: $offset, COUNT: $count\n"; my @value; # Unknown tag if (!defined($hdr_tags{$tag})) { $hdr_tags{$tag}->{ 'TAGNAME' => $tag, 'GROUP' => 'UNKNOWN', 'NAME' => '' }; } # Null type if ($type == 0) { @value = (''); } # Char type elsif ($type == 1) { print "Char $count $hdr_tags{$tag}{'TAGNAME'}\n"; #for (my $i=0; $i < $count; $i++) { #push(@value, substr($buff, $offset, $count)); # $header_info{$record}{'offset'} += $count; #} } # int8 elsif ($type == 2) { @value = unpack("C*", substr($self->{data}, $buff_offset+$offset, 1*$count)); $offset = 1*$count; } # int16 elsif ($type == 3) { @value = unpack("n*", substr($self->{data},$buff_offset+$offset, 2*$count)); $offset = 2*$count; } # int32 elsif ($type == 4) { @value = unpack("N*", substr($self->{data},$buff_offset+$offset, 4*$count)); $offset = 4*$count; } # int64 elsif ($type == 5) { print "Int64(Not supported): ". "$count $hdr_tags{$tag}{'TAGNAME'}\n"; #@value = unpack("N*", substr($buff, $offset, 4*$count)); #$offset = 4*$count; } # String, String array, I18N string array elsif ($type == 6 or $type == 8 or $type == 9) { for(my $i=0;$i<$count;$i++) { my $length = index($self->{data}, "\0", $buff_offset+$offset)-($buff_offset+$offset); # unpack istedet for substr. push(@value, substr($self->{data}, $buff_offset+$offset, $length)); $offset += $length+1; } } # bin elsif ($type == 7) { #print "Bin $count $tags{$tag}{'TAGNAME'}\n"; $value[0] = substr($self->{data}, $buff_offset+$offset, $count); } # Find out if it's an array type or not. if (defined($hdr_tags{$tag}{'TYPE'}) and $hdr_tags{$tag}{'TYPE'} == 1) { #if ($count < 2 && $type != 8 && $type != 9) { print "1: type=$type, count=$count\n";} @{$self->{'hash'}->{$hdr_tags{$tag}{'TAGNAME'}}} = @value; } else { if ($count > 1) { print "0: tag=$hdr_tags{$tag}{'TAGNAME'}, type=$type, count=$count\n";} $self->{'hash'}->{$hdr_tags{$tag}{'TAGNAME'}} = $value[0]; } } } sub post_process { my $self = shift; # Make old packages look like new ones. #if (defined($self->{'hash'}->{'FILENAMES'})) { # my $count = 0; # my %quick_dirnames; # foreach my $filename (@{$self->{'hash'}->{'FILENAMES'}}) { # my $file = ''; my $dir = '/'; # if($filename =~ /(.*\/)(.*$)/) { # $file = $1; $dir = $2; # } else { # $file = $filename; # } # if (!defined($quick_dirnames{$dir})) { # push(@{$self->{'hash'}->{'DIRNAMES'}}, $dir); # $quick_dirnames{$dir} = $count++; # } # push(@{$self->{'hash'}->{'BASENAMES'}}, $file); # push(@{$self->{'hash'}->{'DIRINDEXES'}}, $quick_dirnames{$dir}); # } # delete($self->{'hash'}->{'FILENAMES'}); #} # # Wait I can beat it, a package sould also provide is's own name, sish (and only once). #my %quick_provides = map {$_ => 1} @{$self->{'hash'}->{'PROVIDENAME'}}; #my %quick_provideflags = map {$_ => 1} @{$self->{'hash'}->{'PROVIDEFLAGS'}}; #my %quick_provideversion # = map {$_ => 1} @{$self->{'hash'}->{'PROVIDEVERSION'}}; #if (!defined($quick_provides{$self->{'hash'}->{'NAME'}}) and # !defined($quick_provideflags{8}) and # !defined($quick_provideversion{$self->{'hash'}->{'VERSION'}})) { # push(@{$self->{'hash'}->{'PROVIDENAME'}}, $self->{'hash'}->{'NAME'}); # push(@{$self->{'hash'}->{'PROVIDEFLAGS'}}, 8); # push(@{$self->{'hash'}->{'PROVIDEVERSION'}}, # $self->{'hash'}->{'VERSION'}.'-'.$self->{'hash'}->{'RELEASE'}); #} # ## FILEVERIFYFLAGS is signed #if ($self->{'hash'}->{'FILEVERIFYFLAGS'}) { # for(my $i=0;$i{'hash'}->{'FILEVERIFYFLAGS'}}); $i++) { # my $val = @{$self->{'hash'}->{'FILEVERIFYFLAGS'}}[$i]; # if (int($val) == $val && $val >= 2147483648 && # $val <= 4294967295) { # @{$self->{'hash'}->{'FILEVERIFYFLAGS'}}[$i] -= 4294967296; # } # } #} # Lets handel the SIGNATURE, this does not work, fix it please. #if (defined($self->{'hash'}->{'SIGNATURE_MD5'})) { # $self->{'hash'}->{'SIGNATURE_MD5'} = # unpack("H*", $self->{'hash'}->{'SIGNATURE_MD5'}); #} # Old stuff, so it can be a drop in replacement for RPM::HEADERS. if (defined($self->{'hash'}->{'EPOCH'})) { $self->{'hash'}->{'SERIAL'} = $self->{'hash'}->{'EPOCH'}; } if (defined($self->{'hash'}->{'LICENSE'})) { $self->{'hash'}->{'COPYRIGHT'} = $self->{'hash'}->{'LICENSE'}; } if (defined($self->{'hash'}->{'PROVIDENAME'})) { $self->{'hash'}->{'PROVIDES'} = $self->{'hash'}->{'PROVIDENAME'}; } if (defined($self->{'hash'}->{'OBSOLETENAME'})) { $self->{'hash'}->{'OBSOLETES'} = $self->{'hash'}->{'OBSOLETENAME'}; } }; sub get_raw_header { my $self = shift; return $self->{data}; } sub get_hash { my $self = shift; return $self->{hash}; } sub init_hdr { my $self = shift; %hdr_tags = ( 63 => {'TAGNAME' => 'HEADERIMMUTABLE', 'TYPE' => 1 }, 100 => {'TAGNAME' => 'HEADERI18NTABLE', 'TYPE' => 1 }, 620 => {'TAGNAME' => 'HEADERSIGNATURES', 'TYPE' => 1 }, 1000 => {'TAGNAME' => 'NAME' }, 1001 => {'TAGNAME' => 'VERSION' }, 1002 => {'TAGNAME' => 'RELEASE' }, 1003 => {'TAGNAME' => 'EPOCH' }, 1004 => {'TAGNAME' => 'SUMMARY', 'TYPE' => 1 }, 1005 => {'TAGNAME' => 'DESCRIPTION', 'TYPE' => 1 }, 1006 => {'TAGNAME' => 'BUILDTIME' }, 1007 => {'TAGNAME' => 'BUILDHOST' }, 1008 => {'TAGNAME' => 'INSTALLTIME' }, 1009 => {'TAGNAME' => 'SIZE' }, 1010 => {'TAGNAME' => 'DISTRIBUTION' }, 1011 => {'TAGNAME' => 'VENDOR' }, 1012 => {'TAGNAME' => 'GIF' }, 1013 => {'TAGNAME' => 'XPM' }, 1014 => {'TAGNAME' => 'LICENSE' }, 1015 => {'TAGNAME' => 'PACKAGER' }, 1016 => {'TAGNAME' => 'GROUP' }, 1017 => {'TAGNAME' => 'CHANGELOG' }, 1018 => {'TAGNAME' => 'SOURCE', 'TYPE' => 1 }, 1019 => {'TAGNAME' => 'PATCH', 'TYPE' => 1 }, 1020 => {'TAGNAME' => 'URL' }, 1021 => {'TAGNAME' => 'OS' }, 1022 => {'TAGNAME' => 'ARCH' }, 1023 => {'TAGNAME' => 'PREIN', 'TYPE' => 1 }, 1024 => {'TAGNAME' => 'POSTIN', 'TYPE' => 1 }, 1025 => {'TAGNAME' => 'PREUN', 'TYPE' => 1 }, 1026 => {'TAGNAME' => 'POSTUN', 'TYPE' => 1 }, 1027 => {'TAGNAME' => 'OLDFILENAMES', 'TYPE' => 1 }, 1028 => {'TAGNAME' => 'FILESIZES', 'TYPE' => 1 }, 1029 => {'TAGNAME' => 'FILESTATES', 'TYPE' => 1 }, 1030 => {'TAGNAME' => 'FILEMODES', 'TYPE' => 1 }, 1031 => {'TAGNAME' => 'FILEUIDS' }, 1032 => {'TAGNAME' => 'FILEGIDS' }, 1033 => {'TAGNAME' => 'FILERDEVS', 'TYPE' => 1 }, 1034 => {'TAGNAME' => 'FILEMTIMES', 'TYPE' => 1 }, 1035 => {'TAGNAME' => 'FILEMD5S', 'TYPE' => 1 }, 1036 => {'TAGNAME' => 'FILELINKTOS', 'TYPE' => 1 }, 1037 => {'TAGNAME' => 'FILEFLAGS', 'TYPE' => 1 }, 1038 => {'TAGNAME' => 'ROOT' }, 1039 => {'TAGNAME' => 'FILEUSERNAME', 'TYPE' => 1 }, 1040 => {'TAGNAME' => 'FILEGROUPNAME', 'TYPE' => 1 }, 1041 => {'TAGNAME' => 'EXCLUDE' }, 1042 => {'TAGNAME' => 'EXCLUSIVE' }, 1043 => {'TAGNAME' => 'ICON' }, 1044 => {'TAGNAME' => 'SOURCERPM' }, 1045 => {'TAGNAME' => 'FILEVERIFYFLAGS', 'TYPE' => 1 }, 1046 => {'TAGNAME' => 'ARCHIVESIZE' }, 1047 => {'TAGNAME' => 'PROVIDENAME', 'TYPE' => 1 }, 1048 => {'TAGNAME' => 'REQUIREFLAGS', 'TYPE' => 1 }, 1049 => {'TAGNAME' => 'REQUIRENAME', 'TYPE' => 1 }, 1050 => {'TAGNAME' => 'REQUIREVERSION', 'TYPE' => 1 }, 1051 => {'TAGNAME' => 'NOSOURCE' }, 1052 => {'TAGNAME' => 'NOPATCH' }, 1053 => {'TAGNAME' => 'CONFLICTFLAGS', 'TYPE' => 1 }, 1054 => {'TAGNAME' => 'CONFLICTNAME', 'TYPE' => 1 }, 1055 => {'TAGNAME' => 'CONFLICTVERSION', 'TYPE' => 1 }, 1056 => {'TAGNAME' => 'DEFAULTPREFIX' }, 1057 => {'TAGNAME' => 'BUILDROOT', 'TYPE' => 1 }, 1058 => {'TAGNAME' => 'INSTALLPREFIX' }, 1059 => {'TAGNAME' => 'EXCLUDEARCH' }, 1060 => {'TAGNAME' => 'EXCLUDEOS' }, 1061 => {'TAGNAME' => 'EXCLUSIVEARCH', 'TYPE' => 1 }, 1062 => {'TAGNAME' => 'EXCLUSIVEOS' }, 1063 => {'TAGNAME' => 'AUTOREQPROV' }, 1064 => {'TAGNAME' => 'RPMVERSION' }, 1065 => {'TAGNAME' => 'TRIGGERSCRIPTS', 'TYPE' => 1 }, 1066 => {'TAGNAME' => 'TRIGGERNAME', 'TYPE' => 1 }, 1067 => {'TAGNAME' => 'TRIGGERVERSION', 'TYPE' => 1 }, 1068 => {'TAGNAME' => 'TRIGGERFLAGS', 'TYPE' => 1 }, 1069 => {'TAGNAME' => 'TRIGGERINDEX', 'TYPE' => 1 }, 1079 => {'TAGNAME' => 'VERIFYSCRIPT', 'TYPE' => 1 }, 1080 => {'TAGNAME' => 'CHANGELOGTIME', 'TYPE' => 1 }, 1081 => {'TAGNAME' => 'CHANGELOGNAME', 'TYPE' => 1 }, 1082 => {'TAGNAME' => 'CHANGELOGTEXT', 'TYPE' => 1 }, 1083 => {'TAGNAME' => 'BROKENMD5' }, 1084 => {'TAGNAME' => 'PREREQ' }, 1085 => {'TAGNAME' => 'PREINPROG', 'TYPE' => 1 }, 1086 => {'TAGNAME' => 'POSTINPROG', 'TYPE' => 1 }, 1087 => {'TAGNAME' => 'PREUNPROG', 'TYPE' => 1 }, 1088 => {'TAGNAME' => 'POSTUNPROG', 'TYPE' => 1 }, 1089 => {'TAGNAME' => 'BUILDARCHS', 'TYPE' => 1 }, 1090 => {'TAGNAME' => 'OBSOLETENAME', 'TYPE' => 1 }, 1091 => {'TAGNAME' => 'VERIFYSCRIPTPROG', 'TYPE' => 1 }, 1092 => {'TAGNAME' => 'TRIGGERSCRIPTPROG', 'TYPE' => 1 }, 1093 => {'TAGNAME' => 'DOCDIR' }, 1094 => {'TAGNAME' => 'COOKIE' }, 1095 => {'TAGNAME' => 'FILEDEVICES', 'TYPE' => 1 }, 1096 => {'TAGNAME' => 'FILEINODES', 'TYPE' => 1 }, 1097 => {'TAGNAME' => 'FILELANGS', 'TYPE' => 1 }, 1098 => {'TAGNAME' => 'PREFIXES', 'TYPE' => 1 }, 1099 => {'TAGNAME' => 'INSTPREFIXES', 'TYPE' => 1 }, 1100 => {'TAGNAME' => 'TRIGGERIN' }, 1101 => {'TAGNAME' => 'TRIGGERUN' }, 1102 => {'TAGNAME' => 'TRIGGERPOSTUN' }, 1103 => {'TAGNAME' => 'AUTOREQ' }, 1104 => {'TAGNAME' => 'AUTOPROV' }, 1105 => {'TAGNAME' => 'CAPABILITY' }, 1106 => {'TAGNAME' => 'SOURCEPACKAGE' }, 1107 => {'TAGNAME' => 'OLDORIGFILENAMES' }, 1108 => {'TAGNAME' => 'BUILDPREREQ' }, 1109 => {'TAGNAME' => 'BUILDREQUIRES' }, 1110 => {'TAGNAME' => 'BUILDCONFLICTS' }, 1111 => {'TAGNAME' => 'BUILDMACROS' }, 1112 => {'TAGNAME' => 'PROVIDEFLAGS', 'TYPE' => 1 }, 1113 => {'TAGNAME' => 'PROVIDEVERSION', 'TYPE' => 1 }, 1114 => {'TAGNAME' => 'OBSOLETEFLAGS', 'TYPE' => 1 }, 1115 => {'TAGNAME' => 'OBSOLETEVERSION', 'TYPE' => 1 }, 1116 => {'TAGNAME' => 'DIRINDEXES', 'TYPE' => 1 }, 1117 => {'TAGNAME' => 'BASENAMES', 'TYPE' => 1 }, 1118 => {'TAGNAME' => 'DIRNAMES', 'TYPE' => 1 }, 1119 => {'TAGNAME' => 'ORIGDIRINDEXES' }, 1120 => {'TAGNAME' => 'ORIGBASENAMES' }, 1121 => {'TAGNAME' => 'ORIGDIRNAMES' }, 1122 => {'TAGNAME' => 'OPTFLAGS', 'TYPE' => 1 }, 1123 => {'TAGNAME' => 'DISTURL' }, 1124 => {'TAGNAME' => 'PAYLOADFORMAT', 'TYPE' => 1 }, 1125 => {'TAGNAME' => 'PAYLOADCOMPRESSOR', 'TYPE' => 1 }, 1126 => {'TAGNAME' => 'PAYLOADFLAGS', 'TYPE' => 1 }, 1127 => {'TAGNAME' => 'MULTILIBS' }, 1128 => {'TAGNAME' => 'INSTALLTID' }, 1129 => {'TAGNAME' => 'REMOVETID' }, 1130 => {'TAGNAME' => 'SHA1RHN' }, 1131 => {'TAGNAME' => 'RHNPLATFORM', 'TYPE' => 1 }, 1132 => {'TAGNAME' => 'PLATFORM', 'TYPE' => 1 }, 1133 => {'TAGNAME' => 'PATCHESNAME' }, 1134 => {'TAGNAME' => 'PATCHESFLAGS' }, 1135 => {'TAGNAME' => 'PATCHESVERSION' }, 1136 => {'TAGNAME' => 'CACHECTIME' }, 1137 => {'TAGNAME' => 'CACHEPKGPATH' }, 1138 => {'TAGNAME' => 'CACHEPKGSIZE' }, 1139 => {'TAGNAME' => 'CACHEPKGMTIME' }, 1140 => {'TAGNAME' => 'FILECOLORS', 'TYPE' => 4 }, 1141 => {'TAGNAME' => 'FILECLASS', 'TYPE' => 4 }, 1142 => {'TAGNAME' => 'CLASSDICT', 'TYPE' => 8 }, 1143 => {'TAGNAME' => 'FILEDEPENDSX', 'TYPE' => 4 }, 1144 => {'TAGNAME' => 'FILEDEPENDSN', 'TYPE' => 4 }, 1145 => {'TAGNAME' => 'DEPENDSDICT', 'TYPE' => 4 }, 1146 => {'TAGNAME' => 'SOURCEPKGID', 'TYPE' => 7 }, 1177 => {'TAGNAME' => 'Filedigestalgos', 'TYPE' => 4 }, 2650 => {'TAGNAME' => 'BADSHA1_2', 'TYPE' => 1 }, 2670 => {'TAGNAME' => 'DSAHEADER', 'TYPE' => 1 }, 2690 => {'TAGNAME' => 'SHA1HEADER', 'TYPE' => 1 }, 10000 => {'TAGNAME' => 'SIGSIZE', 'TYPE' => 1 }, 10010 => {'TAGNAME' => 'SIGLEMD5_1', 'TYPE' => 1 }, 10020 => {'TAGNAME' => 'SIGPGP' }, 10030 => {'TAGNAME' => 'SIGLEMD5_2', 'TYPE' => 1 }, 10040 => {'TAGNAME' => 'SIGMD5', 'TYPE' => 1 }, 10050 => {'TAGNAME' => 'SIGGPG', 'TYPE' => 1 }, 10060 => {'TAGNAME' => 'SIGPGP5' }, 10070 => {'TAGNAME' => 'SIGPAYLOADSIZE' }, ) } 1; __END__ RPM-Header-Alt-1.0.0/t/000075500000000000000000000000001120357155300143155ustar00rootroot00000000000000RPM-Header-Alt-1.0.0/t/RPM-Header-Alt.t000064400000000000000000000007401120357155300170450ustar00rootroot00000000000000# Before `make install' is performed this script should be runnable with # `make test'. After `make install' it should work as `perl RPM-Header-Alt.t' ######################### # change 'tests => 1' to 'tests => last_test_to_print'; use Test::More tests => 1; BEGIN { use_ok('RPM::Header::Alt') }; ######################### # Insert your test code below, the Test::More module is use()ed here so read # its man page ( perldoc Test::More ) for help writing this test script.