1 | #!/opt/bin/perl |
1 | #!/opt/bin/perl |
2 | |
2 | |
3 | # cfmap2idx - inverted index for crossfire maps |
3 | # cfmap2idx - inverted index for crossfire maps |
4 | # Copyright (C) 2005 Marc Lehmann <gvpe@schmorp.de> |
4 | # Copyright (C) 2005,2007 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 | |
20 | our $VERSION = '0.91'; |
20 | our $VERSION = '0.912'; |
21 | |
21 | |
22 | use Storable; |
22 | use Crossfire; |
23 | use DB_File; |
23 | use DB_File; |
24 | |
24 | |
25 | sub escape_html($) { |
25 | sub escape_html($) { |
26 | local $_ = shift; |
26 | local $_ = shift; |
27 | s/([<>&])/sprintf "&#%d;", ord $1/ge; |
27 | s/([<>&])/sprintf "&#%d;", ord $1/ge; |
… | |
… | |
75 | |
75 | |
76 | for (sort @paths) { |
76 | for (sort @paths) { |
77 | print "<li><a href='$_.xhtml'>$_</a></li>"; |
77 | print "<li><a href='$_.xhtml'>$_</a></li>"; |
78 | } |
78 | } |
79 | |
79 | |
80 | print "</ul></p><p class='footer'>created by <a href='http://software.schmorp.de/#crossfire'>cfmapidx</a> version $VERSION</p>", |
80 | print "</ul></p><p class='footer'>created by <a href='http://software.schmorp.de/pkg/cfmaps'>cfmapidx</a> version $VERSION</p>", |
81 | "</body></html>"; |
81 | "</body></html>"; |
82 | } |
82 | } |
83 | |
83 | |
84 | if ($ARGV[0] eq "-a") { |
84 | if ($ARGV[0] eq "-a") { |
85 | shift; |
85 | shift; |
… | |
… | |
88 | or die ".index.dat~: $!"; |
88 | or die ".index.dat~: $!"; |
89 | |
89 | |
90 | my %idx2; |
90 | my %idx2; |
91 | |
91 | |
92 | for my $path (@ARGV) { |
92 | for my $path (@ARGV) { |
|
|
93 | (my $base = $path) =~ s/\.map$//; |
93 | my $docnum = pack "n", ++$idx{Vdocnum}; |
94 | my $docnum = pack "n", ++$idx{Vdocnum}; |
94 | $idx{"D$docnum"} = $path; |
95 | $idx{"D$docnum"} = $base; |
95 | my $meta = Storable::retrieve "$path.pst"; |
96 | my $meta = read_arch "$base.map"; |
96 | |
97 | |
97 | for my $x (0 .. $meta->{width} - 1) { |
98 | for my $x (0 .. $meta->{width} - 1) { |
98 | for my $y (0 .. $meta->{height} - 1) { |
99 | for my $y (0 .. $meta->{height} - 1) { |
99 | for my $a (@{ $meta->{map}[$x][$y] }) { |
100 | for my $a (@{ $meta->{map}[$x][$y] }) { |
100 | for my $v (values %$a) { |
101 | for my $v (values %$a) { |