]> git.deb.at Git - deb/packages.git/blobdiff - lib/Packages/DoIndex.pm
Replace non working volatile mirror debian.domainmail.org with mirror.csclub.uwaterloo.ca
[deb/packages.git] / lib / Packages / DoIndex.pm
index 0c5d89dfa57ef48a618b0e423facb5e115843236..5aba6b3b0dc69588320b50a6e0210db114cede79 100644 (file)
@@ -4,11 +4,11 @@ use strict;
 use warnings;
 
 use CGI qw( :cgi );
+use POSIX qw( strftime );
 use Exporter;
 
 use Deb::Versions;
 use Packages::Config qw( $TOPDIR );
-use Packages::I18N::Locale;
 use Packages::CGI;
 
 our @ISA = qw( Exporter );
@@ -26,17 +26,23 @@ my %encoding = (
                );
 sub send_file {
     my ($file, $params, $opts) = @_;
+    my $cat = $opts->{cat};
 
     if ($params->{errors}{suite}) {
-       fatal_error( _g( "suite not valid or not specified" ) );
+       fatal_error( $cat->g( "suite not valid or not specified" ) );
     }
     if (@{$opts->{suite}} > 1) {
-       fatal_error( sprintf( _g( "more than one suite specified for show_static (%s)" ), "@{$opts->{suite}}" ) );
+       fatal_error( $cat->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( $cat->g( "more than one subsection specified for show_static (%s)",
+                             "@{$opts->{suite}}" ) );
     }
 
+    if ($opts->{format} eq 'txt.gz') {
+       $opts->{po_lang} = 'en';
+    }
     my $wwwdir = "$TOPDIR/www";
     my $path = "";
     $path .= "source/" if $opts->{source};
@@ -44,20 +50,20 @@ sub send_file {
     $path .= "$opts->{archive}[0]/" if @{$opts->{archive}} == 1;
     $path .= "$opts->{subsection}[0]/" if @{$opts->{subsection}};
     $path .= "$opts->{priority}[0]/" if @{$opts->{priority}};
-    # we don't have translated index pages for subsections yet
-    $opts->{lang} = 'en' if @{$opts->{subsection}} or $file eq 'allpackages';
-    $path .= "$file.$opts->{lang}.$opts->{format}";
+    $path .= "$file.$opts->{po_lang}.$opts->{format}";
 
     unless (@Packages::CGI::fatal_errors) {
        my $buffer;
        if (open( INDEX, '<', "$wwwdir/$path" )) {
            my %headers;
-           $headers{'-charset'} = get_charset( $opts->{lang} );
+           $headers{'-charset'} = 'UTF-8';
            $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);
+           $headers{'-vary'} = 'negotiate,accept-language';
+           $headers{'-last-modified'} = strftime("%a, %d %b %Y %T %z", localtime($mtime));
+           $headers{'-expires'} = strftime("%a, %d %b %Y %T %z", localtime($mtime+(12*3600)));
            print header( %headers );
 
            binmode INDEX;
@@ -67,7 +73,7 @@ sub send_file {
            close INDEX;
            exit;
        } else {
-           fatal_error( sprintf( _g( "couldn't read index file %s: %s" ),
+           fatal_error( $cat->g( "couldn't read index file %s: %s",
                                  $path, $! ) );
        }
     }