#!/usr/bin/perl use strict; use Encode; use Getopt::Long; use open IO => ':utf8'; use open ':std'; my $htsearchpath="/usr/lib/cgi-bin/htsearch"; my $config; my $format; my $method; my $words; my $lang; my $docbook; my $indexdir; my $maxnum; GetOptions ( 'config=s' => \$config, 'format=s' => \$format, 'method=s' => \$method, 'words=s' => \$words, 'lang=s' => \$lang, 'docbook' => \$docbook, 'indexdir=s' => \$indexdir, 'maxnum=s' => \$maxnum ); if ( !$indexdir ) { print STDERR "No index dir given.\n"; exit 1; } if ( !$lang ) { $lang = "en"; } my $charset = langCharset( $lang ); $words = encode( $charset, $words ); if ( !open( HTSEARCH, "-|", "$htsearchpath", "-c", "$indexdir/$config.conf", "format=$format&method=$method&words=$words&matchesperpage=$maxnum&exclude=[index.html]" ) ) { print "Can't execute htsearch at '$htsearchpath'.\n"; exit 1; } my ($body,$liststart,$ref,$link,$error,$errorOut); while( ) { if ( !$body ) { print; if ( /^/ ) { print; print "\n"; } print "\n"; if ( $? != 0 ) { exit $?; } 1; # Return charset used for given language sub langCharset( $ ) { my $lang = shift; if ( $lang eq "cz" || $lang eq "hu" ) { return "latin2"; } elsif ( $lang eq "kr" ) { return "utf8"; } else { return "latin1"; } }