-if (defined $pkg) {
- $title = "package $pkg";
- add_user("$pkg\@packages.debian.org");
- if (defined $version) {
- $title .= " (version $version)";
- } elsif (defined $dist) {
- $title .= " in $dist";
- my $verdesc = getversiondesc($pkg);
- $title .= " ($verdesc)" if defined $verdesc;
- }
- my @pkgs = split /,/, $pkg;
- @bugs = @{getbugs(sub {my %d=@_;
- foreach my $try (splitpackages($d{"pkg"})) {
- return 1 if grep($try eq $_, @pkgs);
- }
- return 0;
- }, 'package', @pkgs)};
-} elsif (defined $src) {
- add_user("$src\@packages.debian.org");
- $title = "source $src";
- set_option('arch', 'source');
- if (defined $version) {
- $title .= " (version $version)";
- } elsif (defined $dist) {
- $title .= " in $dist";
- my $verdesc = getversiondesc($src);
- $title .= " ($verdesc)" if defined $verdesc;
- }
- my @pkgs = ();
- my @srcs = split /,/, $src;
- foreach my $try (@srcs) {
- push @pkgs, getsrcpkgs($try);
- push @pkgs, $try if ( !grep(/^\Q$try\E$/, @pkgs) );
- }
- @bugs = @{getbugs(sub {my %d=@_;
- foreach my $try (splitpackages($d{"pkg"})) {
- return 1 if grep($try eq $_, @pkgs);
- }
- return 0;
- }, 'package', @pkgs)};
-} elsif (defined $maint) {
- my %maintainers = %{getmaintainers()};
- add_user($maint);
- $title = "maintainer $maint";
- $title .= " in $dist" if defined $dist;
- if ($maint eq "") {
- @bugs = @{getbugs(sub {my %d=@_;
- foreach my $try (splitpackages($d{"pkg"})) {
- return 1 if !getparsedaddrs($maintainers{$try});
- }
- return 0;
- })};
- } else {
- my @maints = split /,/, $maint;
- my @pkgs = ();
- foreach my $try (@maints) {
- foreach my $p (keys %maintainers) {
- my @me = getparsedaddrs($maintainers{$p});
- push @pkgs, $p if grep { $_->address eq $try } @me;
- }
- }
- @bugs = @{getbugs(sub {my %d=@_;
- foreach my $try (splitpackages($d{"pkg"})) {
- my @me = getparsedaddrs($maintainers{$try});
- return 1 if grep { $_->address eq $maint } @me;
- }
- return 0;
- }, 'package', @pkgs)};
- }
-} elsif (defined $maintenc) {
- my %maintainers = %{getmaintainers()};
- $title = "encoded maintainer $maintenc";
- $title .= " in $dist" if defined $dist;
- @bugs = @{getbugs(sub {my %d=@_;
- foreach my $try (splitpackages($d{"pkg"})) {
- my @me = getparsedaddrs($maintainers{$try});
- return 1 if grep {
- maintencoded($_->address) eq $maintenc
- } @me;
- }
- return 0;
- })};
-} elsif (defined $submitter) {
- add_user($submitter);
- $title = "submitter $submitter";
- $title .= " in $dist" if defined $dist;
- my @submitters = split /,/, $submitter;
- @bugs = @{getbugs(sub {my %d=@_;
- my @se = getparsedaddrs($d{"submitter"} || "");
- foreach my $try (@submitters) {
- return 1 if grep { $_->address eq $try } @se;
- }
- }, 'submitter-email', @submitters)};
-} elsif (defined($severity) && defined($status)) {
- $title = "$status $severity bugs";
- $title .= " in $dist" if defined $dist;
- my @severities = split /,/, $severity;
- my @statuses = split /,/, $status;
- @bugs = @{getbugs(sub {my %d=@_;
- return (grep($d{"severity"} eq $_, @severities))
- && (grep($d{"status"} eq $_, @statuses));
- })};
-} elsif (defined($severity)) {
- $title = "$severity bugs";
- $title .= " in $dist" if defined $dist;
- my @severities = split /,/, $severity;
- @bugs = @{getbugs(sub {my %d=@_;
- return (grep($d{"severity"} eq $_, @severities));
- }, 'severity', @severities)};
-} elsif (defined($tag)) {
- $title = "bugs tagged $tag";
- $title .= " in $dist" if defined $dist;
- my @tags = split /,/, $tag;
- my %bugs = ();
- for my $t (@tags) {
- for my $b (@{$ut{$t}}) {
- $bugs{$b} = 1;
- }
- }
- @bugs = @{getbugs(sub {my %d = @_;
- return 1 if $bugs{$d{"bug"}};
- my %tags = map { $_ => 1 } split ' ', $d{"tags"};
- return grep(exists $tags{$_}, @tags);
- })};
+
+# addusers for source and binary packages being searched for
+my $pkgsrc = getpkgsrc();
+my $srcpkg = getsrcpkgs();
+for my $package (# For binary packages, add the binary package
+ # and corresponding source package
+ make_list($param{package}||[]),
+ (map {defined $pkgsrc->{$_}?($pkgsrc->{$_}):()}
+ make_list($param{package}||[]),
+ ),
+ # For source packages, add the source package
+ # and corresponding binary packages
+ make_list($param{src}||[]),
+ (map {defined $srcpkg->{$_}?($srcpkg->{$_}):()}
+ make_list($param{src}||[]),
+ ),
+ ) {
+ next unless defined $package;
+ add_user($package.'@'.$config{usertag_package_domain})
+ if defined $config{usertag_package_domain};