#!/opt/bin/perl
# cfmap2idx - inverted index for crossfire maps
# Copyright (C) 2005,2007 Marc Lehmann
#
# CFMAPIDX is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with gvpe; if not, write to the Free Software
# Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
our $VERSION = '0.912';
use Storable;
use DB_File;
sub escape_html($) {
local $_ = shift;
s/([<>&])/sprintf "%d;", ord $1/ge;
$_
}
sub search {
my (@kw) = @_;
tie %idx, DB_File, ".index.dat", O_RDONLY, 0, $DB_HASH
or die ".index.dat: $!";
my $cnt;
my %res;
my @found;
for (map lc, @kw) {
if (exists $idx{$_}) {
$cnt++;
$res{$_}++ for unpack "n*", $idx{$_};
push @found, $_;
#warn "$_ found\n";#d#
} else {
#warn "$_ not found\n";#d#
}
}
my @paths;
while (my ($k, $v) = each %res) {
next unless $v == $cnt;
push @paths, $idx{"D" . pack "n", $k};
}
binmode STDOUT, ":utf8";
print "",
'',
"",
"",
"Crossfire Keyword Search",
"\n",
"",
"";
print "