+use Text::Iconv;
+use DBI;
+use Config::IniFiles;
+use Text::Unaccent;
+
+use lib '..';
+use index_DBI_cache;
+use back2html;
+
+
+# read global.conf configuration
+my $cfg_global = new Config::IniFiles( -file => '../global.conf' ) || die "can't open 'global.conf'";
+
+# configuration options from global.conf
+my $TEMPLATE_PATH = $cfg_global->val('webpac', 'template_html') || die "need template_html in global.conf, section webpac";
+my $CHARSET = $cfg_global->val('webpac', 'charset') || 'ISO-8859-1';
+my $SWISH = $cfg_global->val('webpac', 'swish') || '/usr/bin/swish-e';
+my $INDEX = $cfg_global->val('webpac', 'index') || die "need index in global.conf, section webpac";
+my $MAX_HITS = $cfg_global->val('webpac', 'max_hits') || 0;
+my $ON_PAGE =$cfg_global->val('webpac', 'on_page') || 10;
+my $MIN_WILDCARD =$cfg_global->val('webpac', 'min_wildcard') || 1;
+my $TEMPLATE =$cfg_global->val('webpac', 'template');
+my $UNAC_FILTER =$cfg_global->val('global', 'unac_filter');
+my $BASE_PATH =$cfg_global->val('webpac', 'base_path');
+
+if ($UNAC_FILTER) {
+ require $UNAC_FILTER;
+}
+
+Text::Iconv->raise_error(0); # Conversion errors raise exceptions
+
+my $from_utf8 = Text::Iconv->new('UTF8', $CHARSET);
+
+# use path from cgi script to support templates in subdirs
+sub url_ex {
+ my $q = shift || die "suff2file needs CGI object!";
+ my $tpl = shift || die "url_ex needs template name!";
+ return suff2file($BASE_PATH, $q->url(-absolute => 1,-path => 1),$TEMPLATE_PATH,$tpl);
+}
+
+sub suff2file($$$$) {
+ my ($base_path, $p, $path, $tpl) = @_;
+
+ return $tpl if (! $base_path);
+
+ # strip everything to and including base path, leaving only
+ # additional (virtual) path
+ if ($base_path eq "/") {
+ $p =~ s,/*,,g;
+ my ($name,$ext) = split(/\./,$tpl);
+ $p = $name . "-" . $p . "." . $ext;
+ } elsif ($p =~ s,^.*?$base_path,,) {
+ $p =~ s,/*,,g;
+ my ($name,$ext) = split(/\./,$tpl);
+ $p = $name . $p . "." . $ext;
+ } else {
+ # if unable reset it!
+ $p = $tpl;
+ }