tags 137860 patch thanks Hmm, my first mail doesn't seem to have reached the BTS. Trying again.
I prepared a patch that adds some basic hints after failed searches like those proposed in the bug report. Feedback (especially on my wording) welcome. Gruesse, -- Frank Lichtenheld <[EMAIL PROTECTED]> www: http://www.djpig.de/
Index: cgi-bin/search_packages.pl =================================================================== RCS file: /var/cvs/debian.de/packages.debian.org/cgi-bin/search_packages.pl,v retrieving revision 1.13 diff -u -r1.13 search_packages.pl --- cgi-bin/search_packages.pl 5 Feb 2004 20:22:07 -0000 1.13 +++ cgi-bin/search_packages.pl 5 Feb 2004 21:54:02 -0000 @@ -56,24 +56,27 @@ exit 0; } (my $version) = $input->param('version') =~ m/^(\w+)$/; # $version now untainted +my $version_param = $version || 'all'; # for constructing URLs $version = "stable" unless (defined $version); $version = '*' if ($version eq 'all'); -my $case = ''; -$case = $input->param('case'); +(my $case) = $input->param('case') =~ m/^(\w+)$/; $case = "insensitive" unless (defined $case); -my $subword = $input->param('subword'); +(my $subword) = $input->param('subword') =~ m/^(\w+)$/; $subword = 0 unless (defined $subword); -my $searchon = $input->param('searchon'); +(my $searchon) = $input->param('searchon') =~ m/^(\w+)$/; $searchon = 'all' unless (defined $searchon); -my $exact = $input->param('exact'); +(my $exact) = $input->param('exact') =~ m/^(\w+)$/; $exact = 0 unless (defined $exact); -my $releases = $input->param('release'); +(my $releases) = $input->param('release') =~ m/^(\w+)$/; +my $releases_param = $releases || 'all'; $releases = '*' unless (defined $releases); $releases = '*' if ($releases eq 'all'); my $arch = "*"; +my $arch_param = 'any'; if (defined $input->param('arch') && $input->param('arch') =~ m/^([\w-]+)$/) { $arch = $1; # $arch now untainted + $arch_param = $1; } $arch = '*' if ($arch eq 'any'); @@ -200,11 +203,22 @@ my @results = qx( $command ); if ([EMAIL PROTECTED]) { + my $keyword_esc = uri_escape( $keyword ); if ($searchon eq "names") { print "<p><strong>Can't find that package, at least not in that distribution and on that architecture.</strong></p>\n"; + + if ($exact) { + print "<p>You have searched only for exact matches of the package name. You can try to search for <a href=\"?exact=0&searchon=$searchon&version=$version_param&case=$case&release=$releases_param&keywords=$keyword_esc&arch=$arch_param\">package names that contain your search string</a>.</p>"; + } } else { print "<p><strong>Can't find that string, at least not in that distribution and on that architecture.</strong></p>\n"; + + unless ($subword) { + print "<p>You have searched only for words exact matching your keywords. You can try to search <a href=\"?subword=1&searchon=$searchon&version=$version_param&case=$case&release=$releases_param&keywords=$keyword_esc&arch=$arch_param\">allowing subword matching</a>.</p>"; + } } + print "<p>Or you can try a different search on the <a href=\"http://packages.debian.org/#search_packages\">Packages search page</a>.</p>"; + &printfooter; exit } @@ -238,6 +252,7 @@ printf "<br>%s: %s\n", $v, join (" ", (sort keys %{$pkgs{$pkg}{$ver}{$v}}) ); } + print "</li>\n"; } } print "</ul>\n"; @@ -251,7 +266,7 @@ sub printfooter { print <<END; -<p align=right><small><i><a href="http://packages.debian.org/"> +<p align="right"><small><i><a href="http://packages.debian.org/"> Packages search page</a></i></small></p> END
pgpVEz0zJOgyA.pgp
Description: PGP signature