X-Git-Url: http://git.rot13.org/?p=BackupPC.git;a=blobdiff_plain;f=lib%2FBackupPC%2FView.pm;h=b71eecbefece5f6a4aaafe0ab29267fbd37d3ff1;hp=6dc0f8d4c408cc4c4cfd72a5d8588c5304cca176;hb=b81d2da5e16975674f011e4833337ac0fa24e0ea;hpb=546f9691f118c9ea2d164f377994b4a018a60d02 diff --git a/lib/BackupPC/View.pm b/lib/BackupPC/View.pm index 6dc0f8d..b71eecb 100644 --- a/lib/BackupPC/View.pm +++ b/lib/BackupPC/View.pm @@ -31,7 +31,7 @@ # #======================================================================== # -# Version 2.1.0, released 20 Jun 2004. +# Version 3.0.0beta2, released 11 Nov 2006. # # See http://backuppc.sourceforge.net. # @@ -140,7 +140,7 @@ sub dirCache } } 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"); @@ -249,10 +249,12 @@ sub shareList 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); @@ -287,7 +289,7 @@ sub fileAttrib 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}; @@ -399,7 +401,7 @@ sub dirHistory } } 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"); @@ -456,6 +458,17 @@ sub dirHistory $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 @@ -471,18 +484,19 @@ sub dirHistory $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; }