]> git.donarmstrong.com Git - debbugs.git/blobdiff - cgi/pkgreport.cgi
* Even though it's meaningless, fix the stupid ARRAY(0x...) printout
[debbugs.git] / cgi / pkgreport.cgi
index 47a10997ecd820102754afb1abcc2cc7df41de04..673a2db9cba1891976b0c3c2c8de0f2b8b4a226a 100755 (executable)
@@ -19,7 +19,7 @@ use POSIX qw(strftime nice);
 use Debbugs::Config qw(:globals :text :config);
 use Debbugs::User;
 use Debbugs::CGI qw(version_url maint_decode);
-use Debbugs::Common qw(getparsedaddrs :date make_list getmaintainers);
+use Debbugs::Common qw(getparsedaddrs :date make_list getmaintainers getpseudodesc);
 use Debbugs::Bugs qw(get_bugs bug_filter newest_bug);
 use Debbugs::Packages qw(getsrcpkgs getpkgsrc get_versions);
 use Debbugs::Status qw(:status);
@@ -85,7 +85,7 @@ unless (defined $ordering) {
    $ordering = "raw" if $raw_sort;
    $ordering = 'age' if $age_sort;
 }
-my ($bug_order) = $ordering =~ /(age(?:rev)?)/;
+our ($bug_order) = $ordering =~ /(age(?:rev)?)/;
 $bug_order = '' if not defined $bug_order;
 
 my $bug_rev = ($param{'bug-rev'} || "no") eq "yes";
@@ -201,15 +201,16 @@ for my $user (map {split /[\s*,\s*]+/} make_list($param{users}||[])) {
 }
 
 if (defined $param{usertag}) {
-    my %select_ut = ();
-    my ($u, $t) = split /:/, $param{usertag}, 2;
-    Debbugs::User::read_usertags(\%select_ut, $u);
-    unless (defined $t && $t ne "") {
-        $t = join(",", keys(%select_ut));
-    }
-
-    add_user($u);
-    push @{$param{tag}}, split /,/, $t;
+     for my $usertag (make_list($param{usertag})) {
+         my %select_ut = ();
+         my ($u, $t) = split /:/, $usertag, 2;
+         Debbugs::User::read_usertags(\%select_ut, $u);
+         unless (defined $t && $t ne "") {
+              $t = join(",", keys(%select_ut));
+         }
+         add_user($u);
+         push @{$param{tag}}, split /,/, $t;
+     }
 }
 
 my $Archived = $archive ? " Archived" : "";
@@ -307,6 +308,7 @@ while (my ($key,$value) = splice @search_key_order, 0, 2) {
                                           (exists $param{dist}?(dist => $param{dist}):()),
                                           (exists $param{arch}?(arch => $param{arch}):()),
                                           ($key eq 'src'?(arch => q(source)):()),
+                                          no_source_arch => 1,
                                          );
               my $verdesc = join(', ',@versions);
               $verdesc = 'version'.(@versions>1?'s ':' ').$verdesc;
@@ -320,7 +322,7 @@ my $title = $gBugs.' '.join(' and ', map {/ or /?"($_)":$_} @title);
 @title = ();
 
 # we have to special case the maint="" search, unfortunatly.
