#
#========================================================================
#
-# Version 2.1.0, released 20 Jun 2004.
+# Version 3.0.0beta2, released 11 Nov 2006.
#
# See http://backuppc.sourceforge.net.
#
}
}
foreach my $file ( @dir ) {
- $file = $1 if ( $file =~ /(.*)/ );
+ $file = $1 if ( $file =~ /(.*)/s );
my $fileUM = $file;
$fileUM = $m->{bpc}->fileNameUnmangle($fileUM) if ( $mangle );
#print(STDERR "Doing $fileUM\n");
next if ( defined($m->{files}{$fileUM})
|| $file eq ".."
|| $file eq "."
+ || $file eq "backupInfo"
|| $mangle && $file eq "attrib" );
#
# skip directories in earlier backups (each backup always
my @dir = readdir(DIR);
closedir(DIR);
foreach my $file ( @dir ) {
- $file = $1 if ( $file =~ /(.*)/ );
+ $file = $1 if ( $file =~ /(.*)/s );
next if ( $file eq "attrib" && $mangle
|| $file eq "."
- || $file eq ".." );
+ || $file eq ".."
+ || $file eq "backupInfo"
+ );
my $fileUM = $file;
$fileUM = $m->{bpc}->fileNameUnmangle($fileUM) if ( $mangle );
push(@shareList, $fileUM);
my($m, $backupNum, $share, $path) = @_;
#print(STDERR "fileAttrib($backupNum, $share, $path)\n");
- if ( $path =~ s{(.*)/+(.+)}{$1} ) {
+ if ( $path =~ s{(.*)/+(.+)}{$1}s ) {
my $file = $2;
$m->dirCache($backupNum, $share, $path);
return $m->{files}{$file};
}
}
foreach my $file ( @dir ) {
- $file = $1 if ( $file =~ /(.*)/ );
+ $file = $1 if ( $file =~ /(.*)/s );
my $fileUM = $file;
$fileUM = $m->{bpc}->fileNameUnmangle($fileUM) if ( $mangle );
#print(STDERR "Doing $fileUM\n");
$files->{$fileUM}[$i]{inode} = $s[1];
}
+ #
+ # Flag deleted files
+ #
+ if ( defined($attr) ) {
+ my $a = $attr->get;
+ foreach my $fileUM ( keys(%$a) ) {
+ next if ( $a->{$fileUM}{type} != BPC_FTYPE_DELETED );
+ $files->{$fileUM}[$i]{type} = BPC_FTYPE_DELETED;
+ }
+ }
+
#
# Merge old backups. Don't merge directories from old
# backups because every backup has an accurate directory
$files->{$fileUM}[$i] = $files->{$fileUM}[$k];
}
}
+ }
- #
- # Finally, remove deleted files
- #
- if ( defined($attr) ) {
- my $a = $attr->get;
- foreach my $fileUM ( keys(%$a) ) {
- next if ( $a->{$fileUM}{type} != BPC_FTYPE_DELETED );
- $files->{$fileUM}[$i] = undef if ( defined($files->{$fileUM}) );
- }
- }
+ #
+ # Remove deleted files
+ #
+ for ( $i = 0 ; $i < @{$m->{backups}} ; $i++ ) {
+ foreach my $fileUM ( keys(%$files) ) {
+ next if ( !defined($files->{$fileUM}[$i])
+ || $files->{$fileUM}[$i]{type} != BPC_FTYPE_DELETED );
+ $files->{$fileUM}[$i] = undef;
+ }
}
+
#print STDERR "Returning:\n", Dumper($files);
return $files;
}