use Deb::Versions;
use Packages::Config qw( $TOPDIR );
-use Packages::I18N::Locale;
use Packages::CGI;
our @ISA = qw( Exporter );
return send_file( 'allpackages', @_ );
}
+my %encoding = (
+ 'txt.gz' => 'x-gzip',
+ );
sub send_file {
- my ($file, $params, $opts, $html_header) = @_;
+ 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 = "$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 .= "$file.$opts->{lang}.$opts->{format}";
+ $path .= "$opts->{priority}[0]/" if @{$opts->{priority}};
+ $path .= "$file.$opts->{po_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'} = '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);
+ print header( %headers );
binmode INDEX;
while (read INDEX, $buffer, 4096) {
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, $! ) );
}
}
-
- %$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;