else
{
$db->last_update(time());
-
- my $directories_pruned=$db->prune_directories();
+ my $base=$db->base_dir();
+ my $abs_base=Cwd::abs_path($base);
while(my $path=shift)
{
+ if(Cwd::abs_path($path) !~ /^$abs_base/)
+ {
+ print "$me: $path is outside $base, skipping\n";
+ }
File::Find::find( {wanted => \&wanted, follow => 1, no_chdir => 1}, $path);
}
+ my $directories_pruned=$db->prune_directories();
if($files_pruned || $directories_pruned)
{
- print "Removing data from pruned files\n" if $verbose;
+ print "$me: removing data from pruned files\n" if $verbose;
$db->remove_unused();
}
+ print "$me: analyzing db\n" if $verbose;
+ $db->analyze();
}
sub wanted
sub prune
{
my $dir=shift;
+ $dir=Cwd::abs_path($dir);
return unless(opendir(DIR, $dir));
- print "Pruning $dir\n";
+ my $base=Cwd::abs_path($db->base_dir());
+ $dir=~s/^$base\/?//;
my @oldfiles=$db->files_in($dir);
my @newfiles=grep { !/^\.\.?$/; } readdir(DIR);
closedir(DIR);
{
unless(exists($hash{$file}))
{
- # FIXME: add path, rebasify
$files_pruned=1;
- $db->unindex($file);
+ $db->unindex($dir, $file);
}
}
}