ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/cfmaps/cfmapidx
(Generate patch)

Comparing cfmaps/cfmapidx (file contents):
Revision 1.3 by root, Wed Nov 23 09:07:21 2005 UTC vs.
Revision 1.10 by elmex, Sun Feb 10 10:59:04 2008 UTC

1#!/opt/bin/perl 1#!/opt/bin/perl
2 2
3# cfmap2idx - inverted index for crossfire maps 3# cfmap2idx - inverted index for deliantra maps
4# Copyright (C) 2005 Marc Lehmann <gvpe@schmorp.de> 4# Copyright (C) 2005,2007,2008 Marc Lehmann <cfmaps@schmorp.de>
5# 5#
6# CFMAPIDX is free software; you can redistribute it and/or modify 6# CFMAPIDX is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License as published by 7# it under the terms of the GNU General Public License as published by
8# the Free Software Foundation; either version 2 of the License, or 8# the Free Software Foundation; either version 2 of the License, or
9# (at your option) any later version. 9# (at your option) any later version.
12# but WITHOUT ANY WARRANTY; without even the implied warranty of 12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14# GNU General Public License for more details. 14# GNU General Public License for more details.
15# 15#
16# You should have received a copy of the GNU General Public License 16# You should have received a copy of the GNU General Public License
17# along with gvpe; if not, write to the Free Software 17# along with cfmaps; if not, write to the Free Software
18# Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18# Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 19
20our $VERSION = '0.91'; 20our $VERSION = '0.913';
21 21
22use Storable; 22use Deliantra;
23use Deliantra::Map;
23use DB_File; 24use DB_File;
24 25
25sub escape_html($) { 26sub escape_html($) {
26 local $_ = shift; 27 local $_ = shift;
27 s/([<>&])/sprintf "&#%d;", ord $1/ge; 28 s/([<>&])/sprintf "&#%d;", ord $1/ge;
60 61
61 print "<?xml version='1.0' encoding='utf-8'?>", 62 print "<?xml version='1.0' encoding='utf-8'?>",
62 '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">', 63 '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">',
63 "<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>", 64 "<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>",
64 "<head>", 65 "<head>",
65 "<title>Crossfire Keyword Search</title>", 66 "<title>Deliantra Keyword Search</title>",
66 "<link rel='stylesheet' type='text/css' media='all' href='/common.css'/>\n", 67 "<link rel='stylesheet' type='text/css' media='all' href='/common.css'/>\n",
67 "</head>", 68 "</head>",
68 "<body>"; 69 "<body>";
69 70
70 print "<h1>Search results for '", (join "' &amp; '", map escape_html $_, @found), "'</h1>", 71 print "<h1>Search results for '", (join "' &amp; '", map escape_html $_, @found), "'</h1>",
75 76
76 for (sort @paths) { 77 for (sort @paths) {
77 print "<li><a href='$_.xhtml'>$_</a></li>"; 78 print "<li><a href='$_.xhtml'>$_</a></li>";
78 } 79 }
79 80
80 print "</ul></p><p class='footer'>created by <a href='http://software.schmorp.de/#crossfire'>cfmapidx</a> version $VERSION</p>", 81 print "</ul></p><p class='footer'>created by <a href='http://software.schmorp.de/pkg/cfmaps'>cfmapidx</a> version $VERSION</p>",
81 "</body></html>"; 82 "</body></html>";
82} 83}
83 84
84if ($ARGV[0] eq "-a") { 85if ($ARGV[0] eq "-a") {
85 shift; 86 shift;
88 or die ".index.dat~: $!"; 89 or die ".index.dat~: $!";
89 90
90 my %idx2; 91 my %idx2;
91 92
92 for my $path (@ARGV) { 93 for my $path (@ARGV) {
94 (my $base = $path) =~ s/\.map$//;
93 my $docnum = pack "n", ++$idx{Vdocnum}; 95 my $docnum = pack "n", ++$idx{Vdocnum};
94 $idx{"D$docnum"} = $path; 96 $idx{"D$docnum"} = $base;
95 my $meta = Storable::retrieve "$path.pst"; 97 my $meta = Deliantra::Map->new_from_file ("$base.map");
96 98
97 for my $x (0 .. $meta->{width} - 1) { 99 for my $x (0 .. $meta->{width} - 1) {
98 for my $y (0 .. $meta->{height} - 1) { 100 for my $y (0 .. $meta->{height} - 1) {
99 for my $a (@{ $meta->{map}[$x][$y] }) { 101 for my $a (@{ $meta->{map}[$x][$y] }) {
100 for my $v (values %$a) { 102 for my $v (values %$a) {
121 shift; 123 shift;
122 124
123 search @ARGV; 125 search @ARGV;
124} else { 126} else {
125 # assume CGI 127 # assume CGI
126 chdir "/var/www/cfmaps.schmorp.de" or exit 69; 128 chdir "/var/www/maps.deliantra.net" or exit 69;
127 129
128 print <<EOF; 130 print <<EOF;
129Content-Type: application/xhtml+xml 131Content-Type: application/xhtml+xml
130 132
131EOF 133EOF

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines