add localqsl a la golist thing
[spider.git] / perl / Spot.pm
index 982f8db5e19b51dadcfe088adea403b969b58b23..f59ef4f4965bca34c5b747d30c0c9b03390bfc5e 100644 (file)
@@ -101,8 +101,9 @@ sub init
        mkdir "$dirprefix", 0777 if !-e "$dirprefix";
        $fp = DXLog::new($dirprefix, "dat", 'd');
        $statp = DXLog::new($dirprefix, "dys", 'd');
-       system("rm -f $main::data/$dirprefix/200?/*.bys");
-       system("rm -f $main::data/$dirprefix/200?/*.cys");
+       my $rm = $main::is_win ? 'del' : 'rm -f';
+       system("$rm $main::data/$dirprefix/*/*.bys");
+       system("$rm $main::data/$dirprefix/*/*.cys");
 }
 
 sub prefix
@@ -312,7 +313,7 @@ sub readfile($)
 # enter the spot for dup checking and return true if it is already a dup
 sub dup
 {
-       my ($freq, $call, $d, $text) = @_; 
+       my ($freq, $call, $d, $text, $by) = @_; 
 
        # dump if too old
        return 2 if $d < $main::systime - $dupage;
@@ -323,6 +324,11 @@ sub dup
 
        $freq = sprintf "%.1f", $freq;       # normalise frequency
        $call = substr($call, 0, 12) if length $call > 12;
+
+       # quick test now for simple case
+       my $sdupkey = "X$freq|$call|$d|$by";
+       return 1 if DXDupe::find($sdupkey);
+       
        chomp $text;
        $text =~ s/\%([0-9A-F][0-9A-F])/chr(hex($1))/eg;
        $text = substr($text, 0, $duplth) if length $text > $duplth; 
@@ -331,11 +337,14 @@ sub dup
        $text =~ s/[^a-zA-Z0-9]//g;
        for (-60, -120, -180, -240, 0, 60, 120, 180, 240, 300) {
                my $dt = $d - $_;
-               my $dupkey = "X$freq|$call|$dt|\L$text";
-               return 1 if DXDupe::find($dupkey);
+               my $ldupkey = "X$freq|$call|$dt|\L$text";
+               my $sdupkey = "X$freq|$call|$dt|$by";
+               return 1 if DXDupe::find($ldupkey) || DXDupe::find($sdupkey);
        }
-       my $dupkey = "X$freq|$call|$d|\L$text";
-       DXDupe::add($dupkey, $main::systime+$dupage);
+       my $ldupkey = "X$freq|$call|$d|\L$text";
+       $sdupkey = "X$freq|$call|$d|$by";
+       DXDupe::add($ldupkey, $main::systime+$dupage);
+       DXDupe::add($sdupkey, $main::systime+$dupage);
        return 0;
 }
 
@@ -361,6 +370,7 @@ sub genstats($)
                        my ($freq, $by, $dxcc) = (split /\^/)[0,4,6];
                        my $ref = $list{$by} || [0, $dxcc];
                        for (@freq) {
+                               next unless defined $_;
                                if ($freq >= $_->[1] && $freq <= $_->[2]) {
                                        $$ref[$_->[0]+2]++;
                                        $tot[$_->[0]+2]++;