- 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;
+sub add_src_data {
+ my ($self, $src, $version, $data) = @_;
+
+ chomp($data);
+ my %data = ();
+ $data =~ s/\n\s+/\377/g;
+ while ($data =~ /^(\S+):\s*(.*)\s*$/mog) {
+ my ($key, $value) = ($1, $2);
+ $key =~ tr [A-Z] [a-z];
+ $data{$key} = $value;
+ }
+
+ $self->{src}{package} = $src;
+ $self->{src}{version} = $version;
+ if ($data{files}) {
+ $self->{src}{files} = [];
+ foreach my $sf ( split( /\377/, $data{files} ) ) {
+ next unless $sf;
+ # md5, size, name
+ push @{$self->{src}{files}}, [ split( /\s+/, $sf) ];
+ }
+ }
+ $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 ) ];
+ }