X-Git-Url: https://git.deb.at/?p=deb%2Fpackages.git;a=blobdiff_plain;f=lib%2FPackages%2FDoIndex.pm;h=45a5b494bf8a7ba16da24b9a0a1b0093590190c9;hp=239f3301a7af582f8faf1478483224fdb63548d8;hb=406e4a74469f551c3cbbb137181c1415dde050c9;hpb=e0996d1bc5a737ae3fbeb9d1598d106ad5496a6a diff --git a/lib/Packages/DoIndex.pm b/lib/Packages/DoIndex.pm index 239f330..45a5b49 100644 --- a/lib/Packages/DoIndex.pm +++ b/lib/Packages/DoIndex.pm @@ -25,7 +25,7 @@ my %encoding = ( 'txt.gz' => 'x-gzip', ); sub send_file { - my ($file, $params, $opts, $html_header) = @_; + my ($file, $params, $opts) = @_; if ($params->{errors}{suite}) { fatal_error( _g( "suite not valid or not specified" ) ); @@ -46,7 +46,12 @@ sub send_file { $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}"; + + #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; @@ -55,6 +60,9 @@ sub send_file { $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;