lib/SI/dumper.pm
branchstable
changeset 39 06bffc9d8977
parent 38 38af4add892a
--- a/lib/SI/dumper.pm	Mon Feb 01 00:07:30 2010 +0100
+++ b/lib/SI/dumper.pm	Mon Feb 01 00:27:40 2010 +0100
@@ -31,7 +31,7 @@
     my @dumps = glob(shift);
     my $devs = shift;
 
-    my $tmpdir = tempdir (CLEANUP => 1);
+    my $tmpdir = tempdir (CLEANUP => 0);
 
     foreach my $dump (@dumps) {
 	# suppose it's gzipped
@@ -48,15 +48,20 @@
 
 	verbose("restore $dump -> $dev : $fs\n");
 	run("mount -t $fs $dev $tmpdir");
-	my $pid = fork or do {
-	    open(STDIN, $dump) or die "Can't open $dump as STDIN: $!\n";
-	    chdir $tmpdir  or die "Can't chdir to $tmpdir: $!\n";
-	    exec restore => "-orf-";
-	    die "Can't exec restore: $!\n";
+
+	eval {
+		my $pid = fork or do {
+		    open(STDIN, $dump) or die "Can't open $dump as STDIN: $!\n";
+		    chdir $tmpdir  or die "Can't chdir to $tmpdir: $!\n";
+		    exec restore => "-orf-";
+		    die "Can't exec restore: $!\n";
+		};
+		waitpid($pid, 0);
 	};
-	waitpid($pid, 0);
 	run("umount $tmpdir");
+	die $@ if $@;
     }
+    rmdir($tmpdir);
 }