- local $/ = "";
- open DATA, '<', \$data
- or return;
- my $merged = 0;
- while (<DATA>) {
- next if /^\s*$/;
- my %data = ();
- chomp;
- s/\n /\377/g;
- while (/^(\S+):\s*(.*)\s*$/mg) {
- my ($key, $value) = ($1, $2);
- $value =~ s/\377/\n /g;
- $key =~ tr [A-Z] [a-z];
- $data{$key} = $value;
+ my %data = split /\00/o, $data;
+
+ $self->{src}{package} = $src;
+ $self->{src}{version} = $data{version};
+ if ($data{files}) {
+ my @files = split /\01/so, $data{files};
+ $self->{src}{files} = \@files;
+ }
+ $self->{src}{directory} = $data{directory};
+ my @uploaders;
+ if ($data{maintainer} ||= '') {
+ push @uploaders, [ split_name_mail( $data{maintainer} ) ];
+ }
+ if ($data{uploaders}) {
+ my @up_tmp = split( /\s*,\s*/,
+ $data{uploaders} );
+ foreach my $up (@up_tmp) {
+ if ($up ne $data{maintainer}) { # weed out duplicates
+ push @uploaders, [ split_name_mail( $up ) ];
+ }