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&nbsp;&nbsp;</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&nbsp;&nbsp;</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-----

Reply via email to