]> git.deb.at Git - deb/packages.git/blobdiff - lib/Packages/DoIndex.pm
Packages::DoIndex: Fix typo in error message
[deb/packages.git] / lib / Packages / DoIndex.pm
index 3e6041d26d03a735459e3e59301ccd58333a99b4..416f3db56db8fc3ec8b1c81180554f69a5e3b0e1 100644 (file)
@@ -12,10 +12,20 @@ use Packages::I18N::Locale;
 use Packages::CGI;
 
 our @ISA = qw( Exporter );
-our @EXPORT = qw( do_index );
+our @EXPORT = qw( do_index do_allpackages );
 
 sub do_index {
-    my ($params, $opts, $html_header) = @_;
+    return send_file( 'index', @_ );
+}
+sub do_allpackages {
+    return send_file( 'allpackages', @_ );
+}
+
+my %encoding = (
+               'txt.gz' => 'x-gzip',
+               );
+sub send_file {
+    my ($file, $params, $opts) = @_;
 
     if ($params->{errors}{suite}) {
        fatal_error( _g( "suite not valid or not specified" ) );
@@ -24,22 +34,34 @@ sub do_index {
        fatal_error( sprintf( _g( "more than one suite specified for show_static (%s)" ), "@{$opts->{suite}}" ) );
     }
     if (@{$opts->{subsection}} > 1) {
-       fatal_error( sprintf( _g( "more than one suite specified for show_static (%s)" ), "@{$opts->{suite}}" ) );
+       fatal_error( sprintf( _g( "more than one subsection specified for show_static (%s)" ), "@{$opts->{suite}}" ) );
     }
 
     my $wwwdir = "$TOPDIR/www";
-    my $path = "$opts->{suite}[0]/";
+    my $path = "";
+    $path .= "source/" if $opts->{source};
+    $path .= "$opts->{suite}[0]/";
     $path .= "$opts->{archive}[0]/" if @{$opts->{archive}} == 1;
     $path .= "$opts->{subsection}[0]/" if @{$opts->{subsection}};
-    # we don't have translated index pages for subsections yet
-    $opts->{lang} = 'en' if @{$opts->{subsection}};
-    $path .= "index.$opts->{lang}.html";
+    $path .= "$opts->{priority}[0]/" if @{$opts->{priority}};
+
+    #FIXME: ugly hack
+    if ($opts->{lang} ne 'en' and !-f "$wwwdir/$path$file.$opts->{lang}.$opts->{format}") {
+       $opts->{lang} = 'en';
+    }
+    $path .= "$file.$opts->{lang}.$opts->{format}";
 
     unless (@Packages::CGI::fatal_errors) {
        my $buffer;
        if (open( INDEX, '<', "$wwwdir/$path" )) {
-           my $charset = get_charset( $opts->{lang} );
-           print header( -charset => $charset );
+           my %headers;
+           $headers{'-charset'} = get_charset( $opts->{lang} );
+           $headers{'-type'} = get_mime( $opts->{format}, 'text/plain' );
+           $headers{'-content-encoding'} = $encoding{$opts->{format}} if exists $encoding{$opts->{format}};
+           my ($size,$mtime) = (stat("$wwwdir/$path"))[7,9];
+           $headers{'-content-length'} = $size;
+           $headers{'-last-modified'} = gmtime($mtime);
+           print header( %headers );
 
            binmode INDEX;
            while (read INDEX, $buffer, 4096) {
@@ -52,21 +74,6 @@ sub do_index {
                                  $path, $! ) );
        }
     }
-
-    %$html_header = ( title => _g('Error'),
-                     lang => $opts->{lang},
-                     print_title => 1,
-                     print_search_field => 'packages',
-                     search_field_values => { 
-                         keywords => _g('search for a package'),
-                         searchon => 'default',
-                         arch => 'any',
-                         suite => 'all',
-                         section => 'all',
-                         exact => 1,
-                         debug => $Packages::Search::debug,
-                     },
-                     );
 }
 
 1;