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

Comparing cfmaps/cfmapidx (file contents):
Revision 1.12 by root, Thu Oct 22 08:19:16 2009 UTC vs.
Revision 1.13 by root, Thu Oct 22 09:09:58 2009 UTC

21 21
22use Deliantra; 22use Deliantra;
23use Deliantra::Map; 23use Deliantra::Map;
24 24
25use Fcntl; 25use Fcntl;
26use SDBM_File; 26use GDBM_File;
27 27
28sub escape_html($) { 28sub escape_html($) {
29 local $_ = shift; 29 local $_ = shift;
30 s/([<>&])/sprintf "&#%d;", ord $1/ge; 30 s/([<>&])/sprintf "&#%d;", ord $1/ge;
31 $_ 31 $_
32} 32}
33 33
34sub search { 34sub search {
35 my (@kw) = @_; 35 my (@kw) = @_;
36 36
37 tie %idx, SDBM_File, ".index.dat", O_RDONLY, 0 37 tie %idx, GDBM_File, ".index.dat", O_RDONLY, 0
38 or die ".index.dat: $!"; 38 or die ".index.dat: $!";
39 39
40 my $cnt; 40 my $cnt;
41 my %res; 41 my %res;
42 my @found; 42 my @found;
85} 85}
86 86
87if ($ARGV[0] eq "-a") { 87if ($ARGV[0] eq "-a") {
88 shift; 88 shift;
89 89
90 tie %idx, SDBM_File, ".index.dat~", O_RDWR|O_CREAT, 0644 90 tie %idx, GDBM_File, ".index.dat~", O_RDWR|O_CREAT, 0644
91 or die ".index.dat~: $!"; 91 or die ".index.dat~: $!";
92 92
93 my %idx2; 93 my %idx2;
94 94
95 for my $path (@ARGV) { 95 for my $path (@ARGV) {
96 (my $base = $path) =~ s/\.map$//; 96 (my $base = $path) =~ s/\.map$//;
97 my $docnum = pack "n", ++$idx{Vdocnum}; 97 my $docnum = pack "n", ++$idx{Vdocnum};
98 $idx{"D$docnum"} = $base; 98 $idx{"D$docnum"} = $base;
99 my $meta = Deliantra::Map->new_from_file ("$base.map"); 99 my $meta = eval { Deliantra::Map->new_from_file ("$base.map") }
100 or next;
100 101
101 for my $x (0 .. $meta->{width} - 1) { 102 for my $x (0 .. $meta->{width} - 1) {
102 for my $y (0 .. $meta->{height} - 1) { 103 for my $y (0 .. $meta->{height} - 1) {
103 for my $a (@{ $meta->{map}[$x][$y] }) { 104 for my $a (@{ $meta->{map}[$x][$y] }) {
105 delete $a->{elevation};
104 for my $v (values %$a) { 106 for my $v (values %$a) {
105 $v = lc $v; 107 $v = lc $v;
106 $v =~ y/a-zA-Z0-9_\-.\// /c; 108 $v =~ y/a-zA-Z0-9_\-.\// /c;
107 for (split /\s+/, $v) { 109 for (split /\s+/, $v) {
108 $idx2{$_} .= $docnum; 110 $idx2{$_} .= $docnum;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines