fix DXUtil::localdata ?perl bug?
[spider.git] / perl / DXUtil.pm
index 157ff609534515009faf6ff07914e690784fd349..8bb9b956c59d306b8aab36b6cab0807bca10c5bd 100644 (file)
@@ -27,7 +27,7 @@ require Exporter;
              print_all_fields cltounix unpad is_callsign is_latlong
                         is_qra is_freq is_digits is_pctext is_pcflag insertitem deleteitem
                         is_prefix dd is_ipaddr $pi $d2r $r2d localdata localdata_mv
-                        diffms
+                        diffms _diffms
             );
 
 
@@ -472,15 +472,15 @@ sub deleteitem
 sub localdata
 {
        my $ifn = shift;
-       my $ofn = "$main::data/$ifn";
+       my $ofn = "$main::local_data/$ifn";
        my $tfn;
        
        if (-e "$main::local_data") {
-               $tfn = "$main::local_data/$ifn";
-               if (-e $tfn && -e $ofn) {
-                       $ofn = $tfn if -M $tfn < -M $ofn;
-               } elsif (-e $tfn) {
-                       $ofn = $tfn;
+               $tfn = "$main::data/$ifn";
+               if ((-e $tfn) && (-e $ofn)) {
+                       $ofn = $tfn if -M $ofn < -M $tfn;
+               } else {
+                       $ofn = $tfn if -e $tfn;
                }
        }
 
@@ -499,17 +499,23 @@ sub localdata_mv
 }
 
 # measure the time taken for something to happen; use Time::HiRes qw(gettimeofday tv_interval);
+sub _diffms
+{
+       my $ta = shift;
+       my $tb = shift || [gettimeofday];
+       my $a = int($ta->[0] * 1000) + int($ta->[1] / 1000); 
+       my $b = int($tb->[0] * 1000) + int($tb->[1] / 1000);
+       return $b - $a;
+}
+
 sub diffms
 {
        my $call = shift;
        my $line = shift;
        my $ta = shift;
        my $no = shift;
-       my $tb = shift || [gettimeofday];
-
-       my $a = int($ta->[0] * 1000) + int($ta->[1] / 1000); 
-       my $b = int($tb->[0] * 1000) + int($tb->[1] / 1000);
-       my $msecs = $b - $a;
+       my $tb = shift;
+       my $msecs = _diffms($ta, $tb);
 
        $line =~ s|\s+$||;
        my $s = "subprocess stats cmd: '$line' $call ${msecs}mS";