many changes (see Changes)
[spider.git] / perl / DXDupe.pm
index 5b288d1f87b1b3f1d04f8f99caf8c485d3d0127f..012039ee6a614eb8035b98fc27d3b6a87dd01a88 100644 (file)
@@ -17,7 +17,8 @@ use vars qw{$lasttime $dbm %d $default $fn};
 
 $default = 48*24*60*60;
 $lasttime = 0;
-$fn = "$main::data/dupefile";
+localdata_mv("dupefile");
+$fn = localdata("dupefile");
 
 sub init
 {
@@ -28,6 +29,7 @@ sub init
 
 sub finish
 {
+       dbg("DXDupe finishing");
        undef $dbm;
        untie %d;
        undef %d;
@@ -44,6 +46,7 @@ sub check
 
 sub find
 {
+       return 0 unless $_[0];
        return $d{$_[0]};
 }
 
@@ -51,12 +54,19 @@ sub add
 {
        my $s = shift;
        my $t = shift || $main::systime + $default;
+       return unless $s;
+
        $d{$s} = $t;
+       dbg("DXDupe::add key: $s time: " . ztime($t)) if isdbg('dxdupe');
 }
 
 sub del
 {
        my $s = shift;
+       return unless $s;
+       
+       my $t = $d{$s};
+       dbg("DXDupe::del key: $s time: " . ztime($t)) if isdbg('dxdupe');
        delete $d{$s};
 }
 
@@ -68,7 +78,7 @@ sub process
                while (($k, $v) = each %d) {
                        push @del, $k  if $main::systime >= $v;
                }
-               delete $d{$_} for @del;
+               del($k) for @del;
                $lasttime = $main::systime;
        }
 }
@@ -99,4 +109,12 @@ sub listdups
        }
        return @out;
 }
+
+sub END
+{
+       if ($dbm) {
+               dbg("DXDupe ENDing");
+               finish();
+       }
+}
 1;