package Packages::DoIndex; use strict; use warnings; use CGI qw( :cgi ); use Exporter; use Deb::Versions; use Packages::Config qw( $TOPDIR ); use Packages::I18N::Locale; use Packages::CGI; our @ISA = qw( Exporter ); our @EXPORT = qw( do_index ); sub do_index { my ($params, $opts, $html_header) = @_; if ($params->{errors}{suite}) { fatal_error( _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}}" ) ); } if (@{$opts->{subsection}} > 1) { fatal_error( sprintf( _g( "more than one suite specified for show_static (%s)" ), "@{$opts->{suite}}" ) ); } my $wwwdir = "$TOPDIR/www"; my $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"; unless (@Packages::CGI::fatal_errors) { my $buffer; if (open( INDEX, '<', "$wwwdir/$path" )) { my $charset = get_charset( $opts->{lang} ); print header( -charset => $charset ); binmode INDEX; while (read INDEX, $buffer, 4096) { print $buffer; } close INDEX; exit; } else { fatal_error( sprintf( _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;