return send_file( 'allpackages', @_ );
}
-# no real need for more flexibility here, I think...
-my %mime_types = (
- txt => 'text/plain',
- 'txt.gz' => 'text/plain',
- html => 'text/html',
- );
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" ) );
$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';
+
+ #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) {
if (open( INDEX, '<', "$wwwdir/$path" )) {
my %headers;
$headers{'-charset'} = get_charset( $opts->{lang} );
- $headers{'-type'} = $mime_types{$opts->{format}} || 'text/plain';
+ $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;