The following patches allow for different archs to be searched from, and allows paging of the output(ie, page 1, page 2, page 20).
There is still the issue where the Contents files on master(where cgi.debian.org is run) are not being updated from auric. For that, it might require someone with more perms than me. I do have a pulse coming into master, to update /org/ftp.debian.org/ftp/indices/, because the BTS needs an uptodate Maintainers file. === cut Index: english/distrib/packages.wml =================================================================== RCS file: /cvs/webwml/webwml/english/distrib/packages.wml,v retrieving revision 1.12 diff -u -r1.12 packages.wml --- english/distrib/packages.wml 2000/01/20 23:10:55 1.12 +++ english/distrib/packages.wml 2000/06/04 03:23:21 @@ -67,8 +67,21 @@ keyword in any filename.<BR> <FORM method=post ACTION="http://cgi.debian.org/cgi-bin/search_contents.pl"> Search in: -<LABEL><INPUT type=radio name=version value=stable CHECKED> stable </LABEL> -<LABEL><INPUT type=radio name=version value="unstable"> unstable</LABEL> +<LABEL><SELECT name="version"> + <OPTION value="stable">stable + <OPTION value="frozen">frozen + <OPTION value="unstable">unstable +</SELECT> +<BR> +<LABEL><SELECT name="arch"> + <OPTION value="alpha"> Alpha + <OPTION value="arm"> Arm + <OPTION value="hurd-i386"> Hurd(i386) + <OPTION value="m68k"> m68k + <OPTION value="i386"> Intel + <OPTION value="powerpc"> Powerpc + <OPTION value="sparc"> Sparc +</SELECT> <BR> <LABEL><INPUT type=radio name=case value=insensitive CHECKED> case-insensitive </LABEL> === cut --- /org/cgi.debian.org/cgi-bin/search_contents.pl Fri Jan 7 11:48:45 2000 +++ search_contents.pl Sat Jun 3 21:54:52 2000 @@ -5,15 +5,19 @@ require 5.001; use strict; use CGI; +use POSIX; MAIN: { my ($input, # The CGI data - $keyword,$file,$version,@results,$case); + $keyword,$file,$version,@results,$case,$page,$arch,$start,$end,%line,$numpages,$index_line); my ($command, $number); - my $stable_x86 = '/debian2/debian/dists/stable/Contents-i386.gz'; - my $unstable_x86 = '/debian2/debian/dists/unstable/Contents-i386.gz'; + my $ftp_base = '/org/ftp.debian.org/ftp'; + my $def_arch = "i386"; + my $header = "header goes here"; + my $footer = "footer goes here"; + my $results_per_page = 40; $ENV{PATH} = "/bin:/usr/bin:/usr/bin/zgrep:/usr/sbin/zgrep"; # Read in all the variables set by the form @@ -34,15 +38,18 @@ print "No version given for search."; exit 0; } - $case = ''; - $case = $input->param('case'); - - if ($version =~ /^stable$/) { - $file = $stable_x86; + $arch = $input->param('arch'); + if (! defined $arch) { + $arch = $def_arch; + print "No arch given for search, using default($def_arch)."; } - else { - $file = $unstable_x86; + $page = $input->param('page'); + if (! defined $page) { + $page = 1; } + $case = $input->param('case'); + + $file = "$ftp_base/dists/$version/Contents-$arch.gz"; $keyword =~ s,^/,,; if ($keyword =~ /^([EMAIL PROTECTED]/.]+)$/) { @@ -53,8 +60,6 @@ } if (-f $file) { - print "<PRE>\n"; - print "<STRONG>FILE PACKAGE</STRONG><HR>\n"; if ($case =~ /^sensitive/) { $command = "zgrep ".$keyword." ".$file; } @@ -63,16 +68,33 @@ } @results = qx( $command ); $number = 1; + $start = ($page - 1) * $results_per_page + 1; + $end = $page * $results_per_page + 1; + foreach (@results) { $number++; - print $_; - if ($number > 40) { - print "</PRE>\n<hr><b>Too many results. Not printing any more.</b>"; - exit 0; - } + if ($start <= $number && $number < $end) { + $line{$number - $start} = $_; + } + } + $numpages = floor($number / $results_per_page); + $index_line = ""; + for(my $i = 1; $i <= $numpages; $i++) { + $index_line .= "<a href=\"search_contents.pl?page=$i&word=$keyword&version=$version&arch=$arch\">$i</a>"; + if($i < $numpages) { + $index_line .= " | "; + } + } + print "<CENTER>$index_line</CENTER>\n"; + print "<PRE>\n"; + print "<STRONG>FILE PACKAGE</STRONG><HR>\n"; + for(my $i = 0; $i < $results_per_page; $i++) { + if(defined($line{$i})) { + print $line{$i} . "\n"; + } } - # print @results; print "</PRE>\n"; + print "<CENTER>$index_line</CENTER>\n"; } else { print "Error: No Contents file.\n"; === cut ----BEGIN GEEK CODE BLOCK---- Version: 3.12 GCS d- s: a-- c+++ UL++++ P+ L++++ !E W+ M o+ K- W--- !O M- !V PS-- PE++ Y+ PGP++ t* 5++ X+ tv b+ D++ G e h*! !r z? -----END GEEK CODE BLOCK----- ----BEGIN PGP INFO---- Adam Heath <[EMAIL PROTECTED]> Finger Print | KeyID 67 01 42 93 CA 37 FB 1E 63 C9 80 1D 08 CF 84 0A | DE656B05 PGP AD46 C888 F587 F8A3 A6DA 3261 8A2C 7DC2 8BD4 A489 | 8BD4A489 GPG -----END PGP INFO-----