* added pl.pm
[BackupPC.git] / bin / BackupPC_nightly
index 366345f..7bee23c 100755 (executable)
@@ -37,7 +37,7 @@
 #   Craig Barratt  <cbarratt@users.sourceforge.net>
 #
 # COPYRIGHT
-#   Copyright (C) 2001-2004  Craig Barratt
+#   Copyright (C) 2001-2007  Craig Barratt
 #
 #   This program is free software; you can redistribute it and/or modify
 #   it under the terms of the GNU General Public License as published by
@@ -55,7 +55,7 @@
 #
 #========================================================================
 #
-# Version 3.0.0beta2, released 11 Nov 2006.
+# Version 3.1.0beta0, released 3 Sep 2007.
 #
 # See http://backuppc.sourceforge.net.
 #
 use strict;
 no  utf8;
 use lib "/usr/local/BackupPC/lib";
-use BackupPC::Lib;
+use BackupPC::Lib qw( :BPC_DT_ALL );
 use BackupPC::FileZIO;
 use Getopt::Std;
 
-use File::Find;
 use File::Path;
 use Data::Dumper;
 
@@ -153,7 +152,7 @@ for my $pool ( qw(pool cpool) ) {
         $fileLinkMax   = 0;
         $fileCntRename = 0;
         %FixList       = ();
-        find({wanted => \&GetPoolStats}, "$TopDir/$pool/$dir")
+        $bpc->find({wanted => \&GetPoolStats}, "$TopDir/$pool/$dir")
                                            if ( -d "$TopDir/$pool/$dir" );
         my $kb   = $blkCnt / 2;
         my $kbRm = $blkCntRm / 2;
@@ -170,6 +169,15 @@ for my $pool ( qw(pool cpool) ) {
        $dirCnt++ if ( ($i % 16) == 0
                       && -d "$TopDir/$pool/$hexChars[int($i / 16)]" );
 
+        #
+        # We need to process all pending deletes before we do the
+        # renames
+        #
+        if ( @PendingDelete ) {
+            sleep(1);
+            processPendingDeletes(1);
+        }
+
         #
         # Now make sure that files with repeated checksums are still
         # sequentially numbered
@@ -203,7 +211,7 @@ for my $pool ( qw(pool cpool) ) {
     }
 }
 
-sleep(10);
+sleep(1);
 processPendingDeletes(1);
 
 ###########################################################################
@@ -251,7 +259,8 @@ sub doBackupInfoUpdate
 
 sub GetPoolStats
 {
-    my($inode, $nlinks, $nblocks) = (lstat($_))[1, 3, 12];
+    my($file, $fullPath) = @_;
+    my($inode, $nlinks, $nblocks) = (lstat($file))[1, 3, 12];
  
     if ( -d _ ) {
         $dirCnt++;
@@ -270,7 +279,6 @@ sub GetPoolStats
         # pool files vs removing pool files.  (Other aspects of the
         # design should eliminate race conditions.)
         #
-        my $fullPath = $File::Find::name;
         push(@PendingDelete, {
                     inode => $inode,
                     path  => $fullPath
@@ -289,7 +297,7 @@ sub GetPoolStats
         $fullPath =~ s/_\d+$//;
         $FixList{$fullPath}++;
     } else {
-        if ( /_(\d+)$/ ) {
+        if ( $file =~ /_(\d+)$/ ) {
             $fileRepMax = $1 + 1 if ( $fileRepMax <= $1 );
             $fileCntRep++;
         }