qw(appendfile buglog getparsedaddrs getmaintainers),
qw(getmaintainers_reverse)
],
+ misc => [qw(make_list)],
quit => [qw(quit)],
lock => [qw(filelock unfilelock @cleanups)],
);
@EXPORT_OK = ();
- Exporter::export_ok_tags(qw(lock quit util));
+ Exporter::export_ok_tags(qw(lock quit util misc));
$EXPORT_TAGS{all} = [@EXPORT_OK];
}
die "*** $_[0]\n";
}
+=head1 MISC
+
+These functions are exported with the :misc tag
+
+=head2 make_list
+
+ LIST = make_list(@_);
+
+Turns a scalar or an arrayref into a list; expands a list of arrayrefs
+into a list.
+
+That is, make_list([qw(a b c)]); returns qw(a b c); make_list([qw(a
+b)],[qw(c d)] returns qw(a b c d);
+
+=cut
+
+sub make_list {
+ return map {(ref($_) eq 'ARRAY')?@{$_}:$_} @_;
+}
use base qw(Exporter);
use Params::Validate qw(validate_with :types);
-use Debbugs::Common qw(:util :lock :quit);
+use Debbugs::Common qw(:util :lock :quit :misc);
use Debbugs::Config qw(:config);
use Debbugs::MIME qw(decode_rfc1522 encode_rfc1522);
use Debbugs::Packages qw(makesourceversions getversions binarytosource);
=item bug_index -- optional tied index of bug status infomration;
currently not correctly implemented.
-=item version -- optional version to check package status at
+=item version -- optional version(s) to check package status at
-=item dist -- optional distribution to check package status at
+=item dist -- optional distribution(s) to check package status at
-=item arch -- optional architecture to check package status at
+=item arch -- optional architecture(s) to check package status at
=item usertags -- optional hashref of usertags
bug_index => {type => OBJECT,
optional => 1,
},
- version => {type => SCALAR,
+ version => {type => SCALAR|ARRAYREF,
optional => 1,
},
- dist => {type => SCALAR,
+ dist => {type => SCALAR|ARRAYREF,
optional => 1,
},
- arch => {type => SCALAR,
+ arch => {type => SCALAR|ARRAYREF,
optional => 1,
},
usertags => {type => HASHREF,
status => {type => HASHREF,
optional => 1,
},
- version => {type => SCALAR,
+ version => {type => SCALAR|ARRAYREF,
optional => 1,
},
- dist => {type => SCALAR,
+ dist => {type => SCALAR|ARRAYREF,
optional => 1,
},
- arch => {type => SCALAR,
+ arch => {type => SCALAR|ARRAYREF,
optional => 1,
},
sourceversions => {type => ARRAYREF,
my @sourceversions;
if (not exists $param{sourceversions}) {
- my @versions;
+ my %sourceversions;
if (defined $param{version}) {
- @versions = ($param{version});
+ foreach my $arch (make_list($param{arch})) {
+ my @temp = makesourceversions($status{package},
+ $arch,
+ make_list($param{version})
+ );
+ @sourceversions{@temp} = (1) x @temp;
+ }
} elsif (defined $param{dist}) {
- @versions = getversions($status{package}, $param{dist}, $param{arch});
+ foreach my $arch (make_list($param{arch})) {
+ my @versions;
+ foreach my $dist (make_list($param{dist})) {
+ push @versions, getversions($status{package}, $dist, $arch);
+ }
+ my @temp = makesourceversions($status{package},
+ $arch,
+ @versions
+ );
+ @sourceversions{@temp} = (1) x @temp;
+ }
}
# TODO: This should probably be handled further out for efficiency and
# for more ease of distinguishing between pkg= and src= queries.
- @sourceversions = makesourceversions($status{package},
- $param{arch},
- @versions);
+ @sourceversions = keys %sourceversions;
}
else {
@sourceversions = @{$param{sourceversions}};
elsif (defined $msg_id) {
$$seen_msg_ids{$msg_id} = 1;
}
- $output .= qq(<hr><a name="$msg_number"></a>\n);
- $output .= 'View this message in <a href="' . bug_url($ref, "msg=$msg_number", "mbox") . '">rfc822 format</a>';
+ $output .= qq(<hr><p class="msgreceived"><a name="$msg_number"></a>\n);
+ $output .= 'View this message in <a href="' . bug_url($ref, msg=>$msg_number, mbox=>'yes') . '">rfc822 format</a></p>';
$output .= handle_email_message($record->{text},
ref => $bug_number,
msg_number => $msg_number,