#
#========================================================================
#
-# Version 2.1.0beta2, released 23 May 2004.
+# Version 2.1.0, released 20 Jun 2004.
#
# See http://backuppc.sourceforge.net.
#
TopDir => $topDir || '/data/BackupPC',
BinDir => $installDir || '/usr/local/BackupPC',
LibDir => $installDir || '/usr/local/BackupPC',
- Version => '2.1.0beta2pl1',
+ Version => '2.1.0',
BackupFields => [qw(
num type startTime endTime
nFiles size nFilesExist sizeExist nFilesNew sizeNew
my($i);
flock(LOCK, LOCK_EX) if open(LOCK, "$bpc->{TopDir}/pc/$host/LOCK");
- unlink("$bpc->{TopDir}/pc/$host/backups.old")
- if ( -f "$bpc->{TopDir}/pc/$host/backups.old" );
- rename("$bpc->{TopDir}/pc/$host/backups",
- "$bpc->{TopDir}/pc/$host/backups.old")
- if ( -f "$bpc->{TopDir}/pc/$host/backups" );
+ if ( -s "$bpc->{TopDir}/pc/$host/backups" ) {
+ unlink("$bpc->{TopDir}/pc/$host/backups.old")
+ if ( -f "$bpc->{TopDir}/pc/$host/backups.old" );
+ rename("$bpc->{TopDir}/pc/$host/backups",
+ "$bpc->{TopDir}/pc/$host/backups.old")
+ if ( -f "$bpc->{TopDir}/pc/$host/backups" );
+ }
if ( open(BK_INFO, ">$bpc->{TopDir}/pc/$host/backups") ) {
binmode(BK_INFO);
for ( $i = 0 ; $i < @Backups ; $i++ ) {
my($i);
flock(LOCK, LOCK_EX) if open(LOCK, "$bpc->{TopDir}/pc/$host/LOCK");
- unlink("$bpc->{TopDir}/pc/$host/restores.old")
- if ( -f "$bpc->{TopDir}/pc/$host/restores.old" );
- rename("$bpc->{TopDir}/pc/$host/restores",
- "$bpc->{TopDir}/pc/$host/restores.old")
- if ( -f "$bpc->{TopDir}/pc/$host/restores" );
+ if ( -s "$bpc->{TopDir}/pc/$host/restores" ) {
+ unlink("$bpc->{TopDir}/pc/$host/restores.old")
+ if ( -f "$bpc->{TopDir}/pc/$host/restores.old" );
+ rename("$bpc->{TopDir}/pc/$host/restores",
+ "$bpc->{TopDir}/pc/$host/restores.old")
+ if ( -f "$bpc->{TopDir}/pc/$host/restores" );
+ }
if ( open(RESTORE_INFO, ">$bpc->{TopDir}/pc/$host/restores") ) {
binmode(RESTORE_INFO);
for ( $i = 0 ; $i < @Restores ; $i++ ) {
my($i);
flock(LOCK, LOCK_EX) if open(LOCK, "$bpc->{TopDir}/pc/$host/LOCK");
- unlink("$bpc->{TopDir}/pc/$host/archives.old")
- if ( -f "$bpc->{TopDir}/pc/$host/archives.old" );
- rename("$bpc->{TopDir}/pc/$host/archives",
- "$bpc->{TopDir}/pc/$host/archives.old")
- if ( -f "$bpc->{TopDir}/pc/$host/archives" );
+ if ( -s "$bpc->{TopDir}/pc/$host/archives" ) {
+ unlink("$bpc->{TopDir}/pc/$host/archives.old")
+ if ( -f "$bpc->{TopDir}/pc/$host/archives.old" );
+ rename("$bpc->{TopDir}/pc/$host/archives",
+ "$bpc->{TopDir}/pc/$host/archives.old")
+ if ( -f "$bpc->{TopDir}/pc/$host/archives" );
+ }
if ( open(ARCHIVE_INFO, ">$bpc->{TopDir}/pc/$host/archives") ) {
binmode(ARCHIVE_INFO);
for ( $i = 0 ; $i < @Archives ; $i++ ) {
#
sub cmdSystemOrEvalLong
{
- my($bpc, $cmd, $stdoutCB, $ignoreStderr, @args) = @_;
+ my($bpc, $cmd, $stdoutCB, $ignoreStderr, $pidHandlerCB, @args) = @_;
my($pid, $out, $allOut);
local(*CHILD);
print(STDERR "Exec of @$cmd failed\n");
exit(1);
}
+
+ #
+ # Notify caller of child's pid
+ #
+ &$pidHandlerCB($pid) if ( ref($pidHandlerCB) eq "CODE" );
+
#
# The parent gathers the output from the child
#
{
my($bpc, $cmd, $stdoutCB, @args) = @_;
- return $bpc->cmdSystemOrEvalLong($cmd, $stdoutCB, 0, @args);
+ return $bpc->cmdSystemOrEvalLong($cmd, $stdoutCB, 0, undef, @args);
}