-if (defined $param{maint} and $param{maint} eq "") {
+if (defined $param{maint} and $param{maint} eq "" or ref($param{maint}) and not @{$param{maint}}) {
      my %maintainers = %{getmaintainers()};
      @bugs = get_bugs(function =>
                      sub {my %d=@_;
@@ -397,9 +399,17 @@ for my $package (make_list($param{src}||[])) {
 
 sub output_package_info{
     my ($srcorbin,$package) = @_;
+
+    my %pkgsrc = %{getpkgsrc()};
+    my $srcforpkg = $package;
+    if ($srcorbin eq 'binary') {
+        $srcforpkg = $pkgsrc{$package};
+        defined $srcforpkg or $srcforpkg = $package;
+    }
+
     my $showpkg = html_escape($package);
     my $maintainers = getmaintainers();
-    my $maint = $maintainers->{$package};
+    my $maint = $maintainers->{$srcforpkg};
     if (defined $maint) {
         print '<p>';
         print htmlize_maintlinks(sub { $_[0] == 1 ? "Maintainer for $showpkg is "
@@ -410,12 +420,6 @@ sub output_package_info{
     } else {
         print "<p>No maintainer for $showpkg. Please do not report new bugs against this package.</p>\n";
     }
-    my %pkgsrc = %{getpkgsrc()};
-    my $srcforpkg = $package;
-    if ($srcorbin eq 'binary') {
-        $srcforpkg = $pkgsrc{$package};
-        defined $srcforpkg or $srcforpkg = $package;
-    }
     my @pkgs = getsrcpkgs($srcforpkg);
     @pkgs = grep( !/^\Q$package\E$/, @pkgs );
     if ( @pkgs ) {
@@ -426,7 +430,7 @@ sub output_package_info{
              print "<p>You may want to refer to the following individual bug pages:\n";
         }
         #push @pkgs, $src if ( $src && !grep(/^\Q$src\E$/, @pkgs) );
-        print join( ", ", map( "<A href=\"" . html_escape(munge_url($this,package=>$_)) . "\">$_</A>", @pkgs ) );
+        print join( ", ", map( "<A href=\"" . html_escape(munge_url($this,package=>$_,src=>[],newest=>[])) . "\">$_</A>", @pkgs ) );
         print ".\n";
     }
     my @references;
@@ -445,7 +449,7 @@ sub output_package_info{
         }
         # Only output this if the source listing is non-trivial.
         if ($srcorbin eq 'binary' and $srcforpkg) {
-             push @references, sprintf "to the source package <a href=\"%s\">%s</a>'s bug page", html_escape(munge_url($this,src=>$srcforpkg,package=>[])), html_escape($srcforpkg);
+             push @references, sprintf "to the source package <a href=\"%s\">%s</a>'s bug page", html_escape(munge_url($this,src=>$srcforpkg,package=>[],newest=>[])), html_escape($srcforpkg);
         }
     }
     if (@references) {
@@ -458,9 +462,8 @@ sub output_package_info{
              html_escape("http://${debbugs::gWebDomain}/Reporting${debbugs::gHTMLSuffix}");
     }
     if (not $maint and not @bugs) {
-        print "<p>There is no record of the " .
-             ($srcorbin eq 'binary' ? html_escape($package) . " package"
-              : html_escape($src) . " source package").
+        print "<p>There is no record of the " . html_escape($package) .
+             ($srcorbin eq 'binary' ? " package" : " source package") .
                    ", and no bugs have been filed against it.</p>";
         $showresult = 0;
     }
@@ -520,12 +523,12 @@ print "    <td><input id=\"b_1_2\" name=vt value=bysuite type=radio onchange=\"e
 
 if (defined $pkg) {
     my $v = html_escape($version) || "";
-    my $pkgsane = html_escape($pkg);
+    my $pkgsane = html_escape($pkg->[0]);
     print "<tr><td></td>";
     print "    <td><input id=\"b_1_3\" name=vt value=bypkg type=radio onchange=\"enable(1);\" $checked_ver>$pkgsane version <input id=\"b_1_3_1\" name=version value=\"$v\"></td></tr>\n";
 } elsif (defined $src) {
     my $v = html_escape($version) || "";
-    my $srcsane = html_escape($src);
+    my $srcsane = html_escape($src->[0]);
     print "<tr><td></td>";
     print "    <td><input name=vt value=bysrc type=radio onchange=\"enable(1);\" $checked_ver>$srcsane version <input id=\"b_1_3_1\" name=version value=\"$v\"></td></tr>\n";
 }
@@ -749,13 +752,21 @@ sub pkg_htmlizebugs {
     my %include;
     my %exclude;
     for my $include (make_list($param{include})) {
+        next unless defined $include;
         my ($key,$value) = split /\s*:\s*/,$include,2;
-        next unless defined $value;
+        unless (defined $value) {
+            $key = 'tags';
+            $value = $include;
+        }
         push @{$include{$key}}, split /\s*,\s*/, $value;
     }
     for my $exclude (make_list($param{exclude})) {
+        next unless defined $exclude;
         my ($key,$value) = split /\s*:\s*/,$exclude,2;
-        next unless defined $value;
+        unless (defined $value) {
+            $key = 'tags';
+            $value = $exclude;
+        }
         push @{$exclude{$key}}, split /\s*,\s*/, $value;
     }
 
@@ -876,7 +887,7 @@ sub pkg_htmlpackagelinks {
     return 'Package' . (@pkglist > 1 ? 's' : '') . ': ' .
            join(', ',
                 map {
-                    '<a class="submitter" href="' . munge_url($this,src=>[],package=>$_) . '">' .
+                    '<a class="submitter" href="' . munge_url($this,src=>[],package=>$_,newest=>[]) . '">' .
                     $openstrong . html_escape($_) . $closestrong . '</a>'
                 } @pkglist
            );
@@ -1095,9 +1106,9 @@ sub determine_ordering {
 
            ($h->{"nam"}) = make_list($param{"nam$i"})
                 if (defined $param{"nam$i"});
-            $h->{"ord"} = [ split /\s*,\s*/, make_list($param{"ord$i"}) ]
+            $h->{"ord"} = [ map {split /\s*,\s*/} make_list($param{"ord$i"}) ]
                 if (defined $param{"ord$i"});
-            $h->{"ttl"} = [ split /\s*,\s*/, make_list($param{"ttl$i"}) ]
+           $h->{"ttl"} = [ map {split /\s*,\s*/} make_list($param{"ttl$i"}) ]
                 if (defined $param{"ttl$i"});
 
             push @c, $h;