1. added grepdbg program (so you can search your debug files and get times
[spider.git] / perl / Spot.pm
index 5831e9b31d974ec2ad3c9e14d560b3c42fc34e99..cdd7393d21803c8f85931cf525e79664bec6eb89 100644 (file)
@@ -8,7 +8,7 @@
 
 package Spot;
 
-use FileHandle;
+use IO::File;
 use DXVars;
 use DXDebug;
 use DXUtil;
@@ -41,25 +41,35 @@ sub prefix
 sub add
 {
        my @spot = @_;                          # $freq, $call, $t, $comment, $spotter = @_
-
+       my @out = @spot[0..4];      # just up to the spotter
+       
        # sure that the numeric things are numeric now (saves time later)
        $spot[0] = 0 + $spot[0];
        $spot[2] = 0 + $spot[2];
   
-       # remove ssid if present on spotter
-       $spot[4] =~ s/-\d+$//o;
-
-       # add the 'dxcc' country on the end
-       my @dxcc = Prefix::extract($spot[1]);
-       push @spot, (@dxcc > 0 ) ? $dxcc[1]->dxcc() : 0;
-
-       my $buf = join("\^", @spot);
+       # remove ssids if present on spotter
+       $out[4] =~ s/-\d+$//o;
+
+       # add the 'dxcc' country on the end for both spotted and spotter, then the cluster call
+       my @dxcc = Prefix::extract($out[1]);
+       my $spotted_dxcc = (@dxcc > 0 ) ? $dxcc[1]->dxcc() : 0;
+       my $spotted_itu = (@dxcc > 0 ) ? $dxcc[1]->itu() : 0;
+       my $spotted_cq = (@dxcc > 0 ) ? $dxcc[1]->cq() : 0;
+       push @out, $spotted_dxcc;
+       @dxcc = Prefix::extract($out[4]);
+       my $spotter_dxcc = (@dxcc > 0 ) ? $dxcc[1]->dxcc() : 0;
+       my $spotter_itu = (@dxcc > 0 ) ? $dxcc[1]->itu() : 0;
+       my $spotter_cq = (@dxcc > 0 ) ? $dxcc[1]->cq() : 0;
+       push @out, $spotter_dxcc;
+       push @out, $spot[5];
+       
+       my $buf = join("\^", @out);
 
        # compare dates to see whether need to open another save file (remember, redefining $fp 
        # automagically closes the output file (if any)). 
-       $fp->writeunix($spot[2], $buf);
+       $fp->writeunix($out[2], $buf);
   
-       return $buf;
+       return (@out, $spotted_itu, $spotted_cq, $spotter_itu, $spotter_cq);
 }
 
 # search the spot database for records based on the field no and an expression
@@ -73,7 +83,10 @@ sub add
 #   $f2 = date in unix format
 #   $f3 = comment
 #   $f4 = spotter
-#   $f5 = dxcc country
+#   $f5 = spotted dxcc country
+#   $f6 = spotter dxcc country
+#   $f7 = origin
+#
 #
 # In addition you can specify a range of days, this means that it will start searching
 # from <n> days less than today to <m> days less than today
@@ -92,7 +105,7 @@ sub search
        my $ref;
        my $i;
        my $count;
-       my @today = Julian::unixtoj(time);
+       my @today = Julian::unixtoj(time());
        my @fromdate;
        my @todate;
 
@@ -127,8 +140,7 @@ sub search
 
        $fp->close;                                     # close any open files
 
- LOOP:
-       for ($i = 0; $i < $maxdays; ++$i) {     # look thru $maxdays worth of files only
+       for ($i = $count = 0; $i < $maxdays; ++$i) {    # look thru $maxdays worth of files only
                my @now = Julian::sub(@fromdate, $i); # but you can pick which $maxdays worth
                last if Julian::cmp(@now, @todate) <= 0;