use Prefix;
use DXDupe;
use Data::Dumper;
+use QSL;
use strict;
sub add
{
- my $buf = join("\^", @_[0..7]);
+ my $buf = join("\^", @_);
$fp->writeunix($_[2], $buf);
$totalspots++;
if ($_[0] <= 30000) {
} else {
$vhfspots++;
}
+ if ($_[3] =~ /(?:QSL|VIA)/i) {
+ my $q = QSL::get($_[1]) || new QSL $_[1];
+ $q->update($_[3], $_[2], $_[4]);
+ }
}
# search the spot database for records based on the field no and an expression
sub search
{
- my ($expr, $dayfrom, $dayto, $from, $to, $hint) = @_;
+ my ($expr, $dayfrom, $dayto, $from, $to, $hint, $dxchan) = @_;
my $eval;
my @out;
my $ref;
for (\$c = \$#spots; \$c >= 0; \$c--) {
\$ref = \$spots[\$c];
if ($expr) {
+ if (\$dxchan && \$dxchan->{spotsfilter}) {
+ if (\@\$ref < 9) {
+ my \@dxcc = Prefix::cty_data(\$ref->[1]);
+ if (\@dxcc) {
+ pop \@dxcc;
+ push \@\$ref, \@dxcc;
+ }
+ \@dxcc = Prefix::cty_data(\$ref->[4]);
+ if (\@dxcc) {
+ pop \@dxcc;
+ push \@\$ref, \@dxcc;
+ }
+ }
+ my (\$filter, \$hops) = \$dxchan->{spotsfilter}->it(\@\$ref);
+ next unless (\$filter);
+ }
\$count++;
next if \$count < \$from; # wait until from
push(\@out, \$ref);
}
}
);
+
+ dbg("Spot eval: $eval") if isdbg('searcheval');
+
$fp->close; # close any open files