X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=lib%2FBackupPC%2FLib.pm;h=22a73da8efcee75045ac3f93126cc9dad7ace5de;hb=8c30bb82b66f26ccf7e261e2c42711251d0d6ccd;hp=7b2973c1336f8fabc8bf48e6f65b15f937a54569;hpb=3ae3b7557db4829ebfc6f580ceac30376717db6a;p=BackupPC.git diff --git a/lib/BackupPC/Lib.pm b/lib/BackupPC/Lib.pm index 7b2973c..22a73da 100644 --- a/lib/BackupPC/Lib.pm +++ b/lib/BackupPC/Lib.pm @@ -29,7 +29,7 @@ # #======================================================================== # -# Version 2.1.0_CVS, released 13 Mar 2004. +# Version 2.1.0beta2, released 23 May 2004. # # See http://backuppc.sourceforge.net. # @@ -59,7 +59,7 @@ sub new TopDir => $topDir || '/data/BackupPC', BinDir => $installDir || '/usr/local/BackupPC', LibDir => $installDir || '/usr/local/BackupPC', - Version => '2.1.0_CVS', + Version => '2.1.0beta2pl1', BackupFields => [qw( num type startTime endTime nFiles size nFilesExist sizeExist nFilesNew sizeNew @@ -132,7 +132,15 @@ sub Lang sub adminJob { - return " admin "; + my($bpc, $num) = @_; + return " admin " if ( !$num ); + return " admin$num "; +} + +sub isAdminJob +{ + my($bpc, $str) = @_; + return $str =~ /^ admin/; } sub trashJob @@ -1129,9 +1137,9 @@ sub cmdExecOrEval # # Also, $? should be set when the CHILD pipe is closed. # -sub cmdSystemOrEval +sub cmdSystemOrEvalLong { - my($bpc, $cmd, $stdoutCB, @args) = @_; + my($bpc, $cmd, $stdoutCB, $ignoreStderr, @args) = @_; my($pid, $out, $allOut); local(*CHILD); @@ -1165,7 +1173,11 @@ sub cmdSystemOrEval # This is the child # close(STDERR); - open(STDERR, ">&STDOUT"); + if ( $ignoreStderr ) { + open(STDERR, ">", "/dev/null"); + } else { + open(STDERR, ">&STDOUT"); + } alarm(0); $cmd = [map { m/(.*)/ } @$cmd]; # untaint # @@ -1192,4 +1204,34 @@ sub cmdSystemOrEval return $out; } +# +# The shorter version that sets $ignoreStderr = 0, ie: merges stdout +# and stderr together. +# +sub cmdSystemOrEval +{ + my($bpc, $cmd, $stdoutCB, @args) = @_; + + return $bpc->cmdSystemOrEvalLong($cmd, $stdoutCB, 0, @args); +} + + +# +# Promotes $conf->{BackupFilesOnly}, $conf->{BackupFilesExclude} +# to hashes and $conf->{$shareName} to an array +# +sub backupFileConfFix +{ + my($bpc, $conf, $shareName) = @_; + + $conf->{$shareName} = [ $conf->{$shareName} ] + if ( ref($conf->{$shareName}) ne "ARRAY" ); + foreach my $param qw(BackupFilesOnly BackupFilesExclude) { + next if ( !defined($conf->{$param}) || ref($conf->{$param}) eq "HASH" ); + $conf->{$param} = [ $conf->{$param} ] + if ( ref($conf->{$param}) ne "ARRAY" ); + $conf->{$param} = { map { $_ => $conf->{$param} } @{$conf->{$shareName}} }; + } +} + 1;