[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

fix to search_contents.pl



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 =~ /^([-+\@\w\/.]+)$/) {
@@ -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 <doogie@debian.org>        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 to: