diff -ruN e-smith-backup-2.0.0.old/root/etc/e-smith/events/actions/workstation-backup-dar e-smith-backup-2.0.0/root/etc/e-smith/events/actions/workstation-backup-dar --- e-smith-backup-2.0.0.old/root/etc/e-smith/events/actions/workstation-backup-dar 2011-03-11 14:48:13.000000000 +0000 +++ e-smith-backup-2.0.0/root/etc/e-smith/events/actions/workstation-backup-dar 2011-03-11 14:53:02.000000000 +0000 @@ -27,6 +27,7 @@ use Time::localtime; use File::Copy; use File::Path; +use POSIX ":sys_wait_h"; use esmith::ConfigDB; sub ldie; @@ -265,7 +266,11 @@ # launching dar backup -run_backup(); +my $rc = run_backup(); +if ($rc != 0) +{ + ldie("Error while running dar: $rc"); +} if ($incnum == 0) { @@ -340,7 +345,7 @@ $tick--; exit unless (kill(0, $darpid)); } - + if (kill(0, $darpid)) { while (kill('QUIT', $darpid) != 1) { warn "Failed to stop $darpid dar process\n"; @@ -365,10 +370,9 @@ if ($pid) { $killerpid = start_dar_killer($pid, $timeout); } $data = do { local($/); }; - close(INPUT); }; $report .= $data; - + if ($killerpid && kill(0, $killerpid)) { while (kill(9, $killerpid) != 1) { warn "Failed to kill $killerpid killer process\n"; @@ -377,5 +381,8 @@ waitpid($killerpid, 0); } - return; + waitpid($pid, 0); + my $code = WEXITSTATUS($?); + close(INPUT); + return $code; }