5. Only wonder down the msg queue every minute
[spider.git] / cmd / dbimport.pl
1 #!/usr/bin/perl
2 #
3 # Database update routine
4 #
5 # Copyright (c) 1999 Dirk Koopman G1TLH
6 #
7 my ($self, $line) = @_;
8 my ($name, $fn) = split /\s+/, $line;
9 my @out;
10
11 return (1, $self->msg('e5')) if $self->priv < 9;
12
13 my $db = DXDb::getdesc($name);
14 return (1, $self->msg('db3', $name)) unless $db;
15 return (1, $self->msg('db1', $db->remote )) if $db->remote;
16 return (1, $self->msg('e3', 'dbimport', $fn)) unless -e $fn;
17
18 my $state = 0;
19 my $key;
20 my $value;
21 my $count;
22
23 open(IMP, $fn) or return (1, "Cannot open $fn $!");
24 while (<IMP>) {
25         chomp;
26         s/\r//g;
27         if ($state == 0) {
28                 if (/^\&\&/) {
29                         $state = 0;
30                         next;
31                 }
32                 $key = uc $_;
33                 $value = undef;
34                 ++$state;
35         } elsif ($state == 1) {
36                 if (/^\&\&/) {
37                         if ($key =~ /^#/) {
38                         }
39                         $db->putkey($key, $value);
40                         $state = 0;
41                         $count++;
42                         next;
43                 }
44                 $value .= $_ . "\n";
45         }
46 }
47 close (IMP);
48
49 push @out, $self->msg('db10', $count, $db->name);
50 return (1, @out);