X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=cgi%2Fsearch.cgi;h=be152cb274bb2ae605ab45e013f8ffe1b263d151;hb=1fbaca61f2f551b5b2645ce2233a1d964bc93b30;hp=554b4ad5a1a618b2ada748bae15abb27ce14b248;hpb=0b99d4f15a7b098b7780c85b8229a81df152b2ae;p=debbugs.git
diff --git a/cgi/search.cgi b/cgi/search.cgi
index 554b4ad..be152cb 100755
--- a/cgi/search.cgi
+++ b/cgi/search.cgi
@@ -11,27 +11,55 @@ BEGIN{
}
}
+# if we're running out of git, we want to use the git base directory as the
+# first INC directory. If you're not running out of git, don't do that.
+use File::Basename qw(dirname);
+use Cwd qw(abs_path);
+our $debbugs_dir;
+BEGIN {
+ $debbugs_dir =
+ abs_path(dirname(abs_path(__FILE__)) . '/../');
+ # clear the taint; we'll assume that the absolute path to __FILE__ is the
+ # right path if there's a .git directory there
+ ($debbugs_dir) = $debbugs_dir =~ /([[:print:]]+)/;
+ if (defined $debbugs_dir and
+ -d $debbugs_dir . '/.git/') {
+ } else {
+ undef $debbugs_dir;
+ }
+ # if the first directory in @INC is not an absolute directory, assume that
+ # someone has overridden us via -I.
+ if ($INC[0] !~ /^\//) {
+ }
+}
+use if defined $debbugs_dir, lib => $debbugs_dir;
+
use CGI::Simple;
-use CGI::Alert 'don@donarmstrong.com';
+# use CGI::Alert 'nobody@example.com';
use Search::Estraier;
use Debbugs::Config qw(:config);
use Debbugs::Estraier;
-use Debbugs::CGI qw(htmlize_packagelinks html_escape);
+use Debbugs::CGI qw(htmlize_packagelinks html_escape cgi_parameters);
use HTML::Entities qw(encode_entities);
my $q = new CGI::Simple;
#my %var_defaults = (attr => 1,);
-my %cgi_var = cgi_parameters($q);
+my %cgi_var = cgi_parameters(query => $q,
+ single => [qw(phrase max_results order_field order_operator),
+ qw(skip prev next),
+ ],
+ default => {phrase => '',
+ max_results => 10,
+ skip => 0,
+ },
+ );
-$cgi_var{phrase} = '' if not defined $cgi_var{phrase};
-$cgi_var{max_results} = 10 if not defined $cgi_var{max_results};
$cgi_var{attribute} = parse_attribute(\%cgi_var) || [];
-$cgi_var{skip} = 0 if not defined $cgi_var{skip};
my @results;
@@ -155,7 +183,7 @@ my %attributes = ('@cdate' => {name => 'Date',
type => 'str',
},
subject => {name => 'Bug Title',
- type => 'num',
+ type => 'str',
},
date => {name => 'Submission date',
type => 'num',
@@ -193,11 +221,11 @@ for my $attribute (@{$cgi_var{attribute}}) {
}
print qq(\n);
$$attribute{value}='' if not defined $$attribute{value};
- print qq( \n);
+ print qq( \n);
$attr_num++;
}
-print qq( );
+print qq( );
# order
@@ -264,9 +292,9 @@ if (defined $nres) {
my $showseverity;
$showseverity = "Severity: $attr{severity};\n";
print <#${bugnum}: $attr{'@title'} @{[htmlize_packagelinks($attr{package})]}
-$showseverity
-Sent by: @{[encode_entities($attr{'@author'})]} at $attr{'@cdate'}
+
#${bugnum}: $attr{'@title'} @{[htmlize_packagelinks($attr{package})]}
+$showseverity
+Sent by: @{[encode_entities($attr{'@author'})]} at $attr{'@cdate'}
END
# Deal with the snippet
# make the things that match bits of the phrase bold, the rest normal.
@@ -315,15 +343,3 @@ sub parse_attribute {
}
return \@attributes;
}
-
-
-sub cgi_parameters {
- my ($q) = @_;
-
- my %param;
- foreach my $paramname ($q->param) {
- my @value = $q->param($paramname);
- $param{$paramname} = @value > 1 ? [@value] : $value[0];
- }
- return %param;
-}